value accessor error - type is not a subtype of type 'String' of 'viewValue'

Hi there, I'm using reactive_forms: ^9.0.2
I'm having a hard implementing a custom value accessor.
the value accessor looks absolutely fine when I compare it to the other value accessors in the official code:
import 'package:reactive_forms/reactive_forms.dart';
import 'package:vepo/src/domain/entities/establishment/establishment_domain_entity.dart';

/// Represents a control value accessor that convert between data types
/// [EstablishmentDomainEntity] and [String].
class EstablishmentValueAccessor
    extends ControlValueAccessor<EstablishmentDomainEntity, String> {
  @override
  String modelToViewValue(EstablishmentDomainEntity modelValue) {
    return modelValue == null ? '' : modelValue.name;
  }

  @override
  EstablishmentDomainEntity viewToModelValue(String viewValue) {
    return (viewValue == '' || viewValue == null)
        ? null
        : EstablishmentDomainEntity(name: viewValue);
  }
}

So it must be what I'm doing not in the value accessor, which is the problem. I am trying to update the field programmatically like so:
          final selectedEstablishment = EstablishmentDomainEntity(
              placeId: suggestion.placeId,
              name: suggestion.structuredFormatting.mainText);
          field.didChange(selectedEstablishment);

However, I get this error:
The following _TypeError was thrown while handling a gesture:
type '_$_EstablishmentDomainEntity' is not a subtype of type 'String' of 'viewValue'

When the exception was thrown, this was the stack
#0      ControlValueAccessor.updateModel (package:reactive_forms/src/value_accessors/control_value_accessor.dart)
package:reactive_forms/…/value_accessors/control_value_accessor.dart:1
#1      ReactiveFormFieldState.didChange
package:reactive_forms/…/widgets/reactive_form_field.dart:208
#2      new VpEstablishmentsAutocompleteField.<anonymous closure>.<anonymous closure>
package:vepo/…/establishments_autocomplete/establishments_autocomplete_field.dart:129
#3      _TypeAheadFieldState._initOverlayEntry.<anonymous closure>.<anonymous closure>
package:flutter_typeahead/flutter_typeahead.dart:864
#4      _SuggestionsListState.createSuggestionsWidget.<anonymous closure>.<anonymous closure>
package:flutter_typeahead/flutter_typeahead.dart:1251
...
Handler: "onTap"
Recognizer: TapGestureRecognizer#242fc
    debugOwner: GestureDetector
    state: possible
    won arena
    finalPosition: Offset(193.0, 421.5)
    finalLocalPosition: Offset(158.0, 44.5)
    button: 1
    sent tap down

So I have now changed from updating the field as above, to this:
                  final selectedEstablishment = EstablishmentDomainEntity(
                      placeId: suggestion.placeId,
                      name: suggestion.structuredFormatting.mainText);
                  field.valueAccessor.updateModel(selectedEstablishment);
                  field.didChange(selectedEstablishment.name);

But when I navigate away from the page and then back to it, the form has the correct value, but it does not display anything in the text box. Is there something I need to manually do to make it show the text in the textbox?
Here is the full ReactiveFormField which uses the custom value accessor:
import 'package:flutter/material.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart';
import 'package:flutter_typeahead/flutter_typeahead.dart';
import 'package:font_awesome_flutter/font_awesome_flutter.dart';
import 'package:freezed_annotation/freezed_annotation.dart';
import 'package:google_maps_webservice/places.dart';
import 'package:reactive_forms/reactive_forms.dart';
import 'package:flutter/widgets.dart';
import 'package:vepo/fonts.gen.dart';
import 'package:vepo/src/domain/entities/establishment/establishment_domain_entity.dart';
import 'package:vepo/src/presentation/widgets/purely_display_widgets/text/caption_widget.dart';
import 'establishment_autocomplete_control_value_accessor.dart';
import 'establishments_autocomplete_field_view_model.dart';

class VpEstablishmentsAutocompleteField
    extends ReactiveFormField<EstablishmentDomainEntity> {
  VpEstablishmentsAutocompleteField(
      {@required String formControlName,
      this.context,
      this.label,
      this.hint,
      bool hasFocus = false,
      this.onFocusChange,
      Map<String, String> Function(AbstractControl<dynamic>) validationMessages,
      this.key})
      : super(
            key: key,
            formControlName: formControlName,
            valueAccessor: EstablishmentValueAccessor(),
            validationMessages: validationMessages,
            showErrors: (control) => control.invalid,
            builder: (ReactiveFormFieldState<EstablishmentDomainEntity> field) {
              final viewModel = ProviderContainer()
                  .read<EstablishmentsAutocompleteFieldViewModel>(
                      establishmentsAutocompleteViewModelProvider);

              return FocusScope(
                  child: Focus(
                      child: TypeAheadFormField<Prediction>(
                textFieldConfiguration: TextFieldConfiguration(
                  controller: viewModel.typeAheadController,
                  autofocus: true,
                  decoration: InputDecoration(
                      errorMaxLines: 3,
                      suffixIconConstraints: const BoxConstraints(
                        minWidth: 2,
                        minHeight: 2,
                      ),
                      suffixIcon: ReactiveStatusListenableBuilder(
                        formControlName: formControlName,
                        builder: (context, control, child) {
                          return control.pending
                              ? Container(
                                  width: 90,
                                  height: 60,
                                  child: Stack(children: [
                                    Positioned(
                                      top: 10,
                                      right: 15,
                                      child: CircularProgressIndicator(
                                          backgroundColor: Theme.of(context)
                                              .primaryColorDark),
                                    )
                                  ]))
                              : Container(width: 0);
                        },
                      ),
                      alignLabelWithHint: true,
                      labelStyle: TextStyle(
                          height: 0,
                          fontSize: hasFocus ? 24 : 18.0,
                          color: Theme.of(context).primaryColor),
                      hintText: hint,
                      labelText: label,
                      counterText: ''),
                ),
                suggestionsCallback: (pattern) async {
                  return await viewModel.fetchSuggestions(pattern, context);
                },
                suggestionsBoxDecoration: SuggestionsBoxDecoration(
                  elevation: 20,
                  color: Theme.of(context).scaffoldBackgroundColor,
                  borderRadius: const BorderRadius.all(
                    Radius.circular(10.0),
                  ),
                ),
                itemBuilder: (context, suggestion) {
                  return ListTile(
                    leading: FaIcon(FontAwesomeIcons.storeAlt,
                        size: 25, color: Theme.of(context).primaryColor),
                    title: RichText(
                      text: TextSpan(
                        text: viewModel.getBoldText(
                            suggestion.structuredFormatting.mainText,
                            suggestion.structuredFormatting
                                .mainTextMatchedSubstrings.first),
                        style: TextStyle(
                            fontSize: 20,
                            fontFamily: FontFamily.hind,
                            fontWeight: FontWeight.bold,
                            color: Theme.of(context).primaryColorDark),
                        children: <TextSpan>[
                          TextSpan(
                              text: suggestion.structuredFormatting.mainText
                                  .substring(suggestion
                                      .structuredFormatting
                                      .mainTextMatchedSubstrings
                                      .first
                                      .length as int),
                              style: const TextStyle(
                                  fontWeight: FontWeight.w200,
                                  color: Colors.black54))
                        ],
                      ),
                    ),
                    subtitle: VpCaption(
                      text: suggestion.structuredFormatting.secondaryText,
                      color: Colors.black54,
                      fontSize: 17,
                      overflow: TextOverflow.visible,
                    ),
                  );
                },
                onSuggestionSelected: (suggestion) {
                  viewModel.typeAheadController.text =
                      suggestion.structuredFormatting.mainText;
                  final selectedEstablishment = EstablishmentDomainEntity(
                      placeId: suggestion.placeId,
                      name: suggestion.structuredFormatting.mainText);
                  field.valueAccessor.updateModel(selectedEstablishment);
                  field.didChange(selectedEstablishment.name);
                },
              )));
            });

  final Key key;
  final BuildContext context;
  final String label;
  final String hint;
  bool hasFocus;
  final void Function(bool) onFocusChange;
  @override
  ReactiveFormFieldState<EstablishmentDomainEntity> createState() =>
      ReactiveFormFieldState<EstablishmentDomainEntity>();
}

Any help much appreciated.

Hi @BenjaminFarquhar,
Thanks for using Reactive Forms.
There are a few concepts related to ControlValueAccessor
when you declare:
class EstablishmentValueAccessor extends ControlValueAccessor<EstablishmentDomainEntity, String>

you are saying that the Type of the model (the FormControl) is EstablishmentDomainEntity and the type of the View (your input widget) is  String.
So the ControlValueAccessor will convert from one type to another when interchange data between view and model:

Input Widget produces String -> ControlValueAccessor converts String to EstablishmentDomainEntity -> FormControl save value

FormControl value of type EstablishmentDomainEntity -> ControlValueAccessor converts EstablishmentDomainEntity to String -> Input Widget display consumes String data

So when you execute:
field.didChange(........)

in your widget, you need to pass the View data: a String in your specific use case (not an instance EstablishmentDomainEntity) because String is the data type of your View.
You don't need to call:
field.valueAccessor.updateModel(.......)

in your custom Reactive widget because this is internally executed by the ControlValueAccessor after you call: field.didChange
This is the actual implementation of the method ReactiveFormFieldState.didChange
void didChange(dynamic value) {
  _valueAccessor.updateModel(value);
  _checkTouchedState();
}

As you can see it calls the ControlValueAccessor.updateModel passing the value from the view (passing the String instance not an EstablishmentDomainEntity instance)
Internally your ControlValueAccessor will call the required methods to convert from String to EstablishmentDomainEntity.
I hope I have help you to understand a little bit more the concepts related to ControlValueAccessor.

Thanks @joanpablo! That has cleared things up! My code is working as expected now that I know that 👍🏻
Cheers!


Fix casing in title

@flanakin : Thanks for your contribution! The author, @bandersmsft, has been notified to review your proposed change.

#sign-off
@flanakin Note correct case for future use!


Fix replace

Hey Mads!
Thank you very much for your effort, I've been using this package for a while.
Since your last update, I've been having trouble because it didn't put a space after the : and so, { :foo => :bar } is replaced with foo::bar.
I've fixed the spec, which didn't run and added the needed space into _replaceHashRockets.
Have a look please, and let me know!

Thanks :+1: I've just recently gone back to using Atom myself, and haven't had time to actually look closely at this package.


feat: ::set-output

Output result values that can be passed on to subsequent jobs.
ref. https://docs.github.com/en/actions/using-workflows/workflow-commands-for-github-actions#setting-an-output-parameter

implemented at #97


Add new linter for PK type

This introduces a new linter for the PK type. It checks all the PK parts, and validates that the type exists in allow-pk-type. The motivation for this linter, is that some tools (including a schema change tool we are building) require memory comparable primary keys to safely operate.
The default list of allow-pk-type includes the types that we expect tables will feature (i.e. roughly all types excluding non-memory comparable types). It can be modified by other users as required to suit their purposes. The linter itself is set to SeverityIgnore by default.
Edit: The motivation to add a new linter vs. extend the exiting linter to require PK, is that it's likely a user might want one to be an error, and another a warning. We will likely introduce this linter in our infrastructure this way.
Fixes https://github.com/skeema/skeema/issues/204

Thank you so much for the pull request! I'll aim to write some review comments later today.
btw, CI is failing due to a pre-existing bug in the linter package's test suite setup, not your fault. If a linter rule defaults to SeverityIgnore and also uses RelatedListOption, apparently the related allow-list doesn't get set up properly for the test, when later causes a panic when the allow-list isn't present in the expected place in the configuration map. By coincidence, all of the other linter rules with allow-lists happen to default to being enabled, so this condition never came up previously.
I'll work on getting a patch for that test suite bug into the main branch soon, so that CI can run after you rebase against it.

Just committed a1a5a6d to main, which fixes the test panic. If you can please rebase your PR against that, tests should run properly now. Sorry about that -- thanks for your patience!
The integration test suite will automatically set your linter rule to warning level, and run it against all of the definitions in internal/linter/testdata/validcfg/*.sql. These .sql files have embedded comments which indicate which linter annotations are expected for any given line; the test logic parses those comments and confirms the expected annotations are emitted, as well as no additional unexpected annotations.
Currently all the table definitions in that directory have an int PK or no PK, so tests will still pass as-is, but it won't actually provide coverage for triggering your new linter check. In order to cover that in the test, simply add a couple things to that testdata directory:

Add a line to internal/linter/testdata/validcfg/.skeema to configure allow-pk-type to some value which includes int at minimum but excludes some other types like maybe varchar. (I know your proposed default value already does that, but will discuss that more in review comments later today -- in any case let's just be explicit in the test configuration)
Create a new file internal/linter/testdata/validcfg/badpk.sql which creates a table using a PK with a data type that isn't on the allow-pk-type list. Add an annotation comment on the line corresponding to the problematic column; see autoinc.sql or multibad.sql for example format. If desired, you can put multiple tables in this file, if you want to test single-column vs compound PKs.

Thanks again! I'll submit a PR review with some other minor notes later today.

Sorry I don't really understand the test-runner. I did run it locally, and I'm getting the same error against main as I am in this branch, so I assume that's a good thing.

Thanks again for your patience with the current bumpy PR process. I definitely want to make it easier and smoother to do linter PRs (and Skeema PRs in general) in the near future, just haven't been able to devote much time to that yet.

No problem, thanks for the review & fast turn around!

Coverage: 93.263% (+0.03%) from 93.23% when pulling ec51c27f381c15c30b80835a3877a98a58119087 on morgo:lint-pk-type into 93ad4c4bebc0692d9f7b5b5532369ee873fad7aa on skeema:main.


Update to latest Proxy.Client.Contract version

@safihamid,
Thanks for having already signed the Contribution License Agreement. Your agreement was validated by .NET Foundation. We will now review your pull request.
Thanks,
.NET Foundation Pull Request Bot


Failed to install provider

Initializing modules...
Initializing the backend...
Initializing provider plugins...

Finding terraform-redhat/ocm versions matching "1.0.0"...
Reusing previous version of hashicorp/aws from the dependency lock file
Using previously-installed hashicorp/aws v4.57.1
╷
│ Error: Failed to install provider
│
│ Error while installing terraform-redhat/ocm v1.0.0: could not query provider registry for registry.terraform.io/terraform-redhat/ocm: failed to
│ retrieve authentication checksums for provider: 404 Not Found returned from github.com

@JayavardhanTummidi please take a look at this comment

We have already moved to newer versions
This issue was resolved


Doing face encoding in nodejs

Hi,
Is there a supporting library that can run face_recognition.face_encodings in nodejs?
I don't want to pass the source image to the python server. just the encoded numbers.
Possible?
Thanks

https://github.com/justadudewhohacks/face-api.js/

https://github.com/justadudewhohacks/face-api.js/


[Adding links in the footer section (right side)

Detailed description
[

]
Adding links in the about us and contact us page.
Who are we? -> will direct to landing page.
what we do? -> will direct to this section
[

]
Teamwebx -> teamwebx page
Context
It will improve the UX
Possible implementation
No response
Additional information
No response
Checklist

[X] I have read the Contributing Guidelines
[X] I have checked the existing issues
[X] I am willing to work on this issue (optional)
[X] I am a GSSoC'23 contributor

@anuza08
I have assigned you the issue. Please proceed with it, and don't hesitate to tag me if you require any assistance.


Tp update

Short description of what this resolves:
There's a new version of Telepresence (0.101) out, so we should bump that in our tool.
Changes proposed in this pull request:

default TP version to 0.101
updates operator template

@aslakknutsen This PR will be exceptionally merged w/o the review as you are not available this and coming week. Adding you as a reviewer though so you can see what has been changed.


hero mdbook URLs in different collections not working

Situation
The mdbook building works in terms of the side bar menu: when you click on a link it's (collection:filename)
e.g.

Here we see, dashboard file is in dashboard collection.
But the intro page (in manual collection) has a link: (dashboard:dashboard.md) but it is converted in (manual:dashboard.md).

This link leads to:

Analysis
It seems it does not classify well collections and URLs.
References
From the mdbook: https://git.ourworld.tf/tfgrid/info_tfgrid/src/branch/development_manual/collections/manual/intro.md
Screenshots of Code

Hero version
1.0.15

@despiegk @MarioBassem
What I understand it seems that hero mdbook puts all collections into one collection. So all files are into only one collection, and
the URLs drop the collection, e.g. collection:file.md becomes file.md, instead of collection/file.md.

This picture we see dashboard as collection and dashboard as file, but it should be dashboard/dashboard

Here is what it becomes in html

Here is the markdown

What works as a link is collection:file.md, so dashboard/dashboard in this case, which works with the hero mdbook rendering in the left side menu, when you click on dashboard -> dashboard, it leads to this page:

So it's the dashboard page from the dashboard collection.

We can see that the collection manual contains all the files, while it should only contain a few files:

Note:
I think this line may be the reason why (collection:filename.md) does not work: https://github.com/freeflowuniverse/crystallib/blob/323262e236927c370af24e23d71451ae2097bf16/crystallib/data/markdownparser/elements/element_link.v#L280

Fix in #426


State setup

The ultimate goal of this PR, once completed, will be to handle reconciliation of live auction state. There are two ways an auction state can be updated:

Getting a complete auction state from the API or websocket (currently the only way).
Getting an updated event from the websocket (to be determined, @acjay is working on it).

I want to keep the state manager super slim, ideally it would have no logic and only defer to other objects that are DI'd in (it does a pretty good job so far). So I've created a state reconciler that keeps track of existing auction state and, given some JSON or – later – an updated event, it'll update the backing models and view models appropriately. Then the UI just needs a few tweaks to respond to changes instead of being loaded statically.
Fixes #1373.

Still not compiling, but the basics are implemented. Next steps:

Feign a attempt to hook into existing UI (I don't want this PR to live forever).
Fix tests for existing code.
Add tests for new code.

OK, so I've re-hooked up the static state json we have in the app so that we can work independently on the UI and state stuff. Left to do: fix UI tests. I want to get this merged ASAP, so I may ask to follow-up with another PR that adds tests later.

Aww yeah.

1 Error

:no_entry_sign:
No CHANGELOG changes made

3 Warnings

:warning:
PR is classed as Work in Progress

:warning:
Needs testing on a Phone if change is non-trivial

:warning:
Found unstubbbed networking requests

ARFairFavoritesNetworkModelSpec in test_ignores_artworks_without_a_partner
ARFairFavoritesNetworkModelSpec in test_ignores_artworks_without_a_partner
ARFairFavoritesNetworkModelSpec in test_ignores_artworks_without_a_partner

  Generated by :no_entry_sign: danger

OK @alloy this is :green_apple:
But! Tests are missing.
At the risk of :grimacing: I'd like to ask to merge this while I work on tests (maybe they'll be finished by the time you merge anyway). My fear is that the large changes I've made to the UI stuff might block Orta. I shouldn't have let the PR get this big, I'll try to avoid that in the future.

@orta won’t be back until the 2nd, though, so you’ll still have all of tomorrow. So let’s first see if you can finish them before the end of tomorrow?

Cool, I'm about to wrap up at the office, will be online tonight. https://github.com/artsy/eigen/pull/1370/commits/f932f4421870559972326250b1f7132620f77b2d introduces the structure of what/how I'd like to test if anyone is interested. I'll need a way to construct JSON in a slightly-customized way to test how the subject reconciles the small differences. Gonna be FUN 🎉

:green_apple:

Awesome, merging :tada:

:tada:


Missing credentials with S4U2 Self Mechanism

I am working on the below scenario:
Client1 interacts with Service1 which in turn interacts with Service 2. The interaction with Service 2 should happen on behalf of Client1. Authentication being used here is kerberos, and I have few issues in explicitly setting the requestCredDelegation(true) on the client side. I thought S4U2 self + S4U2 Proxy kerberos extensions could solve the issue.
These are the things I have done following the sample:
a) In the AD, On the Service1 account, enabled trusted delegation for specific service.
b) In my Service1 java code, after the client <-> Server connection is established: 1) I create the server credentials: serverCreds = manager.createCredential(null, GSSCredential.DEFAULT_LIFETIME, krb5Oid, GSSCredential.INITIATE_ONLY);;
2). Create the GSSName corresponding to the client GSSName other = manager.createName(XXX, GSSName.NT_USER_NAME, krb5Oid);

GSSCredential clientcreds = ((ExtendedGSSCredential)serverCreds).impersonate(other);

Impersonated client creds show up as:: [GSSCredential<EMAIL_ADDRESS>1.2.840.1135<IP_ADDRESS> Initiate [class sun.security.jgss.krb5.Krb5ProxyCredential]<EMAIL_ADDRESS><IP_ADDRESS>.5.5.2 Initiate [class sun.security.jgss.spnego.SpNegoCredElement]]

Having the impersonated credential, I try to connect Service 1 to Service 2, by creating the context :

GSSContext context = manager.createContext(serverName, krb5Oid, impersonatedUserCredential, GSSContext.DEFAULT_LIFETIME); ....... context.initSecContext(token, 0, token.length);
I get an error of No Valid credentials found.
I have created a Subject from the impersonated Credentials and try to run a privileged Action, but similar error shows up, no service ticket found in the Subject.
I see that when a subject is created by passing in the Credentials, Krb5ProxyCredential is being ignored,
"Skipped cred element: sun.security.jgss.krb5.Krb5ProxyCredential@7e0babb1"
Could somebody let me know, why are the Krb5ProxyCredentials being ignored when creating a subject and the proxied request fails with missing credentials and no service ticket found errors.
Thanks

Hello. I only provided this code as a "client" proof of concept. I have to admit that I am not aware of server-side additional requirements for Java code to implement KCD.
Based on your description, I would say you should not use impersonation of a "new" GSSName with user login name, but delegation only, forwarding credentials received in GSSContext from client to the next hop.
You should find interesting methods at http://hg.openjdk.java.net/jdk8u/jdk8u-dev/jdk/file/5b20f3cd68b7/src/share/classes/sun/security/krb5/internal/CredentialsUtil.java

Link to a similar question: https://stackoverflow.com/questions/39743700/java-spnego-authentication-kerberos-constrained-delegation-kcd-to-backend-se

Thanks @ymartin59 for the links. I could resolve my issue.


Use try_ for transaction acquisition

This is because blocking within the NIF function can lead to a potential deadlock. Returns transaction_acq_error instead of blocking.
However, there are other processes that block to acquire the transaction (for example, yrs::Doc::get_or_insert_xxxx used in Doc.get_xxx), so this does not solve the issue.

Summary by CodeRabbit

Documentation

Added module documentation for Yex.Doc explaining potential concurrent operation limitations

Refactor

Removed Yex.Nif.Util module and related utility functions
Updated error handling in multiple modules to improve transaction and update management
Reorganized import statements across multiple Rust source files

New Features

Introduced new TransactionResource struct for managing transactions
Added NifYMapChange struct for enhanced map event representation

Bug Fixes

Improved error propagation in transaction-related methods
Enhanced transaction handling across various data type operations (text, XML, map, array)

coverage: 96.011%. remained the same
when pulling ff85d680835b70e6ff9a89197c65c6ec2e464069 on concurrency_transaction
into b846ab857abffeb7091f20b46c54f81ae4efbcec on main.


Get-Screenshot ImageSavePath results in 0 byte file

When the ImageSavePath flag is not specified, a base64 blob is returned, which can be converted into an image successfully. However, when the ImageSavePath flag and a filename is specified, the file that is created is 0 bytes and does not contain a screenshot of the target systems session.
The return code is 0, which if I understand is successful. Sorry if this is confusing at all. Thanks.
> Get-Screenshot -ComputerName <IP_ADDRESS> -Credential $credential -Results -ImageSavePath desktop.png -Verbose
VERBOSE: [+] Obtaining the return code
VERBOSE: [+] Obtaining the result
VERBOSE: [+] Cleaning up the result

ComputerName : <IP_ADDRESS>
Command      : Get-Screenshot
Args         :
ReturnCode   : 0
Result       : C:\Users\me\Desktop\RemoteRecon-master\desktop.png

> Get-Screenshot -ComputerName <IP_ADDRESS> -Credential $credential -Results -ImageSavePath 1.png -Verbose
VERBOSE: [+] Obtaining the return code
VERBOSE: [+] Obtaining the result
VERBOSE: [+] Cleaning up the result

ComputerName : <IP_ADDRESS>
Command      : Get-Screenshot
Args         :
ReturnCode   : 0
Result       : C:\Users\me\Desktop\RemoteRecon-master\1.png

> dir *.png

    Directory: C:\Users\me\Desktop\RemoteRecon-master

Mode                LastWriteTime     Length Name
----                -------------     ------ ----
-a---         11/8/2017  12:42 PM          0 1.png
-a---         11/8/2017  12:45 PM          0 desktop.png

> $psversiontable

Name                           Value
----                           -----
PSVersion                      3.0
WSManStackVersion              3.0
SerializationVersion           <IP_ADDRESS>
CLRVersion                     4.0.30319.17929
BuildVersion                   6.2.9200.16384
PSCompatibleVersions           {1.0, 2.0, 3.0}
PSRemotingProtocolVersion      2.2

> [System.Reflection.Assembly]::GetExecutingAssembly().ImageRuntimeVersion
v4.0.30319
>

Edited to include PS and .NET version

@skahwah My best guess is you are running the screenshot command for the first time with the results flag. The results flag will only try to retrieve results, not run the specified command. I would take a look at the wiki to get a good grasp on using the tool. Hope this helps.


Update gradle and build tools version and fix compilation errors

What compilation errors are you seeing? Can you be more explicit?

Unfortunately I am not able to reproduce the compiler errors

Nagging Reviewer @aselle, @jdduke: You have been added as a reviewer to this pull request. Please add your review or reassign. It has been 14 days with no activity and the awaiting review label has been applied.


feat: use io.copy and comment graphqljson.UnmarshalData

Change to  io.copy and add comment TODO:graphqljson.UnmarshalData

I would like to keep the JSON parsing as a separate package. I believe that the client should only represent the GraphQL client.


[BUG] - support next 15 and react 19

NextUI Version
2.4.8
Describe the bug

NextUI rendering problem: only compose components, such as dropdown, tooltip, select etc...
any “compose” component stops working, doesn't render, blocking in some cases the global interface.
This problem occurs after a project migration from NextJS v14 to v15 and therefore from React 18 to 19.
However, this means that NextUI requires a recent version of React 18.
Your Example Website or App
No response
Steps to Reproduce the Bug or Issue
1- If the version of your NextJS project <= 14 and your version of react !== 19 and the version of NextUI is <= 2.4.8; Then migrate from NextJS 14 to 15 and React 18 to 19.
After that, you'll probably notice warnings about the incompatibility of some of your packages as a result of this change, especially against React 19.
2- Run the app anyway and you'll get the same effect as the problem described here.
Expected behavior
I expected that, following the upgrade of NextJS to version 15 and React to version 19, the application would run without package compatibility errors or major warnings related to NextUI or other dependencies. My goal is to launch the application without any compatibility issues between the different versions of React, NextJS and NextUI.
Screenshots or Videos
https://github.com/user-attachments/assets/c191a759-29a7-47d1-8007-fc44ca5edd85
Operating System Version
Windows
Browser
Chrome

in short, currently react 19 is not supported. however you can use nextjs 15 with overriding react 18.

Thanks, it's already been noticed, the use of react 18 in spite of Next 15 had already been taken while waiting for a version of NextUI that supports React 19.

handled in #3732. please wait for next version.


SOLR-17320: Added support for timeAllowed time out in HttpShardHandler

https://issues.apache.org/jira/browse/SOLR-17320
Description
HttpShardHandler should obey the timeAllowed parameter in query. Sometime different shard takes different time to process the query. But, if user has provided the timeAllowed parameter then  HttpShardHandler should use that parameter to return the any partial response.
 And then returns any partial response.
Tests
Added TestTimeAllowedSearch test to demonstrate this issue. In this test, we have two shards, one shard has more more data then other. And it uses small timeAllowed to show that issue with fix.
Checklist
Please review the following and check all that apply:

[ ] I have reviewed the guidelines for How to Contribute and my code conforms to the standards described there to the best of my ability.
[ ] I have created a Jira issue and added the issue ID to my pull request title.
[ ] I have given Solr maintainers access to contribute to my PR branch. (optional but recommended)
[ ] I have developed this patch against the main branch.
[ ] I have run ./gradlew check.
[ ] I have added tests for my changes.
[ ] I have added documentation for the Reference Guide

This only checks for the timeAllowed limit but the concept of query limits has been extended in SOLR-17138. Also, there's another Jira ticket with a similar scope: https://issues.apache.org/jira/browse/SOLR-17158. @gus-asf ?

Am on vacation this week, will try to look Sunday after I get back.
On Tue, Jun 11, 2024 at 7:40 PM Hitesh Khamesra @.***>
wrote:

@.**** commented on this pull request.
In solr/core/src/java/org/apache/solr/handler/component/SearchHandler.java
https://github.com/apache/solr/pull/2493#discussion_r1635595108:

@@ -557,7 +558,7 @@ public void handleRequestBody(SolrQueryRequest req, SolrQueryResponse rsp) throw
while (rb.outgoing.size() == 0) {
ShardResponse srsp =
tolerant

               ? shardHandler1.takeCompletedIncludingErrors()

               ? shardHandler1.takeCompletedIncludingErrorsWithTimeout(maxTimeAllowed)

Thanks @dsmiley https://github.com/dsmiley , I have updated your
feedback. Also @gus-asf https://github.com/gus-asf please let me what
you think about it
—
Reply to this email directly, view it on GitHub
https://github.com/apache/solr/pull/2493#discussion_r1635595108, or
unsubscribe
https://github.com/notifications/unsubscribe-auth/ALF2L3MYLS6L6LAIXVTJQODZG6DHTAVCNFSM6AAAAABIW6MUSWVHI2DSMVQWIX3LMV43YUDVNRWFEZLROVSXG5CSMV3GSZLXHMZDCMJRGYZDMOJYGA
.

Sorry busier than expected. Ping acknowledged will look soon. Too late tonight.

Pining @gus-asf - sorry to bother you

On deck for tomorrow, finally, now that my thread safe cpu timing for SOLR-17298 is sorted

FYI a colleague tried this by using 2 solr nodes and hanging one and it worked fine

Now that I have had my head back into 17158 for a bit, I can better articulate some differences with this PR. This PR presumes that if we hit a failure we just want to quit as soon as possible. There are certainly use cases where partial results are not useful and loosing some of them is not a worry, but this is not always true. Imagine if you are serving products to be displayed for sale. You may want to collect as many as possible, because an error may cause the user to bounce of the site, and the less results shown, the less likely a sale. This type of use case is the what the code currently supports so in 17158 I tried to retain that default behavior and if the user specifies that they don't care about partial results I try to pick up additional gains by not returning any partials at all (less data over the wire).
So 17158 essentially provides a least effort mode as an alternative to the default best effort mode. This is also part of why it is longer. I'm working on a slimmed down version of the prior PR eliminating a few simple refactors and touch ups that crept in added to the complexity/file count. The old PR can't continue because it predates the move to CompletableFuture.

Now that I have had my head back into 17158 for a bit, I can better articulate some differences with this PR. This PR presumes that if we hit a failure we just want to quit as soon as possible. There are certainly use cases where partial results are not useful and loosing some of them is not a worry, but this is not always true. Imagine if you are serving products to be displayed for sale. You may want to collect as many as possible, because an error may cause the user to bounce of the site, and the less results shown, the less likely a sale. This type of use case is the what the code currently supports so in 17158 I tried to retain that default behavior and if the user specifies that they don't care about partial results I try to pick up additional gains by not returning any partials at all (less data over the wire).
So 17158 essentially provides a least effort mode as an alternative to the default best effort mode. This is also part of why it is longer. I'm working on a slimmed down version of the prior PR eliminating a few simple refactors and touch ups that crept in added to the complexity/file count. The old PR can't continue because it predates the move to CompletableFuture.

Thanks @gus-asf. I guess this time out case falls into shards.tolerant=true, if that returns partial response then application should be fine with that? Let me look  PR 17158

A warning:  A colleague cherry-picked this PR to our environment and we found that if all distributed requests time out, and if shards.tolerant=true, that there are NullPointerExceptions.  The test didn't cover this but it can trivially be updated to do so and reliably see exceptions.

That's an interesting observation, and it is worth noting that the strategy here is somewhat different and not necessarily duplicative of SOLR-17158. I did try to additionally add a short-circuit during the take cycle as inspired by this PR but  found it prone to infrequent and subtle errors. Some of which were solved by substantially complicating the logic in cancelAll(), but a rare case where "omitted" was not properly returned never got solved. For those who might want to reconsider something like this my efforts (not included in SOLR-17158) are here: https://github.com/gus-asf/solr/tree/SOLR-17158-take-short-circuit


[4.0.4] 3 “columns” (wide layout)

Hello,
I would like to know if this is possible to have a wife layout, based on 3 columns. I have a wide display and this would be very useful.
Thanks!

You can set the split-mode to vertical to achieve this, either while Kwm is running or in the config file:
kwmc display -c vertical

Thank you for the quick reply.
How can we “equalize” the layout? I mean:
|  A  |  B  |  C  |

instead of:
| A | B |    C    |

Thanks!

There is currently no easy way to equalize, but you can adjust the size (split-ratio).
Issuing the following command when window 'C' is focused should do the trick:
kwmc window -c reduce 0.05 west

You can set a higher or lower value than 0.05 if needed.
I usually issue the above command twice.
You can also use, say alt + right-mouse + drag to resize windows, provided you have
kwmc config mouse-drag mod alt
kwmc config mouse-drag on

After doing this once, you can save the layout using kwmc tree save col_3 and at any point in the future, simply issue kwmc tree load col_3 to apply that layout to the active space.

Closing this as resolved, see my post above.


Fix contents regressions

cc @willingc, we also were not pulling in the file content anymore ;).

@blink1073 Thanks. After it passes Travis, I'll give it a look locally.

Looks good. Running locally, file content is now being pulled in and filebrowser updating. I'm assuming the "cancel" change/fix will be in a future PR.

That is correct.

:shipit:


No route available

I am working with CC2652P (sdk_4_20_01_04). Stick from t.me/Egony
After flashing the stick, I get the following situation every time:
0x8fb9 - HEIMAN, HS1RC-N, 2017.12.5, EndDevice
V
0x4590 - HEIMAN, HS2SK_nxp, 2017.12.5, Router
V
0x0000 - CC2652P, Coordinator
//====== TEST 1

[6] 0x8fb9 sends information to its parent 0x4590 on the pressed button;
[8] 0x4590 requests a route to the coordinator 0x0000;
[9] the coordinator responds;
[13] Router 0x4590  replies to 0x8fb9 that no route was found;
Recording in file no_route_available_30102020.pcapng
I am confused by "Path Cost: 3" in Route Reply. Can the router discard this route due to cost? And why is it 3?
//====== TEST 2
In the file set_state_30102020.pcapng,
I change the state of the router (socket) from z2m.
As you can see, the router does not respond to the route request and to the direct command for reading the attributes, which contains the router's short address.
//====== TEST 3
change_state_30102020.pcapng file.
I press the button located on the router (socket) to change the state of the relay.
//====== TEST 4
restart_router_30102020.pcapng file
I rebooted the power supply router.
Package 17-18. The route now works. Events from 0x8fb9 also normally reach the coordinator.
//====== TEST 5
And the last file normal_restart_coord_30102020.pcapng.
I turned off the coordinator for a couple of minutes, pressed the button of the end device several times, so that the router would lose the route to the coordinator, and then turned on the coordinator and started z2m (package 145). The packet 160 shows that the route was built normally.
My link key 01:03:05:07:09:0B:0D:0F:00:02:04:06:08:0A:0C:0D
issue_route_30102020.zip

Can you try with a different router?

0x8fb9 - HEIMAN, HS1RC-N, 2017.12.5, EndDevice
V
0x5d97 - Agara/Xiaomi, LLKZMK11LM, 09-20-2018, Router
V
0x0000 - CC2652P, Coordinator
//====== TEST 1
test1_aqara_relay_238_640.pcapng
I have flashed the firmware to the coordinator
packed 238 - the coordinator has been launched.
249, 276, 309, 337, 386 ... - I pressed the button.
The behavior remained the same.
//====== TEST 4
test4_aqara_relay_63.pcapng
I rebooted the power supply router. (pay attention to 20, 21).
63 - I pressed the button. As before, everything started to work well.
//====== TEST 5
test5_aqara_relay_417_440.pcapng
I turned off the coordinator, waited for the loss of the route from the router and turned on the coordinator (run z2m).
From 417 the coordinator was launched.
440 - I pressed the button. Everything works well.
According to the test results, it turns out that the behavior of Heiman and Aqara is the same.
I also ran the same tests with a router on the latest nxp firmware for JN5169 (https://www.nxp.com/docs/en/application-note/JN-AN-1216.zip). used JN5169XK010 debug board
My router connected like a real Zigbee 3.0 device. (with optional key exchange and hash sums).
The results are the same as with other devices.
//====== TEST 1
test1_nxp_000.pcapng.
I have flashed the firmware to the coordinator
//====== TEST 4
test4_nxp_415.pcapng.
415 - I rebooted the router.
//====== TEST 5
test5_nxp_277.pcapng.
Disconnected the coordinator, lost routes from the router.
277 - I started the coordinator.
I will try to find routers on other chips.
While doing tests, I found strange  behavior with the Heiman button and Ikea light bulb, but that's for later :)
I understand that most likely the problem is on the side of the router, but test 5 shows that this can be somehow bypassed using the Many-to-One Route Request.
I will run test1 and wait, something may change over time.
issue_new_route_31102020.zip

After turning on the flashed coordinator, the devices could not establish routes for more than 2 hours. Zigbee network was down. Then the coordinator changed in his route request and everything worked out.
Before packet 6571, the coordinator sent a Route Request with the Path Cost value: 0. No one from the device answered it.
In packet 6571, the coordinator sent a Route Request with the Path Cost value: 1 and the devices immediately answered him. The network began to function. Why did the coordinator decide to change the Path Cost? Path Cost == 0 is this a valid value?
Has a timer expired?
6571_11111.zip

Sorry, I jumped to conclusions.
Packet 6571 is the routing of packet 6569 through router 0x41bb.
But I will continue to figure out what the matter is.

Looks like I found the reason.
I created a network of two routers and one end device.
Software version CC1352P2_CC2652P_other_20201113.hex
Zigbeer E72 by Egony
Check out the screenshot of reset_coord.png.

Packet 3 is the first packet from the coordinator after pressing the RESET button. Frame Counter  = 1251.
By packets 4, 5 you can see that routers 0x5e05 and 0x4590 route RouteRequest from the coordinator as it is broadcast. Everything is fine here. Lost routes have been restored.
Check out the look at flash_coord.png.

Packet 15 - This is the first packet from the coordinator after flashing. Frame Counter = 0 !
Routers ignore packets from the coordinator where the Frame Counter is less than what it was before.
It can be seen that none of the routers retransmits packet 15.
The network will start working either after the counter rises to the desired value, or after rebooting the routers.

Nice finding, I think we should also store the frame counter in the backup, do you know if it is in the NV?

The NWK FrameCounter is stored in the ZCD_NV_EX_NWK_SEC_MATERIAL_TABLE table. (id 0x7).
This table is backup. I will try to figure out why FrameCounter is not being restored. Or I am mistaken in something...
Perhaps this forum discussion is relevant to the issue.

I found what the problem is.
 coordinator_backup.json

{
  "adapterType": "zStack",
  "time": "Tue, 12 Jan 2021 19:10:01 GMT",
  "meta": {
    "product": 2
  },
  "data": {
    "ZCD_NV_EXTADDR": {
      "id": 1,
      "offset": 0,
      "osal": true,
      "product": -1,
      "value": [
        123,
        89,
        16,
        6,
        0,
        75,
        18,
        0
      ],
      "len": 8
    },
    "ZCD_NV_NIB": {
      "id": 33,
      "offset": 0,
      "osal": true,
      "product": -1,
      "value": [
        183,
        5,
        2,
        81,
        20,
        81,
        0,
        100,
        0,
        0,
        0,
        1,
        5,
        1,
        143,
        0,
        7,
        0,
        2,
        13,
        30,
        0,
        0,
        0,
        11,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        98,
        26,
        8,
        0,
        0,
        8,
        0,
        0,
        15,
        15,
        4,
        0,
        1,
        0,
        0,
        0,
        1,
        0,
        0,
        0,
        0,
        123,
        89,
        16,
        6,
        0,
        75,
        18,
        0,
        1,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        60,
        12,
        0,
        1,
        120,
        10,
        1,
        0,
        0,
        0,
        97,
        77,
        0,
        0
      ],
      "len": 116
    },
    "ZCD_NV_PANID": {
      "id": 131,
      "offset": 0,
      "osal": true,
      "product": -1,
      "value": [
        98,
        26
      ],
      "len": 2
    },
    "ZCD_NV_EXTENDED_PAN_ID": {
      "id": 45,
      "offset": 0,
      "osal": true,
      "product": -1,
      "value": [
        221,
        221,
        221,
        221,
        221,
        221,
        221,
        221
      ],
      "len": 8
    },
    "ZCD_NV_NWK_ACTIVE_KEY_INFO": {
      "id": 58,
      "offset": 0,
      "osal": true,
      "product": -1,
      "value": [
        0,
        1,
        3,
        5,
        7,
        9,
        11,
        13,
        15,
        0,
        2,
        4,
        6,
        8,
        10,
        12,
        13
      ],
      "len": 17
    },
    "ZCD_NV_NWK_ALTERN_KEY_INFO": {
      "id": 59,
      "offset": 0,
      "osal": true,
      "product": -1,
      "value": [
        0,
        1,
        3,
        5,
        7,
        9,
        11,
        13,
        15,
        0,
        2,
        4,
        6,
        8,
        10,
        12,
        13
      ],
      "len": 17
    },
    "ZCD_NV_APS_USE_EXT_PANID": {
      "id": 71,
      "offset": 0,
      "osal": true,
      "product": -1,
      "value": [
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0
      ],
      "len": 8
    },
    "ZCD_NV_PRECFGKEY": {
      "id": 98,
      "offset": 0,
      "osal": true,
      "product": -1,
      "value": [
        1,
        3,
        5,
        7,
        9,
        11,
        13,
        15,
        0,
        2,
        4,
        6,
        8,
        10,
        12,
        13
      ],
      "len": 16
    },
    "ZCD_NV_PRECFGKEY_ENABLE": {
      "id": 99,
      "offset": 0,
      "osal": true,
      "product": -1,
      "value": [
        0
      ],
      "len": 1
    },
    "ZCD_NV_CHANLIST": {
      "id": 132,
      "offset": 0,
      "osal": true,
      "product": -1,
      "value": [
        0,
        8,
        0,
        0
      ],
      "len": 4
    },
    "ZCD_NV_LEGACY_TCLK_TABLE_START": {
      "id": 257,
      "product": 2,
      "offset": 0,
      "osal": true,
      "value": [
        146,
        26,
        47,
        171,
        93,
        191,
        58,
        16,
        17,
        172,
        207,
        189,
        149,
        209,
        108,
        60
      ],
      "len": 16
    },
    "ZCD_NV_LEGACY_NWK_SEC_MATERIAL_TABLE_START": {
      "id": 117,
      "product": 2,
      "offset": 0,
      "osal": true,
      "value": [
        73,
        75,
        12,
        0,
        123,
        89,
        16,
        6,
        0,
        75,
        18,
        0
      ],
      "len": 12
    }
  }

The frame counter is stored in ZCD_NV_LEGACY_NWK_SEC_MATERIAL_TABLE_START.
In my file, it is [73, 75, 12, 0] (0xC4B49 (805705)).
From this value (+1250), the count will continue only if the MAC from ZCD_NV_LEGACY_NWK_SEC_MATERIAL_TABLE_START (123, 89, 16, 6, 0, 75, 18, 0) matches the MAC address stored in the ZCD_NV_EXTADDR table. If it is not, the frame counter will start at 0 (or 1250 if the coordinator is restarted).
For some reason, my MAC in ZCD_NV_LEGACY_NWK_SEC_MATERIAL_TABLE_START was (221, 221, 221, 221, 221, 221, 221, 221). I fixed this in the backup file and now the network starts up correctly after flashing.
After each cold restart of the coordinator, the counter is increased by +1250.
The counter is incremented with each packet issued. Therefore, there are times when you have to wait several hours for the network to work. Just increasing the counter
The frame counter is needed to protect against packet reuse. Routers ignore packets from the coordinator if its frame counter is less than it was before. Some routers store the frame counter in RAM, so after a reboot they have 0 values and receive packets from the coordinator with any frame counter.
The frame counter has a limitation. It can be reset only by changing the key.

I found what the problem is.
 coordinator_backup.json

{
  "adapterType": "zStack",
  "time": "Tue, 12 Jan 2021 19:10:01 GMT",
  "meta": {
    "product": 2
  },
  "data": {
    "ZCD_NV_EXTADDR": {
      "id": 1,
      "offset": 0,
      "osal": true,
      "product": -1,
      "value": [
        123,
        89,
        16,
        6,
        0,
        75,
        18,
        0
      ],
      "len": 8
    },
    "ZCD_NV_NIB": {
      "id": 33,
      "offset": 0,
      "osal": true,
      "product": -1,
      "value": [
        183,
        5,
        2,
        81,
        20,
        81,
        0,
        100,
        0,
        0,
        0,
        1,
        5,
        1,
        143,
        0,
        7,
        0,
        2,
        13,
        30,
        0,
        0,
        0,
        11,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        98,
        26,
        8,
        0,
        0,
        8,
        0,
        0,
        15,
        15,
        4,
        0,
        1,
        0,
        0,
        0,
        1,
        0,
        0,
        0,
        0,
        123,
        89,
        16,
        6,
        0,
        75,
        18,
        0,
        1,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        60,
        12,
        0,
        1,
        120,
        10,
        1,
        0,
        0,
        0,
        97,
        77,
        0,
        0
      ],
      "len": 116
    },
    "ZCD_NV_PANID": {
      "id": 131,
      "offset": 0,
      "osal": true,
      "product": -1,
      "value": [
        98,
        26
      ],
      "len": 2
    },
    "ZCD_NV_EXTENDED_PAN_ID": {
      "id": 45,
      "offset": 0,
      "osal": true,
      "product": -1,
      "value": [
        221,
        221,
        221,
        221,
        221,
        221,
        221,
        221
      ],
      "len": 8
    },
    "ZCD_NV_NWK_ACTIVE_KEY_INFO": {
      "id": 58,
      "offset": 0,
      "osal": true,
      "product": -1,
      "value": [
        0,
        1,
        3,
        5,
        7,
        9,
        11,
        13,
        15,
        0,
        2,
        4,
        6,
        8,
        10,
        12,
        13
      ],
      "len": 17
    },
    "ZCD_NV_NWK_ALTERN_KEY_INFO": {
      "id": 59,
      "offset": 0,
      "osal": true,
      "product": -1,
      "value": [
        0,
        1,
        3,
        5,
        7,
        9,
        11,
        13,
        15,
        0,
        2,
        4,
        6,
        8,
        10,
        12,
        13
      ],
      "len": 17
    },
    "ZCD_NV_APS_USE_EXT_PANID": {
      "id": 71,
      "offset": 0,
      "osal": true,
      "product": -1,
      "value": [
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0
      ],
      "len": 8
    },
    "ZCD_NV_PRECFGKEY": {
      "id": 98,
      "offset": 0,
      "osal": true,
      "product": -1,
      "value": [
        1,
        3,
        5,
        7,
        9,
        11,
        13,
        15,
        0,
        2,
        4,
        6,
        8,
        10,
        12,
        13
      ],
      "len": 16
    },
    "ZCD_NV_PRECFGKEY_ENABLE": {
      "id": 99,
      "offset": 0,
      "osal": true,
      "product": -1,
      "value": [
        0
      ],
      "len": 1
    },
    "ZCD_NV_CHANLIST": {
      "id": 132,
      "offset": 0,
      "osal": true,
      "product": -1,
      "value": [
        0,
        8,
        0,
        0
      ],
      "len": 4
    },
    "ZCD_NV_LEGACY_TCLK_TABLE_START": {
      "id": 257,
      "product": 2,
      "offset": 0,
      "osal": true,
      "value": [
        146,
        26,
        47,
        171,
        93,
        191,
        58,
        16,
        17,
        172,
        207,
        189,
        149,
        209,
        108,
        60
      ],
      "len": 16
    },
    "ZCD_NV_LEGACY_NWK_SEC_MATERIAL_TABLE_START": {
      "id": 117,
      "product": 2,
      "offset": 0,
      "osal": true,
      "value": [
        73,
        75,
        12,
        0,
        123,
        89,
        16,
        6,
        0,
        75,
        18,
        0
      ],
      "len": 12
    }
  }

The frame counter is stored in ZCD_NV_LEGACY_NWK_SEC_MATERIAL_TABLE_START.
In my file, it is [73, 75, 12, 0] (0xC4B49 (805705)).
From this value (+1250), the count will continue only if the MAC from ZCD_NV_LEGACY_NWK_SEC_MATERIAL_TABLE_START (123, 89, 16, 6, 0, 75, 18, 0) matches the MAC address stored in the ZCD_NV_EXTADDR table. If it is not, the frame counter will start at 0 (or 1250 if the coordinator is restarted).
For some reason, my MAC in ZCD_NV_LEGACY_NWK_SEC_MATERIAL_TABLE_START was (221, 221, 221, 221, 221, 221, 221, 221). I fixed this in the backup file and now the network starts up correctly after flashing.
After each cold restart of the coordinator, the counter is increased by +1250.
The counter is incremented with each packet issued. Therefore, there are times when you have to wait several hours for the network to work. Just increasing the counter
The frame counter is needed to protect against packet reuse. Routers ignore packets from the coordinator if its frame counter is less than it was before. Some routers store the frame counter in RAM, so after a reboot they have 0 values and receive packets from the coordinator with any frame counter.
The frame counter has a limitation. It can be reset only by changing the key.


if I need exec: AirlineRefresh overtimes?

environment

vim: Vi IMproved 8.1
vim-airline: brach master
OS: macOS
Have you reproduced with a minimal vimrc: yes
What is your airline configuration:
if !exists('g:airline_symbols')
let g:airline_symbols = {}
endif
let g:airline_symbols.space = "\ua0"
let g:airline#extensions#tabline#enabled = 1
let g:airline#extensions#tabline#show_buffers = 0
let g:airline_theme='dracula'
let g:airline_powerline_fonts = 1
let g:airline_exclude_preview = 1
let g:airline_extensions = []
if you are using terminal:
terminal: terminal
$TERM variable: zsh
color configuration (:set t_Co?):256
if you are using Neovim:
does it happen in Vim: When I entered vim, vim-airline appear rightly, after edited the file, execute the instruction :w, vim-airline will not effect, if I want, must :AirlineRefresh, I want the this always be right.

actual behavior
expected behavior

does it happen in Vim: When I entered vim, vim-airline appear rightly, after edited the file, execute the instruction :w, vim-airline will not effect, if I want, must :AirlineRefresh, I want the this always be right.

Not sure I understand. Please describe clearly the problem, what you see and what you expect.

sorry, I described not clearly.
Every time I use vim to edit file, when first time I open the vim, the vim-airline is appearing, after I have done the file, when I exec :w, after this instruction, the vim-airline will not appear, and the status line return back to the primitive status, at time, I exec the instruction :AirlineRefresh, the vim-airline while appear again,  I want the vim-airline appears every times that do not need I exec :AirlineRefresh.
Thank you.

that should happen automatically. Are you sure, that you installed vim-airline correctly? Sounds a bit like #1740

Sorry, its my problem, I have solved it,  it's folly that I used another bundle, these two doesn't work together.

which one was it?

lightline will effect it.

well, that is to be expected if you install several fance statusline plugins.


Search and replace panel

I've inherited from SearchPanel and added replace functionality to it. Would you be interested in a PR integrating it to the original panel? It requires very few code changes. This could be useful for anyone using AvalonEdit.
Thanks for making such a great control!

+1

have you also seen: https://www.codeproject.com/Articles/173509/A-Universal-WPF-Find-Replace-Dialog
i've created a nuget of this: https://github.com/dotnetprojects/UniversalFindReplace

@dgrunwald what du you think about this change? should a pull req. be created?


text fix

== changed text in prototype section to Ben's version.

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


Unable to deploy with a relative path from WSL

Bicep version
(This may be an Azure CLI issue, but as the stack trace has Bicep.Cli in it, I'm assuming it's a bicep issue)
Bicep CLI version 0.6.18 (46dd19e8eb)
Describe the bug
Inside VS Code running remotely against a WSL container, attempting to do a deployment through az deployment results in the below UriFormatException.
To Reproduce
Run the following from within WSL
az deployment group create --resource-group MyRg --template-file ./applicationInsights.bicep

Produces the following error
Unhandled exception. System.UriFormatException: Invalid URI: The hostname could not be parsed.
   at System.Uri.CreateThis(String , Boolean , UriKind , UriCreationOptions& )
   at System.Uri..ctor(String uriString)
   at System.UriBuilder.get_Uri()
   at Bicep.Core.FileSystem.PathHelper.FilePathToFileUrl(String filePath)
   at Bicep.Cli.Commands.BuildCommand.IsBicepFile(String inputPath)
   at Bicep.Cli.Commands.BuildCommand.RunAsync(BuildArguments args)
   at Bicep.Cli.Program.RunAsync(String[] args)
   at Bicep.Cli.Program.Main(String[] args)
   at Bicep.Cli.Program.<Main>(String[] args)

Additional context
The above error happens regardless of whether or not the path points to a valid file or not.
If an absolute path is provided instead of a relative path, then the deployment kicks off successfully.
I'm guessign something in the Bicep CLI doesn't' like the current directory being the WSL UNC share \\wsl$\Ubuntu-20.04

Same error happens with az bicep build

It's not an ideal workaround, but you might be able to avoid the issue if you install a copy of the az CLI within WSL. That way, the file URL will not include the wsl$ hostname but will just be a local absolute path (like file:///home/user/project/applicationInsights.bicep).


FilesInput: call _startingProcessingFilesCallback only if files…

FilesInput: call "_startingProcessingFilesCallback" only if files have been dropped
Mesh.serialize: if "doNotSerialize", do not serialize

Thanks!

Can you let me know once deployed on NPM ?
It fixes an issue in the babylonjs editor :)

Sure..probably Friday unless this is a big issue for you?

No problems, it fixes https://github.com/BabylonJS/Editor/issues/103
You mean friday today ? Or friday next week ?

oh yeah I meant today :)


C# Code snippets should use csharp as their language specifier

This will produce the desired syntax highlighting

Document Details
⚠ Do not edit this section. It is required for docs.microsoft.com ➟ GitHub issue linking.

ID: 525c643a-0e4f-a732-cc19-bc304acc5862
Version Independent ID: 028d320a-4eb6-a419-4933-b64c7abdf145
Content: Raspberry Pi 2 & 3 Pin Mappings - Windows IoT
Content Source: windows-iotcore/learn-about-hardware/PinMappings/PinMappingsRPI.md
Product: windows-iot
GitHub Login: @saraclay
Microsoft Alias: saclayt

Hi @DuncanmaMSFT, thanks for the tip!


build statically linked binaries with CGO disabled

In https://github.com/pulumi/pulumi-yaml/pull/632 we switched the build from running on MacOS to Ubuntu.  On MacOS CGO is disabled by default, and switching to Ubuntu means this is turned on.  We however want to build statically linked binaries since they are easier to deal with.  Set that up in the goreleaser.yml explicitly.

Next step is to pull this release into pulumi/pulumi and release a new version of the CLI that includes this.


fix vimhelplint violations

@blueyed does vimhelplint have some inline ignore directives? That's the only reason I changed the logo
#600

does vimhelplint have some inline ignore directives? That's the only reason I changed the logo

I don't think so, but /cc @machakann.

We could just filter it out with grep -v though.
The new logo is a bit ugly IMHO - what about using the previous one, but with one line less, so it gets more compressed?
What program have you used to generate it?
  \  |                                 |
   \ |   _ \   _ \   __ `__ \    _` |  |  /   _ \
 |\  |   __/  (   |  |   |   |  (   |    <    __/
_| \_| \___| \___/  _|  _|  _| \__,_| _|\_\ \___|

(via toilet -w 80 -f fonts/shadow.flf Neomake)
Or
    _   __                                __
   / | / /___   ____   ____ ___   ____ _ / /__ ___
  /  |/ // _ \ / __ \ / __ `__ \ / __ `// //_// _ \
 / /|  //  __// /_/ // / / / / // /_/ // ,<  /  __/
/_/ |_/ \___/ \____//_/ /_/ /_/ \__,_//_/|_| \___/

(via figlet -k Neomake)

i used this (click "test all" button to see all variants)
http://patorjk.com/software/taag/#p=display&f=Graffiti&t=Type Something
maybe @benekastah should pick xp

Please use Fixes https://github.com/neomake/neomake/issues/600 in the commit message to close the issue automatically.

And please remove vimhelplint from the allowed failures (https://github.com/neomake/neomake/blob/7b64d071c910b6c1f06ffe8c3d1b9a9f5a26d097/.travis.yml#L36).

Hi, I'm an author of vimhelplint.
Unfortunately, there is no inline directives for vimhelplint currently because there is no "comment" in vimhelp. Some alternative ways to ignore error may be implemented for future.

@machakann
Thanks for your feedback!
I've created https://github.com/neomake/neomake/issues/690 for the bike-shedding part of this PR.. :)

There seem to be two issues left:

doc/neomake.txt:25:29:Error:4:A link "job-control" does not have a corresponding tag.
doc/neomake.txt:260:2:Error:4:A link "job-control" does not have a corresponding tag.

That's because it gets run with an older Vim (the one on Travis).  I will fix that, by running it through Docker.

Please rebase it on master, then it should be green again.

Rebased in https://github.com/neomake/neomake/pull/692.
Please review.
You should be able to push to that branch also.


Move mlc_chat_cli to python reducing nightly build footprint

User who has supported Nvidia/AMD GPU can chat with LLM directly (via cuda/rocm) without rebuilding the c/c++ bundle.
Makes possible the creation of "try out mlc llms on my GPU"  all-in-one docker images.   Improving mlc-ai's out-of-box experience.

I can help with linter issues if you get lost with isort/black/mypy/pylint. I know they are annoying 😇

All suggestion incorporated and re-tested, pls review.
I do need some help in the implementation of /reload [model]  as the current implementation does not work.  Thanks.

Sorry it's been a while. @spectrometerHBH would you mind taking a look at this PR?

Hey thanks again for this PR! It's consolidated into commit https://github.com/mlc-ai/mlc-llm/commit/89f09ba3c11a48b4b9446488b12ba581fbf1b97d and got merged!
Apologize for the slow response :((( The infra was just not great enough at that time, but now, with JIT enabled and auto download from HuggingFace, we are actually able to do much easier!

Wow.  I  just managed to try out your flow  (including auto HF download and JIT)  -- it is just amazing 🎉     Gotta document it soon, even if in rough form 🙏   cuz it was painful (even) for me to "discover" how it works digging around everywhere.     Also  I've had success only on a "mainstream Linux system with mainstream cuda supported GPU"   -- will the JIT still work with non-mainstream configuration (such as Windows or Windows WSL with AMD) where it is plagued with cross-systems dependency hell  🤔
Regardless ---   AMAZING WORK!!    I was bummed not seeing you for a while -- but this totally makes up for it   🙏


chore: add flags for external linker to satisfy RPMdiff bind-now test

What type of PR is this?

Uncomment only one  /kind line, and delete the rest.
For example, > /kind bug would simply become: /kind bug

/kind bug
/kind cleanup
/kind failing-test
/kind enhancement
/kind documentation
/kind code-refactoring

What does this PR do / why we need it:
it seems like kam pulls in the net package as a dependency which I suspect is causing cgo to be used for compilation indirectly and maybe causing kam to be dynamically linked. (This might also be putting the KAM binary in a position to benefit from supplying the -buildmode=pie flag) The RPMDiff test in cpaas currently throws an error because we don't add the -Wl,-z,now flags for external linker while building the kam binary
This PR fixes that
Have you updated the necessary documentation?

[ ] Documentation update is required by this PR.
[ ] Documentation has been updated.

Which issue(s) this PR fixes:
Fixes https://issues.redhat.com/browse/GITOPS-1714 partially
How to test changes / Special notes to the reviewer:

I was wondering tho, if we could just not set CGO_ENABLED=0 for the build?

@jannfis Would that be a problem if we are using any packages that absolutely require cgo? My understanding is the net package that is pulled in by one of kam's dependencies maybe one such package but I don't have an in-depth understanding of this

I was thinking we could just try to build a new RPM with these extdflags in place, supply the buildmode=pie flag and then find a way to run the RPMDiff test again just on this newly built RPM to see if that addresses all the concerns

Would that be a problem if we are using any packages that absolutely require cgo

Yes, probably

My understanding is the net package that is pulled in by one of kam's dependencies maybe one such package

I think it used to be due to the resolver, but meanwhile, Go also provides a Go-native resolver to be used with CGO_ENABLED=0 (https://pkg.go.dev/net#hdr-Name_Resolution)
kam compiles, links and runs fine when built with CGO_ENABLED=0. However, it produces a static binary. What's funny is, that it's even a little smaller than the dynamically one, which was built using cgo:
-rwxr-xr-x 1 foo foo 45056000 Mar  3 21:54 dist/kam_linux_amd64
-rwxr-xr-x 1 foo foo 45109248 Mar  3 21:53 dist/kam_linux_amd64-cgo

Anyway, I think for now, we should go for the linker flags.

/retest

/approve


Addon directory path should be optional when using embedded addons

What this PR does / why we need it:
Specifying .addons.path is considered a hard requirement even if a user is using embedded addons, that do not need any addon directory. This PR removes this unnecessary requirement.
Which issue(s) this PR fixes (optional, in fixes #<issue number>(, fixes #<issue_number>, ...) format, will close the issue(s) when PR gets merged):
Fixes #1496
Special notes for your reviewer:
Does this PR introduce a user-facing change?:

* Addon path is not required when using only embedded addons
* Defaulting of `.addons.path` to "./addons" removed

Signed-off-by: Waleed Malik<EMAIL_ADDRESS>

/retest

/retest

/approve cancel
/lgtm cancel

/retest


Golang Signature Queries - Signed and Approved

Added signed and approved clause to the query expressions

Signed-off-by: David Deal<EMAIL_ADDRESS>

@prasannamahajan / @wanyaland  - sorry once more can you review? I have added additional signature metrics based on the discussion with @pranab-bajpai and @swinslow.  I have updated the data model to include unique counts for users:

employeeAndIndividualUnqiueCount = unique(employee + individual)
totalUniqueCount (ccla + unique(employee + individual) )

I also recalculate the total calculation based on the signed = true and approved = true record flags (no just the total number of records in the DB). The output looks similar to (these are DEV snapshot values):
    ...
    "signatures": {
        "cclaCount": 729,
        "claManagerCount": 1269,
        "claManagerUniqueCount": 1025,
        "employeeAndIndividualUnqiueCount": 10030,
        "employeeCount": 1863,
        "iclaCount": 8451,
        "totalCount": 11043,
        "totalUniqueCount": 10759
    },
...

From here, the LFX UI team can grab whatever counts they want to show on the display.
Note API response model change, specifically: @aegixx the "count" key in this response was renamed to "totalCount" to be less ambiguous.

LGTM


Discussion about Serenity Policies

Hello Dear @volkanceylan and all of Serenity Community.
No one can deny that Serenity is a great template for developers. You did a great and Declarative tool and it has become very popular (546K installs in marketplace), yet this is not the whole picture, there' something wrong.
Why I'm saying this?
There's many fundamental things had better to be reviewed, for good of serenity (I don't know all of them, and many aren't in my mind now, but I'll wrote some of them):
1- Technical improvement:
-- GitHub issues for issues only and create a "Serenity Forum" for community (It will handle so many problems).
-- The way serenity upgraded and contributed and to be known for world of developers must be enhancement.
-- Maybe you should consider to change the commercial licence packages, or the Services which are offered by Serenity for great income which will be a sponsors to achieve great improvements.
2- On the other hand, humans improvement:
-- How to make contribution are something beloved for contributors,
-- How you can benefit from community support.
Let me set an example:
@minhhungit @Estrusco @dfaruque @marcobisio @hannesb @DucThanhNguyen @rolembergfilho  @JohnRanger and many other contributors  made an undeniable and great efforts for serenity by contribution, yet many time you wasn't encouraging enough for them. On the contrary, some times your replays for some of their issues or pull requests were very disappointed.
I just saw what happens between you @volkanceylan  and @minhhungit in issue #4634 , does it really worth to be handled like this way??? He is not only a contributor, but also make some of his customers to buy Serenity package!!! "there something called private message for handling such a problem".
That happens to me also, I was so exited to contribute many time (Dynamic report viewer, chat with SignalR, etc) but many bad situations happens and this was so hard from your side, I even made some pull requests but you just ignored them, that cause me to stop working with serenity from around a year ago, just was trying to keep the old projects running well with some upgrades and new added modules, but any new project I choose to work with any other template instead of Serenity as a result of what happens earlier.
I accidentally found a repository with StartSharp template while I was seeking to fix an issue I ran into, It's a public for any one (I Don't know it's owner, and maybe its public without he notice that), yet I refused to use it as it against my ethics and moral laws, but (with my all respect) you aren't friendly enough with community so I can tell you to take it into consideration.
-- And so many others, just ask Serenity community and you will be surprised for their ideas.
Regardless of what I have written (Consider it all wrong), just please review all things about Serenity (For the future of serenity and for your efforts value). And please try to make sure you are on the right track.
Consider it as advice from a brother to you.
You can delete this issue if you want, or even block me.
With my best regards
Mafdy

Hi @mafdy ,
thanks for your thoughts which - at least I - appreciate.
Actually - I like the "issues" way to ask and solve problems which I have with using Serenity (because the search of github within issues is just great - and I find old things very fast - and Github nearly guarantees that these "issues" will stay available "forever") - although it takes a bit more effort to separate "real" issues with serene/serenity from the questions. But we have marked "real" issues in the past with "Possible bug". That always catched attention.
Within the last 10 years I have seen many useful websites just getting "off the air" (meaning they disappeared and I cannot find anymore the infos I once knew where to look for). So a rock-stable platform like Github which is backed by one of the most fortune IT companies of the world is IMHO better than a privately hosted forum.

I remember the "old" days when @volkanceylan was still working at the university of Istanbul and just the Saltarelle version of Serene was out. He helped me patiently and with great investment of his time to solve problems which at least 90% came from my clear lack of understanding how C#, the DOM, Javascript, HTML, MVC and all the other frameworks used in Serenity do work and how all this stuff can be cleverly combined. And this for free. So I deeply appreciate that and it showed me Volkan's real character. Also that he continuously updates the free serene/serenity stack until now.

Marketing - or the lack thereof
But yes - I also think that marketing of Serenity is a bit lacking. I mean by that:

The extremely well written blogs here on the site do not have a new technical article since over 1.5 years
The roadmap shows only one minor achievement in 2019 (and we are soon at the end of 2019)
Resolved / inactive issues do not get closed anymore on a regular basis by the Serenity team
The treatment of some well contributing people here (not me) in the "forum" could be a bit more sensitive

I deeply respect Volkan's courage and decision to try to make a living out of Serenity - which is not easy.  Probably the greatest thing Volkan could provide to his paying customers is consulting and the creation of custom features for either Serenity or StartSharp. This should IMHO be more announced here and on Serenity.is. I suggest to make an own subpage with consulting pricing and custom developing pricing - also showing some features already custom developed for customers (and not only showing them within serene demo).
I am not sure if the technical difference between Serenity free and Serenity StartSharp justifies the price. As I don't have access to StartSharp I cannot tell. The goal of course should not be to cripple the free SF but to add more features to StartSharp to make the difference bigger.
But what the whole Serenity Framework really demonstrates is the capabilities of its creator, namely:

Have a big vision and put it into reality (and overcome all the obstacles on the way)
Architectural Skills ( understand what business (and developers) requires, strategically understand and select the frameworks required, analyses the technical future of web development and guide SF towards it without braking everything of the past)
Consulting Skills (can explain difficult things in an easy to understandable manner)
Interdisciplinary programming skills (C#, MS SQL, Windows Server, Web development (DOM, Javascript, Typescript, Saltarelle, understands fast any new technology))

This is a very good "business card" for you - @volkanceylan. If I ever need a first class Consultant/Developer/Architect for a real big web app project, then I know where to find one :-). So it would make much sense that you promote your skills and abilities - e.g. on serenity.is.

With kind regards,
John

Dear @mafdy,
I'll skip the "Technical improvement" part (but let me say that I agree with @JohnRanger: private forum is a bad idea).
Normally I wouldn't even answer to your "issue" because I guess that github is the wrong place for this kind of "open letter", but considered that you mentioned me, well I'll give you my two cents.
Said that, I appreciate your sincerity, but imho you're making two mistakes:

judging a guy that you don't even know
taking all this thing too "personally"

You're speaking about "humans improvement" and humans relationship, but actually we are all just pressing keyboard keys from different places in the world...and this kind of interaction can't be classified as human relationship.
Maybe you should take a flight, go to Istanbul to meet @volkanceylan in person and only then you should consider "judging" him, but you cannot speak about empathy when we're using github to communicate.
Besides, probably you forgot that @volkanceylan is sharing his framework with us for free (excluding StartSharp of course), therefore he isn't obliged to answer to your issue or to your pull request: do you want some kind of SLA? Well buy the premium support and you'll get it.
And as a last bit, he answered to my issues so MANY times, even when the issues weren't directly related to Serenity itself (and even when the issue were related to my lack of skill in typescript, javascript, etc.), and he didn't ask me a single dollar for his support, so I guess that contributing to this project is just a way to say "thanks" and I don't expect nothing in return from him.
Regards
Marco Bisio

Dear @marcobisio  and all,
Please allow me to explain something important:
English isn't my native language, so, it's hard for me to choose the right words to make things clear enough. And this an example of what I'm talking about:

You're speaking about "humans improvement" and humans relationship,

Regardless of what I meant, I confirm that I couldn't choose the right words. So,  please take that in consideration.

I guess that github is the wrong place for this kind of "open letter",

I agree with you in that. In fact that's why I suggested a "Forum" instead of GitHub issues, beside that I noticed some problems occurs because of that issues need to be closed, and there's  no Milestone to keep things tracked and clear, and other many thing, but it's just an idea. If it good, why not, If it's not useful, then no problem it all. (I just want to highlighted it for discussion)

judging a guy that you don't even know

Of course I didn't meant to judge @volkanceylan , I just highlighted some situations, believing that they would disrupt the progress of serenity.

taking all this thing too "personally"

I didn't mean that neither, and when I mention some of my personal experience, that because I Just was trying to set an example of what I was trying to describe, no more.
Any way
It's just a "Discussion", which I hope that it may be useful for Serenity.
With Love and Regards to all
Mafdy

I think Github Issue is enough, we can search issue very easy, but maybe issue should be classified by labels, milestones...

and I also think 4rum is old way, nowadays not too much people use it. If we need 4rum we will need more effort, more moderstrators to manager it and it is not centralization (I mean you have to manage Github Issue, 4rum and even slack channel...)
So I personally comfortable with Github Issues !

Hello everyone,
Don't forget to Serenity Platform is OpenSource project what you can contribute. So if you wan't to developer forum instead github issues (I prefer github issues for only bugs etc.) you can create a blog, forum or use StackOverflow or something else.

Hi @mafdy
I'm proud to have my name mentioned, and, of couse, a bit shame. The contributors i did is very small, like nothing, than Volkan did.
I have a special care with Serenity platform, because it was a mark, a deadline, when I decide to renew my knowledgments in Web development: I moved from ASP.NET web forms to ASP.NET MVC. A big change! And @volkanceylan  has a lot of patience to deal with my questions!
As a business man, I understand @volkanceylan angry and frustrated in issues: a lot of then are same, or repeated. I remembered a special one from Germany (if I mind): The guy ordered Volkan to look all code and point where it's wrong! That episode was special point to slow down and make StartSharp and payed support.
That's why I asked for a special citation about create a separated whatsapp, in order to talk with brazilian's developers in portuguese. You can check in #3599
And, for documentation, all issues talked in whatsapp are registered in our git: https://github.com/serenitybrasil/SerenityBrasil/issues
Why: I tried to do something to avoid worry @volkanceylan . He had a lot to do in serenity platform.
I suggest you do the same. Create a group in your location, country, continent. Register the issues in you git hub. And make it's open to share knowlegment.
To finish: a big thank's to @volkanceylan and other guys! This platform is amazing!

I suggest a conference or a friendly gathering in Istanbul or anywhere else. That helps a lot in an Open Source community.

Thanks to everyone for their support.
I'm not going to argue about critics, i know that temper sometimes can be a problem, and it may make you look wrong while you might be right.
About some StartSharp code being made public, i think i found who did that, he is a nice guy, and don't think he is aware that his repository is public (some other nice guy could warn him or us before, -- instead of forking). Anyway, such things happen and can't be completely prevented.
Serenity is here to stay, as i am also using it for hundreds of projects that i have to maintain, and i can't even dream of abandoning it. I'm not trying to force anybody to use it though :) If you find a better product for your needs, don't hesitate to use it.

@volkanceylan I appreciate the framework and I appreciate all of your helping others in this forum.
Everyone needs to eat .. so there is no free lunch .. and this framework which you put together is appreciated as not only does it make it possible for you but it helps many others to do the same. To be perfectly honest I do think some people have been over the top in badgering you and fail to realize all the hard work that you have put into this framework.  Since I am being clear here some have really made me want to reach out and 'instill' understanding.
BTW: I have not seen a paypal donation link anywhere.

Open up the whole thing and go the UMBRACO way... that's a working business model.
It's open source but there's a clear release cycle / release policy.
The community is key and the UMBRACO people are mostly there to teach and share their knowledge, which is a paying service.
And please... simplify the frontend... maybe it's time to really document the CSS system and allow people to move away from the "standard" design.
About those challenges : you may want to check what happened with the Sharepoint platform and how focusing on the basic server objects and their versatility and programmable access helped solve the old "interface" issues once and for all.
G
Serenity is awasome... but getting too big for a one-man show, Volkan.


new installation - can not open firebird connections

System information:

win7sp1  clean install (after vs2019 so it has .net 4.8)
DBeaver Community 21 (.2.0 and .3.3)
Additional extensions

Connection specification:

Firebird 1.5.6
that is the problem
Do you use tunnels or proxies (SSH, SOCKS, etc)?  nope, local file

Describe the problem you're observing:
Adding connection to Firebird database
Network unavailable:
javax.net.ssl.SSLHandshakeException:PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
Network unavailable:
javax.net.ssl.SSLHandshakeException:PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
Steps to reproduce, if exist:
adding new FB connection
Yeah, super informative messages for a non java person,
don't even know where to begin

googling problem (based on message keywords) all sorts of lovely "copy this from that java and do blah blah"

Hey I know not many people using firebird, particularly older versions, but:
used to be simple, dbeaver would download the javas or whatever but now it just throws up a mess of unintelligible (basically useless) messages that provide absolutely no use as to what to do.
as a side note on another (older installation) seems every week it announces a new version
please slow down releases, leave us a bit of time to actually get work done instead of doing and waiting on updates.
it's not a race to see who can update faster than microsoft, time to be rational.

@rdenniss Hi. Please refer to this article. Do the actions described there help?

There has been no update on the issue for a long time. if it is still actual - feel free to reopen it


Download failed

I got this error when trying this cli tool.
Any idea? I think it would be helpful if the tool itself print out more information about the error!

Thank you for your reporting!

I installed log4js to this project :)

Btw, please try new version v1.3.0


File class initializer declares support for bytes-object but doesn't actually work with it.

Summary
Can't pass bytes to init of the File class.
Reproduction Steps
file = requests.get(### some url to .png ###)
disnake.File(fp=file.content, filename="image.png")
Response:
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xff in position 0: invalid start byte
Minimal Reproducible Code
file = requests.get("https://s4.anilist.co/file/anilistcdn/media/anime/cover/large/bx21699-Fkbnkl9ZC6fW.png")
disnake.File(fp=file.content, filename="image.png")

# It'll fail

Expected Results
File instance gets created.
Actual Results
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xff in position 0: invalid start byte
Intents
Slash Commands
System Information
Python v3.9.0-final
- disnake v2.8.1-final
    - disnake importlib.metadata: v2.8.1
- aiohttp v3.8.4
- system info: Windows 10 10.0.22621 AMD64

Checklist

[X] I have searched the open issues for duplicates.
[X] I have shown the entire traceback, if possible.
[X] I have removed my token from display, if visible.

Additional Context
That happens because def __init__(         self,         fp: Union[str, **bytes**, os.PathLike, io.BufferedIOBase],         filename: Optional[str] = None,         *,         spoiler: bool = False,         description: Optional[str] = None,     ) -> None: declares support for bytes. -
Permalink to code: https://github.com/DisnakeDev/disnake/blob/b13f9a94df0cd90b5b7b47a009483d816b281690/disnake/file.py#L57
But the actual conditioning only checks for io.IOBase. Permalink: https://github.com/DisnakeDev/disnake/blob/b13f9a94df0cd90b5b7b47a009483d816b281690/disnake/file.py#L63
Therefore bytes type, support for which is declared in the initializer parameters, is not actually supported.

File.__init__ declares support for bytes since it's a valid path-like type - it gets interpreted as a file path.
To send bytes objects as files, use io.BytesIO(file.content).
(additionally, avoid using requests in your code and use aiohttp instead, which is non-blocking - see here for reasoning)


[Tracking] Provide Ethereum strategy for OmniAuth

Overview
OmniAuth is a flexible authentication system utilizing Rack middleware. Many use it for Ruby on Rails web applications to authenticate users through third-party applications like Github or Twitter. Check out a list of available provider strategy implementations on the OmniAuth wiki.
Task
Implement an Ethereum provider strategy for OmniAuth that can easily integrate with an existing Rails application's User controller. For example, the authentication flow would look like the following:

Create a User model/extend an existing User model by the fields eth_address and eth_nonce used for Web3 authentication.

populate existing User records with a random value for eth_nonce

Create a signup/login workflow that allows for Web3 authentiation
Connect to Web3: Check for any Ethereum provider like MetaMask and warn the users if it's not available.
Get Ethereum Account: Connect to Web3 provider and gently request accountsawait ethereum.request({ method: 'eth_requestAccounts' });

Check the database against the first available account.

If it does not exist: allow the user to create an account (username, eth_address, eth_nonce).
The nonce is a random number (anything goes) that needs to be changed after every login.
If it exists, gently ask the user to sign a message containing the nonce from the database.await ethereum.request({ method: 'personal_sign', params: [ message, account ] });

Authenticate user: verify the signature of the signed nonce. If the nonce (fetched from the database) signed by the users returns the address that is on the record in the database eth_address, consider the user authenticated. If not, abort.

might be handy to use existing Ruby gems for Ethereum EC recovery

Shuffle nonce: after successful auth, replace the existing nonce with a new nonce to avoid signature spoofing. The lifetime of the nonce is the same as the session.
Retroactive: assuming an already populated user database, users can connect with their Ethereum account.

This requires giving all existing users a random nonce (once)
Subsequently, all users that sign up with different strategies should also get a random nonce
Adding an Ethereum address to your account is the same process as authentication later

Deliverables

An omniauth-ethereum strategy for OmniAuth 2.x, compatible with the latest Rails 6.x
Basic documentation on how to integrate and use it
Rails Demo with nothing but OmniAuth Ethereum strategy and the ability to sign up/log in

Resources

The workflow explained using the web3 JS apis: https://www.toptal.com/ethereum/one-click-login-flows-a-metamask-tutorial

Blocker:

Authenticate user: verify the signature of the signed nonce. If the nonce (fetched from the database) signed by the users returns the address that is on the record in the database eth_address, consider the user authenticated. If not, abort.

A personal ecrecover is provided by the eth gem but it's no longer actively maintained and it appears to be slightly broken with Ruby 3.x. Ref https://github.com/se3000/ruby-eth/issues/57

Frontend MVP can be broken down to:
// Adding an incrementing nonce or random value is important to prevent session spoofing
const uuid = uuidv4();
// <- "07b54ba3-fe2b-4932-8723-52e6c1d109c1"

// Connect and get accounts
const accounts = await connect();
const account = accounts[0];
// <- "0xe611a720778a5f6723d6b4866F84828504657181"

const message = `Hello from Rails! ${uuid}`;
// <- "Hello from Rails! 07b54ba3-fe2b-4932-8723-52e6c1d109c1"

const signature =  await sign(message, account);
// <- "0x03a45db0ec6cada40f0227bb67cfd99e69a92c5c6809450d4db884c83b41401c062c039f1465012965ec2426c0dd2d4d3737cf08009866f9a3bccfa3f312bda81c"

// request Ethereum wallet access and accounts[]
async function connect() {
  const accounts = await ethereum.request({ method: 'eth_requestAccounts' });
  return accounts;
}

// request Ethereum signature for message from account
async function sign(account, message) {
  const signature = await ethereum.request({ method: 'personal_sign', params: [ message, account ] });
  return signature;
}

// Copy-pasta from Stackoverflow to avoid using libraries ;)
function uuidv4() {
  return ([1e7]+-1e3+-4e3+-8e3+-1e11).replace(/[018]/g, c =>
    (c ^ crypto.getRandomValues(new Uint8Array(1))[0] & 15 >> c / 4).toString(16)
  );
}

Backend MVP:
# signer information
signer_address = "0xe611a720778a5f6723d6b4866F84828504657181"
# => "0xe611a720778a5f6723d6b4866F84828504657181"

# message contaning the nonce
message = "Hello from Rails! 07b54ba3-fe2b-4932-8723-52e6c1d109c1"
# => "Hello from Rails! 07b54ba3-fe2b-4932-8723-52e6c1d109c1"

# signatre from javascript/metamask
signature = "0x03a45db0ec6cada40f0227bb67cfd99e69a92c5c6809450d4db884c83b41401c062c039f1465012965ec2426c0dd2d4d3737cf08009866f9a3bccfa3f312bda81c"
# => "0x03a45db0ec6cada40f0227bb67cfd99e69a92c5c6809450d4db884c83b41401c062c039f1465012965ec2426c0dd2d4d3737cf08009866f9a3bccfa3f312bda81c"

# recover the public key from the signature
recovered_public_key = Eth::Key.personal_recover message, signature
# => "041759b6fb5ea5a881495ed9342480b8319c699df02241dc0f8d3d23c3c0b351145b4a1db8f231edfd9907bf94bd3b2ded8382be1aa02a81fa853f2b2be725207a"

# recover the address from the public key
recovered_address = Eth::Utils.public_key_to_address recovered_public_key
# => "0xe611a720778a5f6723d6b4866F84828504657181"

# are they the same? huge, if true ;)
signer_address.eql? recovered_address
# => true

MVP published at https://github.com/q9f/tinley

It works. https://github.com/q9f/ethereum-on-rails


Tabs Block

See https://github.com/WordPress/gutenberg/issues/34079.

A block that allows users to organize content into tabs. I’m not sure about all the UX yet (the relationship between the actual tab element and its content is tricky to get right in the editor), but it could be a good starting point.

I wrapped up the week-long exploration of the Tabs block. I shared where I left in https://github.com/a8cteam51/special-projects-blocks-monorepo/pull/12#issuecomment-2238997046. I recreated the Example of Tabs with Automatic Activation from ARIA Authoring Practices Guide (APG). This is how it looks in action:
https://github.com/user-attachments/assets/8936fd42-126b-4b0c-8741-a4b955431841
I discussed some of the design choices more in-depth with @jarekmorawski in the issue created in the Gutenberg repository:

https://github.com/WordPress/gutenberg/issues/34079.

@creativecoder is experimenting now with how the Tabs block could get implemented in the Gutenberg plugin:

https://github.com/WordPress/gutenberg/pull/63689

@gziolo I have came across your tabs block, the issue arises when we use multiple tabs blocks in same page then switching between tabs items of second tabs block changes the panel of the first tabs block.

@gziolo I have came across your tabs block, the issue arises when we use multiple tabs blocks in same page then switching between tabs items of second tabs block changes the panel of the first tabs block.

Yes, that's a known issue, as I didn't finish the implementation. The IDs generated for the tab elements aren't unique between different instances on the same page. The work continues in the Gutenberg repository:

https://github.com/WordPress/gutenberg/pull/63689

I quickly skimmed the code, and it might suffer from the same issue.