[FEATURE] @StepBuilder

Please consider supporting the "Step Builder" pattern.
See:

http://www.svlada.com/step-builder-pattern/
http://rdafbn.blogspot.com/2012/07/step-builder-pattern_28.html

I'll copy the pros/cons listed in the first article, since I think they do a good job summarizing the pattern:

Pros

User guidance for your API through object creation process step by step.
API User can call builder's build() method once the object is in the consistent state.
Reduced opportunity for creation of inconsistent object instances.
Sequencing initialization of mandatory fields.
Fluent API.
No need for providing validate() method for field validation.

Cons

Low readability of code needed to implement the pattern itself.
No eclipse plugin to help with code generation. (On the other hand, there are plenty of code generators for Builder pattern generator).

The cons can mostly be solved by Lombok itself.

Although this sounds like a nice idea at first glance, there are a few other cons. As this feature request already came up several times, there is a wiki page with the reasons why the maintainers think it is not a good idea to add it to lombok: https://github.com/rzwitserloot/lombok/wiki/FEATURE-IDEA:-"Mandatory"-fields-with-@Builder

Thanks for the reference.  I searched for "step builder" before posting this but was unable to find anything.
That said, I question the reasons listed against it in the wiki.  I think a simple step builder could be implemented very elegantly with Lombok, and I don't think "the cure is worse than the disease".
Taking a desired output from the first article (simplified a little bit):
Email email = Email.builder()
<EMAIL_ADDRESS>    .subject("Hello")
    .content("Test email")
    .build();

This could be implemented very trivially using Lombok, where you must annotate each field with the step order, and you can optionally give the method a custom name:
@StepBuilder
public class Email {
    @Step(1, "to")
    String emailAddress;
    @Step(2)
    String subject;
    @Step(3)
    String content;
}

It becomes slightly more complicated if you want to allow multiple options for, e.g., step 2, but I think that is perfectly solvable as well.
Addressing the concerns listed in the wiki:

It becomes impossible to smear the job of building out across various modules (if this method sets one thing, and that method sets another...)

I'm not sure I follow this, what's the concern here compared to a standard builder?

You are either forced to first set a, and then b, and then the rest, in that exact order, or you get a combinatorial explosion of interfaces.

That's fine, I want to force an exact order.

Your autocomplete dialogs and outline views in your IDE get infected with a massive list of weird stuff.

Why does it get infected?  It won't get infected if you require the steps to be declared in specific order and there's no combinatorial explosion.

You also need to consider the notion of having a builder where you override (set 'again') a value, and the notion of multi-settable things (i.e. it must be set at least once but can be set multiple times, for example with @Singular).

Yes, this is slightly more complicated.  I would argue that non-collections should only be able to be set once.  @Singular collections could be solved by some type of .endOfCollection() method (probably deserving of a better name).

Your autocomplete dialogs and outline views in your IDE get infected with a massive list of weird stuff.

Why does it get infected? It won't get infected if you require the steps to be declared in specific order and there's no combinatorial explosion.

I think this refers to the interfaces for the steps. Those must obviously be public, and this will make them appear in autocompletion dialogs for types.
I'm not a maintainer, but I contributed @SuperBuilder. And let me say that this was a hell of a work that took more than 10 full working days overall and more than a year from start to its first release (although admitted that I wasn't a lombok expert before). In comparison, a step builder looks to me as at least equally complex, probably more (just think of all generics possibilities!).
So even if there would be a chance to convince the maintainers that this is a good idea, someone else would have to take it. The maintainers have their hands full with other stuff: bug reports, adaptation to new Java versions, and -- no offense -- adding more useful features.

I understand it might be a non-trivial amount of work to implement.  The goal of this issue is only to, as you said, convince the maintainers that it is a good idea.  Prioritization can be addressed separately.

I do think the cure is worse than the disease. I also explained at length in that wiki article what the real cure should be. At risk of sounding arrogant: This is not something we're ever going to implement.


Feat add tide notebook

This PR adds system dependencies for building the book with the new Volume Viewer notebook included. It also adds the Tide Data notebook to the stack.

This PR is ready for review. The big changes are adding the Assessing Accuracy of the Tide Predictions of the Ocean State Ocean Model notebook and the new Downloading Tide Data from NOAA CO-OPS API notebook to the stack. The readme also includes more instructions about building the book, with options for Mac and Windows. This PR is getting long, so I'll start another for downloading data from the NOAA Coops API to a person's GDrive, as in the new Volume Viewer notebook.

Okay! I think this is ready (famous last words). I got everything working with virtualenv and updated the instructions. I also had to update the try / except in the tide_data_fancy notebook to get the data files from the remote repo and into the colab environment. The jupyter book builds now and the tide_data notebook runs in both Jupyter and Colab.


Update docstrings for generators

Build is failing because nefertari 0.2.1 installed, and it is missing zope.dottedname in setup.py
https://github.com/brandicted/nefertari/blob/0.2.1/setup.py


[Feature]: Vim mode support ~ command

What would you like to see added?
Implement the ~ command which toggles the case of the current character.
Implementation suggestion
Need a way to map between lowercase and uppercase characters. Char::to_uppercase() and Char::to_lowercase() might be useful.
One could also further implement gU<motion> and gu<motion> commands to uppercase/lowercase an entire motion.

can implement gU<motion> and gu<motion> too


The debugger crashes when starting a program using foreman

The debugger crashes when you try to debug a program that you started using foreman. Maybe that scenario is too complicated? I thought I should report it, in case anyone else also runs into this.
Repro:
$ gem install --no-document foreman debug
Successfully installed foreman-0.87.2
Building native extensions. This could take a while...
Successfully installed debug-1.1.0
2 gems installed

$ cat Procfile
hello: ruby hello.rb

$ cat hello.rb
require "debug"
puts "Hello"
binding.break
puts "World"

$ ruby -v
ruby 3.0.2p107 (2021-07-07 revision 0db68f0233) [x86_64-darwin19]

$ foreman -v
0.87.2

$ foreman start hello
23:27:03 hello.1 | started with pid 47526
23:27:04 hello.1 | Hello
23:27:04 hello.1 | [1, 4] in hello.rb
23:27:04 hello.1 |      1| require "debug"
23:27:04 hello.1 |      2| puts "Hello"
23:27:04 hello.1 | =>   3| binding.break
23:27:04 hello.1 |      4| puts "World"
23:27:04 hello.1 | =>#0 <main> at hello.rb:3
23:27:04 hello.1 | (rdbg) #<Thread:0x00007fd9da874b08@DEBUGGER__::SESSION@server /Users/dentarg/.gem/ruby/3.0.2/gems/debug-1.1.0/lib/debug/session.rb:128 run> terminated with exception (report_on_exception is true):
23:27:04 hello.1 | /Users/dentarg/.gem/ruby/3.0.2/gems/reline-0.2.7/lib/reline/general_io.rb:38:in `block in getc': uninitialized class variable @@input in Reline::GeneralIO (NameError)
23:27:04 hello.1 | Did you mean?  input=
23:27:04 hello.1 |  from /Users/dentarg/.gem/ruby/3.0.2/gems/reline-0.2.7/lib/reline/general_io.rb:37:in `loop'
23:27:04 hello.1 |  from /Users/dentarg/.gem/ruby/3.0.2/gems/reline-0.2.7/lib/reline/general_io.rb:37:in `getc'
23:27:04 hello.1 |  from /Users/dentarg/.gem/ruby/3.0.2/gems/reline-0.2.7/lib/reline.rb:289:in `block in read_io'
23:27:04 hello.1 |  from /Users/dentarg/.gem/ruby/3.0.2/gems/reline-0.2.7/lib/reline.rb:288:in `loop'
23:27:04 hello.1 |  from /Users/dentarg/.gem/ruby/3.0.2/gems/reline-0.2.7/lib/reline.rb:288:in `read_io'
23:27:04 hello.1 |  from /Users/dentarg/.gem/ruby/3.0.2/gems/reline-0.2.7/lib/reline.rb:246:in `block in inner_readline'
23:27:04 hello.1 |  from /Users/dentarg/.gem/ruby/3.0.2/gems/reline-0.2.7/lib/reline.rb:244:in `loop'
23:27:04 hello.1 |  from /Users/dentarg/.gem/ruby/3.0.2/gems/reline-0.2.7/lib/reline.rb:244:in `inner_readline'
23:27:04 hello.1 |  from /Users/dentarg/.gem/ruby/3.0.2/gems/reline-0.2.7/lib/reline.rb:178:in `readmultiline'
23:27:04 hello.1 |  from /Users/dentarg/.rubies/3.0.2/lib/ruby/3.0.0/forwardable.rb:238:in `readmultiline'
23:27:04 hello.1 |  from /Users/dentarg/.gem/ruby/3.0.2/gems/debug-1.1.0/lib/debug/console.rb:79:in `readline'
23:27:04 hello.1 |  from /Users/dentarg/.gem/ruby/3.0.2/gems/debug-1.1.0/lib/debug/local.rb:74:in `block in readline'
23:27:04 hello.1 |  from /Users/dentarg/.gem/ruby/3.0.2/gems/debug-1.1.0/lib/debug/local.rb:85:in `setup_interrupt'
23:27:04 hello.1 |  from /Users/dentarg/.gem/ruby/3.0.2/gems/debug-1.1.0/lib/debug/local.rb:73:in `readline'
23:27:04 hello.1 |  from /Users/dentarg/.gem/ruby/3.0.2/gems/debug-1.1.0/lib/debug/session.rb:338:in `wait_command'
23:27:04 hello.1 |  from /Users/dentarg/.gem/ruby/3.0.2/gems/debug-1.1.0/lib/debug/session.rb:299:in `block in wait_command_loop'
23:27:04 hello.1 |  from /Users/dentarg/.gem/ruby/3.0.2/gems/debug-1.1.0/lib/debug/session.rb:298:in `loop'
23:27:04 hello.1 |  from /Users/dentarg/.gem/ruby/3.0.2/gems/debug-1.1.0/lib/debug/session.rb:298:in `wait_command_loop'
23:27:04 hello.1 |  from /Users/dentarg/.gem/ruby/3.0.2/gems/debug-1.1.0/lib/debug/session.rb:220:in `session_server_main'
23:27:04 hello.1 |  from /Users/dentarg/.gem/ruby/3.0.2/gems/debug-1.1.0/lib/debug/session.rb:131:in `block in activate'
23:27:04 hello.1 | /Users/dentarg/.gem/ruby/3.0.2/gems/reline-0.2.7/lib/reline/general_io.rb:38:in `block in getc': uninitialized class variable @@input in Reline::GeneralIO (NameError)
23:27:04 hello.1 | Did you mean?  input=
23:27:04 hello.1 |  from /Users/dentarg/.gem/ruby/3.0.2/gems/reline-0.2.7/lib/reline/general_io.rb:37:in `loop'
23:27:04 hello.1 |  from /Users/dentarg/.gem/ruby/3.0.2/gems/reline-0.2.7/lib/reline/general_io.rb:37:in `getc'
23:27:04 hello.1 |  from /Users/dentarg/.gem/ruby/3.0.2/gems/reline-0.2.7/lib/reline.rb:289:in `block in read_io'
23:27:04 hello.1 |  from /Users/dentarg/.gem/ruby/3.0.2/gems/reline-0.2.7/lib/reline.rb:288:in `loop'
23:27:04 hello.1 |  from /Users/dentarg/.gem/ruby/3.0.2/gems/reline-0.2.7/lib/reline.rb:288:in `read_io'
23:27:04 hello.1 |  from /Users/dentarg/.gem/ruby/3.0.2/gems/reline-0.2.7/lib/reline.rb:246:in `block in inner_readline'
23:27:04 hello.1 |  from /Users/dentarg/.gem/ruby/3.0.2/gems/reline-0.2.7/lib/reline.rb:244:in `loop'
23:27:04 hello.1 |  from /Users/dentarg/.gem/ruby/3.0.2/gems/reline-0.2.7/lib/reline.rb:244:in `inner_readline'
23:27:04 hello.1 |  from /Users/dentarg/.gem/ruby/3.0.2/gems/reline-0.2.7/lib/reline.rb:178:in `readmultiline'
23:27:04 hello.1 |  from /Users/dentarg/.rubies/3.0.2/lib/ruby/3.0.0/forwardable.rb:238:in `readmultiline'
23:27:04 hello.1 |  from /Users/dentarg/.gem/ruby/3.0.2/gems/debug-1.1.0/lib/debug/console.rb:79:in `readline'
23:27:04 hello.1 |  from /Users/dentarg/.gem/ruby/3.0.2/gems/debug-1.1.0/lib/debug/local.rb:74:in `block in readline'
23:27:04 hello.1 |  from /Users/dentarg/.gem/ruby/3.0.2/gems/debug-1.1.0/lib/debug/local.rb:85:in `setup_interrupt'
23:27:04 hello.1 |  from /Users/dentarg/.gem/ruby/3.0.2/gems/debug-1.1.0/lib/debug/local.rb:73:in `readline'
23:27:04 hello.1 |  from /Users/dentarg/.gem/ruby/3.0.2/gems/debug-1.1.0/lib/debug/session.rb:338:in `wait_command'
23:27:04 hello.1 |  from /Users/dentarg/.gem/ruby/3.0.2/gems/debug-1.1.0/lib/debug/session.rb:299:in `block in wait_command_loop'
23:27:04 hello.1 |  from /Users/dentarg/.gem/ruby/3.0.2/gems/debug-1.1.0/lib/debug/session.rb:298:in `loop'
23:27:04 hello.1 |  from /Users/dentarg/.gem/ruby/3.0.2/gems/debug-1.1.0/lib/debug/session.rb:298:in `wait_command_loop'
23:27:04 hello.1 |  from /Users/dentarg/.gem/ruby/3.0.2/gems/debug-1.1.0/lib/debug/session.rb:220:in `session_server_main'
23:27:04 hello.1 |  from /Users/dentarg/.gem/ruby/3.0.2/gems/debug-1.1.0/lib/debug/session.rb:131:in `block in activate'
23:27:04 hello.1 | ["DEBUGGER Exception: /Users/dentarg/.gem/ruby/3.0.2/gems/debug-1.1.0/lib/debug/thread_client.rb:956",
23:27:04 hello.1 |  #<NameError: uninitialized class variable @@input in Reline::GeneralIO
23:27:04 hello.1 | Did you mean?  input=>,
23:27:04 hello.1 |  ["/Users/dentarg/.gem/ruby/3.0.2/gems/reline-0.2.7/lib/reline/general_io.rb:38:in `block in getc'",
23:27:04 hello.1 |   "/Users/dentarg/.gem/ruby/3.0.2/gems/reline-0.2.7/lib/reline/general_io.rb:37:in `loop'",
23:27:04 hello.1 |   "/Users/dentarg/.gem/ruby/3.0.2/gems/reline-0.2.7/lib/reline/general_io.rb:37:in `getc'",
23:27:04 hello.1 |   "/Users/dentarg/.gem/ruby/3.0.2/gems/reline-0.2.7/lib/reline.rb:289:in `block in read_io'",
23:27:04 hello.1 |   "/Users/dentarg/.gem/ruby/3.0.2/gems/reline-0.2.7/lib/reline.rb:288:in `loop'",
23:27:04 hello.1 |   "/Users/dentarg/.gem/ruby/3.0.2/gems/reline-0.2.7/lib/reline.rb:288:in `read_io'",
23:27:04 hello.1 |   "/Users/dentarg/.gem/ruby/3.0.2/gems/reline-0.2.7/lib/reline.rb:246:in `block in inner_readline'",
23:27:04 hello.1 |   "/Users/dentarg/.gem/ruby/3.0.2/gems/reline-0.2.7/lib/reline.rb:244:in `loop'",
23:27:04 hello.1 |   "/Users/dentarg/.gem/ruby/3.0.2/gems/reline-0.2.7/lib/reline.rb:244:in `inner_readline'",
23:27:04 hello.1 |   "/Users/dentarg/.gem/ruby/3.0.2/gems/reline-0.2.7/lib/reline.rb:178:in `readmultiline'",
23:27:04 hello.1 |   "/Users/dentarg/.rubies/3.0.2/lib/ruby/3.0.0/forwardable.rb:238:in `readmultiline'",
23:27:04 hello.1 |   "/Users/dentarg/.gem/ruby/3.0.2/gems/debug-1.1.0/lib/debug/console.rb:79:in `readline'",
23:27:04 hello.1 |   "/Users/dentarg/.gem/ruby/3.0.2/gems/debug-1.1.0/lib/debug/local.rb:74:in `block in readline'",
23:27:04 hello.1 |   "/Users/dentarg/.gem/ruby/3.0.2/gems/debug-1.1.0/lib/debug/local.rb:85:in `setup_interrupt'",
23:27:04 hello.1 |   "/Users/dentarg/.gem/ruby/3.0.2/gems/debug-1.1.0/lib/debug/local.rb:73:in `readline'",
23:27:04 hello.1 |   "/Users/dentarg/.gem/ruby/3.0.2/gems/debug-1.1.0/lib/debug/session.rb:338:in `wait_command'",
23:27:04 hello.1 |   "/Users/dentarg/.gem/ruby/3.0.2/gems/debug-1.1.0/lib/debug/session.rb:299:in `block in wait_command_loop'",
23:27:04 hello.1 |   "/Users/dentarg/.gem/ruby/3.0.2/gems/debug-1.1.0/lib/debug/session.rb:298:in `loop'",
23:27:04 hello.1 |   "/Users/dentarg/.gem/ruby/3.0.2/gems/debug-1.1.0/lib/debug/session.rb:298:in `wait_command_loop'",
23:27:04 hello.1 |   "/Users/dentarg/.gem/ruby/3.0.2/gems/debug-1.1.0/lib/debug/session.rb:220:in `session_server_main'",
23:27:04 hello.1 |   "/Users/dentarg/.gem/ruby/3.0.2/gems/debug-1.1.0/lib/debug/session.rb:131:in `block in activate'"]]
23:27:05 hello.1 | exited with code 1
23:27:05 system  | sending SIGTERM to all processes

As expected, no problem when not using foreman:
$ ruby hello.rb
Hello
[1, 4] in hello.rb
     1| require "debug"
     2| puts "Hello"
=>   3| binding.break
     4| puts "World"
=>#0  <main> at hello.rb:3
Really quit? [Y/n] ^D

This problem seems to be caused because the program running under forman don't have TTY, which is necessary to display interactive debugger UI. This may be fixed in prerelease versions of reline -- but without TTY you cannot enjoy the rich debugging experience such as line editing and completion anyway.
In such a case, you can start a UI-less debugger session by requiring 'debug/open_nonstop' and then attach to it by rdgb -A.

@dentarg can we close it or do you need discuss more?


chore(release): v1.1.0 🎉

:robot: I have created a release *beep* *boop*
1.1.0 (2022-10-04)
Features

api: publish the code-generated api into its own package (27a0044)
init: initialize based on best practices skeleton (7aa4a9e)

Bug Fixes

format: upgrade to best-practices prettier config (72950f1)

This PR was generated with Release Please. See documentation.

this one is not needed yet. triggered by a rebase to get rid of merge commit


Motivation and Context

Normally, I would expect the latest change on the top in CHANGELOG. However, currently, git-cliff puts the oldest commit on the top of the sections(#Features, Fixes and such).
How Has This Been Tested?

I tested this using both a mock repo and git-cliff's own repo.
Screenshots / Output (if appropriate):
- Support parsing the missing scopes with `default_scope` (#8)
- Support generating a changelog scoped to a directory (#11)

With this update, it will look like this:
- Support generating a changelog scoped to a directory (#11)
- Support parsing the missing scopes with `default_scope` (#8)

Types of changes

[ ] Bug fix (non-breaking change which fixes an issue)
[ ] New feature (non-breaking change which adds functionality)
[ ] Breaking change (fix or feature that would cause existing functionality to change)
[ ] Documentation (no code change)
[x] Refactor (refactoring production code)
[ ] Other

Checklist:

[x] My code follows the code style of this project.
[ ] I have updated the documentation accordingly.
[ ] I have added tests to cover my changes.
[x] All new and existing tests passed.

Codecov Report

Merging #15 (095525c) into main (ba3f1ca) will increase coverage by 0.32%.
The diff coverage is 0.00%.

@@            Coverage Diff             @@
##             main      #15      +/-   ##
==========================================
+ Coverage   41.87%   42.19%   +0.32%
==========================================
  Files          13       13
  Lines         633      633
  Branches      168      168
==========================================
+ Hits          265      267       +2
+ Misses        276      272       -4
- Partials       92       94       +2

Impacted Files
Coverage Δ

git-cliff/src/lib.rs
1.00% <0.00%> (ø)

git-cliff-core/src/repo.rs
34.53% <0.00%> (+2.39%)
:arrow_up:

Continue to review full report at Codecov.

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

I think it'd be better to have a flag to make the sorting optional :)

Alright, sounds good to me. Do you have anything in mind?
The first thing comes to my mind is something similar to this.
pub struct Opt {
...
       pub sort: Option<Sort>,
}

#[derive(StructOpt, Debug)]
pub enum Sort {
       Newest,
       Oldest,
}

WDT?

WDYT?

Looks good to me. And obviously --sort oldest should be the default.

WDYT?

Looks good to me. And obviously --sort oldest should be the default.

Well, I decided to use a simple string. My reasoning is:

I don't expect there will be more sorting logic
I don't want to implement FromStr trait for Sort enum.

So what do you think about these new changes? @orhun

Looks good to me! Only one thing, I moved the explanation of this flag to README.md in a0635ee


Custom Editor won't set value if we move out of table

Hi , when working custom Editor - if we open editor and select value and move to next cell by mouseclick, It will set value to cell but instead of moving to any other cell , if we come out of table, the value will not be to set to selected cell. Can we fix it programmatically . Also custom Editor wont set value on Tab/Enter - no action will happen on Tab/Enter Key press

If you are leaving the editor you must make sure are closing the editor.


Enhancement: Use maglnet/composer-require-checker to check for missing dependencies

This PR

[x] requires maglnet/composer-require-checker
[x] runs composer-require-checker as part of composer check
[x] runs composer-require-checker on GitHub actions
[x] adds a basic configuration for composer-require-checker
[x] whitelists dependencies which cannot be loaded with composer because they use custom autoloader
[x] whitelists soft dependencies
[x] declares missing dependencies in composer.json

I don't understand why this is important. The Readme here: https://github.com/maglnet/ComposerRequireChecker does not do a good job explaining why you'd want this package. Looking at the diff we're adding more extensions for 1 package (for development!).

@localheinz would you please verify this conflict resolution: https://github.com/joindin/joindin-api/pull/727/commits/117546d49bd5f91dad8fe613b7b3337b7992c508

@svpernova09
Any chance of this getting merged soon?
It has been sitting around for 25 days.

Thank you, @svpernova09!


fix: Fix Encrypted Text alignment

Description

Fixed the Encrypted Text alignment for S3 Datasource

Fixes #15711
Type of change

Bug fix (non-breaking change which fixes an issue)

How Has This Been Tested?

Tested Manually on the canvas.

Checklist:

[ ] My code follows the style guidelines of this project
[ ] I have performed a self-review of my own code
[ ] I have commented my code, particularly in hard-to-understand areas
[ ] I have made corresponding changes to the documentation
[ ] My changes generate no new warnings
[ ] I have added tests that prove my fix is effective or that my feature works
[ ] New and existing unit tests pass locally with my changes

/ok-to-test sha=03b6861


Error with 'resizeChannelBuffer' call in MethodChannel on Android platform

Is there an existing issue for this?

[X] I have searched the existing issues
[X] I have read the guide to filing a bug

Steps to reproduce
Call MethodChannel#resizeChannelBuffer in the Android platform implementation.
Actual results
Currently we are getting an error by calling MethodChannel#resizeChannelBuffer in the Android implementation of our application.
In our app, we need to perform initialization processing in a class that extends Android's Application.java and pass the necessary values to Flutter.
At this time, it was expected that setMethodCallHandler of MethodChannel was not set up on the Flutter side, so it was necessary to use resizeChannelBuffer.
However, when calling MethodChannel#resizeChannelBuffer in the Android implementation
E/flutter: [ERROR: flutter/runtime/dart_vm_initializer.cc(41)] Unhandled Exception: RangeError (index): Index out of range: no indices are valid: 0

I noticed that there is an error log saying.
Also, the buffer was not changed, just the last called MethodChannel#invokeMethod was processed on the Flutter side.
Below is a sample code to reproduce.

AndroidManifest.xml
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.sample_resize_buffer_test">
   <application
        android:label="sample_resize_buffer_test"
        android:name=".SampleApplication"
        android:icon="@mipmap/ic_launcher">
        <activity
            android:name=".MainActivity"
            android:exported="true"
            android:launchMode="singleTop"
            android:theme="@style/LaunchTheme"
            android:configChanges="orientation|keyboardHidden|keyboard|screenSize|smallestScreenSize|locale|layoutDirection|fontScale|screenLayout|density|uiMode"
            android:hardwareAccelerated="true"
            android:windowSoftInputMode="adjustResize">
            <!-- Specifies an Android theme to apply to this Activity as soon as
                 the Android process has started. This theme is visible to the user
                 while the Flutter UI initializes. After that, this theme continues
                 to determine the Window background behind the Flutter UI. -->
            <meta-data
              android:name="io.flutter.embedding.android.NormalTheme"
              android:resource="@style/NormalTheme"
              />
            <intent-filter>
                <action android:name="android.intent.action.MAIN"/>
                <category android:name="android.intent.category.LAUNCHER"/>
            </intent-filter>
        </activity>
        <!-- Don't delete the meta-data below.
             This is used by the Flutter tool to generate GeneratedPluginRegistrant.java -->
        <meta-data
            android:name="flutterEmbedding"
            android:value="2" />
    </application>
</manifest>

SampleApplication.java
package com.example.sample_resize_buffer_test;

import android.app.Application;

import io.flutter.embedding.engine.FlutterEngine;
import io.flutter.embedding.engine.FlutterEngineCache;
import io.flutter.embedding.engine.FlutterEngineGroup;
import io.flutter.plugin.common.MethodChannel;

public class SampleApplication extends Application {

    public FlutterEngineGroup mFlutterEngineGroup;

    @Override
    public void onCreate() {
        super.onCreate();
        mFlutterEngineGroup = new FlutterEngineGroup(this);
        final FlutterEngine mainFlutterEngine = mFlutterEngineGroup.createAndRunDefaultEngine(this);
        FlutterEngineCache.getInstance().put("main:engine", mainFlutterEngine);
        final MethodChannel mainChannel = new MethodChannel(mainFlutterEngine.getDartExecutor().getBinaryMessenger(), "main:channel");
        mainChannel.resizeChannelBuffer(3);
        // sample invoke
        mainChannel.invokeMethod("onCreateApp", null);
        mainChannel.invokeMethod("etc1", null);
        mainChannel.invokeMethod("etc2", null);
    }
}

MainActivity.java
package com.example.sample_resize_buffer_test;

import android.content.Context;

import androidx.annotation.NonNull;
import androidx.annotation.Nullable;

import io.flutter.embedding.android.FlutterActivity;
import io.flutter.embedding.engine.FlutterEngine;
import io.flutter.embedding.engine.FlutterEngineCache;

public class MainActivity extends FlutterActivity {

    @Nullable
    @Override
    public FlutterEngine provideFlutterEngine(@NonNull Context context) {
        FlutterEngine engine = FlutterEngineCache.getInstance().get("main:engine");
        if (engine == null) {
            engine = ((SampleApplication)getApplication()).mFlutterEngineGroup.createAndRunDefaultEngine(getApplicationContext());
        }
        return engine;
    }
}

main.dart
import 'dart:ui';

import 'package:flutter/material.dart';
import 'package:flutter/services.dart';

void main() {
  runApp(const MyApp());
}

class MyApp extends StatelessWidget {
  const MyApp({super.key});

  // This widget is the root of your application.
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      theme: ThemeData(
        // This is the theme of your application.
        //
        // Try running your application with "flutter run". You'll see the
        // application has a blue toolbar. Then, without quitting the app, try
        // changing the primarySwatch below to Colors.green and then invoke
        // "hot reload" (press "r" in the console where you ran "flutter run",
        // or simply save your changes to "hot reload" in a Flutter IDE).
        // Notice that the counter didn't reset back to zero; the application
        // is not restarted.
        primarySwatch: Colors.blue,
      ),
      home: const MyHomePage(title: 'Flutter Demo Home Page'),
    );
  }
}

class MyHomePage extends StatefulWidget {
  const MyHomePage({super.key, required this.title});

  // This widget is the home page of your application. It is stateful, meaning
  // that it has a State object (defined below) that contains fields that affect
  // how it looks.

  // This class is the configuration for the state. It holds the values (in this
  // case the title) provided by the parent (in this case the App widget) and
  // used by the build method of the State. Fields in a Widget subclass are
  // always marked "final".

  final String title;

  @override
  State<MyHomePage> createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  static const channel = MethodChannel('main:channel');

  int _counter = 0;

  void _incrementCounter() {
    setState(() {
      // This call to setState tells the Flutter framework that something has
      // changed in this State, which causes it to rerun the build method below
      // so that the display can reflect the updated values. If we changed
      // _counter without calling setState(), then the build method would not be
      // called again, and so nothing would appear to happen.
      _counter++;
    });
  }

  @override
  void initState() {
    super.initState();
    channel.setMethodCallHandler((call) async {
      if(call.method == 'onCreateApp') {
        print('invokeMethod call from Android.');
      } else {
        print('no such method.');
      }
    });
  }

  @override
  Widget build(BuildContext context) {
    // This method is rerun every time setState is called, for instance as done
    // by the _incrementCounter method above.
    //
    // The Flutter framework has been optimized to make rerunning build methods
    // fast, so that you can just rebuild anything that needs updating rather
    // than having to individually change instances of widgets.
    return Scaffold(
      appBar: AppBar(
        // Here we take the value from the MyHomePage object that was created by
        // the App.build method, and use it to set our appbar title.
        title: Text(widget.title),
      ),
      body: Center(
        // Center is a layout widget. It takes a single child and positions it
        // in the middle of the parent.
        child: Column(
          // Column is also a layout widget. It takes a list of children and
          // arranges them vertically. By default, it sizes itself to fit its
          // children horizontally, and tries to be as tall as its parent.
          //
          // Invoke "debug painting" (press "p" in the console, choose the
          // "Toggle Debug Paint" action from the Flutter Inspector in Android
          // Studio, or the "Toggle Debug Paint" command in Visual Studio Code)
          // to see the wireframe for each widget.
          //
          // Column has various properties to control how it sizes itself and
          // how it positions its children. Here we use mainAxisAlignment to
          // center the children vertically; the main axis here is the vertical
          // axis because Columns are vertical (the cross axis would be
          // horizontal).
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
            const Text(
              'You have pushed the button this many times:',
            ),
            Text(
              '$_counter',
              style: Theme.of(context).textTheme.headlineMedium,
            ),
          ],
        ),
      ),
      floatingActionButton: FloatingActionButton(
        onPressed: _incrementCounter,
        tooltip: 'Increment',
        child: const Icon(Icons.add),
      ), // This trailing comma makes auto-formatting nicer for build methods.
    );
  }
}

Logs

Logs
E/flutter: [ERROR:flutter/runtime/dart_vm_initializer.cc(41)] Unhandled Exception: RangeError (index): Index out of range: no indices are valid: 0
    #0      _Uint8ArrayView.[] (dart:typed_data-patch/typed_data_patch.dart:4276:7)
    #1      ChannelBuffers.handleMessage (dart:ui/channel_buffers.dart:437:14)
    #2      PlatformDispatcher._dispatchPlatformMessage (dart:ui/platform_dispatcher.dart:649:24)
    #3      _dispatchPlatformMessage (dart:ui/hooks.dart:86:31)
E/flutter: [ERROR:flutter/runtime/dart_vm_initializer.cc(41)] Unhandled Exception: RangeError (index): Index out of range: no indices are valid: 0
    #0      _Uint8ArrayView.[] (dart:typed_data-patch/typed_data_patch.dart:4276:7)
    #1      ChannelBuffers.handleMessage (dart:ui/channel_buffers.dart:437:14)
    #2      PlatformDispatcher._dispatchPlatformMessage (dart:ui/platform_dispatcher.dart:649:24)
    #3      _dispatchPlatformMessage (dart:ui/hooks.dart:86:31)

Flutter Doctor output

Doctor output
Doctor summary (to see all details, run flutter doctor -v):
[✓] Flutter (Channel stable, 3.7.3, on macOS 12.5.1 21G83 darwin-x64, locale ja-JP)
[✓] Android toolchain - develop for Android devices (Android SDK version 32.0.0)
[✓] Xcode - develop for iOS and macOS (Xcode 14.1)
[✓] Chrome - develop for the web
[✓] Android Studio (version 2021.2)
[✓] VS Code (version 1.69.1)
[✓] Connected device (2 available)
[✓] HTTP Host Availability

• No issues found!

Thanks for the detailed report @shin-ichiro-matsui
Can you verify the same using latest master or stable version to see if the same error persists or not ?

@darshankawar
I verified with Flutter-3.10.0, but it was the same behavior.

I encountered this issue recently and I think I have a possible fix for it.
I will try to file a PR soon.

@shin-ichiro-matsui Thank you for reporting this issue.
@darshankawar Thank you for confirming it.
I filed https://github.com/flutter/engine/pull/41982 to fix this, in the meantime, I think it is possible to use the same code I wrote in the PR directly in your Java file instead of calling MethodChannel.resizeChannelBuffer:
  static void resizeChannelBuffer(
      @NonNull BinaryMessenger messenger, @NonNull String channel, int newSize) {
    try {
      final String content = String.format("resize\r%s\r%d", channel, newSize);
      final byte[] bytes = content.getBytes("UTF-8");
      ByteBuffer packet = ByteBuffer.allocateDirect(bytes.length);
      packet.put(bytes);
      messenger.send(BasicMessageChannel.CHANNEL_BUFFERS_CHANNEL, packet);
    } catch (UnsupportedEncodingException e) {
      Log.e(TAG, "Failed to resize channel buffer named " + channel, e);
    }
  }

@bleroux
具体的な解決策と「PR」ありがとう！
助かりました！


Documentation

With regards to documentation.
Specifically on the canary branch, what do you think is missing or needs more elaboration?
Any pointers or pull requests greatly apprechiated :)

does modify still work? docs should reflect that

documented the change now

@fivethreeo can you tell where and what changes? As far as i can tell this should still work but it didnt for me.

do you use the finch/canary or stable release. Do a yarn why razzle.

@fivethreeo here's the output, i just used the yarn create functionality:
yarn why v1.22.5
[1/4] Why do we have the module "razzle"...?
[2/4] Initialising dependency graph...
[3/4] Finding dependency...
[4/4] Calculating file sizes...
=> Found<EMAIL_ADDRESS>info Has been hoisted to "razzle"
info This module exists because it's specified in "devDependencies".
info Disk size without dependencies: "1.9MB"
info Disk size with unique dependencies: "1.9MB"
info Disk size with transitive dependencies: "1.9MB"
info Number of shared dependencies: 272
Done in 1.17s.

https://razzle-git-finch.jared.vercel.app/docs/customization#extending-webpack

There seems to be missing options for static export in the canary documentation:
https://razzle-git-canary.jared.vercel.app/docs/customization#to-enable-static-export
I can see here that there is the paralell options:
https://github.com/jaredpalmer/razzle/blob/canary/packages/razzle/scripts/export.js#L155
(It also has a typo, it should be parallel and not paralell.

ok, I'm going to add some future todos here

[x] add docs for razzle static
[ ] add docs Absolute Imports (#1206)
[ ] move plugins docs to docs website? (let's talk about this)
[ ] Add docs for deploying razzle apps on azure, amazon, and others ...

@nimaa77 I created a PR for the non-relative imports documentation here: #1468. Let me know if it meets your expectations.

deploying Razzle to ElasticBeanstalk is a very simple 5 minute task. worth adding the steps? thanks for the great project

Yeah, adding the steps for that would be great.

Elastic Beanstalk Steps
Pre

this assumes some familiarity with creating AWS account, basic workings,  having for example your keys in the ~/.aws folder for mac. will add steps later if needed
install awsebcli. for mac can just use brew install awsebcli

Razzle

npx create-razzle-app myapp
cd myapp, make some changes (if working with other aws services, aws-sdk a good thing to npm install for project), make your app. npm start to verify razzle working
git init and  commit (make a remote origin too if needed but eb doesnt care about this)
!! change razzle from dev dependency to regular/prod dependency in package.json
still in myapp folder in terminal, eb init which will take you through some questions:

follow the instructions to set up your folder to interact with eb.
usually don't need to SSH into instance, so no
Node 12 on Linux 2 (latest everything) has made config a bit easier, and different. can add steps to previous versions too - the short of it is a single Procfile replaces some envar config files

go to your AWS eb console (make sure you choose the right location from dropdown or it wont show). The new application scaffolding which you named in eb init will show up
click on that application name. then click "Create New Environment" to actually create the environment. could do this from EB Cli too but its just as easy to click on the AWS console.
--choices:  Web Server. Managed. Node 12 on Linux 2.
-- Choose "Sample Application" instead of upload. we will blow away anyway.
Once environment creation complete, click on url shown in console to verify AWS's sample application worked.
Take note of Environment name. back in local terminal, do eb use <name of environement>
at root of folder, touch Procfile (make a Procfile. no file type)
-- procfile need only contain one line instructing eb what to do to start everything. just type npm run myscript
now make myscript. go to package.json and combine 2 of razzles scripts by adding `"myscript": "razzle build -s && node build/server.js" underneath the start:prod script
I have found that eb is most reliable with some configs by doing them on the console. go to eb console, click on Environment--> Configuration--> Software--> Environment Properties and add some key value pairs. this is also where you put RDS key pairs if you want to add database, so below is example of using an external-to-eb Datastore, which i think is actually easier than "adding datastore to eb" instructions you find in eb docs. the only annoying part is setting up security groups but aws docs aren't too bad here

NODE_ENV = production
PORT = 8081
RDS_HOSTNAME =  foo appus-west-1.rds.amazonaws.com
RDS_PORT: 5432
RDS_DB_NAME: ebdb
RDS_USERNAME: postgres
RDS_PASSWORD: foofoofoo
AWS_ACCESS_KEY_ID: AGDFTGHKKJGHKYUJHG
AWS_SECRET_ACCESS_KEY: skflsadkjhfalskdjhflkjsdhflkas

--Sort of annoying, making changes here automatically kicks off a re deploy of app.

from root of project in terminal, eb deploy should now work.
make changes, git commit them, eb deploy, repeat

We probably could use the cdk ts to automate this. But may be better to explain it like this to make it easier to newcomers. But I think newcomers should be encouraged to build locally and deploy. Unless they do some CI release or CodePipeline. Rather tell them stuff , so they get how it works. Can you make this a pull to the docs? I can add the files and doc links if you write the actual docs.

Razzle 4.0.1 is released. File doc issues as separate issues or do a pull request :)


LwM2M bootstrap DELETE operation not working

Describe the bug
When connecting to a bootstrap server which sends an empty DELETE frame, the LwM2M client responds with a COAP_RESPONSE_CODE_INTERNAL_ERROR.

I believe that the handling for this case is actually already supported in Zephyr:
		case LWM2M_OP_DELETE:
#if defined(CONFIG_LWM2M_RD_CLIENT_SUPPORT_BOOTSTRAP)
			if (msg->ctx->bootstrap_mode) {
				r = bootstrap_delete(msg);
				break;
			}
#endif
			r = lwm2m_delete_handler(msg);
			break;

and this notion in bootstrap_delete(), compliant with the LwM2M spec:
	/* DELETE all instances of a specific object or all object instances if
	 * not specified, excluding the following exceptions (according to the
	 * LwM2M specification v1.0.2, ch <IP_ADDRESS>):
	 * - LwM2M Bootstrap-Server Account (Bootstrap Security object, ID 0)
	 * - Device object (ID 3)
	 */

However, the code is not reaching this handler for this CoAP DELETE message. It is breaking here already:
	r = coap_find_options(msg->in.in_cpkt, COAP_OPTION_URI_PATH, options,
			      ARRAY_SIZE(options));
	if (r < 0) {
		goto error;
	}

I don't mind being assigned this issue, I will probably push a Pull Request by friday.
However, I would like some input on this issue so that I can solve it neatly.
To Reproduce
Steps to reproduce the behavior:

Zephyr LwM2M client
Connect to a Bootstrap Server
Bootstrap server sends DELETE

Expected behavior
Behavior according to the LwM2M spec, as also already noted in bootstrap_delete().
Impact
Showstopper for communication with specific LwM2M services, like that of IoTerop.

Just a quick and dirty test inserted here:
	if (r < 0) {
		LOG_ERR("Ignoring error");//goto error;
                r = 1;
	}

The code is now coming a bit further already, but still breaks. (This might be unrelated to Zephyr though, the bootstrap info requires DNS which we are not currently supporting)
<inf> net_lwm2m_rd_client: RD Client started with endpoint 'urn:cust:VEBA-89882390000037245548' with client lifetime 0
<err> net_lwm2m_rd_client: Cannot init LWM2M engine (-22)

Maybe all that is needed to solve this specific issue (Bootstrap empty DELETE) is a neat exception in the error checking of coap_find_options()

Thank you Robert. You are completely right. I think the problem is that parse_option() (called in coap_find_options()) assumes that it is called with actual options to parse.
Please see #34470 and let me know what you think!
An alternative would be to move the check outside the function, as perhaps it shouldn't be called at all when there are no options to parse.


Implement Refund Mobile Money

The refundMobileMoney is commented out as not implemented. This pull request ships with two classes RefundRequest and RefundResponse which helped in implementing this feature. If this pull request is merged, users of the package would be able to refund mobile money transactions using the refundMobileMoney method on the MerchantAccount.

Nice. Great work. I am considering fleshing out this plugin to be full fledged like Laravel Cashier.

Great

@jowusu837 I am working in the transactionStatus and the TransactionStatusResponse class has 25 properties... I think it too much for constructor arguments. Any idea on how to go about getting an instance of the class with the 25 properties?


Miri detects undefined behavior in the test suite

(Found while scrolling through https://miri.saethlin.dev/ub?crate=rayon&version=1.5.3)
Undefined Behavior: deallocating while item is protected: [SharedReadOnly for <2273653> (call 593590)]
    --> /root/.cargo/registry/src/github.com-1ecc6299db9ec823/rayon-core-1.9.3/src/registry.rs:479:9
     |
479  |         })
     |         ^ deallocating while item is protected: [SharedReadOnly for <2273653> (call 593590)]

Since this is a at the end of the closure, is it referring to deallocating a local variable? Such as a dangling reference to the job?

Further investigation running with full backtrace: It seems the issue only occurs when running a multi-threaded tests. The exact location varies from run to run (non-deterministic). The command used to run the test suite for me is:
MIRIFLAGS="-Zmiri-backtrace=full -Zmiri-disable-isolation" cargo +nightly miri test -- --test-threads=2

The location pin-pointed stays the same:
error: Undefined Behavior: deallocating while item is protected: [SharedReadOnly for <18205362> (call 4948034)]
    --> /home/andreas/code/investigate/rayon/rayon-core/src/registry.rs:479:9
     |
479  |         })
     |         ^ deallocating while item is protected: [SharedReadOnly for <18205362> (call 4948034)]
     |
     = help: this indicates a potential bug in the program: it performed an invalid operation, but the Stacked Borrows rules it violated are still experimental
     = help: see https://github.com/rust-lang/unsafe-code-guidelines/blob/master/wip/stacked-borrows.md for further information

     = note: inside closure at /home/andreas/code/investigate/rayon/rayon-core/src/registry.rs:479:9
     = note: inside `std::thread::LocalKey::<rayon_core::latch::LockLatch>::try_with::<[closure@rayon_core::registry::Registry::in_worker_cold<[closure@rayon_core::join_context<[closure@src/iter/plumbing/mod.rs:417:17: 425:18], [closure@src/iter/plumbing/mod.rs:426:17: 434:18], iter::collect::consumer::CollectResult<std::vec::Vec<i32>>, iter::collect::consumer::CollectResult<std::vec::Vec<i32>>>::{closure#0}], (iter::collect::consumer::CollectResult<std::vec::Vec<i32>>, iter::collect::consumer::CollectResult<std::vec::Vec<i32>>)>::{closure#0}], (iter::collect::consumer::CollectResult<std::vec::Vec<i32>>, iter::collect::consumer::CollectResult<std::vec::Vec<i32>>)>` at /home/andreas/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/std/src/thread/local.rs:445:16
     = note: inside `std::thread::LocalKey::<rayon_core::latch::LockLatch>::with::<[closure@rayon_core::registry::Registry::in_worker_cold<[closure@rayon_core::join_context<[closure@src/iter/plumbing/mod.rs:417:17: 425:18], [closure@src/iter/plumbing/mod.rs:426:17: 434:18], iter::collect::consumer::CollectResult<std::vec::Vec<i32>>, iter::collect::consumer::CollectResult<std::vec::Vec<i32>>>::{closure#0}], (iter::collect::consumer::CollectResult<std::vec::Vec<i32>>, iter::collect::consumer::CollectResult<std::vec::Vec<i32>>)>::{closure#0}], (iter::collect::consumer::CollectResult<std::vec::Vec<i32>>, iter::collect::consumer::CollectResult<std::vec::Vec<i32>>)>` at /home/andreas/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/std/src/thread/local.rs:421:9
note: inside `rayon_core::registry::Registry::in_worker_cold::<[closure@rayon_core::join_context<[closure@src/iter/plumbing/mod.rs:417:17: 425:18], [closure@src/iter/plumbing/mod.rs:426:17: 434:18], iter::collect::consumer::CollectResult<std::vec::Vec<i32>>, iter::collect::consumer::CollectResult<std::vec::Vec<i32>>>::{closure#0}], (iter::collect::consumer::CollectResult<std::vec::Vec<i32>>, iter::collect::consumer::CollectResult<std::vec::Vec<i32>>)>` at /home/andreas/code/investigate/rayon/rayon-core/src/registry.rs:461:9
    --> /home/andreas/code/investigate/rayon/rayon-core/src/registry.rs:461:9
     |
461  | /         LOCK_LATCH.with(|l| {
462  | |             // This thread isn't a member of *any* thread pool, so just block.
463  | |             debug_assert!(WorkerThread::current().is_null());
464  | |             let job = StackJob::new(
...    |
478  | |             job.into_result()
479  | |         })
     | |__________^
note: inside `rayon_core::registry::in_worker::<[closure@rayon_core::join_context<[closure@src/iter/plumbing/mod.rs:417:17: 425:18], [closure@src/iter/plumbing/mod.rs:426:17: 434:18], iter::collect::consumer::CollectResult<std::vec::Vec<i32>>, iter::collect::consumer::CollectResult<std::vec::Vec<i32>>>::{closure#0}], (iter::collect::consumer::CollectResult<std::vec::Vec<i32>>, iter::collect::consumer::CollectResult<std::vec::Vec<i32>>)>` at /home/andreas/code/investigate/rayon/rayon-core/src/registry.rs:879:13
    --> /home/andreas/code/investigate/rayon/rayon-core/src/registry.rs:879:13
     |
879  |             global_registry().in_worker_cold(op)
     |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

Interesting, this always runs into the issue for me:
MIRIFLAGS=-Zmiri-disable-isolation cargo +nightly miri test -p rayon-core join_counter_overflow

Miri pinpoints the creation of the protector tag as follows:
$ MIRIFLAGS="-Zmiri-disable-isolation -Zmiri-track-pointer-tag=2782933" cargo +nightly miri test -p rayon-core join_counter_overflow

   --> rayon-core/src/latch.rs:372:5
    |
372 | /     fn set(&self) {
373 | |         L::set(self);
374 | |     }
    | |_____^ created tag 2782933
    |
    = note: inside `<&latch::LockLatch as latch::Latch>::set` at rayon-core/src/latch.rs:372:5
note: inside `<job::StackJob<&latch::LockLatch, [closure@rayon-core/src/registry.rs:465:17: 469:18], ((), ())> as job::Job>::execute` at rayon-core/src/job.rs:114:9
   --> rayon-core/src/job.rs:114:9
    |
114 |         this.latch.set();
    |         ^^^^^^^^^^^^^^^^
note: inside `job::JobRef::execute` at rayon-core/src/job.rs:57:9
   --> rayon-core/src/job.rs:57:9
    |
57  |         (self.execute_fn)(self.pointer)
    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
note: inside `registry::WorkerThread::execute` at rayon-core/src/registry.rs:752:9
   --> rayon-core/src/registry.rs:752:9
    |
752 |         job.execute();
    |         ^^^^^^^^^^^^^
note: inside `registry::WorkerThread::wait_until_cold` at rayon-core/src/registry.rs:729:17
   --> rayon-core/src/registry.rs:729:17
    |
729 |                 self.execute(job);
    |                 ^^^^^^^^^^^^^^^^^
note: inside `registry::WorkerThread::wait_until::<latch::CountLatch>` at rayon-core/src/registry.rs:703:13
   --> rayon-core/src/registry.rs:703:13
    |
703 |             self.wait_until_cold(latch);
    |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^
note: inside `registry::main_loop` at rayon-core/src/registry.rs:836:5
   --> rayon-core/src/registry.rs:836:5
    |
836 |     worker_thread.wait_until(my_terminate_latch);
    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
note: inside `registry::ThreadBuilder::run` at rayon-core/src/registry.rs:55:18
   --> rayon-core/src/registry.rs:55:18
    |
55  |         unsafe { main_loop(self.worker, self.registry, self.index) }
    |                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
note: inside closure at rayon-core/src/registry.rs:100:20
   --> rayon-core/src/registry.rs:100:20
    |
100 |         b.spawn(|| thread.run())?;
    |                    ^^^^^^^^^^^^

A protected tag is one created for a function parameter, and is popped when such function exits. This leads me to believe that the function latch.set() must still be active. As it's running in another thread, it's still scheduled or, worse, could it be blocked? Note that LockLatch::set contains code that takes a mutex by calling lock().

I think this is a generalization of rust-lang/rust#55005, and I also mentioned it in the zulip discussion here. The current proposal would stop emitting LLVM dereferenceable for !Freeze types, with a corresponding Miri change, but that's not settled.
The problem is that the code that calls the latch set makes it immediately possible for the waiter to resume and deallocate the latch, while the setter may still have its reference. We had real bugs with that in SpinLatch which are hopefully resolved in practice, though they still get flagged in Miri. For LockLatch, only Miri cares so far.

I believe #1011 will fix this, but I would appreciate review on that. In my test, join_counter_overflow formerly got a rapid error, and now runs fine for a long time, longer than I was willing to wait. Hopefully that's just miri being slow, and not a state perturbation that hid the error until later...


GDB renderers for json library

GDB supports being extended via 'renderers' which are used to render in-memory data types for better viewing while debugging.  This can be done in Python (see here for quick overview:  http://anadoxin.org/blog/friendly-gdb.html).
Sure would be a nice-to-have for the JSON library.

Yes, this would be nice indeed. Volunteers and PRs welcome!

Related: #1952


Fix dependency badge in Readme

The dependency badge with David seems broken. Find reliable alternative. I liked that one because it only tracked libraries I depended upon directly.

I want to contribute

https://github.com/philihp/sort-unwind/pull/53

Accepted #53 because it fixes the image, but I'd still like to replace David with something else more reliable

Resolved with b8a1347


Enable MSTest framework based tests targeting .NET Core to be run and debugged from within VSCode

As of C# for Visual Studio Code extension: 1.9.0, only xUnit and NUnit based tests targeting .NET Core can be run and debugged from within VSCode.
This issue tracks the addition of MSTest support.

Re-opening until https://github.com/OmniSharp/omnisharp-roslyn/pull/856 is merged and we update to a new build of OmniSharp.

The new 1.10-beta3 release is out with this feature.


Add option to Re-add last PoO

Current behaviour:
In a LoS it is currently possible to re-add last Speakers
Wanted behaviour:
this option should be extended to last speakers from  a PoO.
The description should stay the same as it was before the contribution as finished (it should look like a normal PoO)
The tooltip should change from "Re-add last speaker" to "Re-add last contribution"

This requires a backend change. Currently the backend is responding with The last speaker is a point of order speaker and cannot be re-added. when trying to readd a point of order speaker.


amtool --duration implementation wrong

What did you do?
I want to create a silence for 2h in the future via
amtool silence add --start=2021-10-31T10:00:00.000-02:00 --duration=2h ...

What did you expect to see?
According to amtool --help-long the
--duration=DURATION  Duration of silence

I expected a silence starting at 2021-10-31T12:00:00.000Z and ending at 2021-10-31T14:00:00.000Z
Remark: In the Alertmanager GUI the endtime is already calculated from the duration in the browser.
Endtime is here mandatory for submit action. So here we do not face this problem. I haven't check the alertmanager API.
What did you see instead? Under which circumstances?
Abort with error
amtool: error: silence cannot start after it ends
When execution + duration > start timestamp, a silence is created ending at 20d from now.
Environment

System information:
insert output of uname -srm here

Alertmanager:
Linux 3.10.0-1127.19.1.el7.x86_64 x86_64
amtool:
Linux 4.18.0-338.el8.x86_64 x86_64

Alertmanager version:

Alertmanager from status GUI:
Branch: HEAD
BuildDate: 20210602-07:50:37
BuildUser: root@b595c7f32520
GoVersion: go1.16.4
Revision: 44f8adc06af5101ad64bd8b9c8b18273f2922051
Version: 0.22.2

 amtool --version
amtool, version 0.22.2 (branch: HEAD, revision: 44f8adc06af5101ad64bd8b9c8b18273f2922051)
  build user:       root@b595c7f32520
  build date:       20210602-07:50:37
  go version:       go1.16.4
  platform:         linux/amd64

Prometheus version:

not relevant

Alertmanager configuration file:

not relevant

Prometheus configuration file:

not relevant

Logs:
no log entries created for these amtool calls.

This issue is dup of https://github.com/prometheus/alertmanager/issues/2490.
I think we can say this is a bug of amtool. If we pass --duration to amtool silence add, it calculates endsAt not as startsAt + duration, but as time.Now() + duration. https://github.com/prometheus/alertmanager/blob/523c932859a8b0e4df597bd3f7b1cec6ec9ee246/cli/silence_add.go#L125
When the --duration option was impelmented, amtool silence update was implemented to calculate endsAt as startsAt + duration (ref), but amtool silence add was not.
I'll send a patch to change this behavior.

I haven't check the alertmanager API.

Alertmanager API v2 does not prepare the duration option.
https://github.com/prometheus/alertmanager/blob/523c932859a8b0e4df597bd3f7b1cec6ec9ee246/api/v2/openapi.yaml#L327-L339


fix: ssr rewrite crashing server

A try to fix the crashing server issue before stackblitz actually fixes it

Interesting. I guess we can add this for the time being and remove this bodge it if the source of the big gets fixed

Yeah we can remove it if they fix webcontainers...we should still keep this if kit merge my pr for older versions of kit that doesn't have my fix. But maybe we should try to make this a bit more "stable".
This was mainly to see if it actually fixes on vercel (it seems to)

A bit more chill about this version @SarcevicAntonio


Optimize the display of magic functions

including ZEXT, SEXT and SUB

This PR does not seems right to me. The modification clearly misunderstood the original design of this part of code. I think we may need more consideration on this. I'm going to close this.


Feedback on BYOS

#design
#enhancement
I think elastic pools will really move azur devops ahead in CI world by leaps and bounds. We currently have a haphazardly configured "dynamic pool" of machines using azure vm scale sets + auto scaling parameters. However, one issue with our setup due to the lack of integration back into azure dev ops is when azure scales down the VMs and machines are deallocated, azure dev ops leaves behind the agents

I saw the initial designs and they look amazing, wondering if we can ensure this clean up step happens?
Another quick questions, any ETA/update on when BYOS will be available? We're starting to look into other solutions due to these limitations

I would also like to know if and when AZP plans to deliver BYOS, the limited size of the available disposable VM's is a very limiting factor. We have had to change a lot of how we work (doing testing in parallel), simply because the VM's aren't powerful enough to handle the tests.

This work is ongoing, and we expect to have an initial version by the end of this quarter. @chevonc , we will keep the list of agents clean on the agent pool UI. One way to do that is by treating those as slots (instead of real agents) just like we do for hosted pools. We have not finalized the design for that part yet, but the requirement is clear.

Hey, thanks for the feedback - we're tracking this internally and it should be coming soon. I'm going to close here since the feedback has been propogated internally.

@btl5037, @chevonc Can you let us know the name(s) of Azure DevOps org(s) where you would like to preview this feature?

@vijayma The Hyperledger org would love to test the BYOS functionality. You can reach me out of band at<EMAIL_ADDRESS>if necessary

@vijayma Is there any chance we could get in on the preview as well? We are moving to VMSS from Azure VMs and this could save us a lot of work.

Sure. Send me a note to vijayma_at_microsoft_dot_com with the name of your Azure DevOps organization, and we will enable the preview for you.

Sure. Send me a note to vijayma_at_microsoft_dot_com with the name of your Azure DevOps organization, and we will enable the preview for you.

Emailed, thank you :)


Fix for bug System.MethodAccessException #8

Updated Akavache to v5.0.0, updated Android target to 4.0.3, fixed bug
(System.MethodAccessException #8) updated Lager to v0.5.0

@ChrisPulman Looks good, thanks! Just one thing: Please exclude the .nupkg file, I don't really want the release binaries to be commited to the repo


Future Considerations for NENA Working Groups

Purpose
This issue is a parking lot for potential issues identified by the DS-Data Template Working Group to be considered in future versions of NENA documentation.
Considerations

Service URN (ServiceURN) field length

The length of the Service URN field has been requested to be extended from 50 to 55 characters (#24) to support current Service URNs defined in RFC 5031 and NENA-STA-010.x. The DS-Data Template Working Group recommends extending the length of the Service URN field to 75 or 100 characters to future-proof the field from additional Service URNs that may be assigned.

Elevation (Elevation) field type

The Elevation field uses a data type of INTEGER which limits the positional accuracy of +/- 1-meter. The DS-Data Template Working Group recommends changing the Elevation data type from INTEGER to FLOAT.

StateOrEquivalentsA2 field length

The current length of the StateOrEquivalentA2 field is 2 characters which is sufficient for the US and Canadian values. ISO 3166-2:MX uses 3 characters. The DS-Data Template Working Group recommends extending the StateOrEquivalentA2 field from 2 to 3 characters to support Mexico.

Researching the StateOrEquivalentsA2 issue... The only domain restriction I've found for this element is identified in CLDXF.  Has ISO3166-2 been recommended elsewhere?
It may be worth suggesting that NENA documentation move to the ISO3166-2 standard completely, including for the US.

Submitted as comment to NENA-ADM-003_ISF_GIS_Data_Model_v3.docx on 2023-01-19.


Add prompt to ask for type of widget when no type is passed in command

Opening this to see if you are interested in this type of update to the make:filament-widget command. I find myself constantly making widgets and deleting them because I don't pass in -C or -S. This would resolve that problem.
The implementation may not be great (this is my first time using Prompts) so happy to make changes if needed. I was hoping the prompt could update the ->option('stats-overview') instead of creating a new $chartType variable on the class, but I couldn't figure out how to do that.
Also wondering if this might cause some issues around this code:
if (! $this->option('force') && $this->checkForCollision([
            $path,
            ...($this->option('stats-overview') || $this->option('chart')) ? [] : [$viewPath],
        ])) {
            return static::INVALID;
        }

@iAmKevinMcKee refactored a bit, does it still work as intended?


[uss_qualifier] Add pooled DSS prober configuration

This PR captures the configuration used to verify a pool of DSS.
This is used to validate dss:v0.12.0 release.
Successful run requires #583 and #585.

How does that sound?

Sounds good for me!


helm: Add tetragonOperator.enabled flag to the chart

A followup for https://github.com/cilium/tetragon/pull/1931#pullrequestreview-1829937445

Thanks for taking the time to do the follow-up PR! Let me summon my colleagues who suggested this followup for review :)

Rebased :)

Same comment as https://github.com/cilium/tetragon/pull/1931#issuecomment-1906595513 for the CI failure. This one can be merged!


new workflow tests

Motivation
new unit test for workflow
Breaking changes:
CreateWorkflowAsync now throws if create model is null
UpdateWorkflowAsync now throws if identifier or upsert model is null
SchedulePublishingOfLanguageVariantAsync now throws if schedule model is null
ScheduleUnpublishingOfLanguageVariantAsync now throws if schedule model is null

Codecov Report

Merging #232 (55d5ea4) into experiment/new_unit_tests (4398d1c) will increase coverage by 2.15%.
The diff coverage is 100.00%.

:mega: This organization is not using Codecov’s GitHub App Integration. We recommend you install it so Codecov can continue to function properly for your repositories. Learn more
@@                      Coverage Diff                      @@
##           experiment/new_unit_tests     #232      +/-   ##
=============================================================
+ Coverage                      82.94%   85.10%   +2.15%
=============================================================
  Files                            242      231      -11
  Lines                           2774     2658     -116
  Branches                         310      303       -7
=============================================================
- Hits                            2301     2262      -39
+ Misses                           368      308      -60
+ Partials                         105       88      -17

Impacted Files
Coverage Δ

Kontent.Ai.Management/ManagementClient.Workflow.cs
100.00% <100.00%> (+34.61%)
:arrow_up:

...Management/Modules/ActionInvoker/MessageCreator.cs
61.11% <0.00%> (-2.05%)
:arrow_down:

...anagement/Modules/UrlBuilder/EndpointUrlBuilder.cs
92.80% <0.00%> (-0.23%)
:arrow_down:

...esiliencePolicy/DefaultResiliencePolicyProvider.cs
100.00% <0.00%> (ø)

...ment/Modules/UrlBuilder/Templates/SpaceTemplate.cs

...els/PreviewConfiguration/PreviewUrlPatternModel.cs

.../PreviewConfiguration/PreviewConfigurationModel.cs

...nt/Models/PreviewConfiguration/SpaceDomainModel.cs

.../Models/Spaces/Patch/SpaceOperationReplaceModel.cs

...PreviewConfiguration/TypePreviewUrlPatternModel.cs

... and 11 more

:mega: We’re building smart automated test selection to slash your CI/CD build times. Learn more


added crash handler

This crash handler allows for crashdump generation.

Please add an option to disable it completely (but maybe move the settings all the way to the bottom above experimental features).

Please add an option to disable it completely (but maybe move the settings all the way to the bottom above experimental features).

What is the purpose of this ?

Would you want a program that dumped 20mb of data every time it crashed with absolutely no option to turn it off? Hell, I don't want it on when I'm testing stuff I know will probably crash 50 times.

Would you want a program that dumped 20mb of data every time it crashed with absolutely no option to turn it off? Hell, I don't want it on when I'm testing stuff I know will probably crash 50 times.

Personally, wouldn't affect me, I'm always gonna have it enabled, but I see your point.

Tfw you forget your c drive is almost full and end up zip bombed by a crash dump (UE has done this to me several times)


Duplicate Project function

Hi, I updated the code to support duplicating projects and I'd like to create a pull request to get it into the repo for people.
I assumed I could create a branch and then push it here to generate a pull request. Unfortunately I don't have the permission to push a new branch.
Maybe I'm going about this all wrong, could you please let me know what I need to do to create a pull request for you. Is it just that I need permission or am I being silly and missing something?

Hey @acron0 not sure if you got a notification for this?

Hi @KeithBoynton, I did see the message and I apologize for not responding sooner. As the README says, this project is not maintained and I have not written CSharp in quite some time. That said, I will accept pull requests if they look reasonable.
This document has all the necessary information you need, but to summarize, you first need to fork this project, create a new branch on your fork, and then create a pull request which indicates you want your branch, from your fork to be merged with my branch(master), on my fork.

Thanks Antony, I'll sort it


fix(helm): Fixes a typo in helm values.yaml

Description of changes:
There are a couple of typos in the helm charts values.yaml file.
By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license.

Great catch. I miss this in my last review of this feature.
Thanks @js-timbirkett


Project dependencies aren't installed during editable install when metadata is specified via PEP 621

Hello!
I recently tried to move one of my projects' project metadata to PEP 621, but I hit a roadblock. Turns out that project dependencies aren't installed if flit is doing an editable install (doesn't matter if it's --symlink or --pth) with PEP 621. This doesn't occur with a normal flit install nor when using flit's custom metadata configuration.
Reproduction

Clone https://github.com/ichard26/flit-pep621-editable-bug
Setup a virtual environment
cd into the pep621 directory
run flit install --symlink and observe how click isn't installed even it's specified in pyproject.toml under [project.dependencies]

(venv) ichard26@acer-ubuntu:~/programming/oss/flit-pep621-editable-bug/pep621$ flit install --symlink
Extras to install for deps 'all': {'.none'}                                                                                I-flit.install
Symlinking buggy.py -> /home/ichard26/programming/oss/flit-pep621-editable-bug/non-pep621/venv/lib/python3.8/site-packages/buggy.py     I-flit.install

then compare that to flit install where click is in fact installed

(venv) ichard26@acer-ubuntu:~/programming/oss/flit-pep621-editable-bug/pep621$ flit install
Extras to install for deps 'all': {'.none'}                                                                                I-flit.install
Processing /home/ichard26/programming/oss/flit-pep621-editable-bug/pep621
  DEPRECATION: A future pip version will change local packages to be built in-place without first copying to a temporary directory. We recommend you use --use-feature=in-tree-build to test your packages with this new behavior before it becomes the default.
   pip 21.3 will remove support for this functionality. You can find discussion regarding this at https://github.com/pypa/pip/issues/7555.
  Installing build dependencies ... done
  Getting requirements to build wheel ... done
    Preparing wheel metadata ... done
Collecting click>=8.0.0
  Using cached click-8.0.1-py3-none-any.whl (97 kB)
Building wheels for collected packages: buggy
  Building wheel for buggy (PEP 517) ... done
  Created wheel for buggy: filename=buggy-21.8a1-py2.py3-none-any.whl size=1832 sha256=e9612d0bf6166c599c55f388df4a763dd76e160f978abcaaf71dc5a29f942145
  Stored in directory: /tmp/pip-ephem-wheel-cache-u9e1bwz8/wheels/fd/70/eb/8e679ea073d171fa3079117d8efb2bd5c6ae5c946e6cfd5982
Successfully built buggy
Installing collected packages: click, buggy
Successfully installed buggy-21.8a1 click-8.0.1

but don't stop there, let's reset the env via pip uninstall buggy click -y
cd back to the repo root and into the non-pep621 directory
run flit install --symlink and watch as click does get installed

(venv) ichard26@acer-ubuntu:~/programming/oss/flit-pep621-editable-bug/non-pep621$ flit install --symlink
Extras to install for deps 'all': {'.none'}                                                                                I-flit.install
Installing requirements                                                                                I-flit.install
Collecting click>=8.0.0
  Using cached click-8.0.1-py3-none-any.whl (97 kB)
Installing collected packages: click
Successfully installed click-8.0.1
Symlinking bugfree.py -> /home/ichard26/programming/oss/flit-pep621-editable-bug/non-pep621/venv/lib/python3.8/site-packages/bugfree.py I-flit.install

Environment

Python: CPython 3.8.5
OS: Ubuntu 20.04.02 LTS
pip: 21.2.4
flit: 3.3.0

Anyway, thank you for all your work into flit! It's been awesome at making this personal project feel more like one instead of some annoying open source project wannabe :wink: In all seriousness, it simplifies packaging so much and it's amazing! If you need anything more from me feel free to ask away.

Thanks for the thorough report! :+1:  This makes it easy to make a first guess at what's going wrong: I think the code path in flit_core.config that reads the PEP 621 metadata is not filling the LoadedConfig.reqs_by_extra attribute. I'll look in more detail today or tomorrow.

Turns out it would go wrong when there were dependencies but no optional dependencies (so as a workaround, specifying some optional dependencies - or even an empty sub-table - should work). #433 should fix this.


InatImportsController#create ABC

Fixes InatImportsController#create ABC offense See https://github.com/MushroomObserver/mushroom-observer/pull/2150#discussion_r1762022208
Extracts InatImportsController validators to a module

coverage: 93.472% (+0.001%) from 93.471%
when pulling ecc1ef93785d59a2139b2e92773ec6d1664d57d3 on jdc-inat_imports_controller-create-abc
into b0922d432c45433bf1c1a76fcc6fa195219ac334 on main.


Blur "NSFW" Images within UI

Feature Idea
1)within the thumbnails among LORAS and MODELS
2)Generated images themselves that are created in output
Optional: An "AUTO" blur feature would be a miracle.  Reveals on click?  Not sure how that would work if trying to add a LORA to project.
Other
No response

Considering swarm is local/personal, can't you just, yknow, not generate nsfw things?

To be fair, some checkpoints have their phone off the hook.


LAB3 Typo kernel > object > thread_env.h > PHDR MEMSZ OF

There is a TYPO here

Fixed now. Thanks~


iOS TextField keyboardOptions, capitalization

TextField should handle capitalization argument:
keyboardOptions = KeyboardOptions(
capitalization = KeyboardCapitalization.None,
autoCorrect = false,
keyboardType = KeyboardType.Password,
imeAction = ImeAction.Send,
),
Slack discussion: https://kotlinlang.slack.com/archives/C0346LWVBJ4/p1676283616991399

Any updates on when this will be fixed roughly? It's a blocker for passwords :/

Any updates on when this will be fixed roughly? It's a blocker for passwords :/

We will take this issue in the next 3 months

@mazunin-v-jb any timeline for this?

@ahmedsalemelzeiny
You can check it in version Compose 1.5.0-beta01

It still seems (as of 1.5.10) that changing ImeAction dynamically based on some state, that the keyboard doesn't update the ImeAction on iOS. This works fine on Android. Say for example, I change from ImeAction.None to ImeAction.Next when the text becomes non-empty or some other condition.

@Aidanvii7 it was fixed in newest dev versions like in 1.6.0-dev1347

Please check the following ticket on YouTrack for follow-ups to this issue. GitHub issues will be closed in the coming weeks.


Feature request : support of Sveltekit 2 [PR included]

I upgraded Sveltekit to v2,
Which makes this warning at install time :
├─┬ sveltekit-html-minifier 1.0.2
│ └── ✕ unmet peer<EMAIL_ADDRESS>found 2.5.0

I will report if I see the plugin breaking, this might simply have no impact on functionality
Thank you so much btw, I find the lib super useful ! 💛

Thank you, already merged and published.

Tested, it worked with the update, thanks 👌

Nice, thank you for the update.