3D Flip Dual

Description
3D Flip with 2 actions - Vertical and Horizontal.
How to use the extension
If you put the 3D Flip behavior on a sprite, you can seperately select Horizontal or Vertical flipping.
Checklist

[X] I've followed all of the best practices.
[X] I confirm that this extension can be integrated to this GitHub repository, distributed and MIT licensed.
[X] I am aware that the extension may be updated by anyone, and do not need my explicit consent to do so.

What tier of review do you aim for your extension?
Reviewed
Example file
ThreeDFlipDualExample.zip
Extension file
ThreeDFlip.zip

Thank you for submitting this update.
I took a look to the original extension and I fixed a few things to avoid too much back and forth:

https://github.com/GDevelopApp/GDevelop-extensions/pull/1293

Please add your changes over the new version of the extension (1.1.0). Sorry for the burden.


Create deploy guide

Is your feature request related to a problem? Please describe.
Service become more and more complicated and need to describe all details in deploy guide to avoid redundant questions.
Describe the solution you'd like
Create page with installing instructions in Wiki and add link in README to guide.
Describe alternatives you've considered
None.
Additional context
It is important to keep the guide up to date.

Guide was created in Wiki of the project.


:bug: Remove bmhID arg from SetNodeProviderID call

Backport PR for #877
Creating a manual PR because the ubuntu e2e feature test is failing on automated cherry-pick PR, for debugging its better to have manual PR

/keep-test-ubuntu-e2e-feature-release-1-3

/test-ubuntu-feature-release-1-3

/test-features-ubuntu-release-1-3

/parallel-test-ubuntu-e2e-feature-release-1-3

/keep-test-ubuntu-e2e-feature-release-1-3

/keep-test-ubuntu-e2e-feature-release-1-3

/keep-test-ubuntu-e2e-feature-release-1-3

/keep-test-ubuntu-e2e-feature-release-1-3

/keep-test-ubuntu-e2e-feature-release-1-3

/test-ubuntu-feature-release-1-3

/test-ubuntu-e2e-feature-release-1-3

Closing this PR because release 1-3 e2e test is fixed here: https://github.com/metal3-io/cluster-api-provider-metal3/pull/891 , no more need for debugging.


Updated greeting controller

[APPROVALNOTIFIER] This PR is NOT APPROVED
This pull-request has been approved by:
To fully approve this pull request, please assign additional approvers.
We suggest the following additional approver: vipintembhare
If they are not already assigned, you can assign the PR to them by writing /assign @vipintembhare in a comment when ready.
The full list of commands accepted by this bot can be found here.
The pull request process is described here

Needs approval from an approver in each of these files:

OWNERS

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

@vipintembhare: The following test failed, say /retest to rerun them all:

Test name
Commit
Details
Rerun command

serverless-jenkins
ee7cc180abcec40fa97d7960633867f85bea79db
link
/test this

Instructions for interacting with me using PR comments are available here.  If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository. I understand the commands that are listed here.


feat: add relation-tuples commands to manage Keto

This PR adds subcommands to create, list, delete and parse relation tuples to manage Keto in Ory Cloud.

Related Issue or Design Document

Checklist

[x] I have read the contributing guidelines
and signed the CLA.
[x] I have referenced an issue containing the design document if my change
introduces a new feature.
[x] I have read the security policy.
[x] I confirm that this pull request does not address a security
vulnerability. If this pull request addresses a security vulnerability, I
confirm that I got approval (please contact
<EMAIL_ADDRESS>from the maintainers to push
the changes.
[x] I have added tests that prove my fix is effective or that my feature
works.
[x] I have added the necessary documentation within the code base (if
appropriate).

Further comments

@kevgo PTAL :)
/cc @tricky42 contrary to what we discussed the Keto commands now live under the top-level verbs list, create and delete, because that fits into the existing command layout.


Add notifications

This pull request introduces several changes to the agixt project, focusing on enhancing the conversation and notification handling functionality. The key updates include adding notification checks, marking notifications as read, and creating a new endpoint to fetch notifications.
Enhancements to conversation functionality:

agixt/Conversations.py: Modified get_conversations_with_detail to include a notification count for each conversation and added a new method get_notifications to fetch all messages with notifications for a user. [1] [2]

agixt/Conversations.py: Updated get_conversation to mark all notifications as read for a conversation when it is accessed.

Database schema changes:

agixt/DB.py: Added a new column notify to the Message class to track notification status.

New API endpoint:

agixt/endpoints/Conversation.py: Added a new endpoint /api/notifications to fetch notifications for a user.

Need to add:

Set notify to true on new message from agent that isn't an activity/subactivity.


Fix and simplify settings UI

Fix #1418, simplify pages and fix collaboration page if there is no collaborator. Preview:

webhooks
githooks
deploy keys
ssh keys
collaboration

@sapk pls check

Thanks! But on my local, I used chrome on Mac. collaboration still has a slight problem and could you also fixes branches UI?

@lunny Ive already send PR to fix branches UI, check #1435 pls

@Morlinest great for that. and the collaboration issue?

@lunny Can not reproduce. Tested on Chrome, Firefox, IE 11 and Edge on Windows. I do not have Mac. Everywhere it looks good (as on my screenshot).

I will test it in few hours. Look good at first glance. Since you remove the .item:not(:first-child) for top border. have you check templates/user/settings/account_link.tmpl , templates/user/settings/applications.tmpl, templates/user/settings/email.tmpl , templates/user/settings/openid.tmpl ? They should simply need .divide maybe.

Maybe https://github.com/Morlinest/gitea/blob/66a9b96824cf1912fc75632c1c7b3dbc37f7c7a1/public/less/_repository.less#L1386 could also be remove ?

Since #1456 is merged, should we close this one? @Morlinest @sapk

Yes pls, ill extract just one fix and create new PR


Send image from ROS2 to Fastrtps

Hi,
I have create image.idl file and by using fastrtpsgen generate files.
Image.idl
#ifndef __std_msgs__msg__Time__idl
#define __std_msgs__msg__Time__idl

module std_msgs { module msg {

@nested
struct Time {
    long sec;
    unsigned long nanosec;
};

}; };  // module msg::std_msgs

#endif  // __std_msgs__msg__Time__idl

#ifndef __std_msgs__msg__Header__idl
#define __std_msgs__msg__Header__idl
module std_msgs { module msg {

struct Header {
    std_msgs::msg::Time stamp;
    string frame_id;
};

}; };  // module msg::std_msgs

#endif  // __std_msgs__msg__Header__idl

#ifndef __sensor_msgs__msg__Image__idl
#define __sensor_msgs__msg__Image__idl

//#include "std_msgs/msg/Header.idl"

module sensor_msgs { module msg {

struct Image {
    std_msgs::msg::Header header;
    //Header header;
    unsigned long height;
    unsigned long width;
    string encoding;
    octet is_bigendian;
    unsigned long step;
    sequence<octet> data;
};

}; };  // module msg::sensor_msgs

#endif  // __sensor_msgs__msg__Image__idl

I have chaneg Topic name (In the subscriber file):
Rparam.topic.topicName = "image";

and also change type in Imagepubsub.cxx as follow:
setName("sensor_msgs::msg::dds_::Image_");   //Adding dds_:: and "_ "to Image

I have update YAML files as follow:
topic:
image: { type: "sensor_msgs/Image", route: ros2_to_dds }

When I publish message from Ros2 and run ./Image Subscriber in the second terminal:
./Image subscriber
Starting
Waiting for Data, press Enter to stop the Subscriber.
Subscriber matched

But No data is shown (How can I show  image )
Also by running  soss myfile.YAML  in another terminal:
It is look like the type: "sensor_msgs/Image" is not defined and soss is not working.
Thanks and look forward to hearing from you

Hi @golizheh
I'd need to take a look into your myfile.yaml file to find out which can be the problem.
In any case, I don't understand what do you mean with How can I show image.

Hi @LuisGP
Myfile.yaml is as follow:
systems:
dds:
type: dds
dynamic types:
struct std_msgs__String:
string: "data"
ros2:
  type: ros2

routes:
ros2_to_dds: { from: ros2, to: dds }
dds_to_ros2: { from: dds, to: ros2 }
topics:
hello_ros2: { type: "std_msgs/String", route: dds_to_ros2 }
image: { type: "sensor_msgs/Image", route: ros2_to_dds }
When I run it I will get following error:
soss-ros2 could not find .mix file for message type: sensor_msgs/Image
"In any case, I don't understand what do you mean with How can I show image."
I mean it is look like subscriber is mached, but can not show any information, How can I show my image, is it in the following function:
void ImageSubscriber::SubListener::onNewDataMessage(Subscriber* sub)
I have test it is here but I can not get any data ?  how subscriber can show data as image?
what kind of changes is needed to the subscriber class to be sure if it is get image and can show it?
Thanks in advance

Hi @golizheh
Your myfile.yaml is describing the following situation:
DDS -> std_msgs__String -> SOSS -> std_msgs__String -> ROS2
ROS2 -> sensor_msgs__Image -> SOSS -> sensor_msgs__Image -> DDS
Is that correct?
Your type Image must be generated to be used by ROS2 too.
Once you are called to the onNewDataMessage you must retrieve the associated data to the change:
[...]
Image data;
sub->takeNextData(&data, &sample_info);
[...]

You can see a complete example in the HelloWorld example in Fast-RTPS.
If you are not being called to the onNewDataMessage function, that means the application isn't being able to receive or decode the received data. Very likely because the publisher (the SOSS-DDS system handler in this case) isn't publishing anything, as it doesn't receive data from the misconfigured ROS2 publisher.
ROS2 -X-> sensor_msgs__Image -> SOSS -> sensor_msgs__Image -> DDS

ROS2 -> sensor_msgs__Image -> SOSS -> sensor_msgs__Image -> DDS (Yes this is correct, I just want to have a one way communication from ROS2 to DDS).
"Your type Image must be generated to be used by ROS2 too. " How can I do that? In order to dont get error when I run soss myfile.yaml

In your scenario, all involved entities talk the same type, but each entity must define that type on their own.
In Fast-RTPS, you already have it by using your image.idl and fastrtpsgen.
In ROS2, you must define it again, for example adding the following snippet to your CMakeLists.txt:
rosidl_generate_interfaces(image_msg  "msg/image.msg"  DEPENDENCIES builtin_interfaces)

To create the image.msg file, follow the ROS2 tutorials, like this, and the ROS2 documentation, here.
Finally, SOSS-DDS needs the type too. Unfortunately, there is no automatic conversion from msg or idl files yet, so you must define it again using the yaml file itself.
As you only want to have that data flow, you must modify the myfile.yaml as follows:
systems:
    dds:
      type: dds
      dynamic types:
        struct sensor_msgs__Image:
          [...] # Here your Image type in yaml format.

    ros2:
      type: ros2

routes:
    ros2_to_dds: { from: ros2, to: dds }

topics:
    image: { type: "sensor_msgs__Image", route: ros2_to_dds }

There is no documentation about the dynamic types syntax yet, but you can take a look at examples and tests, like here.

I have updated YAML file as follow:
systems:
dds:
type: dds
dynamic types:
struct stamp:
int32: "sec"
uint32: "nanosec"
struct Header:
string: "frame_id"
stamp: "stamp"
struct Point:
float64: "height"
float64: "width"
float64: "step"
float64: "is_bigendian"
float64: "step"
struct sensor_msgs__Image:
Point: "position"
Header: "header"
ros2:
type: ros2

routes:
ros2_to_dds: { from: ros2, to: dds }
topics:
image:
type: "sensor_msgs/Image"
route: ros2_to_dds
But I will get follwoing error
[soss-dds]: participant not provided in configuration file. UDP default participant will be created.
[soss-dds]: configured!
soss-ros2 could not find .mix file for message type: sensor_msgs/Image
-- Make sure that you have generated the soss-ros2 extension for that message type by calling soss_rosidl_mix(PACKAGES  MIDDLEWARES ros2) in your build system!
Failed to load middlewares!

I want to use ros2 exmaple for publishing message by running: ros2 run image_tools cam2image
So there is no need to create package publish self defined message I think

please take look at the http://docs.ros.org/melodic/api/sensor_msgs/html/msg/Image.html
for message definition which I interested in.

thanks in advance

@LuisGP
In my subscriber I have :
./Image subscriber
Starting
Message Type is sensor_msgs::Image
Message topic is image
Waiting for Data, press Enter to stop the Subscriber.
In Publisher from ROS2:
ros2  topic list -t
/flip_image [std_msgs/Bool]
/image [sensor_msgs/Image]
/parameter_events [rcl_interfaces/ParameterEvent]
/rosout [rcl_interfaces/Log]
So I just want to get data in subscriber part

All the files are generated from Image.Idl as follow: (Just Topic name is updated)
//struct Time {
//  long sec;
// unsigned long nanosec;
//};
//struct Header {
//  Time stamp;
// string frame_id;
//
#ifndef __std_msgs__msg__Time__idl
#define __std_msgs__msg__Time__idl
module std_msgs {
@nested
struct Time {
long sec;
unsigned long nanosec;
};
};   // module msg::std_msgs
#endif  // __std_msgs__msg__Time__idl
#ifndef __std_msgs__msg__Header__idl
#define __std_msgs__msg__Header__idl
module std_msgs {
struct Header {
std_msgs::Time stamp;
string frame_id;
};
};   // module msg::std_msgs
#endif  // __std_msgs__msg__Header__idl
#ifndef __sensor_msgs__msg__Image__idl
#define __sensor_msgs__msg__Image__idl
//#include "std_msgs/msg/Header.idl"
module sensor_msgs {
struct Image {
std_msgs::Header header;
//Header header;
unsigned long height;
unsigned long width;
string encoding;
octet is_bigendian;
unsigned long step;
sequence data;
};
};  // module msg::sensor_msgs
#endif  // __sensor_msgs__msg__Image__idl
//struct Image {
//   Header header;
//  unsigned long height;
// unsigned long width;
//string encoding;
//octet is_bigendian;
//unsigned long step;
//sequence data;
//};

Hi @golizheh
Please, review your dynamic type definition because it doesn't match the type defined in your IDL.
Your problem here seems to be that in the machine/terminal where you are running the ROS2 publisher, everything works fine, but the machine/terminal where you run soss ROS2 is unable to locate the type sensor_msgs/Image, as you can see in this error message you get:
soss-ros2 could not find .mix file for message type: sensor_msgs/Image
 -- Make sure that you have generated the soss-ros2 extension for that message type by calling soss_rosidl_mix(PACKAGES <package> MIDDLEWARES ros2) in your build system!

You must generate sensor_msgs/Image in the SOSS-ROS2 subscriber too.

Hi @LuisGP
Sorry but I do not understand how should I
"You must generate sensor_msgs/Image in the SOSS-ROS2 subscriber too."
or in the which cmake file should  I add rosidl_generate_interfaces(image_msg  "msg/image.msg"   DEPENDENCIES builtin_interfaces),
(when I test it with all examples it is works fine but with this new type it does not work.)
Could you please explain a little bit more?
Thanks

Hi @golizheh
SOSS uses ROS2, which may be different (and in your case it is) from the ROS2 used to publish.
Both ROS2 must have generated the type Image in order to use it.
You already have it in your publisher, since you listed it. You must generate it too in the SOSS's ROS2. SOSS itself doesn't need the ROS2 types, but your SOSS-ROS2 subscriber does.
That type belongs to an example in your publisher's side.

I want to use ros2 exmaple for publishing message by running: ros2 run image_tools cam2image
So there is no need to create package publish self defined message I think

Build the example in your SOSS side too, so your ROS2 subscriber will be able to locate the type.

Hi @LuisGP ,
"Build the example in your SOSS side too, so your ROS2 subscriber will be able to locate the type. "
Sorry but because it is not clear for me, I ask you agian, so I have to go to  soss-wp/build and do it or something else

Hi @golizheh
Your soss-wp is being compiled against a ROS2 installation or workspace, right? That ROS2 is which must be built/installed with these types.

So in the ros2_ws/build, I have to run colcon ?

In your ros2_ws of the machine which is going to run soss, yes.

On my ros2_ws I have already have lot of folders for build and installed and every thing is installed correctly,
All of soss and ros2 and fastrtps  are on in the same machine, I mean publishing and subscribing is done from same machine.  and as I mentioned  have already have this type but about soss I do not know, is it really need to be build from here? and what command should I use? colcon  ......
Thanks


echo, README: Add usage instructions

Adds usage instructions:

Prerequisites
Installation
Configuration
Execution
Results Retrieval

Signed-off-by: Orel Misan<EMAIL_ADDRESS>

A follow-up PR is required in order to remove checkups/echo/manifests/echo-checkup.yaml, because it is used in the main e2e tests.

Change: Added results example.

Change: Answered review comments.

Change: Answered review comments.

Change: Rebase
Answered review comments.


Pinot-server connect to cluster before registering the state model factory

Currently in HelixServerStarter, server connects to the cluster before registering the state model factory. If server gets state transitions before the register happens, it will get NPE.
In order to fix this, we need to refactor several classes to not directly take PropertyStore which is only available after connecting to the cluster.

#4929


3.5.1 breaks simple unambiguous type guards?

We get some unexpected regression compiler errors in our code base when upgrading to tsc 3.5.1.
We simplified the code for this bug report.
If this isn't a bug, it would be nice to know why this is now expected behavior, and what would be the recommended workaround?
TypeScript Version:  3.5.1
Search Terms:
3.5, 3.5.1, type guard
Code
enum PrimitiveKind {
  Float,
  Integer,
}

function test(kind: PrimitiveKind.Float) {
  console.log("bla");
}

function works(kind: PrimitiveKind) {
  if (kind === PrimitiveKind.Float) {
    test(kind);
  }
}

function kaput1<K extends PrimitiveKind>(kind: K) {
  if (kind === PrimitiveKind.Float) {
    test(kind);
  }
}

function kaput2<K extends PrimitiveKind>(kind: K & PrimitiveKind) {
  if (kind === PrimitiveKind.Float) {
    test(kind);
  }
}

function guard(kind: any): kind is PrimitiveKind {
  // Just for reporting the bug
  return true;
}

function kaput3<K extends PrimitiveKind>(kind: K & PrimitiveKind) {
  if (guard(kind) && kind === PrimitiveKind.Float) {
    test(kind);
  }
}

Expected behavior:
The compiles without errors (worked in 3.4.0)
Actual behavior:
Compiler error Type 'PrimitiveKind' is not assignable to type 'PrimitiveKind.Float'. for functions kaput1, kaput2 and kaput3.
(As Siegrift found out below, it seems this behavior started from version 3.4.5)
Playground Link:
Demo
Related Issues:
#31833 #31837

I am not sure why this doesn't work (and to my newbie understanding it should)... But I have found these workarounds
playground

@Ziriax Btw. for me it won't compile even with TS version 3.4.5

@Siegrift
Indeed, we were still using TS 3.4.0, it fails with 3.4.5, nice catch!
function kaput4<K extends PrimitiveKind>(kind: PrimitiveKind) {
  switch (kind) {
    case PrimitiveKind.Float:
      test(kind);
      break;
  }
}

Thanks for the working code, it is amazing that a switch statement does work! Semantically this should be the same code no?

The sample code above has the same errors in every version of TypeScript going back 2.5, so whatever problem you have updating to 3.5.1, this isn't it.

Ouch, then we oversimplified the code that broke, mea culpa, I will revise.

The new errors you're seeing are likely related to #30769 and may be intended.

@ahejlsberg You are 100% correct, the full signature of the code that breaks in our code is

`function valueAt<K extends PrimitiveKind>(curve: AnyCurve<K>, time: Time): PrimitiveKindToType[K] {...}`

@ahejlsberg @Ziriax Sorry, I am not able to see how it is related. And I am curious about why TS is able to infer the enum type when using switch but not when using if. Can you please explain? :)

And I am curious about why TS is able to infer the enum type when using switch but not when using if. Can you please explain?

The example declares a type parameter but never uses it.

No, it uses it in the test function (which is ommited from the snippet). Here is a working playground

@Siegrift Your playground example declares K type variables in the two functions and then proceeds to not use them. It makes no sense, but is working as intended. The errors in the original example were due to variables of a generic type not being narrowed--which is expected.


WGSL: Enable load & store from byte-addressible buffers

This closes issue #5221.

Please make sure to add labels to your PR. It needs to be marked as pr: non-breaking.


fix(directive): Formatter no longer evaluates phone number to boolean value

Symptom:
When passing a model value containing an E.164 phone number value, the angular formatter would evaluate the number to be a boolean true rather than the phone number string. This caused the intl-tel-input library to throw a number.charAt is not a function error when trying to use the number.
Fix:
Changed line 61 of ng-intl-tel-input.directive.js to prepend the + value if one is not present so that intl-tel-input library can evaluate the dial code and select the correct region.

@jrthib thanks for the help! Some feedback:

Please squash this down to one commit
Please use the conventional changelog commit message format
Please strip the GitHub-specific references from the code
Please update the minimum Protractor version to coincide with the Selenium version update

Please read CONTRIBUTING.md for more guidelines.


Github username is repository string restricted to 13 characters

There some discussion on other issues about restrictions on the repository field in elm-package.json. It's not ideal that this field is restricted to Github repos, but that's workable for now. The restriction on lower case letters is also workable, as Github usernames and repos and non-case sensitive.
I have a problem with the restriction on the length of Github username though. Usernames of 13 or less work fine, for example:
"repository": "https://github.com/freepressunlt/elm-rivescript.git"

But when I change this to a (correct) username of more than 13 characters, the generated javascript throws an error. For example:
"repository": "https://github.com/freepressunlimited/elm-rivescript.git"

The error that is thrown at runtime, is the following:
TypeError: Elm.Example.embed is not a function

Are there any workarounds? Are there any fixes in sight? While all lower case usernames are acceptable in a Github URL, even if the orginal username contains upper case characters, truncated usernames are not accepted by Github 😞
I'm using Firefox 58.0.2 on Mac OS 10.13.3 with Elm 0.18.

Thanks for the report!
I looked for authors on http://package.elm-lang.org/ with names longer than 13 chars and found a few:

MichaelCombs28
ThinkAlexandria

So I am not convinced the name length is the underlying cause. Do you mind digging around more in the compiled code to see why embed is not defined? Sometimes the root issue can get masked in how the error is output by JS if it is a code generation issue. If you find anything, please open an issue at https://github.com/elm-lang/elm-compiler/issues outlining it!
Thank you for looking into this!

Oh, it may just be that you gotta delete elm-stuff/ after you change the repo name! I can imagine the compiler could get confused if names changed and it had some old compiled artifacts around!


[BUG] SignalingInfo and other classes or missing after upgrading to flutter_openim_sdk: 3.3.0

After changes to latest flutter openim sdk 3.3.0
flutter_openim_sdk:     git:       url: https://github.com/OpenIMSDK/Open-IM-SDK-Flutter.git
Compilation is failing.
`PS C:\Users\enkhchuluunchuluunkh\wspace\open-im-flutter-demo> flutter run
Launching lib\main.dart on SM A546E in debug mode...
openim_common/lib/src/utils/utils.dart:1101:29: Error: 'DeptMemberInfo' isn't a type.
} else if (value is DeptMemberInfo) {
^^^^^^^^^^^^^^
openim_common/lib/src/utils/utils.dart:1121:29: Error: 'DeptMemberInfo' isn't a type.
} else if (value is DeptMemberInfo) {
^^^^^^^^^^^^^^
openim_common/lib/src/utils/utils.dart:1138:26: Error: 'DeptMemberInfo' isn't a type.
} else if (item is DeptMemberInfo) {
^^^^^^^^^^^^^^
openim_common/lib/src/utils/utils.dart:1154:26: Error: 'DeptMemberInfo' isn't a type.
} else if (item is DeptMemberInfo) {
^^^^^^^^^^^^^^
openim_common/lib/src/utils/utils.dart:1170:24: Error: 'DeptMemberInfo' isn't a type.
} else if (info is DeptMemberInfo) {
^^^^^^^^^^^^^^
openim_common/lib/src/utils/utils.dart:1190:26: Error: 'DeptMemberInfo' isn't a type.
} else if (item is DeptMemberInfo) {
^^^^^^^^^^^^^^
lib/core/im_callback.dart:222:28: Error: Type 'SignalingInfo' not found.
void invitationCancelled(SignalingInfo info) {}
^^^^^^^^^^^^^
lib/core/im_callback.dart:225:26: Error: Type 'SignalingInfo' not found.
void invitationTimeout(SignalingInfo info) {}
^^^^^^^^^^^^^
lib/core/im_callback.dart:228:24: Error: Type 'SignalingInfo' not found.
void inviteeAccepted(SignalingInfo info) {}
^^^^^^^^^^^^^
lib/core/im_callback.dart:231:24: Error: Type 'SignalingInfo' not found.
void inviteeRejected(SignalingInfo info) {}
^^^^^^^^^^^^^
lib/core/im_callback.dart:234:29: Error: Type 'SignalingInfo' not found.
void receiveNewInvitation(SignalingInfo info) {}
^^^^^^^^^^^^^
lib/core/im_callback.dart:237:37: Error: Type 'SignalingInfo' not found.
void inviteeAcceptedByOtherDevice(SignalingInfo info) {}
^^^^^^^^^^^^^
lib/core/im_callback.dart:240:37: Error: Type 'SignalingInfo' not found.
void inviteeRejectedByOtherDevice(SignalingInfo info) {}
^^^^^^^^^^^^^
lib/core/im_callback.dart:243:17: Error: Type 'SignalingInfo' not found.
void beHangup(SignalingInfo info) {}
^^^^^^^^^^^^^
lib/core/im_callback.dart:246:33: Error: Type 'RoomCallingInfo' not found.
void roomParticipantConnected(RoomCallingInfo info) {
^^^^^^^^^^^^^^^
lib/core/im_callback.dart:250:36: Error: Type 'RoomCallingInfo' not found.
void roomParticipantDisconnected(RoomCallingInfo info) {
^^^^^^^^^^^^^^^
lib/core/im_callback.dart:222:28: Error: 'SignalingInfo' isn't a type.
void invitationCancelled(SignalingInfo info) {}
^^^^^^^^^^^^^
lib/core/im_callback.dart:225:26: Error: 'SignalingInfo' isn't a type.
void invitationTimeout(SignalingInfo info) {}
^^^^^^^^^^^^^
lib/core/im_callback.dart:228:24: Error: 'SignalingInfo' isn't a type.
void inviteeAccepted(SignalingInfo info) {}
^^^^^^^^^^^^^
lib/core/im_callback.dart:231:24: Error: 'SignalingInfo' isn't a type.
void inviteeRejected(SignalingInfo info) {}
^^^^^^^^^^^^^
lib/core/im_callback.dart:234:29: Error: 'SignalingInfo' isn't a type.
void receiveNewInvitation(SignalingInfo info) {}
^^^^^^^^^^^^^
lib/core/im_callback.dart:237:37: Error: 'SignalingInfo' isn't a type.
void inviteeAcceptedByOtherDevice(SignalingInfo info) {}
^^^^^^^^^^^^^
lib/core/im_callback.dart:240:37: Error: 'SignalingInfo' isn't a type.
void inviteeRejectedByOtherDevice(SignalingInfo info) {}
^^^^^^^^^^^^^
lib/core/im_callback.dart:243:17: Error: 'SignalingInfo' isn't a type.
void beHangup(SignalingInfo info) {}
^^^^^^^^^^^^^
lib/core/im_callback.dart:246:33: Error: 'RoomCallingInfo' isn't a type.
void roomParticipantConnected(RoomCallingInfo info) {
^^^^^^^^^^^^^^^
lib/core/im_callback.dart:250:36: Error: 'RoomCallingInfo' isn't a type.
void roomParticipantDisconnected(RoomCallingInfo info) {
^^^^^^^^^^^^^^^
lib/pages/contacts/select_contacts/select_contacts_logic.dart:132:21: Error: 'DeptMemberInfo' isn't a type.
} else if (e is DeptMemberInfo) {
^^^^^^^^^^^^^^
lib/pages/contacts/select_contacts/select_contacts_logic.dart:148:21: Error: 'DeptMemberInfo' isn't a type.
} else if (e is DeptMemberInfo) {
^^^^^^^^^^^^^^
lib/pages/contacts/select_contacts/select_contacts_logic.dart:164:21: Error: 'DeptMemberInfo' isn't a type.
} else if (e is DeptMemberInfo) {
^^^^^^^^^^^^^^
lib/pages/contacts/select_contacts/select_contacts_view.dart:289:24: Error: 'DeptMemberInfo' isn't a type.
} else if (info is DeptMemberInfo) {
^^^^^^^^^^^^^^
lib/pages/contacts/select_contacts/search_contacts/search_contacts_logic.dart:27:42: Error: 'DeptMemberInfo' isn't a type.
final friendList = result[0] as List;
^^^^^^^^^^^^^^
lib/pages/contacts/select_contacts/search_contacts/search_contacts_logic.dart:28:46: Error: 'DeptMemberInfo' isn't a type.
final deptMemberList = result[1] as List;
^^^^^^^^^^^^^^
lib/pages/global_search/global_search_logic.dart:39:15: Error: Type 'DeptMemberInfo' not found.
Future<List> searchFriend() =>
^^^^^^^^^^^^^^
lib/pages/global_search/global_search_logic.dart:45:27: Error: The getter 'DeptMemberInfo' isn't defined for the class 'CommonSearchLogic'.

'CommonSearchLogic' is from 'package:openim/pages/global_search/global_search_logic.dart' ('lib/pages/global_search/global_search_logic.dart').
Try correcting the name to the name of an existing getter, or defining a getter or field named 'DeptMemberInfo'.
list.map((e) => DeptMemberInfo.fromJson(e.toJson())).toList());
^^^^^^^^^^^^^^
lib/pages/global_search/global_search_logic.dart:86:21: Error: 'DeptMemberInfo' isn't a type.
} else if (e is DeptMemberInfo) {
^^^^^^^^^^^^^^
lib/pages/global_search/global_search_logic.dart:100:21: Error: 'DeptMemberInfo' isn't a type.
} else if (e is DeptMemberInfo) {
^^^^^^^^^^^^^^
lib/pages/global_search/global_search_logic.dart:114:21: Error: 'DeptMemberInfo' isn't a type.
} else if (e is DeptMemberInfo) {
^^^^^^^^^^^^^^
lib/pages/global_search/global_search_logic.dart:122:17: Error: 'DeptMemberInfo' isn't a type.
if (info is DeptMemberInfo) {
^^^^^^^^^^^^^^
lib/pages/global_search/global_search_logic.dart:129:17: Error: 'DeptMemberInfo' isn't a type.
if (info is DeptMemberInfo) {
^^^^^^^^^^^^^^
Target kernel_snapshot failed: Exception

FAILURE: Build failed with an exception.`
Is there any PR or commit fixing this issue?
Thanks

cc @Bloomingg

@enkhchuluun  Hi, the structures you mentioned have been removed from the open source version. At present, the flutter demo is not adapted to the latest sdk and will be updated later.

@enkhchuluun Hi, the structures you mentioned have been removed from the open source version. At present, the flutter demo is not adapted to the latest sdk and will be updated later.

Ok thank you~

No response for too long, close it temporarily.


Add random wallpaper module

I've created a new module to allow users to get a random photo from Unsplash to use as a wallpaper for their phones/desktops. People could use the photos for whatever they like though - wallpapers were just what I had in mind initially. I also thought of expanding the module to allow to search wallpapers but I didn't in case a newcomer wanted to tackle it at some stage.
Some example queries:

"I need a new wallpaper"
"wallpaper"
"Show me a random wallpaper"
etc.

I mocked the wit intent locally and the module seems to be working fine. I was just a bit unsure of which information to put in the template response so that can always be modified if needed.
You'll need to create a developer account here and register JARVIS to get an API key (Application-ID).

@conormag94  Lets fix the test please :),  one of the tests is failing.

@horrormyth Yeah I believe that this test is failing because Jarvis doesn't know how to process the new module.
@swapagarwal will need to add training in wit.ai when he gets a chance. Alternatively I could add some sample intent in the wit json file but my impression was that this was for local debugging only so I took it out of the final PR.


Logic Analyzer Documents Don't Reflect The Update

The logic analyzer now reports when requested channels fail to render. It would be an idea to add that to the documentation.

README updated


Show unsaved warning only when content model is changed

Short description

This PR changes the behavior of unsaved warning.
Proposed changes

Give the sidebar block a new id, add event lisnter on it to detect changes on the content model.
Show the warning when users leave the page without saving and something has been changed in the sidebar (content model). No warning when changes are only in the content translation (because it will be saved).

Side effects

fetch in autosave fails in Firefox and changes in the content translation will not be saved when no change in the side bar has been made (and therefore no warning&leav confirmation done). Chrome, Opera and Firefox Edge  are fine. Could somebody give me an advice for this? 🥺

Resolved issues

Fixes: #2128

Pull Request Review Guidelines

What I have got to know from googling so far about the fetch problem in Firefox:

it can be because of ad-on: we cannot decide users' environment. ⛔
achieve what the function with fetch is doing without fetch: can be an option?

As far as I can tell, the page is left/unloaded before the async fetch is completed. The time it took a user to click "Leave Page" in the unsaved warning was enough for that operation to complete, but since that's gone now, fetching fails.
(If you change something in the editor, change something in the sidebar, leave the page and click "Leave Page"  in the resulting unsaved warning, the changes are still changed, just as before.)

2. achieve what the function with fetch is doing without fetch: can be an option?

Sadly easier said then done, AFAIK fetch can only be used asynchronously, and while XMLHttpRequest did allow synchronous fetchs, it seems depracted now.

Sadly easier said then done, AFAIK fetch can only be used asynchronously, and while XMLHttpRequest did allow synchronous fetchs, it seems depracted now.

But can't we somehow await the fetch in the beforeunload event handler? Or do a small sleep which is sufficient to complete the fetch in most cases?

I tried for quite a while this morning, unsuccessfully. Seeing as the current solution works in all other browsers, this might be a Firefox thing, intentional or not... And there's no sleep in JS/TS, you'd have to implement that yourself 😅

Maybe keepalive could make a difference here? If not for the warning, at least for completing the autosave…? https://stackoverflow.com/a/67644011/4067384

@PeterNerlich It didn't work sadly 😢 but thank you for the idea 🙂

As it turned out to be unexpectedly complex to achieve a consistent behaviour in different brouwers and the problem is not critical, I'll close this PR for now.


test: rename testSetup to indicate it's for a component

#291  👈
main

This stack of pull requests is managed by Graphite. Learn more about stacking.

Join @davidlj95 and the rest of your teammates on  Graphite


[FEATURE] Create array with all html tags

Description
In the index.js file create an array with all html tags and store the value to a variable called tags.
Example:
const tags = ["section", "h1", "p", ...]

@YuriDevAT  I wanna contribute to this.

I like to work on this. please add me

I was really hoping to be able to contribute to this.
Would it be possible for you to assign me this ?

@octosapien Thank you for your interest contributing to the project. This particular issue is already assigned to someone else.


docs: adds example processor

Codecov Report

Merging #42 (ee6d7b0) into master (d1df9ae) will not change coverage.
The diff coverage is n/a.

:exclamation: Current head ee6d7b0 differs from pull request most recent head 50e50ed. Consider uploading reports for the commit 50e50ed to get more accurate results

@@           Coverage Diff           @@
##           master      #42   +/-   ##
=======================================
  Coverage   96.14%   96.14%
=======================================
  Files          20       20
  Lines         519      519
=======================================
  Hits          499      499
  Misses         20       20

Flag
Coverage Δ

unittests
96.14% <ø> (ø)

Flags with carried forward coverage won't be shown. Click here to find out more.
Help us with your feedback. Take ten seconds to tell us how you rate us. Have a feature suggestion? Share it here.


rust-lld: error: undefined symbol: _defmt_acquire

I can not run cargo build, would you help check?
error: linking with `rust-lld` failed: exit code: 1
  |
  = note: "rust-lld" "-flavor" "gnu" "--eh-frame-hdr" "-L" "/Users/chandamon/.rustup/toolchains/nightly-x86_64-apple-darwin/lib/rustlib/thumbv7em-none-eabihf/lib" "/Users/chandamon/Documents/freshup/atom/ok/target/thumbv7em-none-eabihf/debug/deps/ok-00c3d462160d63f2.ok.e22vskm7-cgu.0.rcgu.o" "-o" "/Users/chandamon/Documents/freshup/atom/ok/target/thumbv7em-none-eabihf/debug/deps/ok-00c3d462160d63f2" "--gc-sections" "-L" "/Users/chandamon/Documents/freshup/atom/ok/target/thumbv7em-none-eabihf/debug/deps" "-L" "/Users/chandamon/Documents/freshup/atom/ok/target/debug/deps" "-L" "/Users/chandamon/Documents/freshup/atom/ok/target/thumbv7em-none-eabihf/debug/build/ok-fe8fce64b33a35b5/out" "-L" "/Users/chandamon/Documents/freshup/atom/ok/target/thumbv7em-none-eabihf/debug/build/cortex-m-51920042ee9b2630/out" "-L" "/Users/chandamon/Documents/freshup/atom/ok/target/thumbv7em-none-eabihf/debug/build/cortex-m-rt-48479f92d79eb74e/out" "-L" "/Users/chandamon/Documents/freshup/atom/ok/target/thumbv7em-none-eabihf/debug/build/cortex-m-semihosting-77cade760834610c/out" "-L" "/Users/chandamon/Documents/freshup/atom/ok/target/thumbv7em-none-eabihf/debug/build/defmt-4430fad72716f0f8/out" "-L" "/Users/chandamon/Documents/freshup/atom/ok/target/thumbv7em-none-eabihf/debug/build/stm32f4-14cfb699ee37a4ad/out" "-L" "/Users/chandamon/.rustup/toolchains/nightly-x86_64-apple-darwin/lib/rustlib/thumbv7em-none-eabihf/lib" "-Bstatic" "/Users/chandamon/Documents/freshup/atom/ok/target/thumbv7em-none-eabihf/debug/deps/libdefmt-36442d255a9c07bc.rlib" "/Users/chandamon/Documents/freshup/atom/ok/target/thumbv7em-none-eabihf/debug/deps/libdefmt_common-8a53ad6740ef6f9c.rlib" "/Users/chandamon/Documents/freshup/atom/ok/target/thumbv7em-none-eabihf/debug/deps/libheapless-5c168228bd552c76.rlib" "/Users/chandamon/Documents/freshup/atom/ok/target/thumbv7em-none-eabihf/debug/deps/libhash32-f002e42d4cde7860.rlib" "/Users/chandamon/Documents/freshup/atom/ok/target/thumbv7em-none-eabihf/debug/deps/libbyteorder-f86e7ae79197b381.rlib" "/Users/chandamon/Documents/freshup/atom/ok/target/thumbv7em-none-eabihf/debug/deps/libstm32f4xx_hal-75c8d3fa54dd8e15.rlib" "/Users/chandamon/Documents/freshup/atom/ok/target/thumbv7em-none-eabihf/debug/deps/librand_core-a547618338c14625.rlib" "/Users/chandamon/Documents/freshup/atom/ok/target/thumbv7em-none-eabihf/debug/deps/libcast-1346153f242d37ad.rlib" "/Users/chandamon/Documents/freshup/atom/ok/target/thumbv7em-none-eabihf/debug/deps/libstm32f4-d258cb858fbaa62f.rlib" "/Users/chandamon/Documents/freshup/atom/ok/target/thumbv7em-none-eabihf/debug/deps/libembedded_hal-b7cbcb0268d17305.rlib" "/Users/chandamon/Documents/freshup/atom/ok/target/thumbv7em-none-eabihf/debug/deps/libvoid-2dabe3b80173d027.rlib" "/Users/chandamon/Documents/freshup/atom/ok/target/thumbv7em-none-eabihf/debug/deps/libnb-d97f13218ab65d56.rlib" "/Users/chandamon/Documents/freshup/atom/ok/target/thumbv7em-none-eabihf/debug/deps/libnb-22d098c14b2cb118.rlib" "/Users/chandamon/Documents/freshup/atom/ok/target/thumbv7em-none-eabihf/debug/deps/libcortex_m_semihosting-8456019f1bf0dae1.rlib" "/Users/chandamon/Documents/freshup/atom/ok/target/thumbv7em-none-eabihf/debug/deps/libcortex_m_rt-aced26f2ef700965.rlib" "/Users/chandamon/Documents/freshup/atom/ok/target/thumbv7em-none-eabihf/debug/deps/libr0-773be1afbebc52de.rlib" "/Users/chandamon/Documents/freshup/atom/ok/target/thumbv7em-none-eabihf/debug/deps/libcortex_m-9b89eb9831ef9973.rlib" "/Users/chandamon/Documents/freshup/atom/ok/target/thumbv7em-none-eabihf/debug/deps/libvolatile_register-24079378c8e136a9.rlib" "/Users/chandamon/Documents/freshup/atom/ok/target/thumbv7em-none-eabihf/debug/deps/libvcell-fb352589e1f3b95f.rlib" "/Users/chandamon/Documents/freshup/atom/ok/target/thumbv7em-none-eabihf/debug/deps/libbare_metal-2a68be6ea40cd851.rlib" "/Users/chandamon/Documents/freshup/atom/ok/target/thumbv7em-none-eabihf/debug/deps/libaligned-20d500017c4a3b09.rlib" "/Users/chandamon/Documents/freshup/atom/ok/target/thumbv7em-none-eabihf/debug/deps/libas_slice-6fadded5466b728a.rlib" "/Users/chandamon/Documents/freshup/atom/ok/target/thumbv7em-none-eabihf/debug/deps/libstable_deref_trait-a625275795e84c76.rlib" "/Users/chandamon/Documents/freshup/atom/ok/target/thumbv7em-none-eabihf/debug/deps/libgeneric_array-06405a977e0de214.rlib" "/Users/chandamon/Documents/freshup/atom/ok/target/thumbv7em-none-eabihf/debug/deps/libgeneric_array-93fcf103a6a95b71.rlib" "/Users/chandamon/Documents/freshup/atom/ok/target/thumbv7em-none-eabihf/debug/deps/libtypenum-c0a19d0e8b50d874.rlib" "--start-group" "/Users/chandamon/Documents/freshup/atom/ok/target/thumbv7em-none-eabihf/debug/deps/libpanic_halt-a51b264357e80e04.rlib" "/Users/chandamon/.rustup/toolchains/nightly-x86_64-apple-darwin/lib/rustlib/thumbv7em-none-eabihf/lib/librustc_std_workspace_core-998b97e0d6b5f728.rlib" "/Users/chandamon/.rustup/toolchains/nightly-x86_64-apple-darwin/lib/rustlib/thumbv7em-none-eabihf/lib/libcore-369bbf83412ca20c.rlib" "--end-group" "/Users/chandamon/.rustup/toolchains/nightly-x86_64-apple-darwin/lib/rustlib/thumbv7em-none-eabihf/lib/libcompiler_builtins-635853e92b6c58cf.rlib" "-Tlink.x" "-Tdefmt.x" "-Bdynamic"
  = note: rust-lld: error: undefined symbol: _defmt_acquire
          >>> referenced by export.rs:49 (/Users/chandamon/.cargo/git/checkouts/defmt-7f5b74b4e6ff55d4/c97bb56/src/export.rs:49)
          >>>               defmt-36442d255a9c07bc.defmt.111d6lvd-cgu.0.rcgu.o:(defmt::export::acquire::hca9f12e8e06bcf1b) in archive /Users/chandamon/Documents/freshup/atom/ok/target/thumbv7em-none-eabihf/debug/deps/libdefmt-36442d255a9c07bc.rlib

          rust-lld: error: undefined symbol: _defmt_release
          >>> referenced by export.rs:60 (/Users/chandamon/.cargo/git/checkouts/defmt-7f5b74b4e6ff55d4/c97bb56/src/export.rs:60)
          >>>               defmt-36442d255a9c07bc.defmt.111d6lvd-cgu.0.rcgu.o:(defmt::export::release::hac8064c98fc1cd52) in archive /Users/chandamon/Documents/freshup/atom/ok/target/thumbv7em-none-eabihf/debug/deps/libdefmt-36442d255a9c07bc.rlib

error: aborting due to previous error; 5 warnings emitted

error: could not compile `ok`.

To learn more, run the command again with --verbose.

Can you provide the code needed to reproduce this?

Just to make sure, you did define a #[global_logger], right?

Thanks for your help. I am farely new to rust, but I can not find any example of how to add a global_logger.
I try:
use defmt::{Logger, Write, global_logger};
use core::ptr::NonNull;
///
#[global_logger]
struct MyLogger;
///
unsafe impl Logger for MyLogger {
    fn acquire() -> Option<NonNull<dyn Write>> {
// # todo!()
        // ...
    }
    unsafe fn release(writer: NonNull<dyn Write>) {
// # todo!()
        // ...
    }
}

Which I found in src/lilb.rs. But it can not work.

I tried to add
use defmt_rtt as _; in main.rs.
defmt::info!("Hello, world!"); in main function did not work.
But if I used rtt_target, it works fine. Do you know why?

My Cargo.toml.
[package]
authors = ["DAMON"]
edition = "2018"
readme = "README.org"
name = "ok"
version = "0.1.0"

[dependencies]
embedded-hal = "0.2"
nb = "0.1.2"
cortex-m = "0.6.0"
cortex-m-rt = "0.6.10"
cortex-m-semihosting = "0.3.3"
panic-halt = "0.2.0"
heapless = "0.5.5"
# rtt-target = { version = "0.2.2", features = ["cortex-m"] }
# panic-itm = "0.4.0"
# aux5 = { path = "auxiliary" }

# Uncomment for the panic example.
# panic-itm = "0.4.1"

# Uncomment for the allocator example.
# alloc-cortex-m = "0.3.5"

# Uncomment for the device example.
# Update `memory.x`, set target to `thumbv7em-none-eabihf` in `.cargo/config`,
# and then use `cargo build --examples device` to build it.
# [dependencies.stm32f3]
# features = ["stm32f303", "rt"]
# version = "0.7.1"

# this lets you use `cargo fix`!
# [dependencies.stm32f4]
# version = "0.11.0"
# features = ["stm32f407", "rt"]

[features]
# set logging levels here
default = [
  "defmt-default",
  # "dependency-a/defmt-trace",
  "defmt-trace",
]

# do NOT modify these features
defmt-default = []
defmt-trace = []
defmt-debug = []
defmt-info = []
defmt-warn = []
defmt-error = []

[dependencies.defmt]
git = "https://github.com/knurling-rs/defmt"
branch = "main"

[dependencies.defmt-rtt]
git = "https://github.com/knurling-rs/defmt"
branch = "main"

[dependencies.panic-probe]
git = "https://github.com/knurling-rs/probe-run"
branch = "main"

[dependencies.stm32f4xx-hal]
version = "0.8.3"
features = ["rt", "stm32f407"] # replace the model of your microcontroller here

[[bin]]
name = "ok"
test = false
bench = false

[profile.dev]
codegen-units = 1
debug = 2
debug-assertions = true # <-
incremental = false
opt-level = 3 # <-
overflow-checks = true # <-

[profile.release]
codegen-units = 1
debug = 2
debug-assertions = false # <-
incremental = false
lto = 'fat'
opt-level = 3 # <-
overflow-checks = false # <-

# do not optimize proc-macro crates = faster builds from scratch
[profile.dev.build-override]
codegen-units = 8
debug = false
debug-assertions = false
opt-level = 0
overflow-checks = false

[profile.release.build-override]
codegen-units = 8
debug = false
debug-assertions = false
opt-level = 0
overflow-checks = false

How are you running the firmware? If you use probe-run, you have to pass --defmt to it, or it won't decode the received messages.

I am using cargo run to run the firmware. Here is my .cargo/config file
# uncomment this to make `cargo run` execute programs on QEMU
# [target.thumbv7em-none-eabihf]
# runner = "qemu-system-arm -cpu cortex-m4 -machine lm3s6965evb -nographic -semihosting-config enable=on,target=native -kernel"

[target.'cfg(all(target_arch = "arm", target_os = "none"))']
# uncomment ONE of these three option to make `cargo run` start a GDB session
# which option to pick depends on your system
# runner = "arm-none-eabi-gdb -q -x openocd.gdb"
# runner = "gdb-multiarch -q -x openocd.gdb"
# runner = "gdb -q -x openocd.gdb"
runner = "probe-run --chip STM32F407ZGTx"

rustflags = [
  # LLD (shipped with the Rust toolchain) is used as the default linker
  "-C", "link-arg=-Tlink.x",

  # if you run into problems with LLD switch to the GNU linker by commenting out
  # this line
  # "-C", "linker=arm-none-eabi-ld",

  # if you need to link to pre-compiled C libraries provided by a C toolchain
  # use GCC as the linker by commenting out both lines above and then
  # uncommenting the three lines below
  # "-C", "linker=arm-none-eabi-gcc",
  # "-C", "link-arg=-Wl,-Tlink.x",
  # "-C", "link-arg=-nostartfiles",

  # defmt logging
  "-C", "link-arg=-Tdefmt.x",
]

[build]
# Pick ONE of these compilation targets
# target = "thumbv6m-none-eabi"    # Cortex-M0 and Cortex-M0+
# target = "thumbv7m-none-eabi"    # Cortex-M3
# target = "thumbv7em-none-eabi"   # Cortex-M4 and Cortex-M7 (no FPU)
target = "thumbv7em-none-eabihf" # Cortex-M4F and Cortex-M7F (with FPU)

I tried to add --defmt, but it still failed.
warning: 5 warnings emitted

    Finished dev [optimized + debuginfo] target(s) in 0.32s
     Running `probe-run --chip STM32F407ZGTx --defmt target/thumbv7em-none-eabihf/debug/ok`
error: Found argument '--defmt' which wasn't expected, or isn't valid in this context

USAGE:
    probe-run [FLAGS] <ELF> --chip <chip>

For more information try --help

Oh, I found I did not run the following to enable defmt feature:
cargo install \
    --git https://github.com/knurling-rs/probe-run \
    --branch main \
    --features defmt

Yeah, right now you need to enable the defmt feature. This will be simplified once defmt is ready to be released.

Thanks your great help. It works perfectly now.


[BUG] GetPixel returns a different ARGB color compared to rendered

Description
Loading a 32 color PNG file into a SKBitmap returns a different color when using GetPixel. The image renders correctly on a SKCanvasView in Xamarin. The image still has 32 colors but they all look different as if they've been converted to a different tone.
As an example, in the image provided, the yellow color pixel returns as a pastel pink in the ARGB values received.
Code
 var bitmap = SKBitmap.Decode(fileStream);

 for (int row = 0; row < bitmap.Height; row++)
 for (int col = 0; col < bitmap.Width; col++)
 {
     var pixelColor = bitmap.GetPixel(col, row); <-- this is not the right color
 }

Expected Behavior
GetPixel returns the same ARGB colors as displayed when rendering the image.
Actual Behavior
A different tone of the color is returned.
As an example, in the image provided, the yellow color pixel returns as a pastel pink in the ARGB values received.
Basic Information

Version with issue:
Xamarin Essentials 1.6.1
SkiaSharp.Views.Forms 2.80.2
Last known good version:  Unknown
IDE:  Visual Studio CE 2019
Platform Target Frameworks:

Android: 10 (Api level 29)
Others not tested

Target Devices:

Samsung Galaxy 8+

Screenshots
Sample image where the issue occurs:

This was my bad, found an issue in my code as I was translating the colors into a different structure.


Recent commits break coin

Recent commits on ~Aug 27th break the genesis block and therefore the coin. Had to check out an earlier version to get it going. You don't have any releases defined so don't know if that is expected or not.

@Crypto2 I see you got a lot of *coin repo's are you a cryptocurrency expert? :p
Also, do you have any idea what the genesis block break?

Not sure if you are being sarcastic or not so I'll just answer as if you aren't. The genesis block timestamp and nonce are changed as well as the initial TX's timestamp which changes the block hash, that is what breaks the chain since it makes all blocks after it invalid so the entire BCC blockchain is invalid to a client compiled with this code. It's been a couple of days but I think there was an assert() failure in there too on a hash or merkle hash too.

@Crypto2 Nope I was not sarcastic.
Aaaah, I see, but well, I don't think @bitconnectcoin will respond :/

Do you guys honestly think they even log on here?  They created a github page to make it seem like their code is open source.

After clone:
git checkout 73084c6c8d

@2SI3NX Unfortunately, I think you're right :/

Sorry for inconvenience,
In Last commit, There are updated some changes in source code so it's make problem. We have resolved the issues and update new source code in git, Please try again.
Thanks


React upgrade

lgtm for now, I think as you said it'll need to be thoroughly tested whether it works with our react-15 version in other repositories, publishing a react-vapor@next version from this branch could also be an option to make testing with other repos easier

Yes all components in the examples were working

Codecov Report

:exclamation: No coverage uploaded for pull request base (master@c61a3b3). Click here to learn what that means.
The diff coverage is 100%.

@@            Coverage Diff            @@
##             master     #784   +/-   ##
=========================================
  Coverage          ?   99.75%
=========================================
  Files             ?      268
  Lines             ?     6874
  Branches          ?     1685
=========================================
  Hits              ?     6857
  Misses            ?       17
  Partials          ?        0

Impacted Files
Coverage Δ

src/components/headers/BreadcrumbHeader.tsx
100% <ø> (ø)

src/components/dropdownSearch/DropdownSearch.tsx
98.47% <ø> (ø)

src/components/headers/HeaderWrapper.tsx
100% <ø> (ø)

src/components/toast/ToastActions.ts
100% <ø> (ø)

src/components/headers/TabsHeader.tsx
100% <ø> (ø)

src/components/headers/BasicHeader.tsx
100% <ø> (ø)

src/components/toast/ToastReducers.ts
97.22% <ø> (ø)

src/components/popover/Popover.spec.tsx
100% <ø> (ø)

.../components/autocomplete/AutocompleteConnected.tsx
100% <100%> (ø)

src/components/content/Content.tsx
100% <100%> (ø)

... and 15 more

Continue to review full report at Codecov.

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


Change freeze corner case errors

steps:

press f
press Enter
press Enter

Result:
Freeze columns: ERROR: MethodError: no method matching isless(::Nothing, ::Int64)
Closest candidates are:
  isless(::Any, ::Missing) at missing.jl:88
  isless(::Missing, ::Any) at missing.jl:87
  isless(::AbstractFloat, ::Real) at operators.jl:169

you need to handle nothing in the input when the user just presses enter (maybe it should be just something(your_var, 0) so that Enter resets freeze to 0?)

Ooops :) Thanks @bkamins, it should be fixed now.


PVC should expand if we increase the values from invalid to valid value

Describe the bug
When we try to expand 1GB PVC size to beyond scale limit for example<PHONE_NUMBER>854775807Gi and then we try to increase to 2 GB then in this condition PVC size does not increase and give error as The PersistentVolumeClaim "scale-advance-pvc-1" is invalid: spec.resources.requests.storage: Forbidden: field can not be less than previous value
How to Reproduce?
Please list the steps to help development teams reproduce the behavior

Install CSI with following images :

Operator : quay.io/ibm-spectrum-scale-dev/ibm-spectrum-scale-csi-operator@sha256:1e579401a52f4ae12eff2b0b61b83af12d37d354a80d2ee6b83b9ac6b7cc01e2
Driver : quay.io/badri_pathak/ibm-spectrum-scale-csi-driver:pvc_max_size_v1

Create 1 Gi PVC :

[root@ocppr1226]# cat pvc.yaml
apiVersion: v1
kind: Pod
metadata:
  name: csi-scale-fsetdemo-pod-2
  labels:
    app: nginx
spec:
  containers:
   - name: web-server
     image: nginx:1.22.0
     volumeMounts:
       - name: mypvc
         mountPath: /usr/share/nginx/html/scale
     ports:
     - containerPort: 80
  volumes:
   - name: mypvc
     persistentVolumeClaim:
       claimName: scale-advance-pvc-1
       readOnly: false

---

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: scale-advance-pvc-1
spec:
  accessModes:
  - ReadWriteMany
  resources:
    requests:
      storage: 1Gi
  storageClassName: ibm-spectrum-scale-csi-advance

---

apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
   name: ibm-spectrum-scale-csi-advance
provisioner: spectrumscale.csi.ibm.com
parameters:
   volBackendFs: "fs0"
   version: "2"
reclaimPolicy: Delete
allowVolumeExpansion: true
[root@ocppr1226]# oc apply -f pvc.yaml
pod/csi-scale-fsetdemo-pod-2 created
persistentvolumeclaim/scale-advance-pvc-1 created
storageclass.storage.k8s.io/ibm-spectrum-scale-csi-advance created
[root@ocppr1226]#
[root@ocppr1226]# oc get pvc
NAME                  STATUS   VOLUME                                     CAPACITY   ACCESS MODES   STORAGECLASS                     VOLUMEATTRIBUTESCLASS   AGE
scale-advance-pvc-1   Bound    pvc-4ed38513-a27a-4693-9625-53cc8442f95e   1Gi        RWX            ibm-spectrum-scale-csi-advance   <unset>                 59s
[root@ocppr1226]#

Expand PVC size to<PHONE_NUMBER>854775807Gi :

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: scale-advance-pvc-1
spec:
  accessModes:
  - ReadWriteMany
  resources:
    requests:
      storage:<PHONE_NUMBER>854775807Gi
  storageClassName: ibm-spectrum-scale-csi-advance
[root@ocppr1226]# oc apply -f pvc.yaml
pod/csi-scale-fsetdemo-pod-2 configured
persistentvolumeclaim/scale-advance-pvc-1 configured
storageclass.storage.k8s.io/ibm-spectrum-scale-csi-advance unchanged

Check log error :

[root@ocppr1226]# oc describe pvc
Name:          scale-advance-pvc-1
Namespace:     ibm-spectrum-scale-csi
StorageClass:  ibm-spectrum-scale-csi-advance
Status:        Bound
Volume:        pvc-4ed38513-a27a-4693-9625-53cc8442f95e
Labels:        <none>
Annotations:   pv.kubernetes.io/bind-completed: yes
               pv.kubernetes.io/bound-by-controller: yes
               volume.beta.kubernetes.io/storage-provisioner: spectrumscale.csi.ibm.com
               volume.kubernetes.io/storage-provisioner: spectrumscale.csi.ibm.com
Finalizers:    [kubernetes.io/pvc-protection]
Capacity:      1Gi
Access Modes:  RWX
VolumeMode:    Filesystem
Used By:       csi-scale-fsetdemo-pod-2
Conditions:
  Type       Status  LastProbeTime                     LastTransitionTime                Reason  Message
  ----       ------  -----------------                 ------------------                ------  -------
  Resizing   True    Mon, 01 Jan 0001 00:00:00 +0000   Wed, 02 Oct 2024 23:42:37 -0700
Events:
  Type     Reason                 Age                 From                                                                                Message
  ----     ------                 ----                ----                                                                                -------
  Warning  ProvisioningFailed     2m10s               persistentvolume-controller                                                                                storageclass.storage.k8s.io "ibm-spectrum-scale-csi-advance" not found
  Normal   Provisioning           2m8s                spectrumscale.csi.ibm.com_ibm-spectrum-scale-csi-provisioner-7f698474dd-xmhjf_e8c67c0b-ed68-46ab-b105-d4f95529af26  External provisioner is provisioning volume for claim "ibm-spectrum-scale-csi/scale-advance-pvc-1"
  Normal   ExternalProvisioning   98s (x4 over 2m8s)  persistentvolume-controller                                                                                Waiting for a volume to be created either by the external provisioner 'spectrumscale.csi.ibm.com' or manually by the system administrator. If volume creation is delayed, please verify that the provisioner is running and correctly registered.
  Normal   ProvisioningSucceeded  86s                 spectrumscale.csi.ibm.com_ibm-spectrum-scale-csi-provisioner-7f698474dd-xmhjf_e8c67c0b-ed68-46ab-b105-d4f95529af26  Successfully provisioned volume pvc-4ed38513-a27a-4693-9625-53cc8442f95e
  Warning  ExternalExpanding      26s                 volume_expand                                                                                waiting for an external controller to expand this PVC
  Normal   Resizing               13s (x7 over 26s)   external-resizer spectrumscale.csi.ibm.com                                                                          External resizer is resizing volume pvc-4ed38513-a27a-4693-9625-53cc8442f95e
  Warning  VolumeResizeFailed     13s (x7 over 26s)   external-resizer spectrumscale.csi.ibm.com                                                                          resize volume "pvc-4ed38513-a27a-4693-9625-53cc8442f95e" by resizer "spectrumscale.csi.ibm.com" failed: rpc error: code = Internal desc = ControllerExpandVolume - Volume expansion volID:[1;1;2815005349453165873;614A0B0A:66FAF656;933d520f-c34b-4f75-a75a-3777f6c4551b-ibm-spectrum-scale-csi;pvc-4ed38513-a27a-4693-9625-53cc8442f95e;/mnt/fs0/933d520f-c34b-4f75-a75a-3777f6c4551b-ibm-spectrum-scale-csi/pvc-4ed38513-a27a-4693-9625-53cc8442f95e] with  requested volSize:[9223372036854775807] is not allowed beyond max PV size:[1023999368203599872]
[root@ocppr1226]#

Expand PVC size to 2 Gi

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: scale-advance-pvc-1
spec:
  accessModes:
  - ReadWriteMany
  resources:
    requests:
      storage: 2Gi
  storageClassName: ibm-spectrum-scale-csi-advance
[root@ocppr1226]# oc apply -f pvc.yaml
pod/csi-scale-fsetdemo-pod-2 configured
storageclass.storage.k8s.io/ibm-spectrum-scale-csi-advance unchanged
The PersistentVolumeClaim "scale-advance-pvc-1" is invalid: spec.resources.requests.storage: Forbidden: field can not be less than previous value

Expected behavior
PVC size should increase to 2GB as current PVC size is 1GB
Data Collection and Debugging
[root@ocp D.1227]# pwd
/scale-csi/D.1227
[root@ocp D.1227]# ls
mustgather.tar.gz

@saurabhwani5 There are several open issue in the external-resizer regarding this same issue. I haven't found any resolution in the latest external-resizer as such.Still discussion has been added in the https://github.com/kubernetes-csi/external-resizer
We need to wait to get this fixed.
Reference : resize failed and can't recover due to pvc rejection "Forbidden: field can not be less than previous value "

As we have discussed, this is going to be released later in kubernetes releases as this is feature-gates in 1.31 . Keeping this open for now. @saurabhwani5


build: use licensed to trace 3rd party licenses

TODO

[x] add pre-commit hook or CI job to check licenses
[x] generate LICENSES-3rd-party.csv from .licenses

Closing as we keep the current way of managing 3rd party LICENSES. cc @therve


chores: Create issue_metrics github action

Description

https://github.com/github/issue-metrics
Development notes

Checklist

[ ] Opened this PR as a 'Draft Pull Request' if it is work-in-progress
[ ] Updated the documentation to reflect the code changes
[ ] Added a description of this change in the relevant RELEASE.md file
[ ] Added tests to cover my changes

Framework counterpart: https://github.com/kedro-org/kedro/pull/2814

Maybe we can explore do both repositories in one go, it may requires lifted permission though.

@noklam Do you still want to complete this?

Closing as we are not using this in a meaningful way for the other repo, I can resume this if we end up found this useful.


Actual_Group bind problem in Interface

interface logic_gate_if;

logic[3:0] a, b;
logic[5:0] c;
logic[5:0] c_2; // increment c by 2

endinterface

module or_ex(
    input logic[3:0] a, b,
    output logic[5:0] sum, sum_new
);

logic_gate_if lg ();  // import all signals from interface

assign lg.a = a;
assign lg.b = b;
assign sum = a+b;
assign sum_new = lg.a + lg.b + 2;  // increment sum by 2

endmodule

UHDM Output::
 |vpiContAssign:
  \_cont_assign: , line:17:8, endln:17:16, parent:work@or_ex
    |vpiRhs:
    \_ref_obj: (work@or_ex.a), line:17:15, endln:17:16
      |vpiName:a
<EMAIL_ADDRESS>      |vpiActual:
      \_logic_net: (work@or_ex.a), line:11:22, endln:11:23, parent:work@or_ex
    |vpiLhs:
    \_hier_path: (lg.a), line:17:8, endln:17:10
      |vpiName:lg.a
      |vpiActual:
      \_ref_obj: (lg), parent:lg.a         <-------------------------
        |vpiName:lg
      |vpiActual:
      \_ref_obj: (a), parent:lg.a
        |vpiName:a
        |vpiActual:
        \_logic_net: (work@or_ex.a), line:11:22, endln:11:23, parent:work@or_ex

Both of these issues have low priority. Today Surelog only does binding for the base object of a hierarchical path. The selectors are not bound. This is a significant effort and it is an enhancement.

Both of these issues (#1467 or #1466). In One issue Surelog does binding base object and in another issue Surelog does binding selectors.

Fixed by #2102


Where can I find the source code of version 23.1.1

This repository only hosts 3 releases, starting with 23.4.0
I am looking for the sources of https://www.nuget.org/packages/Xamarin.Android.Support.v4/23.1.1

That was released prior to us open sourcing our code for Android Support Library bindings.  Unfortunately, that code is not publicly available, sorry.


Barcodes - again.

I've recently offered input, etc. regarding the use of barcodes with Inventree.   Lately I've been quiet on that front (which may have been welcome!) It's because I've been off trying to put a box around the barcode problem so that I could start working on incorporating some useful functionality.  I'm going to share here what I've learned so far, what I see as being challenges, and how I propose we (ok, you) consider handling barcodes.
Existing labeling on distributor packaging of electronic parts
Some distributors use a single 1D barcode; some use an array of 1D barcodes.  Some use a single 2D barcode; some use a combination of a 2D barcode and an array of 1D codes.  Some have no barcodes, and thus represent a different problem to be dealt with elsewhere.
2D barcodes used
When a 2D barcode is used, it is typically an ECC-200 DataMatrix code.  These contain multiple fields of information.  There is also significant error correction, rendering the chances of a mis-read of the barcode or any field within it as infinitesimally small. DataMatrix codes have all (in my surveys to date) been encoded using the ECIA standard field prefixes as listed in EIGP 114.2018. Notably, none of the standard fields defined by the standard include the distributor who packed the package!  PDF417 is also used, but AFAIK only by DigiKey for a transitional period between 1D and DataMatrix.
Single 1D code
A package with a single 1D barcode may be a Digi-Key package older than a certain date (not sure when); these can be submitted to DK through their API to retrieve additional information.  However, it may NOT be a Digi-Key barcode; there is no unique identifier proclaiming such, and if we are using a keyboard wedge scanner we won't get the metadata to know whether it was a Code 128 or Code 39 barcode.  Packages from Future, as an example, have a single barcode as well.  I don't know of a way to positively identify which vendor produced a bag just by parsing its barcode.
Multiple 1D codes
For packages with multiple 1D barcodes, several pieces of information are typically presented, one per barcode.  Unless the distributor chose to prefix the data which is encoded into the barcode with an ECIA-style prefix or equivalent identifier, I don't see a way to positively identify (e.g.) which field is MPN and which is invoice number.  Some distributors do provide those prefixes: within my survey Mouser, NAC Semi, and Arrow do not, but Bel (mfg, not dist) provided them on a package for an SFP module, and both Kingbright and Kemet also provide field IDs on their 1D barcode arrays.
In an array without field identifiers, it might be possible to identify the distributor and format by looking at the layout of the barcodes, e.g. five barcodes in a single column, all Code 128, spaced 1.5x their height, might be a sufficiently unique signature to say "This is an Arrow bag, and we can map barcodes in order to the following fields:.."  but in my experience this tends to fail on a couple of levels.  One, it's hard to be certain that you've captured all the barcodes.  Two, you have to be capturing with OpenCV and pyzbar or an equivalent method, so that you can get codes types, locations, etc to decipher the mapping / layout.  Three, the number and placement of the barcodes changes even if its the same vendor - I have Mouser bags with 5 barcodes, and some with 9, and even the same fields show up in different places in the layout.  Fourth, there is insufficient error correction in the 1D codes and so you can get erroneous readings. So, I just don't see this as being a robust and viable method.
DataMatrix is awesome
Where there is a DataMatrix code available, I believe that should be our primary source of data for ingestion from the bag.  The error correction and field identifiers dramatically simplify the process of collecting data and assigning meaning to it. The only drawbacks that I see are 1. no identification of the distributor, and 2. which fields are present in any given datamatrix can be variable.  I have, e.g., a Mouser bag which was purchased by a CM doing a turnkey build for us.  It includes a Customer Part #, which is in this case the CMs build number followed by the first refdes to use that part.  For this package and other similar cases, there is NOT a field in this datamatrix which contains MPN, but there is a 1D barcode that does.
SO, what to do?
I think there are a few ways to ingest data from the above data sources.
For packages without DataMatrix but with multiple 1D codes without field IDs, we should probably use a handheld wedge and manually scan individual codes into the appropriate fields.  This provides us with improved resistance to typos and faster entry, but still requires a person to perform the mapping manually in real time by selecting the entry field and the barcode to scan into it.  This method really doesn't need any barcode parsing or other custom code, just bang the data where you want it one piece at a time.
For packages with a single 1D code, I think we will need to require that the user identify the vendor and select an appropriate API endpoint, or else handle all of the parsing and so forth in a client-side app which provides data in an Inventree-friendly, non-vendor-specific format.  I don't think we can auto-ID the distributor in this case, so we need operator guidance.
For packages with DataMatrix, I think we should use the data in the code itself directly as much as possible, and reserve using the remote API for situations in which the required data simply isn't present and the distributor ID can be manually determined.  I have found DataMatrix using the ECIA field IDs on Digikey, Mouser, Newark, Kingbright, and Kemet so far.  All use Format 06, identified with ' [)>{rs}06 ' for the first two fields where {rs} is a Record Separator character between the fields. The exception is Mouser, who uses the same format but use '>[)>06' for the header; I believe this is a misspelling of the intended header, confusing Hex 29 with ASCII 29.  So, except for Mouser and NAC, I don't see a robust way to identify Distributor just from reading barcodes or DataMatrix codes.  But we can extract a large number of other fields directly:
Format 06 field codes

Field Name
Data Identifier

Ship From
n/a

Ship To
n/a

Customer PO
K

Package ID (Intermediate Label)
3S

Package ID (Logistic Label)
4S, 5S

Packing List Number
11K

Ship Date
6D

Customer Part Number
P

Supplier Part Number
1P

Customer PO Line
4K

Quantity
Q

Date Code
9D, 10D

Lot Code
1T

Country of Origin
4L

Serial Number
S

BIN Code
33P

Company Logo
n/a

Package Count
13Q

Revision number
2P

ECCN
n/a

Weight
7Q

Manufacturer
1V

RoHS/CC
E

Reel ID
n/a

Moisture Sensitive Level
n/a

Moisture Barrier Bag Seal Date
n/a

I've also found a 3P field, which on a Newark bag mapped to SKU.  Digi-Key use their SKU for customer P/N if you don't provide one  (P); I also found a J field, which isn't listed on the ECIA format, on a DK pre-pack package.
Given all of the above (sorry), it seems to me that the idea of automagically hoovering up all the content on barcodes on a given package and converting that into Inventree data is optimistic.  I suspect that this entry process will be a combination of automating as much as can be done robustly, and depend on the operator to fill the gaps.  For DataMatrix extraction, I believe that we need to pass a dict to Inventree which contains either the raw DataMatrix scan including all the control characters, or else a list of fields per ECIA and their contents.  Using a handheld scanner presents the problems discussed above regarding metadata, etc. but also adds another complication: it's difficult to know what those control characters will look like.  I have three wedges, two bluetooth and one wired.  Only the wired one gives me control codes; the other two (usually) replace them with ASCII characters '29' instead of the ASCII character #29.  That may be entirely due to their interaction with my OS (Catalina), but has so far defied my efforts and the vendors' as well to provide those control characters for error-free field delimiting.
Proposed Path
Accordingly, I believe the best way of extracting data from packages is either a camera-based system whose decoded output and metadata can be sent to Inventree for parsing, or else manual capture by scanning codes directly into fields as if typing them. I've been struggling for a few weeks now to try to follow the path you've set of validating to a given distributor, but I just don't see how.  I think this strategy may be ripe for re-examination.
Inventree QR codes
Having spent all this time understanding how the industry uses barcodes and what data we can extract from them, I strongly believe that the use of Inventree's own QR codes is vital to efficient management of the inventory.  I still agree that we can use a hash of whatever data is already present to generate a UUID, but I'm not sure that's really the best way.  1D barcodes remain subject to misreading, 1D arrays can easily drop one member, so I think it's really only useful to use existing barcodes if they have some sort of error correction.  DataMatrix codes do but they are large and contain extended characters which may or may not come through the same way if using a different scanner than originally hashed from. Inventree's QR codes tick all the boxes: error correcting, ASCII only so reads the same from anywhere and can be used with a keyboard wedge, contains exactly the information we want in the form we want it.  So I think we use whatever methods we can to automate and simplify the gathering of bag data, and then promptly put our own label on it as part of the stock addition process.
Now that I'm at this stage with the background research, I'm going to move forward with trying to incorporate these processes into a branch of Inventree. I don't want to hijack your development path or plans or anything like that - please let me know if you object, have comments, suggest improvements or alt strategies, whatever.
Thanks yet again for this project.

Hey @rco3 thanks for this insanely in-depth work! I have not had an opportunity since our last discussion to look into barcodes any further (although barcode scanning is now working in the Android app!).
Firstly, can you provide some resources / links to where you are getting the information on the barcode encoding?
I wholeheartedly agree that barcode scanning is going to be a key component in making InvenTree useful - and easy to use!
Following are a few use-cases I have come up with for barcodes

Tracking an individual stock item through acceptance testing and commissioning - various test stations could read the QR code and record test results against the stock item
Accepting incoming goods (here, reading third-party barcode formats would be very useful)
Tracking stock items after incoming goods inspection (perhaps using a third-party barcode as a UID)
Stock manipulation actions

Assign stock items to a sales order
Move stock items into a particular location

Other uses?...

I think that using a camera-based solution which can recognize multiple barcodes sounds quite complicated, and a solution which uses a barcode scanner would be more user-friendly. But, as you point out, where a package contains multiple barcodes, then the user needs to determine which barcode contains which data.
I would be interested in picking a small part of this to implement first, and see how we go. Do you have an idea of where you might start working on this? Any barcode scanning functionality would need to have the matching UI elements created.
I assume that the handheld barcode scanners act like a keyboard device - i.e. the data is presented as if the user had typed it on a keyboard.
If this is the case, how does this data get input into the webpage? I'd need to look into this. Do you have any experience with web programming / javascript? I wonder if there is a "standard" way of implementing something like this.

Thanks for reply.
Most of my understanding of the contents of DataMatrix came from reading barcodes and comparing the contents of their fields with the human-readable data on the same label. Then I found a copy of EIGP 114.2018 which listed all those fields, confirmed some of my guesses, and added a few more I hadn't run into yet.
I spent a fruitless couple of weeks trying to derive unique and persistent patterns in the layouts of 1D barcode arrays, only to see variations that render the idea meritless.
On to implementation and usage:
I am insanely desperate for support for each of your mentioned use cases.  I'm liking the first one in particular, especially if there is a camera involved:  my thought was to point a camera at the DUT on the test jig and take a barcode scan every time a test is started, every time it finishes,  and even between steps if there are multiple steps. Same idea, I wasn't assuming multiple test stations, but we're both thinking that automatically identifying the DUT is cool.
The acceptance of incoming stock is a particular concern of mine, with additional emphasis on the initial population of a new Inventree database from an existing inventory.  That's one reason I've been trying so hard to ingest multiple styles of barcode labeling, but as I've tried to detail above it's the details that get ya.
Where I have assemblies consisting of multiple serialized parts, I'd love to be able to track (scan) the serial numbers of parts used in the build and add them to the build sheet of the top-level assembly.    The hashing of distributor or manufacturer barcodes for a UUID might be really good here, some parts already have barcodes on them from factory.
First Steps
Where to start?

I propose that the first thing we need to do is get Inventree QR codes into a printer (with text for people) and thence onto bags.

The second is to be able to scan those codes for various tracking purposes.  Android app is a good step, into Inventree via web interface is critical in my view.

Third would be (IMHO) to add the capability to decode and parse DataMatrix for stock intake and UUID.  We could potentially use the same API and /or onscreen text entry field for these two codes - differentiation isn't hard, here.  QR codes won't have a unique prefix, but they will have fields that can be directly read without need for further classification. DM codes do have a unique identifier as such: we can make a fairly strong assumption that if the barcode string starts with '[)>' or with '>[)>06' that it's a 2D barcode with distribution information encoded per EIGP 114.2018, and then we know how to decode.

A simple text field into which a wedge is scanned would work, assuming we can read or infer field codes.  Yes, it acts just like a keyboard. For a camera-based system, I think the only way to handle that is with an API endpoint expecting a dict or some type of multi-field data structure containing the raw barcode, with known field delimiters, and some additional metadata - basically like the intermediate product Maholli used for passing data from his camera capture module to the API interface module.  We could also simply put the entire camera and OpenCV chain into Inventree and accept still images to decode... that opens up a LOT of processing capability, but adds server load.
For Stock intake, the use of the 'K' field could allow us to automatically associate a Stock Item with a Purchase Order, for verification of goods received or some such feature.
Oliver, I have far less experience programming for web and with Javascript than I do in Python, which I am picking up as I go along.  I gotta go to work now, let's follow up and refine what we want to do here.  Feel free to suggest a more direct venue for this conversation if you feel we're clogging up the Issues list.

Use Cases
Let's assume that we have a large text field on the front page into which one can scan barcodes.  Maybe it could be a text search entry field as well?  Anyway, we get what we think is a barcode, and we validate it as a barcode.  Now what?
Depends on what kind of barcode.  If it's an Inventree QR code (IQR), then obviously we are highly likely to already know about it... unless someone brings a barcode from their Inventree database over to ours - hey, is there a unique database ID in the IQR?.  Well, assuming it's really 'ours', we already know what the Stock Item is.  So, we have a few options to deal with items we have in the system.  I'll list what I can think of that a person holding a package might want to do with it:

'Take Me Home': Return this package to its (default, most recent) storage location. Optionally, ask to verify actual quantity being returned. Optionally, light up LEDs in appropriate storage area, direct laser beams at storage location, play appropriate walk-in music, smoke machines, suggest HazMat suits, whatever.
Check Out: remove a package or quantity of parts from their storage location, for prototyping or other situations in which the number of required parts may not be known.  Associate with a user would be nice.
Stock Count: Count parts in this package
Stock Remove: If not associated with an existing Sale or Build, then this allows for the removal from stock of a quantity of this Stock Item for other reasons (which operationally should probably be noted at the time of removal)
Stock Add: The functionality is obvious, the use case less so; wouldn't we ordinarily associate a given Stock Item with a particular Build or Buy transaction, Invoice, PO? And a new purchase/Build should have a different IQR by dint of being a separate Stock Item, esp if serialized?  Otherwise, if this is returned Stock it should be handled  by 'Take Me Home' from a user POV.
Serial Number retrieval: decode if embedded, retrieve from dB by reference if not.

Now, what if it's a Format 06 DataMatrix per previous comments?
Assume that we have validated as such and have identified field codes we recognize; next?

Hash the code and validate against the list of previously-captured and associated DMs. Assuming that we're trying to track inventory here, if we've previously scanned and ingested this package and printed an IQR then we should associate the hash with that Stock Item, which I believe is already supported.  If we find it, we follow the above process / option list and the problem is now solved.  Offer to print a new IQR label since the old one done fall off. Maybe suggest flipping it around to see if the IQR is there first. (Note to self: don't put IQRs on the bottom of open tubs.)
If not...
We have a new friend! This package is new to our system.  We need to ingest it.  Break down the message using field delimiters previously identified. Use the reference list above to assign DM fields to Inventree fields.  We will need to create a new Stock Item; we may also need to create a new Company Part (Vendor SKU), possibly new Company (Vendor), and perhaps even a new Part and maybe even Part Category.   Ideally, the ingestion process would search for existing matches to all these and prepopulate exact matches, offer options for fuzzy matches.
There is a fair amount of plumbing to be done here, but most of the information is usually in the DM in various well-ID'd fields.  The notable exception, of course, is Company (Vendor) which is not even a field in the standard. User will have to select and maybe create.
Extended information like Description,  Category, various Parameters like Resistance, etc. can all be acquired from many vendors' APIs...but the legality of storing that data in our database is questionable.  I would be most hesitant to store DK Description fields this way, for example... but maybe using info gathered this way to inform or at least suggest Category would be OK.

Oh, and associate that DM hash with the new Stock Item.
Ultimately I don't think we can trust any fully-automated process to ingest, I believe we have to have a person to be the final approver.  Especially if we offer fuzzy matching, we don't need to allow ADA4877-1ARZ to be confused with ADA4877-1ARMZ - somebody will be upset eventually.

This python package looks interesting - https://pypi.org/project/pylabels/
I was considering how to do "generic" labels over the weekend and pretty much every concept I thought of is covered here.
However "generic" is often the enemy of "easy". I want to support different styles of label printing but also it should be easy to use - most users will not want to have to muck around with custom code, etc.
Consider the different types of label "printing" available - for example at work I have a P-Touch label printer, and also print to Avery-style labels with a regular printer. Then there's also systems such as thermal label printers.
What I am imagining is that we can create label "templates" - and the user could (for example) select which template they want to use in their settings file. I'll have a play around with the pylabels module and see if it is going to meet the requirements.

Had a quick look at pylabels. Lotsa good stuff there. Good support for Avery-style, including printing on partial sheets.  Didn't see much explicit support for roll-style label printers like my Dymo 450, but I didn't look very deeply yet.  Maybe the use of such one-at-a-time type label printers simply requires the definition of a 'sheet' the size of a label.
Looks like it depends heavily on ReportLab library for the actual drawing.

Oliver, you are KILLING it. Chapeau.

Glad you approve :) Have a look at some screenshots over in the other thread. It is starting to come together nicely.

OK, I still don't know of a way to validate a barcode as being a Digikey barcode, but I know how to validate a DataMatrix in Format06 as such, whether it's Digikey's or Mouser's or whoever's version.  Plus, I think we can auto-adapt to whatever control or escaped characters a given wedge returns for the Group Separator and Record Separator characters.  Digikey will want those escaped: "Please ensure the Record Separator character is encoded as \u241E and the Group Separator ... character is encoded as \u241D" for submitting to their API - at least that's what they said, maybe they're being clever too.
Anyway, if we read "[)>" with something in the middle "06" we can assume that whatever is in the middle there is the RS character, and the GS character is -1.  Unless, of course, it's just the two ASCII characters '3' and '0' for the RS and '2', '9' for GS, which TWO of my Bluetooth wedges return.  I'm not sure how we confidently identify each occurrence of the sequence 29 as a GS character without screwing up some part numbers.  Then there's Mouser, who start with '>[)>06' followed by the GS.  Them, we can identify. Then we can yank all the fields and see what we recognize.

I'd like to put to your consideration blabel It seems to be quite simple and easy to define the labels using (jinja templated) HTML and CSS, plus has built in support for barcodes. Not affiliated with the project, just found it the other day and it seems pretty neat for printing inventory labels on a thermal printer.

@iromero91 it looks like a very nice option! Great find! Would work well for tape printers for sure!

Also notable items regarding label/labelling
https://github.com/michaelrsweet/lprint
https://github.com/jimevins/glabels-qt

I would like to redo inventory management for my home lab and came across InvenTree. Awesome project! It seems that people are primarily using thermal printers for printing labels. Do you have any concerns about the longevity of the produced labels?
I was rather thinking about using laser printer and Avery-style sheets, which will require a support for printing on partial sheets. Already mentioned glabels supports that. One can do something like the following, the -f sets which label should be considered as a first one on the sheet:
glabels-3-batch -l -C -f 7 -i /dev/stdin -o /dev/stdout label_template.glabels < data.csv > labels.pdf

Have there been any recent thoughts about integration of such workflow (e.g. is this even something you would consider)?

@bobek we currently do not support this setup fully (selection of the space to start printing is not supported).
Seems to be not to hard to get this into the reports-framework. The settings for something like this would be a lot of work for sure. I do not know of anybody working on something like this right now. We appreciate PRs and are ready to help ;-).

@bobek I did have a look at supporting avery style labels a while ago, but it's not my personal workflow to use those so never implemented it. glabels did look pretty good, though...
I'd recommend you open a new issue / pull request for this rather than continuing the discussion here.

Closing out this issue as it turned into an open-ended discussion. Support for label printing and barcodes has come a long way since this discussion.


Data Management API: add catalog endpoint

Feature Request
Currently the /catalog endpoint is exposed through the control api, as it went deprecated, it would be good to add the api to the data-management api module.
Which Areas Would Be Affected?
data-management api
Why Is the Feature Desired?
To expose the catalog REST endpoint.
Solution Proposal

Type of Issue
enhancement
Checklist

[x] assigned appropriate label?
[x] Do NOT select a milestone or an assignee!

Yes, the scope is to move the current /catalog api into the data management api module, so after then we could delete the control api module (#1116)


Set --expect-discarded-cache option

This PR changes the action to pass --expect-discarded-cache to the last codeql database run-queries invocation to improve performance.
Merge / deployment checklist

[x] Confirm this change is backwards compatible with existing workflows.
[x] Confirm the readme has been updated if necessary.
[x] Confirm the changelog has been updated if necessary.

I made the suggested changes and added unit tests.  PTAL.  Thank you!


Update creating_and_whitelabeling_a_subuser_to_a_new_sending_domain.md

Updated Contact Support link.

Hello @iritch42,Thanks again for the PR! We appreciate your contribution and look forward to                                              continued collaboration. Thanks!                                             Team SendGrid DX


no emit error when integrate stylelint

no emit error when integrate with stylelint
postcss-loader version: 3.0.0
stylelint version:9.10.1
i set stylelint severity as error but only show warning.
i read postcss-loader source index.js,but not found a place to emit error.
hope to support emit error

It is not good idea using stylelint in postcss-loader, he doesn't validate files inside @import (css), anyway you can use postcss-reporter

i use less loader first, then use postcss-loader, so @import  is ok. postcss-reporter can not recognize my stylelint error level config..so may be  stylelint-webpack-plugin is good

or maybe i send a pr to specail handle stylelint

@zcs19871221 no need send a PR, i strongly recommend use CLI stylelint instead as part of webpack. Why:

More abilities
Using stylelint as postcss plugin or as webpack plugin increase compilation time
All new features are immediately available.
Easy setup.
Stylelint plugin is abandoned due it is really bad idea.

Out of scope postcss-loader


@Data is not equivalent to @RequiredArgsConstructor

The Javadoc for @Data says it is equivalent to @Getter @Setter @RequiredArgsConstructor @ToString @EqualsAndHashCode but I believe that @RequiredArgsConstructor should be replaced by @AllArgsConstructor

@RequiredArgsConstructor means all final fields are required by the constructor.
@AllArgsConstructor means all fields including non-final are required by the constructor.
At least in my experience, @Data behaves as @RequiredArgsConstructor
Here are examples to demonstrate:
@Data
static class Foo {
    private final String bar;
    private String baz;

    static Foo create() {
        Foo bar = new Foo("bar");
        bar.setBaz("baz");
        return bar;
    }
}

@RequiredArgsConstructor
static class Foo1 {
    @Getter
    private final String bar;
    @Getter
    @Setter
    private String baz;

    static Foo1 create() {
        Foo1 bar = new Foo1("bar");
        bar.setBaz("baz");
        return bar;
    }
}

@AllArgsConstructor
static class Foo2 {
    @Getter
    private final String bar;
    @Getter
    @Setter
    private String baz;

    static Foo2 create() {
        Foo2 bar = new Foo2("bar", "baz");
        return bar;
    }
}


Modal publish close event on hideOverlay

Modal publish close event on hideOverlay

Just curious, will this be merged in for a future release? It seems to work well, and not having callbacks fired when people use the overlay close is somewhat of an issue. Just wondering if I should temporarily just use his fix, or create a directive to handle this case long term.


Vscode Vendor Class Definitions

[x] Bug Report
[  ] Feature Request
Version : 1.1.5
Class definitions works well if the class is defined in the current workspace. Methods are shown and other descriptions. But won't fetch class definitions on vendor frameworks.
I do not getting any suggestions or code completion from the classes in vendor folder.
Aside from that intellisense works perfectly.

I have similar issue in Codeception framework, somehow related to namespaces.
E.g. in page object class I can see definition or hint for local stuff (such as use Page\headers\Headers;), but I cannot see hints for vendor stuff (such as use \Facebook\WebDriver\WebDriverBy; or class Login extends \Codeception\Module).

It is not clear to me how I am supposed to reproduce, please provide a clear reproduction.

Hi felix, I replicate the procedure for my project. But I think other frameworks that rely on vendor is also not working. Here is my project. The app class hover is working with its description. But the new Application doesn't give any completion.
If you can't replicate my project try starting a laravel. Same thing happens after composer install the laravel.

This is the sample of what was happening. local defined works well. But on the vendor folder it doesn't pick up class definitions and methods.
Sample Folder structure

Steps to replicate.

Init composer and require this package.

"require": {
        "r-forge/r-forge":"dev-master"
    }

on cli run composer install then composer dump-autoload -o.

This is the sample code on the index.php

<?php namespace Portfolio;

require_once __DIR__."/vendor/autoload.php";

use RForge\Application;
use RForge\Settings\Config;

Config::setConnection([
    "host"=>"<IP_ADDRESS>",
    "user"=>"root",
    "pass"=>"",
    "charset"=>"utf8",
    "driver"=>"mysql"
]);

/**
 * This app is testing intellisense
 */
class App{

}

$testApp = new App(); // <--- MOUSE HOVER SHOW'S THE CLASS DESCRIPTION

$myApp = new Application("Portfolio"); // <--- DOESN'T SHOW ANYTHING
$myApp->setTables('Models\\');
$myApp->database = "bld";
$myApp->start();

Thanks for making this extension!!!

I can't find r-forge/r-forge on packagist.org, could you explain how to install?
https://packagist.org/search/?q=r-forge%2Fr-forge

here is the link https://packagist.org/packages/r-forge/r-forge. But i think even on any library on vendor it wont work.

Hi @felixfbecker , i reinstalled all vscode and new integration of the plugin. Now it detects the classes from vendor folder. I will close this issue now. Thanks !!


Verbose or not verbose execution

What is the supposed difference between verbose and nonverbose execution? I've tried ro run bare "rocketeer deploy" and with "-v" or "-vvv" or "-v -v -v" or "--verbose", and I seem to get output with the same detail level every time.
E.g., I see white messages like "Removing 1 release from the server" or "Cloning repository in" or errors if present ("fatal: Not a git repository", "rm: cannot remove"),
red messages like "Host key verification failed." (some other type of errors apparently),
green+brown messages like "Deploy (Deploys the website)", "Deploy/Clone (Clones a fresh instance of the repository by SCM)",
purple messages (the Shell commands I've added to hooks or permission callbacks).
Which mode I'm supposed to be stuck in? And how can I switch the modes?

When I log $task->getOption('verbose') within a hook, I get "1" when I do not pass --verbose, and "2" when I do pass it.
Could it be the code that decides upon what to output expects the values be 0 and 1 respectively, so it assumes I'm in the verbose mode when the verbosity is 1, even though it actually means I haven't passed --verbose argument?