GitHub Action step is hanging until timeout

Description
An GitHub action to run QUnit tests that has worked well for some time stopped working around the 22nd of November. The process runs on Linux using ubuntu-latest.
On finding this blog article we have specified the workflow to use ubuntu-20-04 and the workflow is now operational again.
See also report I made in the wrong repository:
https://github.com/actions/runner/issues/2298
Platforms affected

[ ] Azure DevOps
[X] GitHub Actions - Standard Runners
[ ] GitHub Actions - Larger Runners

Runner images affected

[ ] Ubuntu 18.04
[ ] Ubuntu 20.04
[X] Ubuntu 22.04
[ ] macOS 10.15
[ ] macOS 11
[ ] macOS 12
[ ] Windows Server 2019
[ ] Windows Server 2022

Image version and build link
2.299.1
https://github.com/ClassicPress/ClassicPress/actions/runs/3542477755/jobs/5948017123
Is it regression?
https://github.com/ClassicPress/ClassicPress/actions/runs/3521742250/jobs/5903925683
Expected behavior
This QUnit test should continue to work and function to completeness without hanging
Actual behavior
The process runs as expected until the final step where the process hangs without further log output until the process is terminated after running without completing at 6 hours.
Repro steps
Update the current GitHub Actions configuration to use ubuntu-latest and run the action.
Process will reach last stage and hang for 6 hours until being terminated.
On ubuntu-20.04 the process runs successfully.

Probably related to this https://github.com/actions/runner-images/issues/6698. I'll be more specific after a little research.

Please provide minimal repro steps.

The workflow file affected is here:
https://github.com/ClassicPress/ClassicPress/blob/develop/.github/workflows/javascript-tests.yml
You may be able to see from the run history that we started getting run failures about 2 weeks ago (22 Nov 2022).
The workflow was using runs-on: ubuntu-latest and I noted in this blog that specifying a version would help if processes broke. I therefore tried runs-on: ubuntu-20.04 and the task began running to completion once again.
To reproduce I suppose you could:
1/ clone the repository
2/ amend the workflow to use ubuntu-latest again
3/ run the workflow manually

Same problem. installing the dependencies hangs and eventually times out. Tried to downgrade to Ubuntu-20.04 as suggested above but it didn't fix the problem.
Link to repo: https://github.com/LinkedEarth/Pyleoclim_util/actions/runs/3707003131/jobs/6282898422

Hello @mattyrob!
Sorry for the late response and thank you for your patience!
I've tried to reproduce the issue on a clean Ubuntu 22.04 VM and got the same result - test step hangs. It seems to me that your project is not compatible with Ubuntu 22.04 or the issue is related to Ubuntu 22.04 itself.
Have you tried running the tests locally on Ubuntu 22.04?

@MaksimZhukov - thanks for the response.
I don’t personally have access to an Ubuntu machine but I can ask other community members.
We have worked around this issue for now by specifying Ubuntu-20.04 in the runner.

I am closing the issue since it is not related to GitHub hosted runners.
Feel free to contact us if you have any questions.

@MaksimZhukov - Did you find that the process failed running on Ubuntu 22.04? How is it you are certain this issue is not linked to GitHub hosted runners?
If you can share the results and process of things you tried to reach that conclusion it may help me fix me issue.


Is the public script up to date?

@flackr @bramus  @kevers-google
Hello, I've been using this polyfill on a production site for several months. Recently the scrollOffsets properties (as defined in the ScrollTimeline class) stopped functioning as they did when I originally configured the animations... I checked here and saw there had been some updates relating to this, although I admit I do not understand them very well...
On the demo page I noticed that all the ScrollTimeline classes had been replaced by ViewTimeline:
timeline: new ViewTimeline({ subject: container }),
timeRange: 'contain 20% 80%'

So I tried updating my animations accordingly, but the animations completely break, without any console errors.
I'm using the script referenced in the readme: https://flackr.github.io/scroll-timeline/dist/scroll-timeline.js
Is the above script up to date? How can I get my animations back on track. Thanks!
This is what I currently have for one of my animations:
element.animate(
  [
    { clipPath: 'inset(0% 60% 0% 0%)' },
    { clipPath: 'inset(0% 0% 0% 0%)', offset: 0.46 },
    { clipPath: 'inset(0% 0% 0% 0%)', offset: 0.46 },
    { clipPath: 'inset(0% 60% 0% 0%)' }
  ],
  {
    duration: 1,
    easing: 'cubic-bezier(0,.44,1,.57)',
    fill: "both",
    timeline: new ScrollTimeline({
        scrollSource: document.documentElement,
        scrollOffsets: [
          { target: element, edge: 'end', threshold: 0 },
          { target: element, edge: 'start', threshold: 0 }
        ],
        fill: 'both',
    }),
  }
);

The goal is to have the above keyframes start as the top of the element first comes into the bottom of the viewport, and end as the bottom of the element leaves the top of the viewport. This was working as expected up until recently. Last time I checked it is not. And I'm not sure what exactly it's doing... The animation seems to start before the element comes into the viewport, and it barely gets halfway through before the element has left the viewport. Perhaps the animation timeline is based on the entire document scroll...?
Any suggestions would be so much appreciated. It's very difficult to find support for this on the web. I'm not sure who to ask besides you. Thanks so much!

I've been playing with various versions of scrollOffsets and I can't get anything to work. The animation timeline seems to be unchanged, no matter how I change my configuration. I think the animations are being timed based on the total length of the page it's on. I can't seem to get the animations to be bound by specific scroll offsets.
Please help!

Yes, the script tries to stay up-to-date with (the rewrite of) the spec. scroll-offsets have been removed from the spec. See https://github.com/flackr/scroll-timeline/issues/64 for a more extensive answer.


Fix passing of argument with incompatible pointer type to fts_open()

With GCC 14, the incompatible-pointer-types warning will turn into an error by default. Due to this, the compilation of selint with newer versions of GCC would fail.
This patch fixes 2 calls to fts_open() where this error occurs. As fts_open() expects an array of char * const, not const char * const, and the documentation does not guarantee that fts_open() will not modify the string, the argument needs to be copied (or initialized as an array instead of a pointer).

Seems reasonable except for the memory errors, thanks.
I'm curious though, since this is a warning upgrading to an error, I'm not getting the warning on the current code base.  I'm using gcc 13.2.1 and compiling with -Wall and -Wextra (per configure.ac).  The github tool chain also adds -WError.  So I don't understand why I'm not seeing the existing warning (probably as an error in CI).  Any ideas?

In hindsight, the function calls no longer need to be wrapped in these macros.

Merged.  Thanks!


Keyboard search on focused select without opening the overlay

#184
Added functionality to search and cycle through items with the keyboard when the select is focused, without opening the overlay.

This change is

 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.

Thanks for the contribution @SpaVec. If we only changed the behaviour in vaadin-select, it would behave differently when the select is closed and when it's opened, which is unexpected. So, the logic should go to vaadin-list-mixin (where the current logic for keyboard selection is): https://github.com/vaadin/vaadin-list-mixin/blob/master/vaadin-list-mixin.html#L148
..the new logic should preferably be in a separate (static) function that could then be invoked from vaadin-select's _onKeyDown while the select is still closed.
Please also include tests for this new feature. Generally all new code should be properly tested https://github.com/vaadin/vaadin/blob/master/DEVELOPMENT.md#running-tests

Good point, I'll do that.
Should the new function necessarily be static ? It seems easier to make it a method since I can make use of the _getAvailableIndex method.
I have created a pull request for vaadin-list-mixin here : https://github.com/vaadin/vaadin-list-mixin/pull/50
Waiting for your review on the list mixin to commit the changes for the select.


[TFGPT2Test] Fix GPT2 test

What does this PR do?

Fixes # (issue)
Before submitting

[ ] This PR fixes a typo or improves the docs (you can dismiss the other checks if that's the case).
[ ] Did you read the contributor guideline,
Pull Request section?
[ ] Was this discussed/approved via a Github issue or the forum? Please add a link
to it if that's the case.
[ ] Did you make sure to update the documentation with your changes? Here are the
documentation guidelines, and
here are tips on formatting docstrings.
[ ] Did you write any new necessary tests?

Who can review?
Anyone in the community is free to review the PR once the tests have passed. Feel free to tag
members/contributors which may be interested in your PR.

Ups wrong repo - sorry about that!

Ups wrong repo - sorry about that!


correcting-geojson-structure

Fixes : https://github.com/mit-cml/appinventor-sources/issues/2776

Can one of the admins verify this patch?

@ewpatton could you please review ?


Proposal: Create a Comprehensive Developer's Manual

Is your feature request related to a problem? Please describe.
The onboarding process for new contributors to the Apache AGE project is challenging due to a lack of comprehensive documentation about the codebase, standards, and procedures. This makes it difficult for new developers to understand how they can best contribute to the project. Furthermore, the absence of a standard guide may lead to inconsistencies in code and practices across the project.
Describe the solution you'd like
I propose that we create a comprehensive Developer's Manual for the Apache AGE project. This document should provide:

An overview of the project structure and codebase to help newcomers understand the system quickly.
Our coding and documentation standards, best practices, and conventions to ensure consistency across the project.
Step-by-step procedures for common tasks like submitting pull requests, reporting bugs, or proposing new features.
Information about the project's vision, goals, and roadmap to ensure that all contributors are aligned in their efforts.

Describe alternatives you've considered
An alternative solution could be creating separate documents for each of the points mentioned above. However, having all the information in one comprehensive Developer's Manual would provide a central source of truth and would be more efficient for both new and existing contributors.
Additional context
Creating a comprehensive Developer's Manual would not only ease the onboarding process for new contributors but also enhance collaboration among team members. It would provide a shared understanding of the project and its goals, making the development process smoother and more efficient. As the project grows, this manual will be an invaluable resource to ensure consistency and quality in our collaborative efforts.

I support this proposal and would like to contribute if it becomes a project. Another suggestion I've seen in other open-source projects is to create a "good first issue" category. This helps new contributors find issues easier to contribute to when first introduced to the project and still add value.

This will help alot.
Unfortunately, I made some PRs that wasn't considered because of lack of such info. If there are clear details about contribution, It's going to be a great foundation for new contributors.

It would be really helpful if this proposal goes ahead! If there are other interns to guide the newest ones, using techniques like pair programming and explaining how to contribute, that would also be good!

I think that, for now, we can add to the documentation some of the functions that are missing. But it would really help to have a developer's manual. For that, we might need to do some reverse engineering, it would probably be best if someone with more knowledge on AGE could guide us through on which files to look for and in which it would be best to do that, so we can see how exactly things work.


Summarization edits

Ugh lots of changes on this one. But hopefully for the better.
I think this addresses number 54 in the old repo.

https://github.com/jhudsl/intro_to_r/issues/54


Need to check grammar and clean the text in document

Bug Title
Grammar check
Description of BUG
We have added new documentation page, where we need to do grammar check and add/ remove words to make users understand the document with ease
Reporduction URL of bug
https://tailwindcsscomponents.vercel.app/documentation
Bug Issue Type
Documentation
Screenshot of the issue if in UI/ Document
nill
Are you taking this issue fix
No

can you please assign this issue to me

Please go ahead @aiden5221

PR created.


fix out-of-bounds write in sm2_crypt.c

asn1_encode has two form length octets: short form(1 byte), long form(1+n byte).
CLA: Trivial
detail see: http://luca.ntop.org/Teaching/Appunti/asn1.html
previous PR #6694 doesn't fix this completely.
In patch, we assume that msg_len is smaller than 3GB.
There is a example that makes out-of-bounds write:
30 81 8a 02 21 00 e0 1f
84 8c 55 83 2c dd b1 69
50 09 92 a3 92 c0 49 06
c5 80 97 45 01 02 36 ae
c9 67 b1 41 ec a4 02 21
00 86 1b a3 9e eb 59 41
6a f5 12 39 3c a9 24 2c
08 f6 60 2f 5c 5a f9 88
63 6e e6 e7 22 13 cd 20
67 04 20 11 2d ed 9b dc
ca 82 f2 d8 a0 f9 38 92
6f 1b f3 85 8f 82 7d 78
3e 52 8c 24 d5 4c aa 8a
33 a4 67 04 20 e5 1f 47
99 f8 a1 81 77 c7 ff 80
e5 29 23 b7 58 c7 91 7b
6b aa 31 41 74 2d 30 15
5b 40 37 67 4d

Checklist

[ ] documentation is added or updated
[ ] tests are added or updated

The Travis red cross is relevant (use /*...*/ comment style not //)

The Travis red cross is relevant (use /*...*/ comment style not //)

Thanks @mattcaswell for spotting that!
I reconfirm my approval.

Still approved.
Merged, thanks.


Update application-manifests.md

Updated activeCodePage entry to be consistent with the othrrts.

@justanotheranonymoususer : Thanks for your contribution! The author(s) have been notified to review your proposed change.


filter_fn default works across variants and effects

@tavinathanson I'm a bit confused about the behavior of the filter_fn arg of Cohort. Should this a function from FilterableVariant -> bool? or FilterableEffect?
For example something like
def qcfilter(filterable_variant):
    somatic_stats = variant_stats_from_variant(filterable_variant.variant,
                                               filterable_variant.variant_metadata)

     ...

works with either since both have a variant field and variant_metadata but if we ever looks at exclusive properties, load_variants or load_effects would fail.

@arahuja so you're asking what happens if we have a filter specific for FilterableEffects and pass it into load_variants? I guess that wouldn't work, but why would we pass it in there? (Maybe some more examples that you're concerned about would help?) As for the reverse case (load_effects breaking because a field isn't in FilterableVariant), that should never happen since FilterableEffect extends FilterableVariant.

so you're asking what happens if we have a filter specific for FilterableEffects and pass it into load_variants

Yes, just clarifying, this should not work then?

As for the reverse case (load_effects breaking because a field isn't in FilterableVariant), that should never happen since FilterableEffect extends FilterableVariant

Ah ok, didn't see this.
I guess my example is I have something like this:
def effect_gene_filter(filterable_effect):
    return filterable_effect.effect.gene_id in GENE_IDS

Gotcha. Yeah, that shouldn't work and I assume will throw an error that FilterableVariant has no effect attribute. Does that seem reasonable?

@arahuja can this be closed?


where to run this full node, archive node or light node ? [APE-704]

Overview
I am thinking to run this node on my system. can you please describe where to setup and where to run this node and also does it run on full node, archive node or light node?

I am not sure what you mean! This package is not node software; it merely transforms data received from Ethereum nodes and creates pydantic models from them.
As far as the node requirements, it must either support debug_traceTransaction (Geth-style traces) or trace_transaction Parity-style traces. Out-of-the-box, geth node software with give you the first one. erigon node software will get you the second one. The geth-style is more granular and needed for building tools like coverage but the Parity-style is much faster and great if you all care to see the calls made in a transaction.
You can see examples of this library gets used by checking out the Ape framework: https://github.com/ApeWorX/ape
In the ape-geth core plugin, it uses this library to parse trace frames from the provider.

If I want to use API trace-replaytransaction, should I use Geth? If I run a light node, can I replay any of the transactions in previous blocks?

If I want to use API trace-replaytransaction, should I use Geth? If I run a light node, can I replay any of the transactions in previous blocks?

Honestly, I don't know. I would like to know though, that is a good question. This may not be the best place to ask.

Closing as it not related to evm-trace, the package


nexus: Update route template; Update deployment template

This PR updates the Route and Deployment templates for sonatype-nexus.
Route:

Template needs to have an empty stubbed status object. Otherwise this throws an error (likely due to some openAPI validation that is being done)

Deployment:

When trying to set an empty securityContext (ie securityContext: []) a warning is thrown about replacing a table value with a non-table value. Adding the enabled field similar to other charts makes this more straightforward to use. I've also defaulted the enabled field to true to maintain current functionality.

Can you try using "securityContext: {}" instead of the []. Security context is not an array, so the warning would make sense if you use the wrong brackets.

I actually did try this, but it seems that when I do that it’s just ignored and overridden by the values provided in the default values.yaml provided in this repo.

Try this:
nexus:
  securityContext:

I am seeing the same behavior. Thanks for the quick response


District's can't load in the Modern Anesidora Branch

Traceback (most recent call last):
  File "C:\Panda3D-1.11.0-x64\python\lib\runpy.py", line 197, in _run_module_as_main
    return _run_code(code, main_globals, None,
  File "C:\Panda3D-1.11.0-x64\python\lib\runpy.py", line 87, in _run_code
    exec(code, run_globals)
  File "C:\Users\zacha\SynologyDrive\Toontown Fantasy\open-fantasy\toontown\ai\AIStart.py", line 38, in <module>
    simbase.air.connect(host, port)
  File "C:\Panda3D-1.11.0-x64\direct\distributed\AstronInternalRepository.py", line 599, in connect
    ConnectionRepository.connect(self, [url],
  File "C:\Panda3D-1.11.0-x64\direct\distributed\ConnectionRepository.py", line 512, in connect
    successCallback(*successArgs)
  File "C:\Panda3D-1.11.0-x64\direct\distributed\AstronInternalRepository.py", line 620, in __connected
    self.handleConnected()
  File "C:\Users\zacha\SynologyDrive\Toontown Fantasy\open-fantasy\toontown\ai\ToontownAIRepository.py", line 140, in handleConnected
    self.district.generateWithRequiredAndId(self.districtId, self.getGameDoId(), OTP_ZONE_ID_DISTRICTS)
  File "C:\Panda3D-1.11.0-x64\direct\distributed\DistributedObjectAI.py", line 413, in generateWithRequiredAndId
    self.air.generateWithRequiredAndId(self, doId, parentId, zoneId, optionalFields)
  File "C:\Panda3D-1.11.0-x64\direct\distributed\AstronInternalRepository.py", line 570, in generateWithRequiredAndId
    do.sendGenerateWithRequired(self, parentId, zoneId, optionalFields)
  File "C:\Panda3D-1.11.0-x64\direct\distributed\DistributedObjectAI.py", line 463, in sendGenerateWithRequired
    dg = self.dclass.aiFormatGenerate(
AssertionError: Distributed class ToontownDistrict doesn't have getter named getAllowAHNNLog to match required field allowAHNNLog at line 421 of E:\Toontown Fantasy\fantasy-panda\direct\src\dcparser\dcClass_ext.cxx
Press any key to continue . . .

This crashes the game...

Branch is no longer updated nor necessary.


Git fails to innitialize with create t3-app

Describe the bug
When I run the create yarn create t3-app
After choosing my preferred options, the scaffold builds successfully, however during the build, it attempts to initialise git and it fails.
Git can be initialised manually later by running git init after the build
To Reproduce
Steps to reproduce the behaviour:

Run  yarn create  t3-app

See  error ✖ Failed: could not initialise git

Expected behaviour
The git initialisation should not fail
Additional information

I am on a linux distro i.e Zorin Os
I have git installed

Screenshots

Unable to replicate. Is this happening every time you use the CLI? Have you tried using a different package manager?

Hello @nexxeln,
Yes, it also happened when I used npm.
This time I run npx create-t3-app@latest

My git version

Maybe it's something OS specific. As far as I know, zorin is based on ubuntu. I'm also using ubuntu in WSL and works fine for me.

@nexxeln  Okay just wanted to let you know about it. It is not detrimental to the creation of the app and someone can manually initialize git themselves. It's an awesome project :+1:

Maybe try updating git?

Found the issue, for initialising git we use
git init --initial-branch=main

This is a new feature released in git 2.28 https://github.blog/2020-07-27-highlights-from-git-2-28/#introducing-init-defaultbranch
Working on a fix right now

revert back?

i don't think forcing people to update git to use the cli is a good thing to do though..

I think this was discussed in the server right? that we can just initialise the repository with git init, and then change the branch using git checkout -b main

I think this was discussed in the server right? that we can just initialise the repository with git init, and then change the branch using git checkout -b main

That had the side-effect of leaving behind an unused branch. Wouldn't something like:
const { stdout: gitVersion } = await execa("git --version");
// e.g. gitVersion = "git version 2.32.0 (Apple Git-132)"
const asNumber = ...; // parse the output
if (asNumber >= 2.28) {
  await execa("git init --initial-branch=main", { cwd: projectDir });
} else {
  await execa("git init", { cwd: projectDir });
  await execa("git checkout -b main", { cwd: projectDir }); // maybe?
}

Yeah. I think that's a better approach, leave an extra branch depending on the git version

Yeah. I think that's a better approach, leave an extra branch depending on the git version

Leaving for work but I can have a PR out tonight.
Is the git --version output the same for every OS? So its parsable the same for all.

Yep, just checked the documentation, pretty sure it's the same command and the same response on every OS
I'm not sure about different versions though, maybe in an old version it was different? But this can just be YOLO'd and fixed as more users report issues

I think this was discussed in the server right? that we can just initialise the repository with git init, and then change the branch using git checkout -b main

That had the side-effect of leaving behind an unused branch. Wouldn't something like:
const { stdout: gitVersion } = await execa("git --version");
// e.g. gitVersion = "git version 2.32.0 (Apple Git-132)"
const asNumber = ...; // parse the output
if (asNumber >= 2.28) {
  await execa("git init --initial-branch=main", { cwd: projectDir });
} else {
  await execa("git init", { cwd: projectDir });
  await execa("git checkout -b main", { cwd: projectDir }); // maybe?
}

be better?

this would be a better approach i think 👍🏼

Got the same problem still with git version 2.25.1. WSL2, Ubuntu.
Initializing Git...
⠋ Creating a new git repo...
✖ Failed: could not initialize git. Update git to the latest version!


Tracking (rpc): debug_execution_witness diff with geth

Describe the bug
Currently debug_execution_witness on reth returns different results for some blocks compared to geth, need to investigate and bring them to parity.
Steps to reproduce
Run 2 archival nodes for base-sepolia and call debug_execution_witness to get the witness back and compare
Node logs
No response
Platform(s)
Linux (x86)
What version/commit are you on?
v1.1.0
What database version are you on?
Not db related
Which chain / network are you on?
base-sepolia
What type of node are you running?
Archive (default)
What prune config do you use, if any?
No response
If you've built Reth from source, provide the full command you used
No response
Code of Conduct

[X] I agree to follow the Code of Conduct

Compared result diff between 0xf23a0 to 0xfb2615: 629 blocks,
among them, 333 blocks has difference, 296 them match each other exactly.
Diff characteristics

codes: most of the codes match, if there's difference, reth only returns one more code than geth, example blocks: 0xfb238f, 0xfb23bb
nodes: this is where the big difference comes from, for the 333 blocks that have different returns, most of them returns more nodes than geth (sometimes 58 more nodes, 0xfb2481), and there is 1 case that reth actually returns 1 less node than geth (0xfb25a7)


Release/calendar server 9.3 dev

By submitting a request, you represent that you have the right to license
your contribution to Apple and the community, and agree that your
contributions are licensed under the Apache License Version 2.0.
For existing files modified by your request, you represent that you have
retained any existing copyright notices and licensing terms. For each new
file in your request, you represent that you have added to the file a
copyright notice (including the year and the copyright owner's name) and the
Calendar and Contacts Server's licensing terms.
Before submitting the request, please make sure that your request follows
the Calendar and Contacts Server's guidelines for contributing
code.

Pull on wrong repo :( !!!


Add Extended Syntax support

Add table and other extended syntax support.

There is support for tables and some other extensions already, see https://github.com/commonmark/commonmark-java?tab=readme-ov-file#extensions (and specifically under Tables).


Popper attributes not working in template

Describe the bug
When trying to use popper in a template the, attributes (such as placement) of ngx-popperjs cause error, for example:
Error: src/app/views/test.component.html:62:17 - error TS2322: Type '"right-start"' is not assignable to type 'NgxPopperjsPlacements'.
To Reproduce
See error here
https://stackblitz.com/edit/angular-245fwh?file=src%2Fmain.ts
Note that the stackblitz uses Angular 15.2.7 but I can also reproduce on 15.0.0
Expected behavior
Can use attributes without error
Additional context
I think the strictTemplates property in tsconfig.json / angularCompilerOptions default to true in Angular 15.
If you change to false and restart ng server there are no template errors regarding ngx-popperjs
Workaround
Disable strict templates in tsconfig.json, or
as the stackblitz shows you can work around this by importing the attributes you wish to use and export to template
import { NgxPopperjsTriggers, NgxPopperjsPlacements } from 'ngx-popperjs';

export class App {
  triggers = NgxPopperjsTriggers;
  placements = NgxPopperjsPlacements;
}

... and in the template...

    [popperTrigger]="triggers.hover"
    [popperPlacement]="placements.BOTTOM">

Versions

ngx-popperjs version [15.0.4]
@popperjs/core version [2.11.7]
@angular/core version [15.x.x]
typescript version [es. 4.8.2]

I don't see why opening an issue if you already knew the reason...


chore: rm CacheMap usage - fix HMR in some setups

Closes https://github.com/chakra-ui/panda/discussions/2608
📝 Description
Fix a cache issue that leads to HMR growing slower in some cases
💣 Is this a breaking change (Yes/No):
no
📝 Additional Information

@segunadebayo this PR broke my Panda setup for some reason. I mentioned it on Discord but nobody got back to me.
It's really hard to make a reproduction. Here's what I've noticed when using Vite with the postcss plugin. When I first load my app, the CSS is loaded fine. Then, when I save any file in my project, all of the CSS except for the styles in that file goes away. Then, it incrementally adds styles as I go and save other files.
Reverting this change (turning the Map constructors back into CacheMap constructors) fixes the issue somehow.


Rails 4 support

Ruby on Rails 4 is now beta and will be released very soon.
It will be nice, if RailsAdmin will support Rails 4.
Now RailsAdmin is locked on rails ~> 3.1. Is it code dependency, which need real strong refactoring?

Note that the wiki docs are really old. This page https://github.com/sferik/rails_admin/wiki/CarrierWave still uses attr_accessible. It would be nice to know what the current methodology for deleting an image is in Rails 4+. Cheers!


RichTextLabel add function remove_line

It's best if you don't force push "TEMP" commits but just fix your local branch, and push it when it's good locally :)

Yes you're right sorry, it was just a forget about me. :D


Setup docker

This sets up a first docker instance for the project.

Also I would put the data files into a data/ directory.


[Testing Confirmation] Confirm current testing requirements

As part of the discussion around implementing an organization-wide testing policy, I am visiting each repo to see what tests they currently perform. I am conducting this work on GitHub so that it is easy to reference.
Looking at the Ansible Playbook repository, it appears there is

Repository
Unit Tests
Integration Tests
Backwards Compatibility Tests
Additional Tests
Link

Ansible Playbook
- [ ]
- [ ]
- [ ]

https://github.com/opensearch-project/ansible-playbook/issues/117

[Triage]
Hey @scrawfor99 this ansible repo does not have any tests integrated as part of the github workflows when raised a PR. Should add a way to test the ansible PR's via the workflows.
Thank you
@gaiksaya @bbarani @rishabh6788

Hi @prudhvigodithi, thank you for the follow-up I will make sure to note your comment. Cheers.


Make Session.cookies a property, use session._cookies for Cookies object

This allows users to replace session.cookies after initialization with any CookieTypes object. This behavior matches httpx and requests, and allows it to be a drop-in replacement even in less typical usecases.
httpx uses property in the same manner:
https://github.com/encode/httpx/blob/47f4a96ffaaaa07dca1614409549b5d7a6e7af49/httpx/_client.py#L317-L326
requests appears to differ at first glance, as it does not use a property, but each request calls merge_cookies, which converts dicts to cookie jars, so it's virtually identical
https://github.com/psf/requests/blob/23540c93cac97c763fe59e843a08fa2825aa80fd/src/requests/sessions.py#L241
https://github.com/psf/requests/blob/23540c93cac97c763fe59e843a08fa2825aa80fd/src/requests/cookies.py#L552-L553

Do you have a example usage of the new behavior?

from curl_cffi import requests
from http.cookiejar import MozillaCookieJar

session = requests.Session()
cookies = MozillaCookieJar('blabla.txt')
cookies.load()

session.cookies = cookies

This is a basic example, usually Session gets initialised in a parent class, which makes overriding like this necessary.


[FEATURE] Every x day/week/month/year setting for note repeats

Is your feature request related to a problem? Please describe.
Currently you can only set repeats to never, weekly, monthly, and yearly. This leaves not a lot of freedom for other repeats like "every other week".
Describe the solution you'd like
Having another input accepting positive numbers along with a day selection in the selection box would generate a lot more freedom when setting up notes. This way all possible combinations would be covered.

This is the next feature that I am currently working on. A much more expanded repeat option set!


This gets wrecked by CI for some reason.

Yeah for UI. I don't now that they need it. So much red, I'll talk to CI

I can't see what's wrong with circleci. I bet it's fine though


Update README

This PR introduces an intro template that will be used across all our libraries. The original copy for this was inspired our analytics-react repo.
See LIB-851.

Codecov Report

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

@@           Coverage Diff           @@
##           master     #101   +/-   ##
=======================================
  Coverage   80.27%   80.27%
=======================================
  Files          31       31
  Lines         517      517
=======================================
  Hits          415      415
  Misses        102      102

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 caa6809...12822fb. Read the comment docs.


use of random function

Cool plugin, although trying to get a random number generator appears to be broken for me.
Using Joplin 1.7.11 and Math Mode v0.3.0
combinations(6, 3) // works fine
random([1]) // ok
random(1, 100)  // gives error:

Unexpected type of argument in function random (expected: number or Array or Matrix or string or boolean, actual: BigNumber, index: 0)
Expected behavior is a random number between 1 and 100 as per mathjs docs.

Thanks for reporting this, this plugin uses mathjs's BigNumber by default. I hadn't realized how many functions this was broken for. I'll revert to regular numbers for the next point release. And leave BigNumbers as an option for those that want them.


Remove flags from "cf login" command

Users of the CF cli very frequently use the cf login command in their CI pipelines and in other automation in order to be able to call other commands, such as cf push. This all works fairly well until a password is changed, or some configuration changes, and suddenly automation which had been working well suddenly starts hanging, since the cf login command expects that the user has a TTY with a keyboard attached, and can interactively engage with the cli.
Tony Hoare, creator of Algol and of null pointers, has called the null pointer his "billion dollar mistake" in terms of lost productivity and time spent debugging null pointers. When I was on the cli team back in 2014, I think I likely implemented the first user story that added the --username and --password flags to the cf login command. I would claim that adding those flags and allowing users to shoot themselves in the foot by using cf login in their scripts for CI is my million dollar mistake. We knew at the time that people would struggle to discover cf auth and use it correctly for scripting, but we did not anticipate how hard it would be for users to discover this command and use it in the correct context.
I've seen this happen again and again for years, by both my colleagues and by my clients. This is a highly surprising fact that cf login can hang when run from CI, and I would encourage you all to think about whether there is enough value delivered by providing these flags to warrant the pain introduced.

Hi @tjarratt!  cf login is meant for interactive use.  We now offer cf auth for the robots to use.  Can you be persuaded that cf login is maybe the wrong choice, regardless of the flags?

Hey @staylor14. I agree that cf login is meant for interactive use. I think the fact that it can take username and password flags makes that fact less clear.
The outcomes I'd like to see are the following

humans can easily use cf login interactively to connect to the CF foundation they use
scripts can not easily use interactive commands such as cf login

There's probably a lot of ways to handle that (such as detecting whether the cf executable is currently attached to a TTY or not, changing the command line interface, et cetera). I mostly wrote up this issue in anger after the 1000th time I've seen a CI pipeline be stuck for hours and hours because someone used cf login in a script that is run on CI. When I talk to people about this, many are absolutely amazed to discover that cf auth exists.

Thank you for your submission. If you still run into this issue with the latest CLI v8,  please open a new ticket.


Update nodejs branch

Description

All Submissions:

[x] Have you ensured there aren't other open Pull Requests for the same update or change?
[ ] Have you created a new branch for your changes and PR from that branch and not from your master branch?

New Image Submissions:

[x] Have you added your image to the Github workflows?
[x] Have you updated the README list to contain your new image?

How, is my request approved?

How, is my request approved?

I will look later on this day. It is 7:30 AM for me.

How, is my request approved?

I will look later on this day. It is 7:30 AM for me.

Ok

Are the changes I made propagated to the main repository?

Are the changes I made propagated to the main repository?

Not yet. There aproved. Not yet merged.


Timestamp issue

Enabling the codec compress_spooler for rabbitmq output throws an exception:
Error encoding event {:exception=>#<TypeError: The field '@timestamp' must be a (LogStash::Timestamp, not a Float<PHONE_NUMBER>.228)>, :event=>#<LogStash::Event:0x2f4b275c @metadata={}, @accessors=#<LogStash::Util::Accessors:0x6f052145 @store={"message"=>"assdasd", "@version"=>"1", "@timestamp"=>"2014-12-09T20:47:41.228Z", "host"=>"alejandro-lp"}, @lut={"host"=>[{"message"=>"assdasd", "@version"=>"1", "@timestamp"=>"2014-12-09T20:47:41.228Z", "host"=>"alejandro-lp"}, "host"], "@timestamp"=>[{"message"=>"assdasd", "@version"=>"1", "@timestamp"=>"2014-12-09T20:47:41.228Z", "host"=>"alejandro-lp"}, "@timestamp"]}>, @logger=#<Cabin::Channel:0x4f1b0c33 @subscriber_lock=#Mutex:0x643d12f, @data={}, @metrics=#<Cabin::Metrics:0x4e5a67df @channel=#<Cabin::Channel:0x4f1b0c33 ...>, @metrics={}, @metrics_lock=#Mutex:0x115989a9>, @subscribers={2002=>#<Cabin::Outputs::IO:0x324e48f0 @lock=#Mutex:0x1777051a, @io=#<IO:fd 1>>}, @level=:warn>, @data={"message"=>"assdasd", "@version"=>"1", "@timestamp"=>"2014-12-09T20:47:41.228Z", "host"=>"alejandro-lp"}, @metadata_accessors=#<LogStash::Util::Accessors:0x6eff9ff @store={}, @lut={}>, @cancelled=false>, :level=>:warn}
LS config:
rabbitmq{
codec => compress_spooler {
#compress_level => 6
#spool_size => 10
}
host => "localhost"
durable => true
exchange => "amq.topic"
exchange_type => "topic"
port => 5672
user => "guest"
password => "guest"
}
This seems to be fixed in this fork:
https://github.com/coolacid/logstash-contrib/tree/LOGSTASH-1812

@Bradox I did some investigation on this and could not reproduce the issue. As you can see from test in here https://github.com/logstash-plugins/logstash-codec-compress_spooler/blob/master/spec/codecs/compress_spooler_spec.rb the codec processes timestamp as expected.
i really would like to get this down, can you let me know a sample input you/we can use to reproduce this error? From the exceptions in #4 or #5 I was not able to reproduce.
Thanks a lot man.

Closing this until new data has arrived to let us reproduce. Looking forward to reopen if necessary.


feature: Enable the IPv6DualStack feature gate by default

1.17 adds dual-stack support if you specify multiple flags for
the CIDR ranges. Since dual stack support requires config generation
enabling the feature gate does not change default behavior of the
platform.
Will enable further development and testing.

@dcbw as discussed on slack, enabling here so we can test deeper.  Please review and tag.

also @danwinship and @eparis
once this merges I'll vendor into the appropriate repos

Since dual stack support requires config generation
enabling the feature gate does not change default behavior of the
platform.

Yup, that seems to be the case everywhere except cmd/kube-proxy/ (which will use the dual-stack metaproxy if the feature gate is enabled, even if you only have one stack configured, which is arguably a bug). But we don't use that code anyway. (Note to self: if/when we want to support dual stack with Calico or other third-party plugin we'll need to add the feature gate to the kube-proxy config.)
/lgtm

I will backport #86895 once I stop finding bugs in Kube around dual stack and single stack API stuff :)


Use persistence stateKey directly rather than initialPaths

Saves and restores application state using the stateKey rather than initialPaths themselves. This avoids having Atom "open" these initialPaths, instead using the deserialized project to restore these paths.
Replaces #10628, see #11023
spec/integration/startup-spec.coffee should have a spec for this, but I couldn't get the tests to run.

Ah, I see you closed this. Let me know what you think of the other one. Sorry to open a new one. Maybe someday we'll make it easier for maintainers to collaborate on contributor branches directly. You are the author on the commit though.


Unable to run dlv on MaxOSX

Delve Version: [0.10.0-alpha] 2015-10-04
Go 1.5: go version go1.5.2 darwin/amd64
OSX Yosemite:  10.10.5 (14F1509)
Followed installation instructions to install and sign the binary.
When attempting to run dlv in terminal, it returns: -bash: dlv: command not found
I tried running this from the /GoWorkspace/src/hello folder and also from the /GoWorkspace/bin folder.
Here is a screenshot of my workspace directory:

This doesn't seem like an issue with Delve. It seems like there is an issue with your $PATH or something. What happens if your in your GoWorkspace/bin directory and you run ./dlv (i.e. invoke relative to current path)?

Thank you for the quick response! That worked!


QueriesQueuedOnInternal sometimes becomes negative

This makes it difficult to reason about heavy queueing on complex resource group trees.

Slack thread:
https://prestosql.slack.com/archives/CFLB9AMBN/p1576748098023000?thread_ts=1576735139.001300&cid=CFLB9AMBN


Unexplained lines of code in ch21.py.

Hi again,
I'm having a hard time trying to figure out some code in slab_transmission. There is no explanation in the textbook, any help would be greatly appreciated.
Lines 74-78 of ch21.py
           #make sure that l is not too large
            if (mu > 0):
                l = np.min([l,(3-x)/mu])
            else:
                l = np.min([l,-x/mu])

Where does 3 come from?
How does this work?
How is it ok to replace our previously calculated L  with (-x)/mu or (3-x)/mu?
Lines 86 - 91 of ch21.py
            #still in the slab?
            if (np.abs(x-thickness) < 1.0e-14):
                transmission += weight
                alive = 0
            elif (x<= 1.0e-14):
                alive = 0

Where does 1e-14 come from?

The issue was that the 3 should have been thickness. That line moved the particle to the edge if it was going to move beyond it.
The second batch was checking to see if the particle was just at the edge.  It is a good idea to not use == with floating point numbers because small (e.g. 1e-10 sized) errors could cause the statement to not evaluate as true. That is why I try to see if the number is within something small rather than check if they are equal.

Thanks!


Point-light Ray-tracing algorithm

with this pull request we develop an alternative (and simpler) ray-tracing algorithm
https://ziotom78.github.io/raytracing_course/tomasi-ray-tracing-11a.html#/point-light-tracing

Hi Giovanni i'm working on point light tracing algorithm, here a to do list:

[ ] function quickRayIntersection for CSG
[ ] test for all the new implemented functions

REMEMBER DOCSTRINGS IN WORLD AND OTHER CLASSES


feature/graphhost

Codecov Report
Attention: Patch coverage is 1.89873% with 155 lines in your changes are missing coverage. Please review.

Project coverage is 16.97%. Comparing base (fe1f99e) to head (e3acc51).

Files
Patch %
Lines

Sources/OpenSwiftUI/Core/Graph/GraphHost.swift
1.45%
135 Missing :warning:

...OpenSwiftUI/Core/Graph/Extensions/OGSubgraph.swift
0.00%
17 Missing :warning:

.../Core/Data/Location/ObservableObjectLocation.swift
0.00%
1 Missing :warning:

.../Environment/Internal/TODO/CachedEnvironment.swift
0.00%
1 Missing :warning:

...ces/OpenSwiftUI/View/Transaction/Transaction.swift
0.00%
1 Missing :warning:

Additional details and impacted files
@@            Coverage Diff             @@
##             main      #44      +/-   ##
==========================================
- Coverage   17.80%   16.97%   -0.83%
==========================================
  Files         160      161       +1
  Lines        3016     3163     +147
==========================================
  Hits          537      537
- Misses       2479     2626     +147

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


Open Source Key Components of the EDCON App for Community Reuse

Phase 2 of the project involves preparing the EDCON app’s modular components for open source release. This includes documentation, cleaning up the codebase, and ensuring that the components are easily reusable for other community events.
Tasks:

Identify key components of the EDCON app suitable for open source release.
Refactor the code to ensure modularity and ease of understanding.
Create comprehensive documentation and guidelines for using these components in other projects.

Acceptance Criteria:

Key components are fully documented and accessible.
The open source components are adopted in other external projects

こちらはエラーのご報告として使えるのでしょうか？
EDCON appをDLさせていただいたのですが、日付のある全体スケジュールのページで、29,30日付近までスワイプすると挙動がおかしくなるのを確認しております。
使用機はiPhone11です。
Can this be used as an error report?
I have downloaded the EDCON app, but I have confirmed that the behavior becomes strange when I swipe up to around the 29th or 30th on the general schedule page with dates.
The device used is iPhone11.


unmet peer ag-grid-community@^28: found 29.0.0

Got this warning when running the install command recommended in the guide: npm install ag-grid-community ag-grid-svelte.
  └── ✕ unmet peer ag-grid-community@^28: found 29.0.0

Wondering if this is a quick upgrade or if more involved. But FYI maybe the guide could be updated so that ag-grid-community@^28 is recommended instead?

I went through the 29.0.0 changelog and didn't find any breaking changes to GridOptions, mostly removing deprecated properties, so it should be safe to ignore the warning for now. Once I test it locally, I can make a release to add 29 as a peer dependency.

While v29 seems to work fine, there are possible type errors when using some of the changed GridOptions props with TypeScript.  Supporting multiple versions probably requires publishing a version for each major version of AG Grid, so for now I'll recommend sticking with v28. I also added a note to the guide about using v29.


Keychain stopped working for me

For a couple of days now I can not use keychain anymore. Everytime when a website requests me to approve a transaction this is all I see:

Neither the extensions nor the websites console show any errors. After many retries it works from time to time. Any ideas what could be wrong? I installed the extension from the chrome webstore. extension and browser are all on the latest version.

I ve tried to reproduce this on Linux and Windows, and on different browsers ( Chrome Opera Firefox) and I can t reproduce the bug.
Have you checked the log from the background ?

I have also observed this behavior.  Seems like it happens only once in 24 hours.  I believe it has something to do with the DOM not being fully loaded.  On my own app, I can work around this by chaining my intended request inside a call to requestHandshake, which seems to allow the extension to load before my intended request fires:
    function prepareCustomJson ( ) {
      if ( !!window.steem_keychain ) {
        steem_keychain.requestHandshake(requestCustomJson);
      } else {
        alert("Steem Keychain not detected.");
      }
    }

    function requestCustomJson ( ) {
      steem_keychain.requestCustomJson(account_name, custom_json_id, key_type, json, display_name, function(response) {
      	console.log(response);

        if ( response['success'] ) {
          window.location = 'dashboard';
        }
      });
    }

    $(window).on('load', prepareCustomJson);

Now it happens 90% of the time.

it became worse over the last couple of days

Do you guys still have this issue since last release? (5 days ago).

its inconsistent. sometimes it works fine. but especially when my browser is in fullscreen it doesnt work well (am on mac)

No, I think one of the updates must have addressed this issue.  I have not seen this issue for a while.

Not the extension is just super laggy. WHen i type into a field i have to change the focus to see what I have actually entered.

@wehmoen do you still have issues with this?

yes. still extreme laggy. trying to film that today and drop u a link

https://www.youtube.com/watch?v=at-RxYuq2_g @stoodkev


Use ActiveSupport::PerThreadRegistry, Add Tests.

Rather than duplicate the implementation of ActiveSupport::PerThreadRegistry, we can use it in conjunction with RequestStore.

@scarfacedeb have you had a chance to look at this?


Username & Password Refresh Token Issue in 4.3.x

In versions 4.30 & 4.3.1 config.signer.preRefreshSeconds is not working with username & password authentication with RTDB. Then after 1 hour when the current token expires, config.token_status_callback is never called and i get permission denied errors. if i reboot, it works fine for the next hour.
If i rollback to V4.2.7, everything works as expected. I currently have config.signer.preRefreshSeconds to 3400 so the token refreshes after a couple of minutes.
To summarize, same code in 4.2.7 has no issue but when upgrading to 4.3.x, preRefreshSeconds doesn't work and after 1 hour i get access denied errors.

It depends on how Firebase.ready() was called.
It should run in main loop, if some of your code blocks the Firebase.ready() to run in that loop then the token will not refresh in time and expired.
If you set config.signer.preRefreshSeconds = 3600 - 60; the token will be expired in 1 minute.
I am running the test intensively all the time to make sure the library is working fine, and I don't see the issue on this.

You should clean install the library to leave only one Firebase library in libraries folder, The manual zip installation and then using Arduino IDE Library Manager to update causes unexpected result at runtime due to the new version installed in folder "Firebase Arduino Client Library for ESP8266 and ESP32" while the manual zip installation stays in the folder "Firebase-ESP-Client-main" which is my fault in library properties file.
The problem occurred when compiler found the same file in multiples folders and choose the wrong old files for compilation

I confirm that everything works fine as I currently testing. If you get some strange behavior in such key function of this library (authentication) after library updated, please clean install the library.

Yes Firebase.ready() is always being called.
I was running v4.2.7 and used the arduino library update feature to upgrade to 4.3.1. I complied the code and ran into the issues described. I then manually uninstalled 4.3.1 and installed 4.2.7 via arduino library install and then compiled. Same code started working.
The only thing i didn't do was install 4.3.1 from clean. I will try that now and follow up.

The code in v4.3.x is almost completely rewrite for optimization which the file name was unchanged from v4.2.7 unless the code inside.

Here is my code i used for this test. Its using 4.3.1
`/**

Created by K. Suwatchai (Mobizt)

Email<EMAIL_ADDRESS>
Github: https://github.com/mobizt/Firebase-ESP-Client

Copyright (c) 2023 mobizt

*/
#include <HttpsOTAUpdate.h>
#include <Update.h>
#include <esp_crt_bundle.h>
#include <ssl_client.h>
#include <WiFiClientSecure.h>
#include <ETH.h>
#include <SPI.h>
#include <SD.h>
#include <sd_defines.h>
#include <sd_diskio.h>
#include <FS.h>
#include <FSImpl.h>
#include <vfs_api.h>
#include <SPIFFS.h>
#include <FB_Const.h>
#include <FB_Error.h>
#include <FB_Network.h>
#include <FB_Utils.h>
#include <Firebase.h>
#include <FirebaseFS.h>
#include <MB_NTP.h>
#include <Arduino.h>
#if defined(ESP32) || defined(PICO_RP2040)
#include <WiFi.h>
#elif defined(ESP8266)
#include <ESP8266WiFi.h>
#endif
#include <Firebase_ESP_Client.h>
// Provide the token generation process info.
#include <addons/TokenHelper.h>
// Provide the RTDB payload printing info and other helper functions.
#include <addons/RTDBHelper.h>
/* 1. Define the WiFi credentials */
#define WIFI_SSID "xxxxx"
#define WIFI_PASSWORD "xxxxx"
// For the following credentials, see examples/Authentications/SignInAsUser/EmailPassword/EmailPassword.ino
/* 2. Define the API Key */
#define API_KEY "xxxxx"
/* 3. Define the RTDB URL */
#define DATABASE_URL "xxxxx" //.firebaseio.com or ..firebasedatabase.app
/* 4. Define the user Email and password that alreadey registerd or added in your project */
#define USER_EMAIL "xxxxx"
#define USER_PASSWORD "xxxxx"
// Define Firebase Data object
FirebaseData stream;
FirebaseData fbdo;
FirebaseAuth auth;
FirebaseConfig config;
unsigned long sendDataPrevMillis = 0;
int count = 0;
volatile bool dataChanged = false;
void streamCallback(FirebaseStream data)
{
printCurrentTime(false);
Serial.println(" - Stream Callback");
Serial.printf("sream path, %s\nevent path, %s\ndata type, %s\nevent type, %s\n\n",
data.streamPath().c_str(),
data.dataPath().c_str(),
data.dataType().c_str(),
data.eventType().c_str());
printResult(data); // see addons/RTDBHelper.h
Serial.println();
// This is the size of stream payload received (current and max value)
// Max payload size is the payload size under the stream path since the stream connected
// and read once and will not update until stream reconnection takes place.
// This max value will be zero as no payload received in case of ESP8266 which
// BearSSL reserved Rx buffer size is less than the actual stream payload.
Serial.printf("Received stream payload size: %d (Max. %d)\n\n", data.payloadLength(), data.maxPayloadLength());

// Due to limited of stack memory, do not perform any task that used large memory here especially starting connect to server.
// Just set this flag and check it status later.
dataChanged = true;

}
void streamTimeoutCallback(bool timeout)
{
printCurrentTime(false);
Serial.println(" - Stream Timeout Callback");
if (timeout)
Serial.println("stream timed out, resuming...\n");
if (!stream.httpConnected())
    Serial.printf("error code: %d, reason: %s\n\n", stream.httpCode(), stream.errorReason().c_str());

Serial.println();

}
void setup()
{
Serial.begin(115200);

WiFi.begin(WIFI_SSID, WIFI_PASSWORD);
Serial.print("Connecting to Wi-Fi");
while (WiFi.status() != WL_CONNECTED)
{
    Serial.print(".");
    delay(300);
}
Serial.println();
Serial.print("Connected with IP: ");
Serial.println(WiFi.localIP());
Serial.println();

ntpInit(); //get time

Serial.printf("Firebase Client v%s\n\n", FIREBASE_CLIENT_VERSION);

/* Assign the api key (required) */
config.api_key = API_KEY;

/* Assign the user sign in credentials */
auth.user.email = USER_EMAIL;
auth.user.password = USER_PASSWORD;

/* Assign the RTDB URL (required) */
config.database_url = DATABASE_URL;

/* Assign the callback function for the long running token generation task */
config.token_status_callback = my_tokenStatusCallback; // see addons/TokenHelper.h

config.signer.preRefreshSeconds = 3600 - 120;

// Or use legacy authenticate method
// config.database_url = DATABASE_URL;
// config.signer.tokens.legacy_token = "<database secret>";

// To connect without auth in Test Mode, see Authentications/TestMode/TestMode.ino

Firebase.begin(&config, &auth);

Firebase.reconnectWiFi(true);

// Recommend for ESP8266 stream, adjust the buffer size to match your stream data size

#if defined(ESP8266)
stream.setBSSLBufferSize(2048 /* Rx in bytes, 512 - 16384 /, 512 / Tx in bytes, 512 - 16384 */);
#endif
String fbUid = auth.token.uid.c_str();
String fbDbPath =  "/users/" + fbUid;
Serial.print("RTDB User Path: ");
Serial.println(fbDbPath);

if (!Firebase.RTDB.beginStream(&stream, fbDbPath + "/app"))
    Serial.printf("sream begin error, %s\n\n", stream.errorReason().c_str());

Firebase.RTDB.setStreamCallback(&stream, streamCallback, streamTimeoutCallback);

/** Timeout options, below is default config.

//WiFi reconnect timeout (interval) in ms (10 sec - 5 min) when WiFi disconnected.
config.timeout.wifiReconnect = 10 * 1000;

//Socket begin connection timeout (ESP32) or data transfer timeout (ESP8266) in ms (1 sec - 1 min).
config.timeout.socketConnection = 30 * 1000;

//ESP32 SSL handshake in ms (1 sec - 2 min). This option doesn't allow in ESP8266 core library.
config.timeout.sslHandshake = 2 * 60 * 1000;

//Server response read timeout in ms (1 sec - 1 min).
config.timeout.serverResponse = 10 * 1000;

//RTDB Stream keep-alive timeout in ms (20 sec - 2 min) when no server's keep-alive event data received.
config.timeout.rtdbKeepAlive = 45 * 1000;

//RTDB Stream reconnect timeout (interval) in ms (1 sec - 1 min) when RTDB Stream closed and want to resume.
config.timeout.rtdbStreamReconnect = 1 * 1000;

//RTDB Stream error notification timeout (interval) in ms (3 sec - 30 sec). It determines how often the readStream
//will return false (error) when it called repeatedly in loop.
config.timeout.rtdbStreamError = 3 * 1000;

*/

}
void loop()
{
// Firebase.ready() should be called repeatedly to handle authentication tasks.

#if defined(PICO_RP2040)
Firebase.RTDB.runStream();
#endif
if (Firebase.ready() && (millis() - sendDataPrevMillis > 15000 || sendDataPrevMillis == 0))
{
    //sendDataPrevMillis = millis();
    //count++;
    //FirebaseJson json;
    //json.add("data", "hello");
    //json.add("num", count);
    //Serial.printf("Set json... %s\n\n", Firebase.RTDB.setJSON(&fbdo, "/test/stream/data/json", &json) ? "ok" : fbdo.errorReason().c_str());
}

if (dataChanged)
{
    dataChanged = false;
    // When stream data is available, do anything here...
}

}
void my_tokenStatusCallback(TokenInfo info)
{
/** fb_esp_auth_token_status enum
* token_status_uninitialized,
* token_status_on_initialize,
* token_status_on_signing,
* token_status_on_request,
* token_status_on_refresh,
* token_status_ready,
* token_status_error
*/
Serial.println("***************");
printCurrentTime(true);
if (info.status == token_status_error)
{
    Serial_Printf("Token info: type = %s, status = %s\n", getTokenType(info), getTokenStatus(info));
    Serial_Printf("Token error: %s\n", getTokenError(info).c_str());
}
else
{
    Serial_Printf("Token info: type = %s, status = %s\n", getTokenType(info), getTokenStatus(info));
}
Serial.println("***************");
Serial.println();

}
const char* ntpServer = "pool.ntp.org";
const long  gmtOffset_sec = 18000;
const int   daylightOffset_sec = 3600;
#define TZ "EST5EDT,M3.2.0,M11.1.0"
void ntpInit() {
configTime(0, 0, ntpServer); // 0, 0 because we will use TZ in the next line
setenv("TZ", TZ, 1); // Set environment variable with your time zone
tzset();
//configTime(gmtOffset_sec, daylightOffset_sec, ntpServer);

time_t now;
struct tm timeinfo;

if (!getLocalTime(&timeinfo)) {
    Serial.println("Failed to obtain time");
}
else {
    Serial.println();
    Serial.println("--------------------");
    Serial.print("Current Boot Time (EDT): ");
    Serial.println(&timeinfo, "%a, %m/%d/%Y %I:%M:%S %p");
    Serial.println("--------------------");
    Serial.println();
}

}
void printCurrentTime(bool newLine) {
time_t now;
struct tm timeinfo;
//Firebase.getCurrentTime();
if (!getLocalTime(&timeinfo)) {
    Serial.println("Failed to obtain time");
    return;
}
else if (newLine) {
    Serial.println(&timeinfo, "%m/%d/%Y %I:%M:%S %p");
}
else {
    Serial.print(&timeinfo, "%m/%d/%Y %I:%M:%S %p");
}

}`
Here's a snapshot of the build

And here is my serial output. As you can see based from line "Current Boot Time", almost 10 minutes went by without refreshing token that was schedule to be refreshed every 2 minutes.
Opening port
Port open
Connected with IP: <IP_ADDRESS>

Current Boot Time (EDT): Sat, 01/07/2023 02:50:16 PM
Firebase Client v4.3.1

01/07/2023 02:50:16 PM
Token info: type = id token (GITKit token), status = on request

01/07/2023 02:50:18 PM
Token info: type = id token (GITKit token), status = ready

RTDB User Path: /users/MY_FIREBASE_USER_ID
01/07/2023 02:50:19 PM - Stream Timeout Callback
stream timed out, resuming...
01/07/2023 02:50:20 PM - Stream Callback
sream path, /users/MY_FIREBASE_USER_ID/app
event path, /
data type, json
event type, put
Pretty printed JSON data:
{
"d1_alerts": {
"ABCD": true
},
"d1_displayName": "Door 1",
"d1_enableLockFeature": true,
"d1_isClosed": false,
"d1_isHidden": false,
"d1_isInverted": true,
"d1_isLocked": false,
"d2_alerts": {
"ABCD": true
},
"d2_displayName": "Door 2",
"d2_enableLockFeature": true,
"d2_isClosed": true,
"d2_isHidden": false,
"d2_isInverted": false,
"d2_isLocked": false,
"requests": {
"-NLClvQnasXXGaqc0buo": {
"doorId": 1,
"requestType": "doorTrigger",
"timeStamp":<PHONE_NUMBER>132
}
}
}
Iterate JSON data:
0, Type: object, Name: d1_alerts, Value: {"ABCD":true}
1, Type: object, Name: ABCD, Value: true
2, Type: object, Name: d1_displayName, Value: "Door 1"
3, Type: object, Name: d1_enableLockFeature, Value: true
4, Type: object, Name: d1_isClosed, Value: false
5, Type: object, Name: d1_isHidden, Value: false
6, Type: object, Name: d1_isInverted, Value: true
7, Type: object, Name: d1_isLocked, Value: false
8, Type: object, Name: d2_alerts, Value: {"ABCD":true}
9, Type: object, Name: ABCD, Value: true
10, Type: object, Name: d2_displayName, Value: "Door 2"
11, Type: object, Name: d2_enableLockFeature, Value: true
12, Type: object, Name: d2_isClosed, Value: true
13, Type: object, Name: d2_isHidden, Value: false
14, Type: object, Name: d2_isInverted, Value: false
15, Type: object, Name: d2_isLocked, Value: false
16, Type: object, Name: requests, Value: {"-NLClvQnasXXGaqc0buo":{"doorId":1,"requestType":"doorTrigger","timeStamp":1673120954132}}
17, Type: object, Name: -NLClvQnasXXGaqc0buo, Value: {"doorId":1,"requestType":"doorTrigger","timeStamp":1673120954132}
18, Type: object, Name: doorId, Value: 1
19, Type: object, Name: requestType, Value: "doorTrigger"
20, Type: object, Name: timeStamp, Value:<PHONE_NUMBER>132
Received stream payload size: 780 (Max. 780)
01/07/2023 02:50:48 PM - Stream Callback
sream path, /users/MY_FIREBASE_USER_ID/app
event path, /
data type, json
event type, patch
Pretty printed JSON data:
{
"d1_isInverted": false
}
Iterate JSON data:
0, Type: object, Name: d1_isInverted, Value: false
Received stream payload size: 51 (Max. 780)
01/07/2023 02:51:18 PM - Stream Timeout Callback
01/07/2023 02:51:48 PM - Stream Timeout Callback
01/07/2023 02:52:18 PM - Stream Timeout Callback
01/07/2023 02:52:48 PM - Stream Timeout Callback
01/07/2023 02:53:18 PM - Stream Timeout Callback
01/07/2023 02:53:48 PM - Stream Timeout Callback
01/07/2023 02:54:18 PM - Stream Timeout Callback
01/07/2023 02:54:48 PM - Stream Timeout Callback
01/07/2023 02:55:18 PM - Stream Timeout Callback
01/07/2023 02:55:48 PM - Stream Timeout Callback
01/07/2023 02:56:18 PM - Stream Timeout Callback
01/07/2023 02:56:48 PM - Stream Timeout Callback
01/07/2023 02:57:18 PM - Stream Timeout Callback
01/07/2023 02:57:48 PM - Stream Timeout Callback
01/07/2023 02:58:18 PM - Stream Timeout Callback
01/07/2023 02:58:48 PM - Stream Timeout Callback
01/07/2023 02:59:18 PM - Stream Timeout Callback
01/07/2023 02:59:36 PM - Stream Callback
sream path, /users/MY_FIREBASE_USER_ID/app
event path, /
data type, json
event type, patch
Pretty printed JSON data:
{
"d2_isLocked": true
}
Iterate JSON data:
0, Type: object, Name: d2_isLocked, Value: true
Received stream payload size: 48 (Max. 780)

Thanks for addressing this bug as it related to internal timestamp checking.
These lines cause the unchanged timestamp obtained from the getTime function.
https://github.com/mobizt/Firebase-ESP-Client/blob/04eff0e3ad5713a3dac336b91ad389673c8ff4c9/src/FB_Utils.h#L1691-L1692
The library v4.3.2 is now available which fixed this bug, please update.

Thanks. I'm trying it now

So far everything seems to be working. Thank you for the prompt fix & updated release.

So far everything seems to be working. Thank you for the prompt fix & updated release.


V2 API swagger file issue re: Matchers

What did you do?
Created PHP Client from swagger file for CRUD of silences in the alertmanager via the API I am building up a PostableSilence adding Matcher() to Matchers() then adding Matchers() to PostableSilence()
What did you expect to see?
Adding Matcher() to Matchers() Object and then adding Matchers() to PostableSilence() to pass the matcher to the alertmanager.
When getting a silence to be able to loop through Matchers()
What did you see instead? Under which circumstances?
The json created to post to the alert manager is missing matcher resulting in error from alertmanger:

"cannot unmarshal object into Go struct field Silence.matchers of type models.Matchers"

The generated structure looks wrong inside the object compared to the json in the example in the swagger editor  of "matchers": {Matchers[array{Matcher}]} matchers needs to be an array of Matcher()
Environment

Alertmanager version: 0.20.0
GoVersion: go1.13.5

I have managed to get the PostableSilence to work by bypassing Matchers() altogether and adding an array of Matcher() directly to the Postable silence. I'm a little puzzled why the Matchers Object is even needed? in swagger if you drop Matchers and reference array of matcher in all objects it works:
matchers:
    type: array
    items:
      $ref: '#/definitions/matcher'

I think the above is also causing the issues of missing Matchers() when getting a silence from the API.
I'm very aware v2 is still being worked on but wanted to first check my approach is correct and try and understand why Matchers() exists but brakes the format?
broken:
  $silence = new PostableSilence();
    $silence->setStartsAt($maintenanceWindow->getStartAsDateTime());
    $silence->setEndsAt($maintenanceWindow->getEndAsDateTime());
    $silence->setCreatedBy("Portal");
    $silence->setComment("created for " . Configure::read('Service.name') . " by maintenance window: {$maintenanceWindow->title}");
    $matcher = new Matcher();
    $matcher->setName($maintenanceWindow::MATCHER_NAME);
    $matcher->setValue($maintenanceWindow->getClusterName());
    $matcher->setIsRegex(false);
    $matchers = new Matchers();
    $matchers->offsetSet(null, $matcher);
    $silence->setMatchers($matchers);
    return $silence;

working:
    $silence = new PostableSilence();
    $silence->setStartsAt($maintenanceWindow->getStartAsDateTime());
    $silence->setEndsAt($maintenanceWindow->getEndAsDateTime());
    $silence->setCreatedBy("Portal");
    $silence->setComment("created for " . Configure::read('Service.name') . " by maintenance window: {$maintenanceWindow->title}");
    $matcher = new Matcher();
    $matcher->setName($maintenanceWindow::MATCHER_NAME);
    $matcher->setValue($maintenanceWindow->getClusterName());
    $matcher->setIsRegex(false);
    // dropped Matchers() here and adding array of Matcher()
    $silence->setMatchers([$matcher]);
    return $silence;

Thanks for the report. IIUC the issue is more related to the PHP code generated from the API spec rather than the spec itself. What do you think?

I would say 50/50 I think part of the issue is how it interprets the Matchers object which I can understand as I feel it's unnecessary to have an object solely for holding an array of data that adds no additional features. swagger also doesn't know what it needs to return so doesn't set any values for swaggerTypes or getters and setters so any data held in the object is ignored by the object serializer.

I still think that it's a language-specific issue but if we can change the API spec without impacting the other users, I'm all for it.
Maybe @mxinden remembers if there's a reason for the intermediate matchers type in the spec?

@paulrwest happy to see people generating clients based on the swagger spec. Thanks for the detailed bug report.
Sorry @paulrwest @simonpasquier I don't remember why we created #/definitions/matchers. Also it is not the only place of this pattern, e.g. see gettableSilences.
The generated Elm code flattens the structure to a List Matcher:
https://github.com/prometheus/alertmanager/blob/6d77929c309d5be7b308bcf926b5a7aa3dde14f8/ui/app/src/Data/Silence.elm#L23-L29
The generated Go code does not:
https://github.com/prometheus/alertmanager/blob/6d77929c309d5be7b308bcf926b5a7aa3dde14f8/api/v2/models/matchers.go#L32-L34
I don't see how using Matchers is invalid according to the Swagger spec, thus I would agree with @simonpasquier that this is a bug on the generator side. Have you filed an issue there as well @paulrwest?

Thanks @mxinden! If there's no real reason to have the intermediate definitions then I'd be ok to remove them since it would make the Go code less verbose. But getting feedback from the generator project would be first.


Enhancement: Optional Caching of upload/downloads to improve stream stability

I would like to propose a optional "cache on copy" when using mounts and copying(or cat'ing).
i.e. Designate a temp directory and when a copy (or stream/seek/cat) occurs cache the file at full (or bandwidth throttled) speed to the temp directory and keep serving the requests for a period of time from that location. Trying to eliminate intermittent problems from the streaming client.
Caching the uploads would allow the size of it to be known in advance and retries to be done which would make it much more reliable. Caching uploads and downloads would make them both seekable.
The idea here is for applications that would use rclone mounts, you'd want to cache as much data as possible to the temp directory and serve that data to the client when requested.  You'd want to cache ahead of the client as much as possible so that each 'seek' of the client is directed at the local cached copy.
This would require some ability to manage the size of the cache.  This could be done either by time or by 'pressure' on the cache.  i.e. define a max size and when the temp area feels pressure, it would free the oldest items if they were not actively in use.  If there was nothing to free, it would simply not cache and warn the user of the temp size may not be adequate.  We should also consider a configurable max time an item could remain in the cache to prevent very old files from being served to the client.

This could help with #707.

Maybe adding in support for CacheFS would work?

This seems to have some sort of cache system, just tried and it certainly seems to help seeking and streaming.
https://github.com/matteoserva/MegaFuse

I've been playing with this CacheFS FUSE project, which seems to be working really well for me:
https://github.com/cfoucher/CacheFS
It's smart enough to cache blocks, so it doesn't need to download the entire file.  Seeking still works fine.  I haven't experienced any problems with it so far.

Is this helping you with buffering the file? The ask here is more for the buffering side so that when it's streaming if there is a lag it has the file and a buffer downloaded ahead of time

@ncw any thoughts on whether this feature is still being considered? I think there is a strong use-case here for people utilizing cloud services for media streaming, and I don't want this to fall off the radar.
I know a lot of folks hack a local cache together using union-type FUSE files systems like mergerfs, unionfs, or aufs. You can essentially merge a local filesystem with a similarly structured rclone mount. You can configure these union filesystems to give read or write priority to the local filesystem.
Personally, I use acd_cli + encfs + unionfs (to merge ACD and local filesystems) + SnapRAID (for parity and local disk pooling). Writes always go to the local pooled filesystem. Then a cron uploads new cache files to the cloud via acd_cli. On good copy, it will delete files older than X days. While this works ok, there's a lot of moving pieces that often break.
I've been testing rclone for months in my "dev" environment and it seems to be much more stable. It would be really great to have an all-in-one solution to handle local caching, encryption, mounting, and uploading. We are almost there. Caching is the last piece of the puzzle!
Lastly, I know development takes a lot of time and effort. I'd be happy to donate via a tip4commit or something.  Lots of us owe you a few 🍻 !

@talisto Can you show us how you implement this with rclone?

@scoopydude2002 Unfortunately CacheFS doesn't seem to be very reliable, I ran into issues that I wasn't able to resolve (crashes, incompatibility with certain filenames/pathnames, etc) so I stopped using it.  I think it's probably best to wait for a better-integrated solution.

Would love a caching ability! If file is read, cache file for X amount of days locally or until allocated cache is full (ex. 10gb).

Not sure if anyone's put any thought into this but maybe cache'ing itself could work a lot like crypt currently does. A separate share type that wraps around any existing shares.
When mounted it caches files it reads with options to specify:

time to hold cache
max size of cache
size of cached block

Sounds like a good idea if its easier to implement.

Afaik it would be great if that cache worked with this logic:

cache should be a disk one, not a memory one;
when I read,  first the cache is populated with the new data IF IT DOESN'T CONTAIN IT YET, then I get the data from the cache;
when I read, if the cache is ALREADY populated with the data I have requested I get the cached data EVEN IF it differs from the one on the remote;
when I write, I write ONLY in the cache;
writing-back the MODIFIED/NEW data to the remote could be done with an asyncronous "rclone sync" (and some more stuffs ;) );
cache cleaning should of course occur only after a sync and should be highly customizable (maybe rules-based) ... so everyone could implement by himself his preferred cache management strategy: mine for example would be to have a huge, size-only-driven cache (maybe with some files never been cleaned out of the cache too) to speed things up with frequent-used files and only daily/weekly writes-back to avoid too many, small writes to the remote

This kind of cache would implement a sort of unionfs , where the remote branch is a self-consistent baseline, the local branch is the actually used data (for everything a fs permits, non-sequential writes included), and the "out of band", asynchronous sync process represents a consolidation of local data in the the remote branch.
I don't miss these critical points: cache should handle both full files and files fragments and at each stage the data on the remote should be self-consistent (so no partial changes in the remote, neither a simple file delete, out of the full sync process of point 5) )
If you are interested in my ideas (or I haven't expressed them effectively :-( ), let me know
thanks
Andrea

Ccould bcachefs be an alternative to cachefs?
https://bcache.evilpiepirate.org

@talisto did you notice a pattern with the issues you had with cachefs? I'm trying it out and for some reason it's unable to work with half my folders. It's a shame, cause the caching is otherwise perfect.

My own case study, strictly Mac-based but I hope it can be useful for someone: I use rclone fuse as a read-only branch of unionfs 2.0 with copy on write enabled  .. of course the rw branch is a folder on my local hard disk.... you would say: "yes, but the rw branch isn't a cache, 'cause it gets populated only when you access a file in write mode..."... that's where the trick comes in... I do not directly use the unionfs not for my files, in fact for a sparsebundle (which of course I mount and use as a real Mac HFS+ formatted HD)... for non-Mac geeks out there: sparse bundle is a disk image, dinamically growing as needed, actually based on a bunch of 8MB files  (the so-called "bands"), formatted with Mac native FS (so I don't miss any peculiar Mac disks feature), and crypted by AES, if you need (which is a must for me when I use clouds).
The "magic" is that unionfs beneath just sees 8 MB files (the bands), not the files I use after the sparsebundle is mounted... and of course there isn't a one-to-one correspondence between bands and files contained in them, so when I open a file, even if only for read access, the arbitrator opens the involved bands RW (because few instants later they could be involved in opening another contained file in RW mode).... so unionfs copies them in local folder (the RW branch) :)
Now I'm working on a script for copying my local changes to the cloud (it's a critical point, I want the online copy to always be self-consistent and usable even if not up-to-date, so when I "sync" local changes I have to be sure to copy and delete and modify all that is needed) and on a cache-freeing algorithm based on bands-usage metadata contained in sqlite

Here's another code-base that may be helpful: https://github.com/Doloops/mcachefs

I really do like the idea @ss44 shared, that the cache function could be a wrapper around the rest of the filesystems. So on layers we got: cloud <- crypt <- cache.
What struck me though is, how will this work with a bittorrent application that never closes it's file handles (?). Then cache wouldn't know when to start upload.
I'd love this feature, so that i can go onto using Backblaze B2 instead of Ebay Google.

I am currently looking into this issue (since i need it myself). Is there currently any work going on?
The idea of a new "caching remote" as a wrapper for another sounds suitable. My personal scenario only raises the need for a r/o caching remote, so that's what i am planing to build.
mount <=> disk-cache remote (max size, chunk size, LRU cleaning) <=> source remote

@seuffert I hadn't thought of making a caching remote.  I think this is only of interest to mount so my plan was to integrate it there.
I'm not working on it at the moment, though I would like to get this feature into 1.38.
I'd quite like to work on the write caching first so if you are interested in read caching then that is good!

I'm actually working on caching remote and the functionality is there. I just need to write the tests and overcome a nasty fuse issue on macos to allow easier testing.

@remusb sounds terrific! If needed I would Iike to offer my help with testing, refining or just simply bug hunting. How is the cache designed? Chunks, clearing algorithm etc

@remusb you work a own project (program) or a rclone fork?

@vampywiz17 PR in rclone so it will come in here not in a separare tool or project
@seuffert sure
Fair warning, the code is not in a presentable state yet. This was my introduction to golang and getting to know rclone's internals so I had to rewrite stuff a lot of times (that's how I learn really)
It's all in /cache and a fix in crypt that didn't allowed it to be wrapped by another remote.
Important things:

I'm still adding some write support
uses chunks in bolt, will likely clean by old usage but I was thinking on adding multiple types
dir lists are also cached and cleaned by timestamps
Would love to get some feedback on the design choices. I don't personally like how I handled the dir listings so far.

https://github.com/remusb/rclone/tree/backend-cache/cache

@remusb Good work :-)
I see you are serializing fs.Object~s.  I have a plan to add a couple of optional methods to Fses to allow object serialization and deserialization - I think this will make your life easier.  You then wouldn't have to call NewObject in CachedObject.RefreshObject (which can be expensive).  I could bring forwards this plan if you want.
To be truly useful with mount, mount needs to be able to do non sequential writes, and reads from the same object.  We could make two new optional interfaces on the Fs support that, Say ReadBlockAt and WriteBlockAt, or maybe on the open handle might be eaiser.
BTW your ListR implementation looks wrong - it doesn't seem to be recursing...
I suggest you make a PR at some point which I won't merge until you are ready.  That will run loads of checks on your code - some of which I can see will fail.  You can run them locally if you want (check out the contents of .travis.yml and run make check, make quicktest, make compile_all). A PR is a good way of getting my attention to look at code too!

I'm please to announce that after a lot of hard work by @remusb we have merged the first version of a cache backend for rclone.
Please have a go and check out the docs and have a go!
Please report any problems in a new issue on github.
You'll find support in the latest beta.
I'm currently working on proper read/write support for mount which will also involve some caching - this isn't quite merged yet though.

I've now added the mount changes.  Here is a summary of the new flags from the docs.
The emphasis is on making the filesystem usable for more uses - the caching is a side effect.
Now that this and the cache backend are both in, I'm going to close this issue - please report bugs in new issues!
File Caching
NB File caching is EXPERIMENTAL - use with care!
These flags control the file caching options.
--cache-dir string               Directory rclone will use for caching.
--cache-max-age duration         Max age of objects in the cache. (default 1h0m0s)
--cache-mode string              Cache mode off|minimal|writes|full (default "off")
--cache-poll-interval duration   Interval to poll the cache for stale objects. (default 1m0s)

If run with  + "-vv" +  rclone will print the location of the file cache.  The
files are stored in the user cache file area which is OS dependent but
can be controlled with  + "--cache-dir" +  or setting the appropriate
environment variable.
The cache has 4 different modes selected by  + "--cache-mode" + .
The higher the cache mode the more compatible rclone becomes at the
cost of using disk space.
Note that files are written back to the remote only when they are
closed so if rclone is quit or dies with open files then these won't
get written back to the remote.  However they will still be in the on
disk cache.
--cache-mode off
In this mode the cache will read directly from the remote and write
directly to the remote without caching anything on disk.
This will mean some operations are not possible

Files can't be opened for both read AND write
Files opened for write can't be seeked
Files open for read/write with O_TRUNC will be opened write only
Files open for write only will behave as if O_TRUNC was supplied
Open modes O_APPEND, O_TRUNC are ignored
If an upload fails it can't be retried

--cache-mode minimal
This is very similar to "off" except that files opened for read AND
write will be buffered to disks.  This means that files opened for
write will be a lot more compatible, but uses the minimal disk space.
These operations are not possible

Files opened for write only can't be seeked
Files open for write only will behave as if O_TRUNC was supplied
Files opened for write only will ignore O_APPEND, O_TRUNC
If an upload fails it can't be retried

--cache-mode writes
In this mode files opened for read only are still read directly from
the remote, write only and read/write files are buffered to disk
first.
This mode should support all normal file system operations.
If an upload fails it will be retried up to --low-level-retries times.
--cache-mode full
In this mode all reads and writes are buffered to and from disk.  When
a file is opened for read it will be downloaded in its entirety first.
In this mode, unlike the others, when a file is written to the disk,
it will be kept on the disk after it is written to the remote.  It
will be purged on a schedule according to  + "--cache-max-age" + .
This mode should support all normal file system operations.
If an upload or download fails it will be retried up to
--low-level-retries times.

NB in f80f7a050948d40f67edeb93f6757d30ec85d3ed I've changed the default location of the cache so you might need to move your cache, or start again if you aren't using the --cache-db-path.  This was to move it to a windows/mac/linux approved place like .cache.
Sorry for the inconvenience, but I thought it was better to do this now!

I made a 2GB image inside gsuite rclone mount, with --vfs-cache-mode=full, I tried to format the image and mount it for science, this is the result

mkfs.btrfstest.img: No valid Btrfs found on /dev/sdc ERROR: open ctree failed.
mkfs.ext4 test.img: Success
sudo mount test.img /mnt: mount: /mnt: mount failed: Operation not permitted.

I wonder why operation not permitted?


frost-select: support multi select

Deprecate frost-multi-select
Make frost-select support multi select

@dafortin frost-select already supports multiselect so this task is really just deprecating usage of the separate frost-multi-select component.


python312Packages.meraki: 1.52.0 -> 1.53.0

Automatic update generated by nixpkgs-update tools. This update was made based on information from passthru.updateScript.
meta.description for python312Packages.meraki is: Provides all current Meraki dashboard API calls to interface with the Cisco Meraki cloud-managed platform
meta.homepage for python312Packages.meraki is: https://github.com/meraki/dashboard-api-python
meta.changelog for python312Packages.meraki is: https://github.com/meraki/dashboard-api-python/releases/tag/1.53.0
Updates performed

Ran passthru.UpdateScript

To inspect upstream changes
Impact
Checks done

built on NixOS
The tests defined in passthru.tests, if any, passed
found 1.53.0 with grep in /nix/store/3rq8cgx3ixghf4n1yj9cb9nap8qc27hz-python3.12-meraki-1.53.0
found 1.53.0 in filename of file in /nix/store/3rq8cgx3ixghf4n1yj9cb9nap8qc27hz-python3.12-meraki-1.53.0

Rebuild report (if merged into master) (click to expand)

4 total rebuild path(s)

4 package rebuild(s)

First fifty rebuilds by attrpath

meraki-cli
python311Packages.meraki
python312Packages.meraki

Instructions to test this update (click to expand)

Either download from Cachix:
nix-store -r /nix/store/3rq8cgx3ixghf4n1yj9cb9nap8qc27hz-python3.12-meraki-1.53.0 \
  --option binary-caches 'https://cache.nixos.org/ https://nix-community.cachix.org/' \
  --option trusted-public-keys '
  nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs=
  cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY=
  '

(The Cachix cache is only trusted for this store-path realization.)
For the Cachix download to work, your user must be in the trusted-users list or you can use sudo since root is effectively trusted.
Or, build yourself:
nix-build -A python312Packages.meraki https://github.com/r-ryantm/nixpkgs/archive/d62793a21854df347652d086be7512addbb33da2.tar.gz

Or:
nix build github:r-ryantm/nixpkgs/d62793a21854df347652d086be7512addbb33da2#python312Packages.meraki

After you've downloaded or built it, look at the files and if there are any, run the binaries:
ls -la /nix/store/3rq8cgx3ixghf4n1yj9cb9nap8qc27hz-python3.12-meraki-1.53.0
ls -la /nix/store/3rq8cgx3ixghf4n1yj9cb9nap8qc27hz-python3.12-meraki-1.53.0/bin

Pre-merge build results
We have automatically built all packages that will get rebuilt due to
this change.
This gives evidence on whether the upgrade will break dependent packages.
Note sometimes packages show up as failed to build independent of the
change, simply because they are already broken on the target branch.
nixpkgs-review result
Generated using nixpkgs-review.
Command: nixpkgs-review

x86_64-linux

:white_check_mark: 6 packages built:

meraki-cli
meraki-cli.dist
python311Packages.meraki
python311Packages.meraki.dist
python312Packages.meraki
python312Packages.meraki.dist

Maintainer pings
cc @dylanmtaylor for testing.

[!TIP]
As a maintainer, if your package is located under pkgs/by-name/*, you can comment @NixOS/nixpkgs-merge-bot merge to automatically merge this update using the nixpkgs-merge-bot.

Add a :+1: reaction to pull requests you find important.

nixpkgs-review result
Generated using nixpkgs-review.
Command: nixpkgs-review pr 363355

aarch64-darwin

:white_check_mark: 6 packages built:

meraki-cli
meraki-cli.dist
python311Packages.meraki
python311Packages.meraki.dist
python312Packages.meraki
python312Packages.meraki.dist


Add alacritty terminal

Add alacritty in supported terminals: https://github.com/jwilm/alacritty

@aruhier alacritty is a terminal emulator, not a terminal, so adding this line does not do what you expect. You can read more about the ncurses terminal database here: https://invisible-island.net/ncurses/ncurses.html#download_database


add user guide for windows users

Add user guide with figures for windows users.

@JohnLeFeng can you also move this document in a folder called "Docs". And on the main readme add a link to this document saying something like if you need detailed instructions go to this link.  Thank you.


Slope triggering detects features far from center of screen

After #403, getting issues:
lesson: don't trust slope triggering, corrscope can and will guess the period wrong and absurdly longer than it should be, and introduce 2 new edges miles away from the center of the screen
i really should replace slope triggering with a small gaussian/triangular kernel, not rect.
!Config
master_audio: Extends_Levant fixed.wav
begin_time: 302.0
end_time:
fps: 60
trigger_ms: 50
render_ms: 25
trigger_subsampling: 1
render_subsampling: 2
render_subfps: 1
amplification: 3.0
trigger_stereo: !Flatten SumAvg
render_stereo: !Flatten SumAvg
trigger: !CorrelationTriggerConfig
  edge_direction: 1
  post_trigger:
  post_radius: 32
  sign_strength: 10.0
  edge_strength: 0.0
  slope_strength: 1.0
  slope_width: 0.07
  buffer_strength: 0.0
  buffer_falloff: 0.5
  responsiveness: 0.5
  pitch_tracking: !SpectrumConfig {}
channels:
- !ChannelConfig
  wav_path: 01 - Pulse 1.wav
- !ChannelConfig
  wav_path: 02 - Pulse 2.wav
- !ChannelConfig
  wav_path: 03 - Triangle.wav
  trigger_width: 2
- !ChannelConfig
  wav_path: 04 - Noise.wav
- !ChannelConfig
  wav_path: 05 - DPCM.wav
  trigger:
    responsiveness: 0.5
    sign_strength: 0.0
    buffer_strength: 1.0
  trigger_width: 2
  render_width: 2
default_label: !DefaultLabel FileName
layout: !LayoutConfig
  orientation: h
  ncols: 2
  stereo_orientation: h
render: !RendererConfig
  width: 1920
  height: 1080
  line_width: 2.0
  line_outline_width: 0.0
  grid_line_width: 1.5
  bg_color: '#000000'
  bg_image: ''
  init_line_color: '#ffffff'
  global_line_outline_color: '#000000'
  global_color_by_pitch: false
  pitch_colors:
  - '#ff8189'
  - '#ff9155'
  - '#ffba37'
  - '#f7ff52'
  - '#95ff85'
  - '#16ffc1'
  - '#00ffff'
  - '#4dccff'
  - '#86acff'
  - '#b599ff'
  - '#ed96ff'
  - '#ff87ca'
  grid_color: '#55aaff'
  stereo_grid_opacity: 0.5
  midline_color: '#404040'
  v_midline: true
  h_midline: true
  label_font: !Font
    family: Source Sans Pro
    bold: false
    italic: false
    size: 24.0
    toString: Source Sans Pro,24,-1,5,50,0,0,0,0,0,Regular
  label_position: !LabelPosition LeftTop
  label_padding_ratio: 0.5
  label_color_override:
  antialiasing: true
  res_divisor: 1.0

Our unit tests have revealed that we no longer prefer triggering near the initial position to triggering at the edges at all.

Worse yet, we abruptly cut off our preferences near the edges. And when an edge is better than a center but we haven't reached the true peak, Fun Stuff Happens:

there's various heuristics, i could crop away peaks at the edges all the way to the next U-shaped zero crossing (too aggressive) or local maximum (too lenient)

implemented local maximum. i thought i fixed the bug. not.

the spurious local maximum occurs because certain regions of the wave are purely negative or purely positive.

boost sign strength from 1 to 10? unsure.
I avoid this problem by disabling edge triggering and enabling very wide slope triggers. Is it a general solution?
should we reinstate period-based input data window (perhaps flat top in time domain), given our allowed output selection is already period-based? will it cause problems elsewhere?

maybe I'll reverse the roles of the kernel and wave
take a short wave, subtract the moving average of the mean amplitude, pick the minimum running sum
and also align a short correlation kernel within a long wave independently
and use various harebrained strategies to combine them

Running sum triggering
much much better.
Should we compute means based on the slice of data used for running sum triggering, rather than the whole data used for correlation?

Emerald Hill Zone bass is a hard problem. Every new note has a clear winning peak, but as the wave evolves, first the peak disappears (and its neighbor wins), then the entire dip loses. I think this would be improved by using only correlation data for good matches, and only edge (and slope) data for bad matches.
But this is slower. It requires a buffer-only correlation to determine the trigger point or fall back to edge/slope triggering, then a slope-only trigger. And I switched slope triggering to Gaussian, which requires a second FFT unlike my old slope trigger which can be implemented as a sum of shifted running sums(?).

A clear victory for using summation (global edge detection) and buffer to find local maxima, and local slope detection and buffer to evaluate them. We don't use the integrator to judge edges, because it misjudges edges as "good" when they sit next to a giant pool of DC offset.
Problem is, this is slow, requires more computation, takes 10% longer to run, and breaks 90% of past configs I use for testing because it changes the meaning of my parameters.

in tos final act, high xylophone's period coloring flickers.

top-final >120s, right middle bottom

in chrono-revolution, I get the feeling the edge finding strength is too low and the slope evaluation strength is too high. It takes edge:buffer ratios of up to 1:≥4 to avoid jumping.

struggling in emerald hill zone.
but https://www.youtube.com/watch?v=m_klcShZhn8 is a struggle as well.


Add wake-on-lan so that a sleeping node could be used when more transcodering power is required.

Add wake-on-lan so that a sleeping node could be used when more
transcodering power is required.
The command to WOL is;
wakeonlan -i <IP_ADDRESS> 00:0e:c4:d4:d1:c6
command   (-i  interface)	mac address of the node
The interface is determined by using the broadcast address of the sleeping node
and the mac address of the sleeping node. Would be nice to gather when setting
up the node as a slave and storing with its IP address.
if I issue the command from a terminal it takes about 5 seconds for the node to wake and
become stable.
Sleeping nodes just need to be setup, I set mine to watch port 22 for inactivity
and to wait 10 minutes before going to sleep, other settings maybe needed depending
on performance, they are set on each slave independently.
When to send the WOL command?
Processing power of the current active nodes is greater the 80%, not sure what
numbers should be used, something testing will tell.
But the power savings when not in use will be the biggest benefit as a node would
only power up when needed. Add sleep as transcoderings complete.

managed to get most of it working.. only thing I haven't figured out yet is what is returned by load in the load balancing section. I would like to set a threshold like say 80%, if the current loads exceed that value another slave is awaken. From what I can figure out three values are returned..  If I run prt get_cluster_load the returned values don't seem to reflect what is happening on the slaves.

Would love to see how you managed to configure this

The usage comes from the load average which isn’t an exact point in time value but over a short period of time so if the slave was busy just before it still sees some of that value. There’s good reasons to be using that over a point in time value however it does need a bit of a rework to take other items into consideration. I do have an enhancement on my list around his usage is calculated and allowing for profiling so certain slaves are given preference over others even if they’re busier, only using certain slaves for certain types of transcoding, etc.

Since there wasn't any movement on this project and Plex versions have jumped way ahead. I've dropped working with this here.