Pros/Cons?

Could you point out advantages/disadvantages to Godot's AudioStreamRandomizer?

Haha that's what I was thinking but I wasn't sure if I missed something. Thanks for answering that!

Oh to follow up, since I was looking for something that kept the memory footprint low when using a playlist of songs, I ended up creating a simple scene with a list of strings to the songs. Then I just shuffled them and loaded them in/out with the ResourceLoader.
Hopefully, this helps anyone with a similar idea.


LDAP support enhancement

We had some enhancement earlier this year, but it's proved to be problematic, we need to walk through the code, rework and make it more stable.
Additionally, feature wise requirements:
Search User in new member dialog: P0.  need confirm?
Cert verification configurable: P0
Better setting validation, test binding: P1
Finer grained LDAP setting:P2
API to batch import users: P2.

Hi, Please keep in mind LDAP group support... https://github.com/vmware/harbor/issues/3115


x/exp/event: poor package comment

I ran go doc in x/exp/event to see what it does. This is what is reported for the package comment:
% go doc
package event // import "golang.org/x/exp/event"

Package event provides the core functionality for observability that allows
libraries using it to interact well. It enforces the middle layer
interchange format, but allows both frontend wrappers and back end exporters
to customize the usage.
...
%

I learned nothing from this. Please provide a package comment that explains the purpose of the package.

CC @ianthehat

Possibly related issue #36238. Also CC @stamblerre.

The package and all things below it are very very experimental, not ready for anybody to actually use, and might still just be deleted (some of the sub packages definitely will be).
If it turns out to be a success, it will move out of experimental to somewhere real.
I do think it is reasonable to ask for a better package comment even in it's current state though, to at least make that much clear to anyone looking, I know that technically applies to all of x/exp but that package is even more experimental that most right now.
I will take this bug and close it when I do that.


Full website

In this project, I've created a full website for the Math magicians app, consisting of several pages
This pull request concerns the list of tasks according to the assignment and the steps following:
Project requirements

Create a website consisting of 3 pages: Home, Calculator, and Quote.
Add my own styles to improve the look and feel.
Use React basic styling (inline styles, importing CSS and pre-processed CSS files).
For every page, I should create a .
Make sure that navigation links for all 3 routes are displayed on each page.
Use React Router to make the routes work.

Thanks @ichala


LIKA-331: Only editors and admins can apply service access

Fix the "request access" button visibility to depend on authorization to create service permission applications
Modify service_permission_application_create auth function to only allow users that could create datasets to some organization (editors and admins)

Why the resource snippets are removed ? They should be replaced by assets but is there a reason to remove them completely ?

The necessary assets are now bundled in apicatalog_ui's base bundle. There's no need to include them separately.


adding a prop to allow configuring the server lambda log retention

Merged and released in v2.11.13


feat: add Current time-range options for time filter

SUMMARY
This pull request introduces a new "Current" option to the time filter component. The "Current" option allows users to select and view data for the current week, current month, and current year.
BEFORE/AFTER SCREENSHOTS OR ANIMATED GIF

Before:

After :

TESTING INSTRUCTIONS

ADDITIONAL INFORMATION

[x] Has associated issue: https://github.com/apache/superset/issues/28489
[ ] Required feature flags:
[x] Changes UI
[ ] Includes DB Migration (follow approval process in SIP-59)

[ ] Migration is atomic, supports rollback & is backwards-compatible
[ ] Confirm DB migration upgrade and downgrade tested
[ ] Runtime estimates and downtime expectations provided

[x] Introduces new feature or API
[ ] Removes existing feature or API

Hi @rusackas @sfirke , could you please review the PR.
Thanks!

AI Code Review is in progress (usually takes <10 minutes unless it's a very large PR).

AI Code Review is in progress (usually takes <10 minutes unless it's a very large PR).

Looking at the AFTER screenshot, it looks like current calendar week should be from 2024-05-20 to 2024-05-26 instead of 2024-05-20 to today as we may have future data and when I select current calendar week I expect to see those.

I agree with @michael-s-molina, I have edited my comment above to align with this suggestion.

Hey @sfirke @michael-s-molina , I have made all the changes you mentioned. Could you please review it now? Thanks!

All checks passed. Please review and merge if possible. Thanks!

@betodealmeida or @villebro is one of you able to review this?  I approved, the functionality looks good to me and it's a nice addition that's passing all tests. But I'd like someone who can evaluate the code quality + style and determine if the Codecov warnings are relevant.

/testenv up

I played around with this on the ephemeral and it works as it should.  I will vouch for the logic being correct and the feature needed; can another contributor approve + merge after taking a look at the code quality/style/coverage?  This would be a nice win to ship in 4.1.0 and should not linger, given that it works great and is in high demand.

Agreed this is worth shipping as-is, and I'm tempted to merge it, BUT I need to ask the obvious question:
@pranav1699 would you be able/willing to add any tests? I know these time ranges are not particularly well tested, but maybe this is a good excuse to add a few tests that make sure it's calculating the time ranges as expected. This would help affirm expectations around time ranges as discussed/fixed in the thread above.

@rusackas I've added Python unit tests for the current time range. Thanks for suggesting it.

Running CI 🤞

Thanks again for this @pranav1699!  I hope you will consider future contributions to Superset, I appreciated how thorough your PR code was and your responsiveness 🙏

You're welcome! I'm glad you found my contributions helpful. Thank you for reviewing the changes and all. I'll definitely keep Superset on my radar for future contributions.


Show httpgd plot on attach

What problem did you solve?
Close #832
This PR moves the separate httpgd request url into the attach request. If a httpgd device is open, then its url is also sent to session watcher on attach.
This PR also removes the code to send vsc.plot back to session watcher as it is already defined as r.session.viewers.viewColumn.plot in vscode settings.
(If you do not have screenshot) How can I check this pull request?

Open a workspace folder.
Create R terminal and session watcher attaches to the R session.
Run plot(rnorm(100)) and close the httpgd plot viewer.
Create another R terminal and session watcher attaches to the new R session.
Go to the first R terminal and run "Attach active terminal" or click the status bar item.
The first session should be attached and the httpgd plot viewer should also appear.

Thanks for this - it works as expected on my laptop. I'd like to double check the interaction with Live Share, but won't have access until tomorrow

In a live share session, it looks like the guest does not handle httpgd request in the first place. What's the expected behavior?


When open a zip file, if have chinese contents, file's name gonna in a mess

Description
(Chinese User) My zip file is contain Chinese, not only its name in a mess, but also when I open it, the program will exit with a toast.

Steps To Reproduce

Open a zip file
Open a folder or file in this zip which is named by Chinese
If you open a folder named by Chinese, application will exit with a toast (Translation:Unexcepted Error)

If you open a file in this zip named by Chinese, the preview will gonna to this:

Expected behavior
gonna to normal?
or... When open a zip file, use the default third-party application (e.g. BandiZip) to open it is better?
Files Version
<IP_ADDRESS>
Windows Version
Windows11 22000.194 co_release
Relevant Assets

我也有这个问题。

Thanks for the report. Could you upload a zip file that shows the issue?

新建 ZIP 压缩文件.zip
here is


Rename concepts namespace

:notebook_with_decorative_cover: Description

Problem:

vast::detail namespace is used for concepts, but this is a bit
awkward in some cases and isn't clear whether something is a concept
entity or not.

Solution:

Rename concepts namespace from vast::detail to vast::concepts.

:memo: Checklist

[X] All user-facing changes have changelog entries.
[X] The changes are reflected on docs.tenzir.com/vast, if necessary.
[X] The PR description contains instructions for the reviewer, if necessary.

:dart: Review Instructions

File-by-file.

Nit: Can you also move the files concepts.hpp and concepts.cpp out of the detail subdirectory?

Just moved it to the top-level vast and out of detail. Does that work for you?

Nit: Can you also move the files concepts.hpp and concepts.cpp out of the detail subdirectory?

Just moved it to the top-level vast and out of detail. Does that work for you?

That's exactly what I wanted.


chore: update seeds in v6.x

Description
This pr brings the seeds in v6.x current with those in v7

For contributor use:

[ ] Targeted PR against correct branch (see CONTRIBUTING.md)
[ ] Updated relevant documentation (docs/) or specification (x/<module>/spec/)
[ ] Added a relevant changelog entry to the Unreleased section in CHANGELOG.md
[ ] Re-reviewed Files changed in the Github PR explorer

Codecov Report

Merging #1291 (c1bb37a) into v6.x (2b61fd3) will not change coverage.
The diff coverage is n/a.

@@           Coverage Diff           @@
##             v6.x    #1291   +/-   ##
=======================================
  Coverage   19.06%   19.06%
=======================================
  Files         167      167
  Lines       23684    23684
=======================================
  Hits         4516     4516
  Misses      18387    18387
  Partials      781      781

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 2b61fd3...c1bb37a. Read the comment docs.

Is the lint failure unrelated here @faddat ?

Yeah this lint failure is unrelated. (cref #1296 )


Add back test for Homebrew

This was removed to avoid dealing with the tag complexity when adding setuptools_scm

Also pyinstaller binary shows non-tag

Also check that RTD is working

RTD https://vws-cli.readthedocs.io/en/latest/install.html#pre-built-linux-binaries has a bad version number


deepmerge import fix attempt

Also bumped version to major 15 (same as required angular major version)

Have you been able to test it locally if it works? I guess the easiest way would be to build this library and take the files from dist directory and move them to respective node_modules folder in your project where you use it

@radacovsky just tested it as you said, everything works fine. error from #4 doesn't exists now, think you can publish this code.
Me and @mrlldd have a proposal: may be we need to create some branches with support different major versions of angular and supports this branches separate because some people still will using 1.1.3 and less version of project that probably not working?

Closing this PR as I did the suggested change for v14 and v15. Many thanks.


Improve documentation around powerplatform_environment_application_package_instal (resource)

Description
Currently does not mention AppSource and uses terminology like Dynamics 365 Apps, should be expanded, modernised and updated.
Does not indicate relationship with powerplatform_solution (Resource) operate at a lower level.
Definition of Done

[X ] Users should be able to use the documentation to complete a task

Contributions
Do you plan to raise a PR to address this issue? MAYBE
See the contributing guide for more information about what's expected for contributions.

For example, I would expect this to work:
resource "powerplatform_environment_application_package_install" "install_sample_application" {
  for_each = { for k, v in powerplatform_environment.environments : k => v if k == "coe" }

  environment_id = each.value.id
  unique_name    = "Creator Kit"
}

but it doesn't and errors with:
╷
│ Error: Client error when creating powerplatform
│
│   with powerplatform_environment_application_package_install.install_sample_application["coe"],
│   on powerapps-solutions-coe.tf line 275, in resource "powerplatform_environment_application_package_install" "install_sample_application":
│  275: resource "powerplatform_environment_application_package_install" "install_sample_application" {
│
│ status: 400, message: {"StatusCode":400,"Message":"Package requested for
│ installation was not found"}
╵

each region has a different set of apps to install, for example the Europe region has the Creator Kit app available but Germany or Switzerland do not.
Please validate, that the environment that you are iterating over are in regions that do have Creator Kit available to install.


Completions for environment variables differ between platforms

When using both the console host and an editor like VSCode, completions are provided for
environment variables that differ across platforms. In the case of VSCode, I know it tries to
make recommendations for scripts that help them work cross-platform, and this seems to
fit in that category. Of course, plenty of environment variables are just not cross-platform, but
for things like $env:PSModulePath that come with PowerShell, it would make sense.
Given that Linux requires variable names that Windows tolerates but no vice-versa, perhaps we
should prefer those?
I wouldn't necessarily characterise this as a bug, but it might help obviate some bugs if changed. See #2937 and #2677. I know I have personally run into this when tests I wrote failed because I used
$env:PSModulePath, my reasoning being that the completion of a variable name would be the
canonical name for the variable.
Steps to reproduce
In a PowerShell terminal or editor with completions enter the input:
$env:PSM<Tab>

Expected behavior
The same completed variable name across platforms.
Actual behavior
On Windows:
$env:PSModulePath

On Linux:
$env:PSMODULEPATH

Environment data

> $PSVersionTable

Name                           Value
----                           -----
GitCommitId                    v6.0.0-alpha.16-28-g136213d6b4767370f0b6340ffbefa130fdc55327
WSManStackVersion              3.0
PSCompatibleVersions           {1.0, 2.0, 3.0, 4.0...}
PSEdition                      Core
BuildVersion                   <IP_ADDRESS>
PSRemotingProtocolVersion      2.3
SerializationVersion           <IP_ADDRESS>
PSVersion                      6.0.0-alpha
CLRVersion

This is an easy fix, but like many things Env are case sensitive on Linux.  It seems that by convention, they tend to use all uppercase.  For script portability (although perhaps they shouldn't modify psmodulepath), we should consider having consistency with Windows.

@PowerShell/powershell-committee discussed this and decided to maintain compatibility for existing scripts, it would be best to keep the mixed casing and change it in PSCore6 on Linux.

Existing scripts is Windows scripts and it is case-insensitive: we are free to use PSModulepath, PSmodulepath, psmodulepath, PsMoDuLePaTh and so on.
If conclusion was "to maintain compatibility for existing scripts" all above must work on Unix too.

@iSazonov you are correct that on Windows, env vars are case-insensitive, but we are only optimizing for the tab-complete case which we expect is the majority of use.

@SteveL-MSFT Yes, I see your fix. But it seems the issue was originally broadly: Windows user type PSModulePath in other case and catch failure on Unix.

@iSazonov we are trying to find a balance between interop, app-compat, and conforming to Unix/Linux norms and this is what the committee decided fit that balance.  If there is customer feedback that we need to do more here, we are open to listening.

@SteveL-MSFT Thanks for clarify!

@SteveL-MSFT It seems the PR is not full solution. Maybe reopen the Issue?

it seems the issue was originally broadly: Windows user type  PSModulePath  in other case and catch failure on Unix.

@iSazonov the @PowerShell/powershell-committee decision is to only address the scenario of using tab-complete to author a script (most likely profile script) that uses $env:PSModulePath and have that consistent across platforms.  The general problem is no different from calling PowerShell console host on Windows which won't work as the file system is generally case sensitive on Linux so it has to be powershell.

If you generalize so much the problem then I agree to close the Issue.


[FEA]: Upgrade to gRPC 1.53

Is this a new feature, an improvement, or a change to existing functionality?
Change
How would you describe the priority of this feature request
Critical (currently preventing usage)
Please provide a clear description of problem this feature solves
Currently, we are using gRPC 1.51 which had a new CVE discovered. Mitigation requires upgrading to 1.53.
Describe your ideal solution
Upgrade all occurrences of gRPC=1.51 to gRPC=1.53, and create a PR with the label conda-build.
Describe any alternatives you have considered
No response
Additional context
No response
Code of Conduct

[X] I agree to follow MRC's Code of Conduct
[X] I have searched the open feature requests and have found no duplicates for this feature request

https://github.com/advisories/GHSA-6628-q6j9-w8vg
and
https://github.com/advisories/GHSA-cfgp-2977-2fmm

grpc isn't available via conda for version 1.53, so we'll move to 1.54 instead.


[Lake] Create + update silver_pdr_predictions table incrementally

Motivation
We want to build the required data for the first dashboard. To do so, please review the dashboard and the parameters below such that silver_pdr_predictions can provide all data to the plot/dashboard.
https://docs.google.com/presentation/d/18y_nfpc3e-dop5NtfIisgUkc-oPt8dft9WyAnqhSqZg/edit#slide=id.g20f5357f625_0_1639
Create <silver_pdr_predictions> table that: enriches + aggregates pdr-predictions table, such that they satisfy the dashboard requirements:
Enrich the table by creating new columns:

float reward_df
float reward_stake
float slashed
boolean won
float sum_staked
float sum_revenue
float sum_revenue_stake
float sum_revenue_df
float sum_slashed
others?

How
Group/Aggregate by [user, contract], such that the results are instantly served to the dashboard.
To calculate n_wins, n_losses, check if the user has predictions skipped, w/o claiming, we'll infer them as being wrong.
Assumed Loss A: Sparse Claims

Claimed 1
Skipped this claim
Claimed 2

Assumed Loss B: Slot Paid Out

Join w/ Slot Data
Check if truevals is true/false
Check if payout == roundSumStakes/roundSumStakesUp accordingly
If total paid out == the total from the side staked, then this user has lost

Assumed Loss C: Please Describe

....

DoD:

[ ] Verify that aggregate requirements above satisfy dashboard, identify any outstanding ones
[ ] Update bronze table/query as required
[ ] Create silver table/query as required
[ ] Silver table should update incrementally. Meaning that it's using the last sum_revenue_df to calculate the next one, and should be able to resume from the last_datetime that it ran.
[ ] Silver table should update historically according to [user, contract]. Meaning that a user will claim well-after predicting, and their sum_ and count_ columns need to be updated.
[ ] Tests for loading original tables + enriching + aggregating.
[ ] Tests for updating incrementally... basically showing the pipeline being run multiple times, and continuing to calculate/count/sum correctly.
[ ] Tests for enriching + aggregating should exemplify different data examples (Loss A, B, C) => yielding new rows provided, such that there is some degree of coverage (please see ETL tests and mock data provided).
[ ] Tests should visibly assert that losses (or other columns/features) are calculated accurately and updated as expected.

Here is an example of what this looks like, when running multiple times and continuing to increment.
Table bronze_predictions
======================
Update/Run #1
user_id, contract_id, prediction_index, payout
0xa, 0x1, 0, 1.0
0xa, 0x1, 1, 0.0
0xa, 0x1, 2, 1.0
0xa, 0x1, 3, 3.0

Update/Run #2
user_id, contract_id, prediction_index, payout
0xa, 0x1, 4, 3.0
0xa, 0x1, 5, 5.0

Table silver_predictions
======================
Update/Run #1
user_id, contract_id, prediction_index, payout, sum_payout
0xa, 0x1, 0, 1.0, 1.0
0xa, 0x1, 1, 0.0, 1.0
0xa, 0x1, 2, 1.0, 2.0
0xa, 0x2, 3, 3.0, 5.0

Update/Run #2
user_id, contract_id, prediction_index, payout, sum_payout
0xa, 0x1, 4, 3.0, 8.0
0xa, 0x1, 5, 5.0, 13.0


unet_checkpoint_path

你好 你是不是没有发布这个outputs/stage1_hamer/checkpoints/checkpoint-final.ckpt权重吖

yes
'!

The checkpoint of stage 1 will not be released. Please train one by yourself.


oauth2-proxy  pods are crashlooping in goat

The pods display the following logs :
[2024/11/13 13:33:33] [provider.go:55] Performing OIDC Discovery...
[2024/11/13 13:33:33] [main.go:59] ERROR: Failed to initialise OAuth2 Proxy: error initialising provider: could not create provider data: error building OIDC ProviderVerifier: could not get verifier builder: error while discovery OIDC configuration: failed to discover OIDC configuration: error performing request: Get "https://dex.goat.gaws.gigantic.io/.well-known/openid-configuration": tls: failed to verify certificate: x509: certificate signed by unknown authority

This probably related to the fact that goat is a private installation.

Well damn, this is failing for 2 reasons:
1: we did not ignore unknown CAs in the app
2: the current app version does not support skip-verify flag https://github.com/oauth2-proxy/oauth2-proxy/issues/2802

App is correctly configured and released


chore(deps): update renovate/renovate docker tag to v36.52.4

This PR contains the following updates:

Package
Update
Change

renovate/renovate
minor
36.49.0 -> 36.52.4

Release Notes

renovatebot/renovate (renovate/renovate)
v36.52.4
Compare Source
Bug Fixes

Revert "feat: Enhance lookup logs to show branches extended info" (#23988) (ba8c2ba)

v36.52.3
Compare Source
Bug Fixes

manager/npm: determine yarn version from lockfile (#23975) (375d267)

Documentation

create privacy section (#23899) (27d36cf)
datasource: add helm chart customDatasources example (#23954) (b7627b2)
update references to renovate/renovate to v36.52.2 (#23969) (fa29da4)
update Swissquote Renovate stats (#23972) (04df5c6)

Miscellaneous Chores

deps: lock file maintenance (#23970) (b45bc17)
deps: update dependency @types/node to v18.17.5 (#23947) (a81b8b7)

v36.52.2
Compare Source
Bug Fixes

deps: update ghcr.io/containerbase/sidecar docker tag to v9.12.2 (#23946) (ee7a229)

v36.52.1
Compare Source
Bug Fixes

manager/pub: skip dependency flutter_test and path dependencies (#23934) (a24b6e5)

Code Refactoring

manager/poetry: use zod schema validation (#23830) (cec6fae)

v36.52.0
Compare Source
Features

schema-utils: Support Toml format (#23930) (0777f54)

v36.51.3
Compare Source
Bug Fixes

deps: update ghcr.io/containerbase/sidecar docker tag to v9.12.1 (#23926) (24c49a7)

v36.51.2
Compare Source
Bug Fixes

deps: update ghcr.io/containerbase/sidecar docker tag to v9.12.0 (#23923) (7bc7875)
mix: authenticate hex private repos configured in hostRules (#23901) (e485b52)

v36.51.0
Compare Source
Features

manager/gradle: Add verification metadata update support to gradle manager (#23733) (0bce545)

v36.50.0
Compare Source
Features

preset: add unocss monorepo (#23917) (41c2408)

Documentation

github: correct typo in "Administration" (#23897) (b9a177f)

Miscellaneous Chores

deps: update actions/setup-node action to v3.8.1 (#23918) (5e15496)
deps: update dependency @swc/core to v1.3.76 (#23914) (f6ce23a)
deps: update dependency @types/lodash to v4.14.197 (#23904) (269f4ba)
fix bumpVersion type check (#23906) (ff8831f)

Configuration
📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).
🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.
♻ Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
🔕 Ignore: Close this PR and you won't be reminded about this update again.

[ ] If you want to rebase/retry this PR, check this box

This PR has been generated by Renovate Bot.

:tada: This PR is included in version 5.2.3 :tada:
The release is available on GitHub release
Your semantic-release bot :package::rocket:


Investigate if we can change the permissions of files only without duplicating files

Currently if you change the permission of the file only the content of the file is copied and a new layer is created with the same file but with new permissions.
We need to investigate if we can change the permission only without copying the file itself.

We could try to use addfile without the file object: https://docs.python.org/2/library/tarfile.html#tarfile.TarFile.addfile. I wonder how it would be merged: if we end up with empty files or we end up with proper permissions on old files.

 Sadly the trick with just adding a metadata won't work :(


Verify fulcio cert chain

Signed-off-by: jyotsna-penumaka<EMAIL_ADDRESS>
Summary

Ticket Link

Fixes
Release Note

Do you need an example client pem to test with? If so let me know and I can grab one for you.

@lukehinds I am using the client cert that is enclosed inside root.json after I signed the root.
I am verifying that with the fulcio root.
Are you refering to something else?

@lukehinds I am using the client cert that is enclosed inside root.json after I signed the root. I am verifying that with the fulcio root. Are you refering to something else?

I see it now, ignore me :)

I think the CI failure is from a lack of openssl. I am pretty sure the rust implementation is a wrapper around the OS included openssl.

@lukehinds The CI is still complaining I think because OPENSSL_DIR is unset. I've tried to set it to some plausible values but am not sure what it is supposed to be on Windows as I don't have any experience running tests on Windows. Do you have any ideas on what this is supposed to be?

@jyotsna-penumaka @lukehinds After #56 is merged, if this is rebased on that, I think the CI should work!


Summer of Hacks 2016 - event selection

Following on from last year's pretty amazing (if we do say so ourselves) Summer of Hacks, we need to run it again.
The purpose of this issue is to suggest and vote on events, which will help us put together the schedule for the summer.
Adding a suggestion

Create one comment per event suggestion.
For events we've run before it's fine to just add the name.
If it's a new event, add a little detail about it, such as a link, or what's involved. Any requirements or pre-requisites would be good to get out here.
Poke people on Slack to talk about it!

Voting and commenting
Vote on an issue by adding an emoji response. Obviously, it would be great if we could discern your intent from the emoji :wink:.
Let's try discussing things in Slack, but feel free to add pertinent comments in. below. We'll probably do housekeeping to roll them into the suggestions or other issues to keep it clean.
Things this issue isn't really about

Protracted discussions about the relative merits of each event
Organising dates (unless the event is tied to a specific date, e.g. an international hack day)

Part of #204

International NodeSchool Day is on Saturday the 21st of May this year. We ran this before as #103.

International Nodebots Day is 30th July

The Real Time Hack was a pretty fun day.

I'd quite like a hack day based around open data or free APIs.
Relevant: https://github.com/toddmotto/public-apis/blob/master/README.md

Not sure if suitable for a hack day or not but I've been a bit obsessed with chat bots lately (specifically Hubot) and would love to see some crazy things that people could come up with. I'm loving the rise of "ChatOps" and think it'd be fun to hack with.

I'd like to see something based on wearables/general hardware hacking (not necessarily robots). By putting together a hack day we could have a bunch of different materials that would be difficult for individuals/beginners to source.
Basically I already have an idea but I need some gloves, conductive thread and more than one brain to work on it.

@omgmog suggested a VR hackday

@rumyra mentioned a car-hacking day which could be really exciting (note this is real full-size motorcars this time). Could be really interesting to do with @gfwilliams.

Code Retreat (See #18)
This was my first taste of JSOxford and have kept coming back since. Really enjoyed it!

@piersstorey mentioned a festival hack thing which sounded cool:

Basically it would be something like multiple groups of varied developers meet in a festival / campsite and hack on their project language for a long weekend

It'd be fun to get involved in something - not sure what... I'm obviously a bit more interested in the hardware side of things - I think to hack up something interesting you'd probably want to have a few tools and parts within easy reach, which might make camping more difficult.
Might be able to sort something out with the Oxford Hack Space?
... having said that, you could still do soldering, 3D printing (maybe even laser cutting ;) in a tent...

The VR hack day I suggested recently would be more of an applied workshop type thing (perhaps structured like Node School was?). Specifically using Google Cardboard kits (as they're cheap/nominal to supply at scale) and A-frame for rapidly creating cardboard-ready VR stuff.
Having suggested this though I've not done much in the way of progressing the idea further, and I think my summer is rapidly filling up!

I am 100% on board with this @omgmog

I would personally be very interested in anything related to Education, but my best idea for that would also work with a hardware hackday. I would be happy to bring a bunch of these (http://formcard.co/), since they seem cheap enough, and I need something that can be shaped to the hard palate of the mouth.
TL;DR - another suggestion for hardware hackdays

I'm rubbish at making games but it might be fun to do a game hack day.
One of the assignments I had at uni was to write the code for a "character" in a game which we were given the API. The lecturer then played all the characters against each other. I think something similar could be fun.

Great, thanks everyone for input and votes. We're discussing it this week, but the current standings are:

Games! +4
Code Retreat +4
Wearables / hardware +3
Open Data +3
RTHack +3

That's not a final list of events, but it does give us a good idea of what people are keen for.
We'll close this issue down and open individual issues for the events shortly. Cheers!


Failure to add extension

Extension does not add to Arc as of 12:25 PM 02/26/2023

Sorry about that.I can't seem to replicate your issue. Have you updated to the latest verions of Arc?

Yes I have. I can run a reboots and I will forward you a screen grab if the
issue repeats yourself. I just wanted to inform you in case you’ve seen it
before.
On Sun, Feb 26, 2023 at 5:34 PM, Rafael Gandionco @.***>
wrote:

Sorry about that.I can't seem to replicate your issue. Have you updated to
the latest verions of Arc?
—
Reply to this email directly, view it on GitHub
https://github.com/rafaelgandi/arc-tab-stash/issues/1#issuecomment-1445486265,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AE5M2CLGFXT7XKWEODFC3JLWZPLANANCNFSM6AAAAAAVISOQNE
.
You are receiving this because you authored the thread.Message ID:
@.***>

Itself *
On Sun, Feb 26, 2023 at 5:35 PM, Ben Cullimore <
@.***> wrote:

Yes I have. I can run a reboots and I will forward you a screen grab if
the issue repeats yourself. I just wanted to inform you in case you’ve seen
it before.
On Sun, Feb 26, 2023 at 5:34 PM, Rafael Gandionco <
@.***> wrote:

Sorry about that.I can't seem to replicate your issue. Have you updated
to the latest verions of Arc?
—
Reply to this email directly, view it on GitHub
https://github.com/rafaelgandi/arc-tab-stash/issues/1#issuecomment-1445486265,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AE5M2CLGFXT7XKWEODFC3JLWZPLANANCNFSM6AAAAAAVISOQNE
.
You are receiving this because you authored the thread.Message ID:
@.***>

https://www.dropbox.com/s/r6wh7uv7uyrari1/Screen Shot 2023-02-26 at 5.45.14 PM.mov?dl=0

post reboot

DynamicDNS is turned off and so is uBlock


The timeline autoplay property overwrites the autoplay property of added animations

Describe the bug
When a standalone animation is created with an autoplay: false and duration: 0, its complete callback is never called. But pass the same properties into a timeline add and its complete callback will be called.
I believe this is a bug because none of the other properties I tried were overridden by the timeline.
To Reproduce
Steps to reproduce the behavior:

Load this codepen.io: https://codepen.io/Daniel-Kaplan/pen/YzbPZWG?editors=1111
Read the console

Expected behavior
The console should print no output because the animations have autoplay: false. You'll notice this is true for the standalone animation at the bottom, but the animations that are added to the timeline get their complete callback called so it prints output.
If you set the timeline's default autoplay to false, the example prints nothing, as expected. I.E.: const tl = anime.timeline({ autoplay: false }); does not print anything to the console, so in some situations, this can be used as a workaround.
Desktop (please complete the following information):

OS: Win 10
Browser: Firefox
Version 125.0.3 (64-bit)

Using anime.js 3.2.2

If a timeline is the sequence of a number of child animations, unlike all the other properties it only makes sense for autoplay to be global.
It's not clear what the expected behavior would even be. If a timeline has a number of both autoplay:true and false children, what happens to the timeline when one of the false children is reached in the sequence?
Similarly, it's not clear what should be autoplaying if the timeline is false but some children are true.
And for autoplay false children, individual children can't be accessed, so you can't call play() on them, and it's not clear what it means for the whole sequence when one (or multiple) segments within that sequence starts playing.

Best fix is probably to adjust the documentation so that this behavior is mentioned, because it's definitely the only sane behavior.

That works for me as a solution, too.

Best fix is probably to adjust the documentation so that this behavior is mentioned, because it's definitely the only sane behavior.

That works for me as a solution, too.

Fixed in V4 :)


Renaming views folder doesn't work.

Hi.
I am a bit puzzled by this, as there are no reports, yet my various attempts came up with nothing.
Anyway - trying to relocate the views folder doesn't work.
This code (in server.js file in the root of the project):
var express = require('express');
var expressHbs = require('express-handlebars');

var app = express();

app.set('views', __dirname + '/views1');
app.engine('hbs', expressHbs({extname:'hbs', defaultLayout:'main.hbs'}));
app.set('view engine', 'hbs');

app.get('/', function(req, res){
  res.render('index');
});

app.listen(8080);

where views1 is (and it is in the root folder, the same with the server.js above):
views1
└───layouts
│        └───main.hbs
└───index.hbs

produces this (abridged):
Error: ENOENT, open '<path-to-root-folder>/views/layouts/main.hbs'

Renaming the folder to views and removing app.set('views', ...); line makes this work properly.
I must be missing something, as this is too basic a functionality to not work.
P.S.
There were additional attempts revolving around using something like this instead (to make sure that the path is resolved properly and whatnot):
app.set('views', path.resolve(__dirname, 'views1'));

to no avail.

Hi! Can you start your app with the following command, and paste what is printed on the command line here?
DEBUG=express:application node server.js

Ehh...... probably won't do you any good, but...
  express:application compile etag weak +0ms
  express:application compile query parser extended +0ms
  express:application compile trust proxy false +0ms
  express:application booting in development mode +0ms
Listening on http://localhost:8080
GET /test 500 44.299 ms - 148
Error: ENOENT, open '<path-to-root-folder>\views\layouts\main.hbs'
    at Error (native)

Note I removed the path and replaced it with <path-to-root-folder> due to various reasons.

Thanks! I forgot that we are not actually printing all the settings in the debug output (bug! :) ) so that doesn't seem to help. I'll have to try it out, but in the end, the views module you are using, express-handlebars, is ultimately responsible for honoring that setting. If I have time to debug, I'll try to see where it's getting lost, but I suspect it's happening in the express-handlebars module.

I fail to see how is it responsible, since changing the name to views works just fine.

Gotcha. Yea, I'm not sure, but I will try to investigate later :) If you do fine the issue in Express, a PR would be welcome!

I fail to see how is it responsible, since changing the name to views works just fine.

This is because we only resolve the index file in your example; your error is failing to resolve main.hbs, which the way that is resolved is done purely by express-handlebars module, as layouts are not a part of Express and implemented by the view engines (which is why you had to give that option to their constructor).

Ah, I see. Lemme try this with jade

Looks like you need to specify the layoutsDir option, for express-handlebars to resolve layout files correctly (at least, that's what I'm getting from reading https://github.com/ericf/express-handlebars/tree/v2.0.1#layoutsdirviewslayouts):
app.engine('hbs', expressHbs({extname:'hbs', defaultLayout:'main.hbs', layoutsDir: __dirname + '/views1/layouts'}));

Yep. My bad.

lol. I think it's U+1F633 FLUSHED FACE 😳
I'm going to close this, but it may be worth making a bug over at express-handlebars (or I guess even a PR), because we do provide what the views dir is to the view engine, so the module could default to expressViewsDir + '/layouts' instead of just 'views/layouts'.

Will move it over there, sure. Thanks.


Styling attributes for markers and charts

Hi,
I can't find a list of all possibles styling attributes possible for markers and charts. I guessed some of them, but I surely missed some of the possibilities.
By the way the color attribute changes the border color on histrograms, but not on pie charts (I did not test on other charts). Maybe it is a bug ?
Thanks.

Some of the marker options are defined here:  https://github.com/humangeo/leaflet-dvf/wiki/6.-Markers.  In most cases, what's mentioned on the wiki is in addition to normal Leaflet Path styling options.  The components of chart markers are just Path objects, so they accept all the same styling parameters that normal Leaflet path objects accept as well:  https://leafletjs.com/reference-1.5.0.html#path.  Hope this helps, but let me know if it doesn't.
The color thing may be a bug, and is worth investigating - thanks for pointing that out.

It does help, thanks. I just didn't realise that I could actually use normal Leaflet styling options.
I let this topic open so you can close it when you know wether the color is a bug or not.

@aurelien-robineau can you please mark as resolved if you have fixed? :) thank you so much!


IMPRV/minor cleanup

@joneit
Created an assets folder that holds the html, css, and images folder

@Dwaynekj It's just three folders, hardly a mess. I really would prefer to leave as is.
Also, "assets" implies pieces called for from markup which isn't really what's going on here (with exception of readme).


Quarks IoTF RangeSensor Sample

I have put together a sensor application that uses PI4J libraries to control a Proximity sensor HC-SR04 and LED and work through Watson IoT.
This sample is based off of the IotfSensor sample, but uses real sensors. Since it depends on Pi4J libraries, I have updated the build files so that this sample only builds if there is a PI4J_LIB environment variable present.
The full outline of this sensor application on a Pi is (I have bolded the main differences to the IotfSensor sample):
RangeSensor -> Quarks Analytics (only send to IoTF in case of close proximity average) -> Watson IoT -> IBM Streams IoTF Sample -> Send command back to IoTF -> to Quarks on Pi -> Light up LED to say we have received the command
This is my first commit to Quarks, so please let me know if I'm doing anything wrong or if I should be pointed to some specific docs. Thanks!
Also, thank you to @dlaboss and @ddebrunner for helping me figure out how to get the build working correctly.

Do the checks rerun if they fail? I just ran the same build command:
ant -Dquarks.build.ci=true -lib /usr/share/java/junit4.jar -lib jacoco-0.7.5/lib clean all test release
And it successfully built on my machine. I think it may have started building and I added several commits mid build? Not sure if that would be a problem...

Nah, if the "build" fails it doesn't run again until another commit is added or you close/reopen the PR.
In this case one of the WebSocketClient connector tests failed.  This has been happening intermittently -  QUARKS-122.


Add support for missing EmailPasswordAuth methods.

Closes #757 #433
The only remaining function is https://github.com/realm/realm-kotlin/issues/744 which requires BSON support.

 So this PR needs another round of review @nhachicha and @rorbech, but everything seems to work now 🥳


feat!: remove need to specify onPopInvoked

Description
This is an iteration upon #28. There, we started supporting Flutter's onDidRemovePage callback. However, we had to make a compromise where users had to implement onPopInvoked when overriding Page.
This PR is an iteration on that PR. It removes the need to implement onPopInvoked, it is now handled automatically. We accomplish this by forcing usage of DuckPage, and by making DuckPage suitable for any type of Page via its new .custom constructor.
This is a breaking change, but I believe the last one around this topic. I have provided documentation in the README that should help users implement concepts such as dialogs.
Users can migrate by:

Replacing their extends Page with extends DuckPage
If they were overriding createRoute in these children, making sure that they use DuckPage.custom

Related Issues
#26
Breaking Change
Does your PR require plugin users to manually update their apps to accommodate your change?

[x] Yes, this is a breaking change.
[ ] No, this is not a breaking change.

Nice work!
I was a bit hesitant when seeing these changes at first sight, as I am prone to extending from MaterialPage and CupertinoPage instead of the general Page class. However, I found the same result can be achieved by overriding the createRoute method and return a MaterialPageRoute or CupertinoPageRoute. Since I think I'm probably not the only one extending pages this way, maybe it could be added to the documentation as well?

Thanks @DelcoigneYves. Yes that was exactly the idea, that DuckPage is really nothing more than a wrapper for these advanced cases, that does some magic in the background. I have added some documentation highlighting the versatility of DuckPage, hopefully that helps?


Robot is registering in Homebridge but can not be controlled from HomeKit

There are no errors in the status messages and the HomeKit app is reporting all the correct robot values:
Dock status
Sensor info
Fan speed etc
But the accessory in HomeKit is showing not responding. I've stripped out the app and reinstalled, restarted homekit but the issue remains.
Can anyone advise?

Can you see anything in the homebridge logs?
What do you mean it reports the correct values but it shows not responding?

I can see the Roborock device in Homebridge home page and I can also see the values in Eve app for filter etc but the robot doesn't respond to commands. Its seems to be read only:
[12/2/2022, 11:48:44 AM] [Robochubby] [Model=roborock.vacuum.s6] STA getDevice | Connected to: <IP_ADDRESS>
[12/2/2022, 11:48:44 AM] [Robochubby] [Model=roborock.vacuum.s6] STA getDevice | Model: roborock.vacuum.s6
[12/2/2022, 11:48:44 AM] [Robochubby] [Model=roborock.vacuum.s6] STA getDevice | State: charging
[12/2/2022, 11:48:44 AM] [Robochubby] [Model=roborock.vacuum.s6] STA getDevice | FanSpeed: 103
[12/2/2022, 11:48:44 AM] [Robochubby] [Model=roborock.vacuum.s6] STA getDevice | BatteryLevel: 100
[12/2/2022, 11:48:44 AM] [Robochubby] [Model=roborock.vacuum.s6] MON changedCharging | ChargingState is now true
[12/2/2022, 11:48:44 AM] [Robochubby] [Model=roborock.vacuum.s6] changedCharging | Charging is active
[12/2/2022, 11:48:44 AM] [Robochubby] [Model=roborock.vacuum.s6] changedCharging | Robot was docked.
[12/2/2022, 11:48:44 AM] [Robochubby] [Model=roborock.vacuum.s6] MON changedSpeed | FanSpeed is now 103%
[12/2/2022, 11:48:44 AM] [Robochubby] [Model=roborock.vacuum.s6] changedSpeed | Speed was changed to 103% (Turbo), for HomeKit 80%
[12/2/2022, 11:48:44 AM] [Robochubby] [Model=roborock.vacuum.s6] getSerialNumber | Serial Number is B0306S92650001
[12/2/2022, 11:48:44 AM] [Robochubby] [Model=roborock.vacuum.s6] STA getDevice | Serial Number: B0306S92650001
[12/2/2022, 11:48:44 AM] [Robochubby] [Model=roborock.vacuum.s6] getFirmware | FirmwareVersion is 3.5.8_2700
[12/2/2022, 11:48:44 AM] [Robochubby] [Model=roborock.vacuum.s6] STA getDevice | Firmware Version: 3.5.8_2700
[12/2/2022, 11:49:03 AM] [Robochubby] [Model=roborock.vacuum.s6] getCleaning | Cleaning is false
[12/2/2022, 11:49:03 AM] [Robochubby] [Model=roborock.vacuum.s6] getCareSensors | Sensors dirtyTime is 110960 seconds / 102.74%.
[12/2/2022, 11:49:03 AM] [Robochubby] [Model=roborock.vacuum.s6] getCareFilter | Filter workTime is 36239 seconds / 6.71%.
[12/2/2022, 11:49:03 AM] [Robochubby] [Model=roborock.vacuum.s6] getCareSideBrush | SideBrush workTime is 580912 seconds / 80.68%.
[12/2/2022, 11:49:03 AM] [Robochubby] [Model=roborock.vacuum.s6] getCareMainBrush | MainBrush workTime is 580912 seconds / 53.79%.
[12/2/2022, 11:49:03 AM] [Robochubby] [Model=roborock.vacuum.s6] getCareSensors | Sensors dirtyTime is 110960 seconds / 102.74%.
[12/2/2022, 11:49:03 AM] [Robochubby] [Model=roborock.vacuum.s6] getCareFilter | Filter workTime is 36239 seconds / 6.71%.
[12/2/2022, 11:49:03 AM] [Robochubby] [Model=roborock.vacuum.s6] getCareSideBrush | SideBrush workTime is 580912 seconds / 80.68%.
[12/2/2022, 11:49:03 AM] [Robochubby] [Model=roborock.vacuum.s6] getCareMainBrush | MainBrush workTime is 580912 seconds / 53.79%.
[12/2/2022, 11:49:03 AM] [Robochubby] [Model=roborock.vacuum.s6] getCharging | Charging is true (Status is charging)
[12/2/2022, 11:49:03 AM] [Robochubby] [Model=roborock.vacuum.s6] getDocked | Robot Docked is true (Status is charging)
[12/2/2022, 11:49:03 AM] [Robochubby] [Model=roborock.vacuum.s6] getCareSensors | Sensors dirtyTime is 110960 seconds / 102.74%.
[12/2/2022, 11:49:03 AM] [Robochubby] [Model=roborock.vacuum.s6] getCareSensors | Sensors dirtyTime is 110960 seconds / 102.74%.
[12/2/2022, 11:49:03 AM] [Robochubby] [Model=roborock.vacuum.s6] getCareFilter | Filter workTime is 36239 seconds / 6.71%.
[12/2/2022, 11:49:03 AM] [Robochubby] [Model=roborock.vacuum.s6] getCareFilter | Filter workTime is 36239 seconds / 6.71%.
[12/2/2022, 11:49:03 AM] [Robochubby] [Model=roborock.vacuum.s6] getCareSideBrush | SideBrush workTime is 580912 seconds / 80.68%.
[12/2/2022, 11:49:03 AM] [Robochubby] [Model=roborock.vacuum.s6] getCareSideBrush | SideBrush workTime is 580912 seconds / 80.68%.
[12/2/2022, 11:49:03 AM] [Robochubby] [Model=roborock.vacuum.s6] getCareMainBrush | MainBrush workTime is 580912 seconds / 53.79%.
[12/2/2022, 11:49:03 AM] [Robochubby] [Model=roborock.vacuum.s6] getCareMainBrush | MainBrush workTime is 580912 seconds / 53.79%.
[[12/2/2022, 11:49:03 AM] [Robochubby] [Model=roborock.vacuum.s6] getBatteryLow | BatteryLevel is 100%
[12/2/2022, 11:49:03 AM] [Robochubby] [Model=roborock.vacuum.s6] getBattery | BatteryLevel is 100%
[12/2/2022, 11:49:03 AM] [Robochubby] [Model=roborock.vacuum.s6] getSpeed | Fanspeed is 103 over miIO. Converting to HomeKit
[12/2/2022, 11:49:03 AM] [Robochubby] [Model=roborock.vacuum.s6] getSpeed | FanSpeed is 103 over miIO "Turbo" > HomeKit speed 80%
[12/2/2022, 11:49:03 AM] [Robochubby] [Model=roborock.vacuum.s6] getFirmware | FirmwareVersion is 3.5.8_2700
[12/2/2022, 11:49:03 AM] [Robochubby] [Model=roborock.vacuum.s6] getSerialNumber | Serial Number is B0306S92650001

Interesting!!! Can you share the logs when you try to set it to clean (and get the No Reponse error)?

There are no logs in Homebridge, the HomeKit app always shows no response.

On 2 Dec 2022, at 15:32, Alejandro Fernández Haro @.***> wrote:
Interesting!!! Can you share the logs when you try to set it to clean (and get the No Reponse error)?
—
Reply to this email directly, view it on GitHub https://github.com/homebridge-xiaomi-roborock-vacuum/homebridge-xiaomi-roborock-vacuum/issues/613#issuecomment-1335427040, or unsubscribe https://github.com/notifications/unsubscribe-auth/AIGALYT26E22RFJEO2LFYVLWLIJB3ANCNFSM6AAAAAASRT3FWQ.
You are receiving this because you authored the thread.

if there are no logs, I cannot figure out what's going on. Without them, I can only guess that there may be some miscommunication between Homebridge and HomeKit? 🤷
Do you have other homebridge plugins working fine?

@billbazza I'll close this issue for now. Feel free to reopen it when you have more feedback.


[OETHb] AMO strategy

Adds a Super OETHb AMO strategy with an underlying Aerodrome Slipstream pool containing WETH/OETHb tokens. The pool is a concentrated liquidity pool analogous (and sharing most of the code) with a UniswapV3 pool
Code Change Checklist
To be completed before internal review begins:

[ ]  The contract code is complete
[ ]  Executable deployment file
[ ]  Fork tests that test after the deployment file runs
[ ]  Unit tests *if needed
[ ]  The owner has done a full checklist review of the code + tests

Internal review:

[ ] Two approvals by internal reviewers

Deploy checklist
Two reviewers complete the following checklist:
- [ ] All deployed contracts are listed in the deploy PR's description
- [ ] Deployed contract's verified code (and all dependencies) match the code in master
- [ ] The transactions that interacted with the newly deployed contract match the deploy script.
- [ ] Governance proposal matches the deploy script
- [ ] Smoke tests pass after fork test execution of the governance proposal

Full review in progress
Requirements
The PR implements an AMO strategy that utilises the underlying Aerodrome Slipstream (concentrated liquidity) pool
Easy Checks
Authentication

[x] Never use tx.origin
[x] Every external/public function is supposed to be externally accessible
[x] Every external/public function has the correct authentication

Ethereum

[x] Contract does not send or receive Ethereum.
[x] Contract has no payable methods.
[x] Contract is not vulnerable to being sent self destruct ETH

Cryptographic code

[x] This contract code does not roll it's own crypto.
[x] No signature checks without reverting on a 0x00 result.
[x] No signed data could be used in a replay attack, on our contract or others.

Gas problems

[]~~ Contracts with for loops must have either:~~ No loops

[ ] A way to remove items
[ ] Can be upgraded to get unstuck
[ ] Size can only controlled by admins

[ ]~~ Contracts with for loops must not allow end users to add unlimited items to a loop that is used by others or admins.~~ No loops

Black magic

[x] Does not contain selfdestruct
[x] Does not use delegatecall outside of proxying. If an implementation contract were to call delegatecall under attacker control, it could call selfdestruct the implementation contract, leading to calls through the proxy silently succeeding, even though they were failing.
[x] Address.isContract should be treated as if could return anything at any time, because that's reality.

Overflow

[x] Code is solidity version >= 0.8.0
[ ] All for loops use uint256 No loops

Proxy

[x] No storage variable initialized at definition when contract used as a proxy implementation.

Events

[x] All state changing functions emit events

Medium Checks
Rounding and casts

[x] Contract rounds in the protocols favor
[x] Contract does not have bugs from loosing rounding precision
[x] Code correctly multiplies before division
[ ] Contract does not have bugs from zero or near zero amounts
[ ] Safecast is aways used when casting -  has one cast from uint128 to uin256 that is safe without using safecast

Dependencies

[x] Review any new contract dependencies thoroughly (e.g. OpenZeppelin imports) when new dependencies are added or version of dependencies changes.
[ ] If OpenZeppelin ACL roles are use review & enumerate all of them. no OZ ACL roles
[x] Check OpenZeppelin security vulnerabilities and see if any apply to current PR considering the version of OpenZeppelin contract used.

External calls

[x] Contract addresses passed in are validated
[x] No unsafe external calls
[x] Reentrancy guards on all state changing functions

[x] Still doesn't protect against external contracts changing the state of the world if they are called.

[x] No malicious behaviors
[ ] Low level call() must require success. none of those
[x] No slippage attacks (we need to validate expected tokens received) - we do slippage checks on swap but not on add/remove liquidity since they are not a danger when removing liquidity from a bounded tick
[x] Oracles, one of:

[x] No oracles
[ ] Oracles can't be bent
[ ] If oracle can be bent, it won't hurt us.

[x] Do not call balanceOf for external contracts to determine what they will do when they use internal accounting

Tests

[] Each publicly callable method has a test
[ ] Each logical branch has a test
[ ] Each require() has a test
[ ] Edge conditions are tested
[ ] If tests interact with AMM make sure enough edge cases (pool tilts) are tested. Ideally with fuzzing.

Deploy

[x] Deployer permissions are removed after deploy

Strategy Specific
Remove this section if the code being reviewed is not a strategy.
Strategy checks

[x] Check balance cannot be manipulated up AND down by an attacker
[x] No read only reentrancy on downstream protocols during checkBalance
[x] All reward tokens are collected
[ ] The harvester can sell all reward tokens this is done by the strategist
[x] No funds are left in the contract that should not be as a result of depositing or withdrawing
[x] All funds can be recovered from the strategy by some combination of depositAll, withdraw, or withdrawAll()
[x] WithdrawAll() can always withdraw an amount equal to or larger than checkBalances report, even in spite of attacker manipulation.
[x] WithdrawAll() cannot be MEV'd
[ ] Strategist cannot steal funds Can most definitely steal funds :)

Downstream

[ ] We have monitoring on all backend protocol's governances
[ ] We have monitoring on a pauses in all downstream systems

Thinking
Logic
The strategy is depositing and removing liquidity to the Aerodrome pool as expected. It leaves the dangers of rebalancing slippage up to the Strategist.

[x] Correct usage of global & local variables. -> they might differentiate only by an underscore that can be overlooked (e.g. address vs _address).

Deployment Considerations
Are there things that must be done on deploy, or in the wider ecosystem for this code to work. Are they done?
Nothing special.
Internal State

What can be always said about relationships between stored state
The stored state correctly reflects the relevant state of liquidity in the underlying Aerodrome pool
What must hold true about state before a function can run correctly (preconditions)
TODO
What must hold true about the return or any changes to state after a function has run.
TODO

Does this code do that?
Attack
What could the impacts of code failure in this code be.
What conditions could cause this code to fail if they were not true.
Does this code successfully block all attacks.
Flavor
Could this code be simpler?
Could this code be less vulnerable to other code behaving weirdly?

OETHb AMO Code Review
Easy Checks
Authentication

[x] Never use tx.origin
[x] Every external/public function is supposed to be externally accessible
[x] Every external/public function has the correct authentication

Ethereum

[x] Contract does not send or receive Ethereum.
[x] Contract has no payable methods.
[x] Contract is not vulnerable to being sent self destruct ETH

Cryptographic code

[x] This contract code does not roll it's own crypto.
[x] No signature checks without reverting on a 0x00 result.
[x] No signed data could be used in a replay attack, on our contract or others.

Gas problems
no for loops
Black magic

[x] Does not contain selfdestruct
[x] Does not use delegatecall outside of proxying. If an implementation contract were to call delegatecall under attacker control, it could call selfdestruct the implementation contract, leading to calls through the proxy silently succeeding, even though they were failing.
[x] Address.isContract should be treated as if could return anything at any time, because that's reality.

Overflow

[x] Code is solidity version >= 0.8.0
[x] All for loops use uint256

Proxy

[x] No storage variable initialized at definition when contract used as a proxy implementation.

Events

[x] All state changing functions emit events

Medium Checks
Rounding and casts

[x] Contract rounds in the protocols favor
[x] Contract does not have bugs from loosing rounding precision
[x] Code correctly multiplies before division
[x] Contract does not have bugs from zero or near zero amounts
[x] Safecast is aways used when casting

Dependencies

[x] Review any new contract dependencies thoroughly (e.g. OpenZeppelin imports) when new dependencies are added or version of dependencies changes.
[x] If OpenZeppelin ACL roles are use review & enumerate all of them.
[x] Check OpenZeppelin security vulnerabilities and see if any apply to current PR considering the version of OpenZeppelin contract used.

External calls

[x] Contract addresses passed in are validated
[x] No unsafe external calls
[x] Reentrancy guards on all state changing functions

[x] Still doesn't protect against external contracts changing the state of the world if they are called.

[x] No malicious behaviors
[x] Low level call() must require success.
[x] No slippage attacks (we need to validate expected tokens received)
[x] Oracles, one of:

[ ] No oracles
[ ] Oracles can't be bent
[x] If oracle can be bent, it won't hurt us.

[ ] 🟣 Not by more than we care about anyway.

[x] Do not call balanceOf for external contracts to determine what they will do when they use internal accounting

Tests
I did not check tests.
Deploy

[ ] Deployer permissions are removed after deploy

Strategy Specific
Strategy checks

[x] Check balance cannot be manipulated up AND down by an attacker
[x] No read only reentrancy on downstream protocols during checkBalance
[x] All reward tokens are collected I've not checked
[x] The harvester can sell all reward tokens
[ ] No funds are left in the contract that should not be as a result of depositing or withdrawing

[ ] 🟣 Only dust that we are okay with. Included in balance.

[x] All funds can be recovered from the strategy by some combination of depositAll, withdraw, or withdrawAll()
[x] WithdrawAll() can always withdraw an amount equal to or larger than checkBalances report, even in spite of attacker manipulation.
[x] WithdrawAll() cannot be MEV'd
[ ] Strategist cannot steal funds

Downstream
_I've not checked downstream.
Thinking
Logic

Looks good

Deployment Considerations
Should throw away a tiny amount of liquidity before use.
Internal State

underlyingAssets is only set by _updateUnderlyingAssets

underlyingAssets is only read by ``checkBalance()`, outside of events.

_updateUnderlyingAssets() is only called when adding or removing liquidity. This would be before the NFT is placed back on the gauge, but NFT with us or the gauge will not matter since the NFT can give it's amount regardless.

allowedWethShareStart < allowedWethShareEnd

allowedWethShareStart and allowedWethShareEnd set only in setAllowedPoolWethShareInterval() and read in only _checkForExpectedPoolPrice()

What can be always said about relationships between stored state

What must hold true about state before a function can run correctly (preconditions)

What must hold true about the return or any changes to state after a function has run.

Economics invariants

checkBalance() before withdrawAll() >= checkBalance() after withdrawAll()
rebalance() can loose a maximum of 1 bps of the rebalance amount, plus a tiny amount for the off center point we are aiming for.

Attack
This code will control the bulk of our backing funds on the chain. On top of this it will be minting perhaps 19x more virtual OETHb. This contract also has unlimited mint permissions on the vault. So it is very critical code.
Possible attackers
MEVbots - Could try to profit on liquidity rebalances with classic sandwich attacks. However, we are paying 1 fee, they would pay 2 fees, so this would only work if somehow the pool escaped the targeted tick. Could do a JIT liquidity attack on us to earn as the price recenters. Our max loss is capped to 1/10000 of trade amount we choose + plus that we wouldn't get perhaps to our exact target. Easily stopped by setting good vault value settings.
Traders - Traders could know where we are trying to move our price back to, and try to profit from it. However, we should be able to keep trades in the active tick, which means the fees overwhelm trades.
LPs - LP's could yield farm the rewards tokens by farming the pool. This would also increase our rebalancing cost. They would be at a massive disadvantage in the long term for APY.
Strategist - The strategist using flashloaned funds can slice away small amounts of value with a technique. This attack can be repeated essentially infinitely. (Redeem solvency protections do kick in after this attack, which would preventing 1-1 redeems of funds after, but this just subtracts from the profit of the attack, not stopping it). However it would be better not to allow infinite looping of drains.
This contract does not have some of the defenses that our previous AMO contracts have had. There's no net mint caps from the vault. This contract isn't restricted to only ratcheting the price towards zero, rather it can bounce the price back and forth. It's also not targeting the single best spot on the curve, but is going to be "hardcoded" to buy back tokens at too high of a price (by a tiny amount. And we prebake in the possible loss into our checkBalance calculations, so we get it back if we don't take the loss.)
🔴 We should add a vault + token solvency check to the end of the rebalance function. Even if this gets triggered somehow, we are still able to withdraw funds using just the strategist address, so it's not locking up funds.
Helpers - We depend a lot on the math from the helper contracts. If one of these had a bug / did not match the actually behavior of the actual pool, then we could be in trouble.
Flavor
Code looks good. I'd shuffle around some of the internal functions, but they are okay as they are.


many-to-many criteria related bug-fix aggregate patch

Needed to utilize criteria against a non-owning side of a many-to-many association so we aggregated a few related (criteria + many-to-many) pull requests so we'd have a working patch branch to service our project. Mostly just merged the existing PR but also addressed some PR comments like adding missing tests.
Patches includes in this PR

#5638 criteria not working on non-owning side
#1535 criteria ordering ignored
#5653 criteria limit/offset ignored

Just to let you know I made fixes on test from this PR on https://github.com/doctrine/doctrine2/pull/5668 ;)


BlockPlaceCertain Door

  door:
    type: "blockplacecertain"
    amount: 1
    block: 324

When I place an oak door, nothing happens.

With the new version (v2.0.7-beta), you can try this in your config:
door:
    type: "blockplacecertain"
    amount: 1
    block: WOODEN_DOOR
    use-similar-blocks: true


narayana-spring-boot-3.3.0 fails with SB 3.4.0

I have an application that uses narayana-spring-boot. I tried to update this application to spring boot 3.4.0, but it fails with the following message:
Caused by: java.lang.NoSuchMethodError: 'void org.springframework.boot.autoconfigure.transaction.TransactionManagerCustomizers.customize(org.springframework.transaction.PlatformTransactionManager)'
	at dev.snowdrop.boot.narayana.autoconfigure.NarayanaAutoConfiguration.transactionManager(NarayanaAutoConfiguration.java:119)

Actually, I don't undestand why it's failing because there is another method with signature : void org.springframework.boot.autoconfigure.transaction.TransactionManagerCustomizers.customize(org.springframework.transaction.TransactionManager), but I tried to build narayana-spring-boot-3-3-1-SNAPSHOT with spring boot 3.4.0 in my local environment and It works fine with my application without erros.
So, It will be nice that narayana-spring-boot release a new version that bump to spring boot 3.4.0.

Already fixed with #172 waiting for release by @jacobdotcosta

But if you update to SB 3.4.0 there is no need to cast.

I know but an upgrade to 3.4.x is planned together with the next Camel compatible LTS. So we need something in between for people only using SB.

@oburgosm: Please try the 3.3.1 release.

It's works for me. Thanks @graben!


where's the sweet php support?

no php-mode configured so I can't use my favourite cash cow programming language PHP :(

https://github.com/d4ncer/.emacs.d/commit/83d1199f5e423bb7a64af20a05da736472a94e4b


Development Environment Setup

Establish a development environment to support frontend development, testing, and debugging.

[ ] Create a vite react project with typescript
[ ] Config eslint and prettier
[ ] Config playwright for E2E test
[ ] Config vitest for unit and integration test
[ ] Integrate TanStack router
[ ] Integrate TanStack query
[ ] Config Redux
[ ] Config shadcn/tailwind


fix: Handle helm charts with templated names

Resolves #703

So are we just stepping over it if it doesn't have a resolvable name?

Yeah, and using the name of the directory as the name, or failing that a random uuid.

Hi! I also tried to resolve this issue and fount next question: https://stackoverflow.com/questions/63270815/is-there-a-way-to-validate-parse-a-yaml-file-with-go-template-variables-in-it
just FYI.


feat: add custom playback configuration

This PR it's related to issue #9
thanks and regards

 Thank you for your submission! We really appreciate it. Like many open source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution.You have signed the CLA already but the status is still pending? Let us recheck it.

Hello @jonathanm-tkf, thank you very much for your contribution 😁. That's a nice feature to have indeed, but there are a few issues with your code I need you to tweak before I can approve:

PlaybackConfig should be part of PlayerConfig:

export interface PlayerConfig {
  // ...other properties.

  /**
   * Configures playback behavior. A default `PlaybackConfig` is set initially.
   */
  playbackConfig?: PlaybackConfig;
}

Remove the playbackConfig parameter from Player.constructor, usePlayer and initWithConfig (native sources);
Just handle playback config initialization on JsonConverter and RCTConvert+BitmovinPlayer, not directly on the PlayerModule;
Add as many props from the native PlaybackConfig object as possible, not just isAutoplayEnabled. Other common props between android/iOS are isMuted and isTimeShiftEnabled;

Thanks, @pogist in principle I had thought about it that way but I didn't want to affect the current functionality, as soon as I have some time I'll try to implement it, if I have any doubt I'll comment on the issue :)
Regarding question
When implementing the solution in some cases in android we have the following detail, regarding the buffering? which occurs in a non-constant way, only happens on android as it works perfectly well on ios.
What would be the best way to solve this problem?
Thanks again

@pogist I don't understand what you mean by this, how would it be better? Could you give me an example?

Just handle playback config initialization on JsonConverter and RCTConvert+BitmovinPlayer, not directly on the PlayerModule;

@pogist I don't understand what you mean by this, how would it be better? Could you give me an example?

Just handle playback config initialization on JsonConverter and RCTConvert+BitmovinPlayer, not directly on the PlayerModule;

Maybe you referred to something like that
  static func playerConfig(_ json: Any?) -> PlayerConfig? {
      let playerConfig = PlayerConfig()
      guard let json = json as? [String: Any?] else {
          return playerConfig
      }
      if let licenseKey = json["licenseKey"] as? String {
          playerConfig.key = licenseKey
      }
      // ...other logic
      if let playbackConfig = json["playbackConfig"] as? [String: Any?] {
          if let isAutoplayEnabled = playbackConfig["isAutoplayEnabled"] as? Bool {
              playerConfig.playbackConfig.isAutoplayEnabled = isAutoplayEnabled
          }
      }

      return playerConfig
  }

Hi @pogist
I have changed the implementation could you check it and let me know if it is to your liking?
Greetings.

Thank you very much for the support @pogist, yes correct, and I totally agree I just added it as a new screen because I needed to test and not interfere with your original example, as soon as I get free I will be modifying and if you like maybe I can modify the readme with an example so it does not interfere with the BasicPlayback, that is what you think thank you very much.

Hi @pogist how are you?
I caught up with your recommendations and suggestions if you have time to review them, let me know if you agree or need any updates.
Thanks and regards.

Hi @pogist how are you?
I caught up with your recommendations and suggestions if you have time to review them, let me know if you agree or need any updates.
Pido perdon debido a que he estado bastante distante del proyecto pero fueron semanas bastante duras en el trabajo, mil disculpas
Thanks and regards.

Hi there @pogist 👋
Some news with this integration?
Thanks for your support

Thanks, @pogist thanks for your support I really appreciate it!!!


Blazor app spinning

Start the project src/Aguacongas.TheIdServer.Duende using VS

and how can i change the variables for the blazor app when using src/Aguacongas.TheIdServer.Duende ?

do i have to fork it?

do you have a docker-compose.yaml?

No


Showcase page refresh

Why
We plan to expose the link to this page in the top navbar, so I thought that a small design and data refresh before that exposure will be nice.
How
This PR refreshes the Showcase page design, content now spans to the same with as other custom pages, header and footer content has been moved to the separate sections.
The apps list also has been updated:

partners apps are grouped at the top of the showcase: boxes includes partner logo - take from the official brand resources - and optional description/testimonial which need to be filled - I have no content for those places, so I have used Lorem Ipsum and one example there,
the rest of the entries are shuffled on each render.

Additionally I have updated few of the existing entries, outdated icons (using app assets from on of the stores page) and I have removed few entries, as established when reassessing the current Showcase content.
Tests
The changes have been tested by running docs website locally.  Mobile layout has been tested on the real device.
Preview
Deploy: https://deploy-preview-3235--react-native.netlify.app/showcase

Full page screenshots

Some UI points:

Can we scale down the app icon sizes, they are quite large in relation to the company logo. Perhaps they could be similar size to the home page apps?

Can we remove the drop shadows on the company boxes? I don't see us putting drop shadows on any other content

Can we scale down the app icon sizes (on the showcase page), they are quite large in relation to the company logo.

The icons size did not change from the currently deployed showcase, I can try to reduce the sizing a bit, but I think that similar size to the pinned apps on home page will be too small.

Can we remove the drop shadows on the company boxes?

I was iterating on this design, and initially, the company boxes have no shadows but then then I have added one for icons and went with same style for boxes, but I agree that it's not a pattern or style that we use anywhere else on the website. I have also experimented with no borders and altered background section like on the home page, but it doesn't look good. Going to remove the shadow, please let me know if this looks fine after that change.

Thanks @Simek! -- sorry for the delay, I also tried it out and added a screenshot to my comment above. Generally, I'm looking for the page to take less vertical space

@lunaleaps Can you check the preview deploy, when the updated version with the latest commit will be deployed, and let me know if the changes improved the appearance and address the concerns you have? I have reduce the icons size from 100px to 80px and tweaked spacing a bit.
Also, as stated before, to reduce the vertical space taken even more we can "stick" the "Learn more" button to the bottom border of the app tile. Would you like to see change like this in?
Preview

Great thank you @Simek! I do like the sticky "learn more" -- and I guess if there was no "learn more" link, the height would be fixed so things stay flushed?
Some other nits (in order of importance)

Fix dark mode, we probably want the background to be the same color as the header?
Can we +1 to number of showcase-icons in each breakpoint? Like for example, I think we should fit 3 in here
Changes to the header to take up less vertical space

Can we change the black header paddingTop, paddingBottom: 20 -- or something similar to other pages -- I notice they all have around 20px at top (example)
Update the text to not have a <br />
Update the "React Native" text to be white
There looks like an undefined CSS class

There's a certain width where there is no margin on the company section border screenshot

Thanks @Simek for the detailed responses!
Re: dark mode - Sounds good.
Re: showcase icons per breakpoint - okay let's keep it as is then.
Re: hero header - Can we remove it as a header and have it flat on the background? Similar to our docs?
Re: React Native color - Similar to previous point, if we keep it as a hero header I can see what you mean but I think the information/content there now is very low value, I'm not sure we need to highlight it since our company/app logos are already the highlight.
Other than that, these changes look good to me! I think these UI changes are the last thing before we can land this?

Other than that, these changes look good to me! I think these UI changes are the last thing before we can land this?

I think so :) let's gooooo 🥳


tools/omnissm - fix missing line in file

Not sure what happened here, I must have flubbed an edit while committing.

i'll try and prioritize moving to a new github org next week, and we can break this and the other things in tools out into separate repos, we've got a few things in tools with tests that aren't being run in ci due to speed tradeoffs, which would have caught this.


Switch jenkinsfile to use ecr registry

Description
Switch jenkinsfile to use ecr registry
Issues Resolved
#3358
By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license.
For more information on following Developer Certificate of Origin and signing off your commits, please check here.

Codecov Report

Merging #3364 (8dffba0) into main (21a416b) will decrease coverage by 0.29%.
The diff coverage is n/a.

:mega: This organization is not using Codecov’s GitHub App Integration. We recommend you install it so Codecov can continue to function properly for your repositories. Learn more
@@            Coverage Diff             @@
##             main    #3364      +/-   ##
==========================================
- Coverage   91.74%   91.46%   -0.29%
==========================================
  Files         172      172
  Lines        4991     4991
==========================================
- Hits         4579     4565      -14
- Misses        412      426      +14

see 2 files with indirect coverage changes
Help us with your feedback. Take ten seconds to tell us how you rate us. Have a feature suggestion? Share it here.


Usage with webpack?

Hi,
I am not getting how to use it with webpack&c:
import CountryData from 'country-data';
CountryData.lookup.countries({currencies: 'EUR'});
generates:
Uncaught (in promise) TypeError: data.filter is not a function(…)
Am I doing something wrong?

I don't use webpack so can't comment. Anyone else have any observations?

Same issue. Throwing a debugger in the script where I'm importing 'country-data', countryData.countries.all returns an empty object.

Same issue.
import countryData from 'country-data';
console.log(countryData);

I had to install and configure json-loader in webpack to fix this:
npm install json-loader --save-dev

// webpack.config.js

// ...
   loaders: [
      // other loaders
      { test: /\.json$/, loader: 'json' },
  ],
// ...

Thank you @luxflux - would adding the webpack.config.js file to country-data be a way to close this issue?

Hm, I'm pretty new to this stuff as well... But I don't think adding webpack.config.js would help as this is a config which is project specific and won't automagically be searched in the dependencies.
IMHO mentioning this in the README would be sufficient.

Thanks for the input. Notes about webpack added to README and code now on NPM as v0.0.28


Simulator C++ Viewer

Motivation and Context
The C++ Viewer application is used for rapid feature development and testing in Habitat-sim C++ codebase.
Currently this application directly uses internal Habitat-sim structures (e.g. ResourceManager, SceneGraph, Pathfinder) and is therefore not representative of the functionality contained in the primary API target: Simulator.
This PR is a refactor of the Viewer application to directly use the Simulator class reducing code duplication and improving synchronization with the primary python simulator API.
Notes:

Thanks to #727 for Simulator application GL context handling. 👍
Now caching number of Drawables visible after culling in RenderCamera
Added physicsDebugDraw and applyImpulse to Simulator
Future PR should add support for non-color sensor display options
Agent state is no longer logged every time it is modified, but on keypress 'Q'
Removed mouse wheel zooming in preparation from upcoming "mouse mode" feature

How Has This Been Tested
Local testing.
Types of changes

[ ] Docs change / refactoring / dependency upgrade
[ ] Bug fix (non-breaking change which fixes an issue)
[ ] New feature (non-breaking change which adds functionality)
[x] Breaking change (fix or feature that would cause existing functionality to change)

Checklist

[x] My code follows the code style of this project.
[ ] My change requires a change to the documentation.
[ ] I have updated the documentation accordingly.
[x] I have read the CONTRIBUTING document.
[x] I have completed my CLA (see CONTRIBUTING)
[ ] I have added tests to cover my changes.
[ ] All new and existing tests passed.

@mosra Looks like "flextGL" is one of your symbols. Any idea how it's leaking into the emscripten build and how to solve that issue?

Fixes #507

@aclegg3 You should pull from master to integrate the pre-commit checks.

@mosra:
Would you join us to take a pass on this PR? Thank you!

I am testing this local branch.
I found "imgui" and "object picking" currently are not working. Can we make sure we do not break any existing functions to the viewer before we merge it in? Thanks!

These are both working locally for me. Can you recompile and check again?

These are both working locally for me. Can you recompile and check again?

I deleted the entire build/ folder, pulled the latest branch "sim-viewer", and did a clean build from scratch. Unfortunately, both functions are still broken. I was testing it in a linux machine. See the attached screenshot.

Now I am going to test it on Mac.

Confirmed it works for the Mac OSX, but it is broken on Linux.

@aclegg3 : Not so sure if you have a linux box with you.
Just FYI: I am also looking into this problem on my side as well.

Wrote a PR tonight to fix the aforementioned issue:
https://github.com/facebookresearch/habitat-sim/pull/775

Confirmed it works for the Mac OSX, but it is broken on Linux.

Actually, the rendering of the picking object was also wrong on Mac OSX due to missing depth info. See pictures in #775.

All open issues resolved. Ready for review.

@aclegg3 :
One more thing in the Simulator.h
Check the inline comments.
Would you use CORRADE_ASSERT?


Feature Request: HLS-to-Swarm adapter

Summary
HTTP Live Streaming (also known as HLS) is an HTTP-based adaptive bitrate streaming communications protocol developed by Apple Inc. and released in 2009.
This feature request is for a mechanism to automatically store content published from a HLS stream into Swarm.
Motivation
Video is the highest bandwidth means of digital communication.
Furthermore, live streaming video is becoming increasingly available for us all as a way to share content such as these high quality technical talks from EthPrague.
Most of the value being created live is being captured and mined by existing closed-source monopolies.
A feature like this could provide an easy way for publishers of content via HLS livestreams to store their content more sustainably, while mitigating their de-platforming risk.
Implementation
There appear to me to be two options:

A new daemon, which exists outside of Swarm, which requests content from the .m3u8 HLS endpoint, and pushes into bee. Can be written in any language.

A feature in bee, which requests content from the .m3u8 HLS endpoint. Must be in golang.

Recommend using MistServer to provide the .m3u8 endpoint for developing/testing against.
Recommend starting with a very very very low bitrate/frame size/frame rate, then turn it up and see where it breaks.
Drawbacks
It may be true that Swarm isn't able to receive a stream of content, however low the bitrate is.

cf https://github.com/bee-resource/bee-node/blob/98320f4629c4caaef9f64ec7ff3f130b9a7a2f44/pkg/pushsync/pushsync.go

I think the 1st option (daemon) is the easiest for interoperability. This also enables options for setting up listening via a separate interface, and need only integrate with a pusher.

...at 1080p and 8bit color a 4096kb chunk could potentially hold... 2 frames.

...but most frames in most video are mostly the same from frame to frame.

Develop a way for MistServer to push into a Swarm endpoint. May require to be developed in C.

I have read the manuals, so far, but not the sourcecode... https://github.com/DDVTECH/mistserver

merging multiple segments/chunks into a stream...

Perhaps we need to be clear on terminology here. I don't believe that segments and chunks can be used interchangeably.
In HLS world, a n-second-long segment of video is represented as a .ts file. This file would then (presumably) be divided into chunks for storage on Swarm.
Does that sound reasonable?

I think this is a good idea to try, there were some discussions about this long time ago, because the single-owner chunks (SOC) feature seems to be a good match to write a stream of chunks for video content.
I am curious about the feasibility of this, because currently the swarm network is not optimised for real time delivery. However I happened to participate in a hack project earlier (https://swapchat.bzz.link) which is a private chat between two parties, using SOCs with polling, similarly how I imagine the video use-case could work. It uses the public gateway which is rate limited and that causes problems sometimes when loading the page (so you may have to reload a few times), but when it is connected then the messages arrive in ~3-5 seconds. Each message is transmitted as a single chunk. That may be good enough for live-streaming as well, with the added bonus of persisting the chunks so that it can be replayed later as well.
As a test I would go with the first option. I would create a new daemon and try to push data on swarm with an increasing SOC index. Then it would be possible to measure how big the latency is with another custom client application that would poll the highest index. It is important to mention that this client should connect to a different Bee than where the upload happens, because there is caching happening in Bee and that may skew the results.
Also the polling must have some added logic, for example trying to fetch the same index several times with some delay between them and cancel the outstanding requests once one of them succeeds. This is necessary because the current Bee implementation has a logic to return 404 after a few seconds instead of keep looking for a certain chunk. There was some discussions about how this behavior could be changed, my proposal would be to add an endpoint to Bee that is trying to fetch a chunk with an address until a timeout happens to support use-cases like this.

Hey all! I'm the lead dev for MistServer, and Chris asked me to chime in a bit here.
I'm not very familiar with Swarm at all - so please do correct me if I'm ignorant on anything or making wrong assumptions. 😇
First of all, I'm listing my assumptions here:

Swarm is intended here to be the archival method of a (live) stream, not the real-time distribution method.
The HTTP retrieval endpoints have support for range requests (do they? I hope so...)
Native playback in as many applications/browsers as possible is intended, preferably using existing standards

If those assumptions are all valid, I propose the following solution:
MistServer can be told to pull a HLS endpoint (or almost any other kind of stream endpoint, really), and turn it into a local "stream" on the system. This abstracts away the nitty-gritty details of the ingest format, so from this point onward all HLS-related specifics no longer matter (and any other kind of supported input format would work identically). Then there is support for automatically pushing streams on the system to elsewhere using various methods, including writing a file to disk and several other methods.
A "quick and dirty" method would be to simply record the stream to local file, use a RECORDING_END trigger to detect the completion of the write, and then use the usual file upload method to store the file and delete the local copy. This requires no changes to MistServer at all, and only e.g. a small bash script to handle the upload+delete (to be ran by MistServer automatically on recording completion).
A nicer method would be to use this endpoint: https://docs.ethswarm.org/api/#tag/Chunk/paths/~1chunks~1stream/get (since MistServer already has a lot of native support for websockets and chunking), and stream a MKV/WebM format recording into Swarm as it's being created. This would take somebody familiar with Mist's codebase maybe 5-10 hours to complete, so it's not a crazy amount of work at all.
As an in-between, a simple application could be written to take data over stdin and upload it in the same way. MistServer supports piping an ongoing recording into stdin of any arbitrary shell command.
Regardless of which of the above methods is used, you'd end up with a WebM/MKV format recording that, when requested over HTTP, would play practically anywhere (most non-Apple browsers, pretty much every dedicated media player application).
I'd be happy to assist or help explain where needed - might even write the "nicer method" myself, but I'm not sure exactly when I'd be able to make the time free to actually do so. 😅

I am curious about the feasibility of this, because currently the swarm network is not optimised for real time delivery. However I happened to participate in a hack project earlier (https://swapchat.bzz.link) which is a private chat between two parties, using SOCs with polling, similarly how I imagine the video use-case could work. It uses the public gateway which is rate limited and that causes problems sometimes when loading the page (so you may have to reload a few times), but when it is connected then the messages arrive in ~3-5 seconds. Each message is transmitted as a single chunk. That may be good enough for live-streaming as well, with the added bonus of persisting the chunks so that it can be replayed later as well.

In my work with a 55million reference (some references are multiple chunks) dataset, I've seen individual chunks take 5-10 seconds for retrieval.  The internal timeout on the /bytes API endpoint is currently 10 seconds as seen in the following code link.  The public gateway is really useless for testing anything that involves moving large amounts of data or expecting quick response.   Running your own local node is much better.  There'll be a big difference between single chunks for text messages and the size required for live-streaming video.  The trickiest part of response time testing is ensuring that the data is coming from the swarm (first time) and not from the node's local cache (every subsequent retrieval).
https://github.com/ethersphere/bee/blob/0bf1fd7488d973a0752f225a837daafb3c6108fd/pkg/retrieval/retrieval.go#L100

It is important to mention that this client should connect to a different Bee than where the upload happens, because there is caching happening in Bee and that may skew the results.

And for each subsequent test, you either need to db nuke the retrieval bee node or have a bunch of different nodes that you can sequence through.  I have not found any way short of db nuke to remove chunks from the local node cache after the first retrieval.

Also the polling must have some added logic, for example trying to fetch the same index several times with some delay between them and cancel the outstanding requests once one of them succeeds. This is necessary because the current Bee implementation has a logic to return 404 after a few seconds instead of keep looking for a certain chunk. There was some discussions about how this behavior could be changed, my proposal would be to add an endpoint to Bee that is trying to fetch a chunk with an address until a timeout happens to support use-cases like this.

As mentioned above, the current timeout is 10 seconds, but it is not uncommon for a failure to happen sooner than that.  Also rather surprising to me is that if you hit the /bytes retrieval API repeatedly (/bytes is effectively used under the /bzz covers, but I use the former exclusively in my testing), it will many times succeed after a bunch of retries.  By "a bunch", I'm currently using 30 retries on each retrieval.  Many work the first time, and I've seen them take up to 29 and 30 and some chunks still fail after that.
I recently updated my retrieval/pinner test to send a PUT /stewardship to my original uploading node on the first /bytes failure and most of my chunks now succeed on the first retry after the /stewardship has "repaired" the swarm.  This is all very explicit client-side JS code, but it works really well for maintaining full retrievability of a dataset from the swarm.
BTW, I don't yet know how long it takes to traverse the full 55 million dataset from the swarm, but it will definitely be measured in days, not hours or minutes.  It's the dataset behind:
https://bah5acgza7x6rod3tsu54eywzg3j2kmu3pb4yam25ybkhamv3fjrdt27jlj3a.bzz.link/
Which is mainnet swarm collection (manifest) reference:
f09da1184cc9ef6af3b228f72c6ff965fcfee58b47d65d52ef6cf4e5347c766e
I'll be watching this HLS/video effort as it progresses!

Perhaps this isn't necessary, but I want to impress on you all the opportunity to try this with a very low data rate of HLS stream.
Like, forget 1080p and 60fps for now, let's start with 72p, or 128x72 pixels, with the lowest video / audio bitrates, and minimal frame-rates, e.g. 4fps.

@Thulinma what is the lowest data rate of stream feasible using MistServer? OBS can publish to rtmp endpoint with as little as 50Kbps video and 20Kbps audio, but I wonder whether MistServer could potentially serve up even lighter-weight HLS streams? Y'know, we don't want to hit Swarm with more than it can handle ;)

Sharing a zip file with some 2-second .ts video segments

merging multiple segments/chunks into a stream...

Perhaps we need to be clear on terminology here. I don't believe that segments and chunks can be used interchangeably.
In HLS world, a n-second-long segment of video is represented as a .ts file. This file would then (presumably) be divided into chunks for storage on Swarm.
Does that sound reasonable?

No, the last part isn't really what I am proposing, although I do agree on the terms.  In any case, either segments or chunks of segments (or segments of chunks, although at realistic display standards those segments would have to be no more than a couple frames) must be brought into a feed to be brought out from swarm in a batch of chunks.

Why a feed and not a SOC index: because retrieval via 1 endpoint from swarm to the distribution layer is too slow.  I would propose that we solve the issue with yet another 3rd party in the mix: Media.Network allows for a distributed edge service and can be used to increase the number of calls to swarm intended for multiple endpoints on consumption.  In this way any number of bees could pull any number of chunks and provide them to the edge, where they can be replicated and distributed at scale.

@Thulinma what is the lowest data rate of stream feasible using MistServer? OBS can publish to rtmp endpoint with as little as 50Kbps video and 20Kbps audio, but I wonder whether MistServer could potentially serve up even lighter-weight HLS streams? Y'know, we don't want to hit Swarm with more than it can handle ;)

There is no practical lower limit, but things will start to look pretty bad if you go too low. Would still work just fine, though.

We can reopen the issue when further discussion is needed.


🏛 [EPIC] : Role-base access control implementation

Summary
Deliverables will include updates to Catalyst Core backend to support role-based registrations and wallet-connect capabilities for the browser-based application.
https://milestones.projectcatalyst.io/projects/1000096/milestones/3
JIRA Epic
TODO
Description
Backend

[ ] Capturing all defined roles.
[ ] Recording Earned Rewards and Payment information for each registration.
[ ] Define Parameters for each registrations snapshot and deadline.
[ ] Allows each role to have a different set of minimum requirements.
[ ] Allows the deadline for different roles to occur at different times relative to the Fund Cycle.
[ ] Update the cat-data-service to:

[ ] Incorporate the new data into existing or new endpoints.
[ ] Must ensure that each role registration type can be accurately checked by external tooling.
[ ] Provide endpoints to enable permissionless authorization of front end applications for defined role registrations.
[ ] Provide endpoints to return any detected errors with Role Registrations, and a users registration history.

[ ] Documented Public Open API Definition for cat-data-service.
[ ] Automated Test Cases running in CI.

Frontend

[ ] Full Support for CIP-30 functions.
[ ] Full support for RBAC Registrations as defined by the RBAC Specification from milestone 2.
[ ] RBAC Wallet interface will enable:

[ ] Registering for a Role, and submitting on-chain.
[ ] Signing Data by a user's registered role keys.
[ ] Demonstrating dApp/wallet integration to RBAC interfaces to enable permissionless auth to the backend.

[ ] Documented Public API Definition
[ ] Automated Test Cases running in CI

Relevant CIPS:
https://github.com/cardano-foundation/CIPs/pull/810
https://github.com/cardano-foundation/CIPs/pull/811
https://github.com/cardano-foundation/CIPs/pull/813
https://github.com/cardano-foundation/CIPs/pull/814


Feat: delete programme memberships

TIS21-1326

I haven't work out if the use of a field in the ProgrammeMembershipEventListener is thread safe as is. Apart from that, just a couple of minor changes.

Yes, that was worrying me too. I suspect it isn't. I don't have an immediate way to fix this... maybe a public hashmap in the enricher with key = programmeMembershipId and value =personId which I can read/write from the event listener, instead of the event listener using its own property? I could give that a try if it is not a very ugly workaround.

I haven't work out if the use of a field in the ProgrammeMembershipEventListener is thread safe as is. Apart from that, just a couple of minor changes.

Yes, that was worrying me too. I suspect it isn't. I don't have an immediate way to fix this... maybe a public hashmap in the enricher with key = programmeMembershipId and value =personId which I can read/write from the event listener, instead of the event listener using its own property? I could give that a try if it is not a very ugly workaround.

I'm not thrilled about this suggestion but we could inject the CacheManager into the Listener and get the object from the cache using the AfterDeleteEvent.getSource().getString("_id").

I haven't work out if the use of a field in the ProgrammeMembershipEventListener is thread safe as is. Apart from that, just a couple of minor changes.

Yes, that was worrying me too. I suspect it isn't. I don't have an immediate way to fix this... maybe a public hashmap in the enricher with key = programmeMembershipId and value =personId which I can read/write from the event listener, instead of the event listener using its own property? I could give that a try if it is not a very ugly workaround.

I'm not thrilled about this suggestion but we could inject the CacheManager into the Listener and get the object from the cache using the AfterDeleteEvent.getSource().getString("_id").

Thanks for the idea, that would be much neater! I have it working, I'm just working on the tests now.

Hmm, those test work fine locally...

Sorry @JosephKelly , I accidentally dismissed your review - I was adding another test to improve the code coverage somewhat. I ended up with just unit tests on programmeMembershipEventListener, but 'baby-steps' eh? :)