[$500] OpenPublicProfilePage API not called as soon as avatar is clicked

If you haven’t already, check out our contributing guidelines for onboarding and email<EMAIL_ADDRESS>to request to join our Slack channel!

Version Number: 1.4.42-1
Reproducible in staging?: y
Reproducible in production?: y
If this was caught during regression testing, add the test name, ID and link from TestRail:
Email or phone of affected tester (no customers):
Logs: https://stackoverflow.com/c/expensify/questions/4856
Expensify/Expensify Issue URL:
Issue reported by: @puneetlath
Slack conversation: https://expensify.slack.com/archives/C049HHMV9SM/p1708010767314729
Action Performed:

Go to a room chat
Click on the user avatar

Expected Result:
the OpenPublicProfilePage API should get called as soon as you open the profile page.
Actual Result:
it isn't getting called until you click on the avatar. This means that the profile data isn't getting loaded when you open the profile, even though it should be.
Workaround:
unknown
Platforms:

Which of our officially supported platforms is this issue occurring on?

[ ] Android: Native
[ ] Android: mWeb Chrome
[ ] iOS: Native
[ ] iOS: mWeb Safari
[x] MacOS: Chrome / Safari
[ ] MacOS: Desktop

Screenshots/Videos
Add any screenshot/video evidence
https://github.com/Expensify/App/assets/38435837/893345a8-b620-4be0-8aae-c7227d9e12f2
https://github.com/Expensify/App/assets/38435837/5e7994ba-9229-45eb-8ce0-fd1202f3e107

View all open jobs on GitHub
Upwork Automation - Do Not Edit

Upwork Job URL: https://www.upwork.com/jobs/~01eff48078e4b5dadf
Upwork Job ID:<PHONE_NUMBER>106809344
Last Price Increase: 2024-02-15

Proposal
Please re-state the problem that we are trying to solve in this issue.
OpenPublicProfilePage API not called as soon as avatar is clicked
What is the root cause of that problem?
The api is called if there is no avatar here
https://github.com/Expensify/App/blob/1c0d126ffb34e1fd103c9f6067b76af688638d47/src/pages/ProfilePage.js#L141-L142
What changes do you think we should make in order to solve the problem?

Change it to
        if (ValidationUtils.isValidAccountRoute(accountID)) {

What alternative solutions did you explore? (Optional)

As avatar url is already available in personal details list I think it should not make a call to OpenPublicProfilePage, similar case I have mentioned here (update ?? to ||)
https://github.com/Expensify/App/blob/2fe384c5a2279d65f083d828f825dc9368a3f2ef/src/pages/settings/Profile/ProfileAvatar.tsx#L31

@codinggeek2023 could you clarify what you mean?
The bug is that when you open a profile we aren't calling the OpenPublicProfilePage API. We're only calling it when you click on the avatar. This is happening whether you are an anon user or you are signed in. And no matter what user's profile you are attempting to view (from my testing).

As avatar url is already available in personal details list I think it should not make a call to OpenPublicProfilePage, similar case I have mentioned here (update ?? to ||).

Your proposed solution would break the avatar functionality in case the avatar is changed from another device because if we apply the solution that would mean the OpenPublicProfilePage won't be called anymore when avatarURL changes.
More context / video example here https://github.com/Expensify/App/issues/36577#issuecomment-1948520398.

Proposal
Please re-state the problem that we are trying to solve in this issue.
OpenPublicProfilePage API not called as soon as profile page is opened.
What is the root cause of that problem?
See

pages/ProfilePage.js
libs/actions/PersonalDetails.ts

OpenPublicProfilePage api call made in PersonalDetails.openPublicProfilePage.
ProfilePage receives personal details in props, normally. If so, hasMinimumDetails is set to true, which prevents openPublicProfilePage from being called.
What changes do you think we should make in order to solve the problem?
ProfilePage calls openPublicProfilePage regardless of value of hasMinimumDetails.

@FitseTLT Could you elaborate on the root cause analysis? Are we discussing a corner case? Is the current (old) hasMinimumDetails logic working in any circumstances? You suggest adding two checks in the new proposed condition: details.avatar and details.login. When is one of these non-empty when the other is empty, and vice versa?

@cubuspl42 the issue itself is about the API call not being made, not about personal details not being current. Is there some reason the issue was written the way it was, some reason why the API call MUST be made when the profile page is opened?

I think we should use hasMinimumDetails in order to decide whether to show the blocking view. But no matter what we should call the API when opening the page so that we ensure we get the most up-to-date details.

In such a case, I believe we should go with @kmbcook
C+ reviewed 🎀 👀 🎀

@cubuspl42 @puneetlath By the way, calling the api unconditionally was the first version of my proposal and then I realized that the hasMinimumDetails condition was there to minimize unnecessary call to the api and I still agree with that. Any changes in personal details data gets pushed automatically (I have checked it)
https://github.com/Expensify/App/assets/38649957/2918255a-134a-46df-abd3-90cc8b0b6e46
I don't think we should call the api everytime the page is opened. The only problem with the current code is assuming data is ready when the avatar exists so we should ensure other props are available too like login (pronouns etc). WDYT guys?

There are scenarios where personal details don't get pushed from the back-end (e.g with public room users you don't know). So I think it makes sense to call the API when we open the page, just like we call the OpenReport API every time you open a chat.
I think hasMinimumDetails is a badly-named variable and was always only meant to determine whether we should show the loading indicator or not. Something like shoudlShowLoadingIndicator makes more sense to me.

I'm planning to have a PR ready tomorrow.

Sorry, I'm going to need another day. The code changes are ready, but this is my first time navigating the reporting and testing requirements and I'm struggling. One of my challenges is to get video which shows that the API call is made on each of the platforms. I've done that for four of the six so far, at least clunky video. I'm yet not sure how I'm going to do it for Mac Desktop.

You can toggle dev tools in the Mac Desktop app. It's in the "view" section of the toolbar.

C+ review complete, next up is @stitesExpensify to review

merged

@cubuspl42 the issue itself is about the API call not being made, not about personal details not being current. Is there some reason the issue was written the way it was, some reason why the API call MUST be made when the profile page is opened?

Given that this issue requires the API call to be made, are these two issues mutually exclusive (this one and https://github.com/Expensify/App/issues/37986)?

@kmbcook Not necessarily... It's a X -> Y -> Z situation. We solved problem X, and the solution uncovered a performance problem Y. Problem Y likely existed before, but it's easier to observe now.
The problem Y is likely solvable. The question is whether we handle it as a separate problem or say that it was our fault that we didn't solve X and Y in one go.
Of course, I prefer the first interpretation.

@stitesExpensify what do you think about the above re: regression?

@kmbcook can you please follow the steps here so I can pay you?

I think we go with "not a regression". While this did technically cause the problem, the actual issue already existed, and we did not ask for the lag to be fixed here on the issue, or during testing on the PR.

offer sent to @kmbcook for $500
@cubuspl42 paid $500
next up is @cubuspl42 is the checklist!

@kmbcook can you please accept the offer I sent you so I can pay you? thanks!

Done

The PR that introduced the bug has been identified. Link to the PR:

This is a kind of new feature fixing an undesirable behavior in the edge cases

The offending PR has been commented on, pointing out the bug it caused and why, so the author and reviewers can learn from the mistake. Link to comment:

N/A

A discussion in #expensify-bugs has been started about whether any other steps should be taken (e.g. updating the PR review checklist) in order to catch this type of bug sooner. Link to discussion:

No need for additional discussion

Determine if we should create a regression test for this bug.

Up to the QA team

If we decide to create a regression test for the bug, please propose the regression test steps to ensure the same bug will not reach production again.

User A and User B don't have any previous interactions
User A enters a public room.
User B enters the same public room
User B posts a message.
User B changes their Display Name.
Verify that, from User A's perspective, the Display Name of User B in their message is not updated automatically

If it updates on its own, it can mean that  these users have previous interactions

User A clicks/taps on the avatar of User B, which leads to their profile
Verify that User A's view of the profile page of User B refreshes, presenting the new Display Name

Added the regression test. @greg-schroeder - have you paid @kmbcook ? If yes, can you please close this issue? I wasn't sure if that last payment had gone out yet.

Yup! All done, closing.


Added FileReader state constants

FileReader state constants should be defined not only in prototype but in constructor object itself.

The spec doesn't state that the static versions of these constants should exist (at least to my reading). But they most definitely exist in Chrome.

I think it is the same as FileError https://github.com/google/closure-compiler/blob/master/externs/browser/fileapi.js#L338


Feature Request: Ability to use an network address as source device.

If you have your backup isos on a NAS like me, it would be nice to be able to setup a network adress / share as source device.

Shouldn't be too hard.. I'm not sure but, can you not already use windows network shares if they're listed in explorer? Will look into different ways of implementing this.. Textbox (unc path) + button (enumerate) ? Build a list of locally defined shares from windows? Ideally, changing the open-file-dialog to more like the usual file picker with the address bar available?
Suggestions on how you'd like to see it implemented?

And what about password protected shares?

My home server where I save my backups is displayed normally in Windows 10 explorer as a network device. The GameCube Backup Manager does not show any network related devices in the window where you can specify your source. I tried to mount a share as a network drive under Windows 10 but this is not displayed either. Sorry for my bad language, I can't describe it better.

If you have your backup isos on a NAS like me, it would be nice to be able to setup a network adress / share as source device.

Assuming the share is already defined and accessible through explorer, this build has a button on the source tab next to the 'Tools' submenu, that will open the folder browser dialog to the 'Desktop' root folder, which will include Network locations as well as other weird symbolic links such as Control Panel.. Definitely not.. ideal, but. does function on windows shares and mapped network drives.
I'm considering providing the option to just type the UNC path, as currently populating 'Network' takes far too long, because.. well, windows' network discovery function just chugs.
gcbm-NAS-friendly.zip

With this new button I can easily reach my network shares and everything works fine. Thank you very much for that !!


feat(contributor-guide): Adding the contributor guide in golang

Conversion of the contributor guide in golang from the python, uniformity achieved :)

Awesome work @ispeakc0de !!


Prisma bundling broken after release v3.3.16

I have a similar setup to the Prisma lambda example , however after release v3.3.16 I've discovered that the bundling no longer works as before and I receive the following error response:
Prisma Client could not locate the Query Engine for runtime \"rhel-openssl-3.0.x\".\n\nThis is likely caused by a bundler that has not copied \"libquery_engine-rhel-openssl-3.0.x.so.node\" next to the resulting bundle.\nEnsure that \"libquery_engine-rhel-openssl-3.0.x.so.node\" has been copied next to the bundle or in \"../../node_modules/.prisma/client\".

I've tried a few different configuration options but so far my only workaround is to downgrade back to v3.3.14.

When do you get this error?

Any time a prisma query is executed during runtime

Are you Prisma versions the same as the example? https://github.com/sst/sst/blob/dev/examples/aws-prisma-lambda/package.json

@jayair I'm using the latest Prisma version 5.22.0.
I'm also using a monorepo in case that's relevant.

I've also tried the latest prisma version 6.0.1 but still get the same error that the query engine could not be found during runtime.

Might need a repo to reproduce then, maybe it's related to the monorepo setup.

@jayair https://github.com/Liamandrew/sst-prisma-example

I'll take a look.

I haven't had a chance to try your repo yet. But I retried the example we have with the latest SST and it works.
For your case I would check if this copyFiles: [{ from: "node_modules/.prisma/client/" }] is generated after you run prisma generate. And the from path is relative to the location of the sst.config.ts.


YOURLS_HOURS_OFFSET now working?

Hi guys, sorry to bother here but  have a problem with this "YOURLS_HOURS_OFFSET" config option.
Problem is, no mather to what I set it to, nothing changes (the time stored in the database is always the same.
I tried
define( 'YOURLS_HOURS_OFFSET', '-3' );
define( 'YOURLS_HOURS_OFFSET', -3 );
define( 'YOURLS_HOURS_OFFSET', 0 );
When I edit config.php, should I see the changes immediately?
Sorry for the dumb question, I just like to see the stats properly :)
Regards!

I am reasonably sure that the time in the database is not supposed to change: the offset is applied when the time is taken from the database to be displayed.  The general practice I am aware of for web dev as a whole is that all database times should be stored in UTC (which never changes) and apply your timezone offset when displaying.

Hi, thanks for the reply! Then I have a follow up question. I thought the offset applied to the statistics page (graph indicating amount of clicks and the time of each) so I was checking there, but the offset only applies to the admin panel where it shows the time the link was created. Is there any way for it to apply to the statistics page?
Just for the sake of messing around, if you create a link and have the offset you can have link clicks "before" the creation of the link (obviously a bug due to the date of creation having offset and the graph not)

Can this be solved?
Regards!

#1893 duplicate.


Merge

Codecov Report

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

@@           Coverage Diff           @@
##           master   #11223   +/-   ##
=======================================
  Coverage    53.1%    53.1%
=======================================
  Files         218      218
  Lines       26883    26883
  Branches     5952     5952
=======================================
  Hits        14277    14277
  Misses      10172    10172
  Partials     2434     2434

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 5315340...b6c6da3. Read the comment docs.

I've been asked to undo this pull request but I'm a little puzzled if I do it on my end or you do it on your end.

@lloydsargent42 , I advise you to look at https://docs.zephyrproject.org/latest/contribute/contribute_guidelines.html#contribution-workflow and follow process step by step.
This is not a big change, so I think it will be easier to start again from scratch.

@lloydsargent42  @thescruba , do you plan to do some clean up on this change?

No, it was accidental.
Feel free to remove them.

On Jan 2, 2019, at 09:02 , Erwan Gouriou<EMAIL_ADDRESS>wrote:
@lloydsargent42 https://github.com/lloydsargent42 @thescruba https://github.com/thescruba , do you plan to do some clean up on this change?
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub https://github.com/zephyrproject-rtos/zephyr/pull/11223#issuecomment-450885693, or mute the thread https://github.com/notifications/unsubscribe-auth/AbdHgKgGtwlZ32r43zZPz0v-w8AY9uVuks5u_Mn1gaJpZM4YVYHo.

Ok, I'm closing then. Txs for feedback

My apologies for the trouble. I’m still a novice at git.

On Jan 3, 2019, at 08:38 , Erwan Gouriou<EMAIL_ADDRESS>wrote:
Ok, I'm closing then. Txs for feedback
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub https://github.com/zephyrproject-rtos/zephyr/pull/11223#issuecomment-451161410, or mute the thread https://github.com/notifications/unsubscribe-auth/AbdHgNTvEEA3JpAFiFY55cpYgWzMAKcpks5u_hXUgaJpZM4YVYHo.


Developer guidelines for building fluent model and collection

This is an incomplete and changing spec for building models and collections in the new fluent SDK (master branch).
Example service
The example we use to demonstrate the guidelines is Azure Pet store management client. It has a Pets collection which supports all kinds of operations on type Pet.
Pets reside in resource group and have a location property.
Where AutoRest generated types reside?
AutoRest emits the following artifacts to implementation/api directory:
├── implementation/
│   ├── api/
│   │    ├── PetManagementClientImpl.java
│   │    ├── PetsInner.java
│   │    ├── PetInner.java
│   │    ├── Profile.java

Terminology
Top level model : Inner models that represents service request or response payload. In our example PetInner.java is a top level model.
Given below a sample payload to create a Pet entry.
{
  "id": 12345
  "name": "jacky"
  "age": 5
  "profile": {
    "homeless": true
    "weight": 25lb
  }
}

Non-top level model : These are usually simple models, the top level model composed of these models. In our example, PetInner.java composes Profile.java.
Where Fluent model and collection types reside?
interfaces
The definition of fluent interfaces for each collection and top level model should reside in the same level as implementation directory.
e.g. Pets.java (fluent collection interface) and Pet.java (fluent model interface)
├── Pets.java
├── Pet.java
├── implementation/
│   ├── api/
│   │    ├── PetManagementClientImpl.java
│   │    ├── PetsInner.java
│   │    ├── PetInner.java
│   │    ├── Profile.java

Note that Profile.java is a non-top level model so there is no fluent model interface for this.
implementations
Implementation for fluent model and collection interfaces should reside under implementation directory.
e.g. PetsImpl.java (fluent collection implementation) and PetImpl.java (fluent model implementation)
├── Pets.java
├── Pet.java
├── implementation/
│   ├── api/
│   │    ├── PetManagementClientImpl.java
│   │    ├── PetsInner.java
│   │    ├── PetInner.java
│   │    ├── Profile.java
│   ├── PetStoreManager.java
│   ├── PetsImpl.java
│   ├── PetImpl.java

Authoring fluent types

Fluent Models
Fluent Collections
Fluent Manager

Fluent models
Pet.java
// public access
public interface Pet
        extends GroupableResource {
}

PetImpl.java
// internal accessed impl
class PetImpl implements Pet {
    // internal accessed constructor
    // takes an inner model and inner collection
    PetImpl(PetInner innerModel, PetsInner client, ResourceGroups resourceGroups) {
        super(innerModel.id(), innerModel, resourceGroups);
    }

    /* Some other methods to implement */

    @Override
    public void refresh() throws CloudException, IOException {
        this.setInner(client.get(innerModel.id()));
        return this;
    }
}

Fluent collections
Pets.java
// public access
public interface Pets extends
        SupportsCreating<Pet.DefinitionBlank>,
        SupportsListing<Pet>,
        SupportsListingByGroup<Pet>,
        SupportsGetting<Pet>,
        SupportsGettingByGroup<Pet>,
        SupportsDeleting,
        SupportsDeletingByGroup {
    // public access from external will be
    public interface InGroup extends
            SupportsListing<Pet>,
            SupportsGetting<Pet>,
            SupportsCreating<Pet.DefinitionWithGroup>,
            SupportsDeleting  {
    }
}

Pets interface represents the operations that can be performed on the Pets collection across all resource groups in the service.
Pets.InGroup represents the operations that can be performed on the Pets collection in a specific resource group.
Since the most common operations that can be performed on a collection are CRUD, these operations are extracted out as runtime interfaces. The fluent collection interface extends from these runtime interfaces. Refer the section Runtime CRUD interfaces for details.
PetsImpl.java
// internal accessed class
final class PetsImpl implements Pets {
    // internal constructor
    PetsImpl(PetsInner client, ResourceGroups resourceGroups) {
    }

   // Implementation of CRUD interfaces
   ....
}

PetsInGroupImpl.java
// internal accessed class
final class PetsInGroupImpl implements Pets.InGroup {
    // internal constructor
    PetsInGroupImpl(Pets pets, ResourceGroup resourceGroup) {
    }

   // implementation of Group-level CRUD interfaces
   ....
}

Fluent manager
Manager serve as a container for all fluent collections associated with a service. Each manager will have 3 static methods that consumers can use to authenticate and get an instance of manager.
public final class PetStoreManager {

   // authenticate with configuration
   public static Configurable configurable() {
     return new PetStoreManager().new ConfigurableImpl(); }
   }

    // authenticate with default configuration
    public static PetStoreManager authenticate(ServiceClientCredentials credentials, String subscriptionId) {
       return new PetStoreManager(credentials, subscriptionId);
    }

    // authenticate using pre-configured RestClient
    public static PetStoreManager authenticate(RestClient restClient, String subscriptionId) {
       return new PetStoreManager(restClient, subscriptionId);
    }

    public interface Configurable extends AzureConfigurable<Configurable> {
       PetStoreManager authenticate(ServiceClientCredentials credentials, String subscriptionId);
    }

    final class ConfigurableImpl extends AzureConfigurableImpl<Configurable> implements  Configurable {
        public PetStoreManager authenticate(ServiceClientCredentials credentials, String subscriptionId)   {
          buildRestClient(credentials);
          return PetStoreManager.authenticate(restClient, subscriptionId);
        }
    }

    // PetStoreManager constructors
    ....

    // The fluent collection getters
    public Pets pets() {
      ...
    }
}

Runtime CRUD interfaces
Each fluent collection interface (e.g. Pets.java) should expose methods that allows users to perform C (Create), R (Read), U (Update) and D (Delete) operations on the collection. Exposing one of these method depends on whether service supports corresponding operation or not.
Create interface
public interface SupportsCreating<T> {
    T define(String name) throws Exception;
}

Read interfaces
public interface SupportsListing<T> {
    PagedList<T> list() throws CloudException, IOException;
}

public interface SupportsGetting<T> {
    T get(String name) throws CloudException, IOException;
}

public interface SupportsListingByGroup<T> {
    PagedList<T> list(String groupName) throws CloudException, IOException;
}

public interface SupportsGettingByGroup<T> {
    T get(String groupName, String name) throws CloudException, IOException;
}

Update interface
public interface SupportsUpdating<T> {
    T update(String name);
}

Delete interface
public interface SupportsDeleting {
    void delete(String id) throws Exception;
}

public interface SupportsDeletingByGroup {
     void delete(String groupName, String name) throws Exception;
}

Example

Closing as 1.0.0-beta2 released.


stop tracking channels when a channel is deleted

this makes sure that no useless tracked channels are left.

just tested and it works perfectly fine


Remove gitter bridge

See https://blog.gitter.im/2023/02/13/gitter-has-fully-migrated-to-matrix/

FWIW the README.md and GitHub project description still refer to Gitter

@Mikaela well, technically it still supports gitter, I think it can stay there, like we support twitch too (but it's also just irc)

Maybe the wiki should be updated too to reflect backend changes?


[NCL-6440] Add storybook.js

All documentation added according to comment at https://github.com/project-ncl/pnc-web-ui-react/pull/33


Likes/Reactions

So should i implement likes and then use the signals to report to activity stream that user liked this or that. Or i dont need to build the likes app and simply use this? I am a little confused on this.

Follow model has a flag field that can mark a follow as any type, such as like, favorite, watch, start etc. This feature hasn't been documented yet, so read the source code if you want to use it.

@zmrenwu could you update the docs?


Question about result codes

Hi @ospfranco,
Many SQLite functions return integer result codes like SQLITE_OK, SQLITE_ERROR, SQLITE_BUSY, etc., which are useful for analysis and making recovery decisions. I noticed in your library that these codes are replaced by error messages instead. Was this choice intentional, or was there another reason behind it?

I was returning the error codes but most people do not look at them or understand them. Feel free to open a PR to re-introduce them though.

Sure. Here are two possible implementation approaches:

Modify the BridgeResult structure by adding an extra parameter, followed by making the necessary updates in all invocation methods. This approach involves significant implementation effort and requires extra caution to avoid breaking the existing functionality.

Introduce an additional method to invoke sqlite3_errcode, which retrieves the most recent error code generated by an SQLite routine. This approach has a lower implementation effort and involves the following steps:

Client-side:

Add the method definition to the DB type.
Implement the method in the OPSQLiteProxy type.

Native-side:

Add the method definition to bridge.h.
Implement the method in bridge.cpp.

@ospfranco,  what do you think?

Looks very chatGPT, but no to the second. Multithreading makes retrieving error codes unreliable. You need to modify the responses on each call to the sqlite interfaces and their respective JSI implementations.

Thank you.


labview grpc as client?

i want python grpc as server, labview program as client,i can't find labview support client.

I look forward to your reply. Thank you

Hi @ShoutangYang - Have you tried the latest release: https://github.com/ni/grpc-labview/releases
this has support for the non-streaming LabVIEW client. Would this work for you?

I go to try.If the communication between the Labview client and the  python server is successful. Is there any requirement for
Python GRPC module or version?

I don't think so. If you have a python server built already using a proto file. Then use the same .proto to create a LabVIEW client using the latest release packages. They should be able to communicate between them well.

Client support has been implemented with the same datatype support as the server support.  You can do standard and streaming calls with a LabVIEW client now.  The scripting tool will let you select generation of a client API or server implementation for any proto file.


Using as CurrScript causes leak error on exit

Godot version
3.3.2
System information
Windows 10
Issue description
This may be a regression of https://github.com/godotengine/godot/issues/30668
When using as with the current script, you get the following error:
ERROR: ~List: Condition "_first != __null" is true.
   At: ./core/self_list.h:112
ERROR: ~List: Condition "_first != __null" is true.
   At: ./core/self_list.h:112
WARNING: cleanup: ObjectDB instances leaked at exit (run with --verbose for details).
     At: core/object.cpp:2132
ERROR: clear: Resources still in use at exit (run with --verbose for details).
   At: core/resource.cpp:450

Overall, the as thing is a minimal reproduction. This is an indication of a greater issue that scripts are not fully cleaned up properly.
Steps to reproduce
The offending code is fairly minimal. Just give a class a name, then use that with the as keyword as follows:
class_name Main  extends Node
func _init():
	var __ := self as Main

Then run that scene, and then kill it. Prints leak at exit.
Minimal reproduction project
godot_bug_Script_Cleanup.zip
The project attached to https://github.com/godotengine/godot/issues/30668 also fails

@akien-mga, Godot 4's circular dependency improvement appears to have resolved this issue. However, it is still a problem with Godot 3.x. I tested 3.6 beta 6 and it still exists.
My guess is that there is no desire to add such an improvement to Godot 3.x--and that's fine by me. In this case, I think an appropriate way to address this problem is to guard against it while parsing, just as is done with the following code:
class_name CustomClass
extends Node

func function() -> CustomClass:
	# Causes:  "Parser Error: Using own name in class file is not allowed (creates a cyclic reference)"
	if foo is CustomClass:
		pass

	return null

I would just expect it to not run rather than throwing a misleading errors concerning memory leaks "on exit".
Hero Labs' Nakama Godot addon has had a related issue filed for pretty much as long as this issue. The sentiment there was more or less "seems like a Godot thing; wait for Godot to fix it":
https://github.com/heroiclabs/nakama-godot/issues/57
With my proposed change, that addon simply wouldn't run and would force a minor re-implementation on their part rather than being confused as to what's wrong.


GitHub Copilot Chat VS Code Extension: Repeated Sign-In Prompts

Issue Description
Hello, I am experiencing an issue with the GitHub Copilot Chat VS Code extension. After signing in to GitHub, the extension works fine. However, after a few hours, it prompts me to sign in to GitHub again. I have to reload VS Code to make it work again.
ScreenShot

Steps to Reproduce

Install the GitHub Copilot Chat VS Code extension.
Sign in to GitHub when prompted.
Use the extension (it works fine at this point).
Wait for a few hours.
The extension prompts to sign in to GitHub again.
Reload VS Code to make it work again.

Expected Behavior
The extension should retain the sign-in session and not prompt for GitHub sign-in after a few hours.
Actual Behavior
After a few hours, the extension prompts for GitHub sign-in again. Reloading VS Code makes it work again.
Environment

VS Code Version: v1.93.1
GitHub Copilot Version: v1.229.0
GitHub Copilot Chat Version: v0.20.1
Operating System: windows 11

We've changed this code quite a bit in the pre-release... Can you give it a try?

Grab the Insiders build of VS Code: http://code.visualstudio.com/insiders/
Grab the pre-release version of GitHub Copilot Chat

Then try logging in again.

Ok sure I'll try.

Let's continue this in https://github.com/microsoft/vscode-copilot-release/issues/1644 since it's the same issue.


Figure out how to get lint action working

Describe the bug
Lint jobs fail with the error:
/home/runner/.asdf/plugins/nodejs/bin/import-release-team-keyring: No such file or directory

I don't understand this, it came from the asdf-plugin-template
Steps to reproduce
Run CI Lint

Lint jobs are now working https://github.com/amrox/asdf-pyapp/actions/workflows/lint.yml


Cosmwasm 0.16

Could you close https://github.com/CosmWasm/wasmvm/issues/239 in this PR too? IIRC we added test events in one of the development contracts that we can inspect in Go tests.

Looks good. We just need tests for check those events:
    Ok(IbcBasicResponse {
        messages: vec![msg],
        attributes: vec![attr("action", "ibc_connect"), attr("channel_id", chan_id)],
        events: vec![Event::new("ibc").attr("channel", "connect")],
    })

and
    .or_else(|e| {
        // we try to capture all app-level errors and convert them into
        // acknowledgement packets that contain an error code.
        let acknowledgement = encode_ibc_error(format!("invalid packet: {}", e));
        Ok(IbcReceiveResponse {
            acknowledgement,
            messages: vec![],
            attributes: vec![],
            events: vec![Event::new("ibc").attr("packet", "receive")],
        })
    })

from contracts/ibc-reflect/src/contract.rs

Looks good. We just need tests to check we get those events in Go:
    Ok(IbcBasicResponse {
        messages: vec![msg],
        attributes: vec![attr("action", "ibc_connect"), attr("channel_id", chan_id)],
        events: vec![Event::new("ibc").attr("channel", "connect")],
    })

and
    .or_else(|e| {
        // we try to capture all app-level errors and convert them into
        // acknowledgement packets that contain an error code.
        let acknowledgement = encode_ibc_error(format!("invalid packet: {}", e));
        Ok(IbcReceiveResponse {
            acknowledgement,
            messages: vec![],
            attributes: vec![],
            events: vec![Event::new("ibc").attr("packet", "receive")],
        })
    })

from contracts/ibc-reflect/src/contract.rs

Looks good. We just need tests to check we get those events in Go:
    Ok(IbcBasicResponse {
        messages: vec![msg],
        attributes: vec![attr("action", "ibc_connect"), attr("channel_id", chan_id)],
        events: vec![Event::new("ibc").attr("channel", "connect")],
    })

and
    .or_else(|e| {
        // we try to capture all app-level errors and convert them into
        // acknowledgement packets that contain an error code.
        let acknowledgement = encode_ibc_error(format!("invalid packet: {}", e));
        Ok(IbcReceiveResponse {
            acknowledgement,
            messages: vec![],
            attributes: vec![],
            events: vec![Event::new("ibc").attr("packet", "receive")],
        })
    })

from contracts/ibc-reflect/src/contract.rs

I was already working on that :D

I think we're good!


Bring back the ability to enter decimal points in numeric fields

Description copied from Mozilla Connect idea made by clmeyerva.
I think it is a bug since it won't allow users to enter decimal numbers in <input step="{step}"> html elements
Scenario:  data entry into a numeric field that should allow decimal points, example 23.3 as a value.
Issue:  Firefox allows the 23, but addition of the decimal point clears the field.
============================
From our tech support:
This appears to be an issue introduced in version 113 of Firefox, I was running 112 and this did not occur until I updated.
What is happening is the browser has decided to not allow non-numeric entries in the html number input but it doesn't seem to be very consistent about it. Presumably the issue is that ending a number in a period is not considered a valid number so it clears it before you are allowed to finish entering the decimal place numbers. It is possible to copy/paste in a full number containing a decimal place as that is considered valid, ex 12.0.
For a long time Firefox did not support this input type and would simply treat it as a text input so I suspect they've recently added this functionality and we're seeing some growing pains that will hopefully get patched out on their end in the near future.
Here's the sample code:
import React from "react";
import ReactDOM from "react-dom";

export default class App extends React.Component {
  constructor() {
    super();
    this.state = {
      value : ''
    };

    this.handleChange = this.handleChange.bind(this);
  }

  handleInput =
    (e: React.FormEvent<HTMLInputElement>) => {
      const target = e.target;
      const regex = new RegExp(`^\\d+(\\.\\d{0,${2}})?$`);
      if (!regex.test(target.value) && target.value !== "") {
        e.preventDefault();
        target.value = target.value.slice(0, -1);
      }
    };

  handleChange(e) {
    e.persist(); // Persist the event to prevent nullification
    this.setState({ value: parseFloat(e.target.value) });
  }

  render() {
    return (
      <div>
        <input type="number" value={this.state.value} onChange={this.handleChange} step="0.01" min="0" onInput={this.handleInput}/>
      </div>
    );
  }
}

ReactDOM.render(<App />, document.getElementById("root"));

Found that this is a known bug at bugzilla. Apologies for opening the issue in the wrong place


Write a JavaScript program to print multiplication table

Description
Write a JavaScript program to print multiplication table
Input  : 2

2 x 1 = 2
2 x 2 = 4
2 x 3 = 6
2 x 4 = 8
2 x 5 = 10
2 x 6 = 12
2 x 7 = 14
2 x 8 = 16
2 x 9 = 18
2 x 10 = 20

How to contribute

Save the solution in PrintMultiplicationTable.js file
Add PrintMultiplicationTable.js file in print-multiplication-table folder

!assign


Use bitmasks for timed traffic light states?

TLM/TLM/TrafficLight/Impl/CustomSegmentLights.cs
There's a bunch of similar functions such as: IsAnyGreen(), IsAnyInTransition(), etc...
Each one has the pattern:
public bool Is%Whatever%() {
    foreach (KeyValuePair<ExtVehicleType, ICustomSegmentLight> e in CustomLights) {
        if (e.Value.Is%Whatever%()) {
            return %bool%;
        }
    }

    return %!bool%;
}

I don't know how often those methods are called, but it seems a crazy amount of work to be doing just to check if the traffic lights are in given state for given direction.
Surely we could use some bit masks here?
First bit mask would define how many lights there are for a segment node, and (potentially) in which lanes they appear. For example, this street:

Would be represented as 0 00 0011 10 0. Let's call that LightBits. (I'm just making up names here for easier reference in this issue ticket, I have no idea what proper naming convention would be).
So just by the bit mask we now know where all the traffic lights are for this segment node.
Next, a bit mask is for red/green state, it would basically be same as above but the bits where lights are (1's above) would be either 1 for green or 0 for red. Let's call this one ColorBits.
Then we need a bit mask to denote lights in transition between state, again, same sort of thing. 1 = transitioning, 0 = not transitioning. We'll call this one TransitionBits. We also gain an advantage here that we know what we are transitioning from, because we can look at the LightBits (eg. if light bit is 1 and transition bit is 1 we know that we're transitioning from green to red).
And we can multiplex all these bit masks in to a single word, if we set a limit on the number of lanes we can handle. Let's say the limit is 20 lanes on a segment. I don't think I've ever seen a segment bigger than that, and if someone has one I think it's fair to say "for performance reasons, we don't support anything bigger than 20 lanes". Anyway, we then fit our three bitmasks in to a single 64bit word, with 4 bits left over for... whatever.
But we also need directions - left, forward, right. That's just another 3 bitmasks multiplexed in to a 64 bit word (4 bits spare).
Each of the mentioned methods then become much leaner (from CPU - and memalloc/gc? - perspective) as we only need to do some bitwise math using two 64bit words (or just one if ignoring direction, eg. IsAnyInTransition doesn't care about direction).
It also means we can ditch a load of methods on the lower level class (ICustomSegmentLight).

I don't think we need to bit-pack memory saving for thing such as traffic lights. Even if it was a traffic light on 50% nodes, that's 32K lights max, and even if each light had 1kb state that'd be 32MB state (much exaggerated). A performant and easy to understand structure would be more valuable. That is having all related stuff per traffic light grouped in a machine word (8 bytes) or a few words, and avoid extra allocations as much as we can by using arrays or something.
Though we can bit-pack when saving if we come up with an error-resistant encoding which won't possibly break in say next 5 years.

For the situations when traffic light can be simple (all directions) or one per direction, or combined, the state class should have that all logic hidden in properties with debug time checks. Or maybe use a type-safe generic like Either<Left, Right> which can only be Left type or Right and not both at once.


Add flag to AES CCM testvectors for invalid tag size

Right now the way to programatically detect these tests is to look at the comment key. It'd be great if there were a flag for this.

I'll add flags.
Since the size of the flags and the size of nonce is encoded using 3 bits each in the block B0
encryption with invalid values is essentially undefined.

For what it's worth, the reason this is desired by us is that we use a different error type for bad nonce length than we do for other failures, since bad nonce length is generally a programming bug, as opposed to bad data.


README updates

add a section describing exactly how our algorithm works
This can include:

Possible move generation
Algorithm to search for best move
Our static position evaluation
More...

I will add in some diagrams as well to help visualize the algorithim


several devices

I would like to establish communication with several devices at the same time. How to do it.
dev /dev/ttyS0 and /dev/ttyS1 addresses

Sorry, Multiple devices are not supported at present.

Thank you for your answer. I made a fork that handles the second connection.


Configuration driven deployment scripts.

Reason
For testnet and mainnet environments, we will likely deploy to multiple networks. So, our deployer should be configuration driven to allow us to have 1 deployment mechanism that works with all deployment scenarios.
Current Situation
The current deployment mechanism is somewhat involved.

We use yarn to call make to call forge script.  With each layer having requirements and assumptions.
There are pre-scripts (checkDb.js) and post-scripts (exporter.js) embedded in the process.
We context switch from make, to node, to forge, to node (and back again). (Actually unavoidable, I think)
The 'dependency chain' between steps is non-existent (i.e. "you must invoke yarn build before yarn deploy" etc.)
There are flat-file requirements, reflecting data in the database, used to perform contract existence checks and blockchain inspection.
The Transaction Log inspection used to gather deployed contract details means contracts are stored against their Contract Name, so we can only deploy 1 of each contract. So, for instance, we could not deploy 2 SimpleToken instances reflecting different tokens.
The deployment scripts are used within the test contracts, as a means of deploying test instances, with all the over-head of the flat files/chain inspection.

Deployment
This is an attempt to codify our deployment process.
Abstraction
We:

define a Deployment Unit to be a collection of 1 or more contracts that are deployed to the target network.
currently have 3 Deployment Units, called:

Vaults, deploying CredbullFixedYieldVaultFactory, CredbullUpsideVaultFactory and CredbullWhiteListProvider.
Vaults Support, to support testing of Vaults contracts, deploying SimpleToken (for $CBL), SimpleUSDC (for $USDC) and SimpleVault.
CBL, deploying the CBL token.

have the following Deployment Environments:

local, for local development, deploying to an Anvil server running on localhost.
test, for unit testing purposes.
ci, for deploying to Arbitrum Sepolia during the CI builds.
testnet,  TO BE CLARIFIED.
mainnet, for deploying to Arbitrum TO BE CLARIFIED.

deploy to Ethereum-based networks and, as such, we will use the same addresses for all roles, across all networks.

Thus, our deployment configuration is mostly unchanged across networks.

deploy using forge script with custom Solidity Scripts.
record all contracts deployed to any network within the Supabase Database associated with the environment.

Implementation

There is 1 TOML configuration file per Deployment Environment, capturing the configuration for the Deployment Units.

The file is appropriately named: environment.toml
TOML is a human-readable format, so the contents of the configuration files are self-describing and not covered here.

The deployments use make and are controlled from the Makefile.  They are also triggered via yarn.
During deployment, there are checks to ensure the Deployment Unit contracts are not already deployed to the network. If deployed, the deployment fails.
After deployment, the transaction log generated by forge script is introspected to capture the details of the deployed contracts, which is then uploaded to the Supabase Database instance for the Deployment Environment.

Further Solutions

Use turbo in all packages to enforce dependencies between build targets. This does not remove yarn. This could resolve the 'dependency chain' issue.
turbo would also allow us to define input/output files sets, meaning only build where necessary, improving build times.
No documentation on the steps needed to do each stage of development (added some) and deployment (outstanding).
Our deployment scripts are a tangled weave of logic-branched deploy/test/chain query functionality. Embrace KISS and simplify them to do 1 thing (if possible)
The manner in which we gate-keep contract deployments is pretty weak (the database table). But not sure there is a better way! :)  Are contract events subscription persistent?
Testing uses the HelperConfig and DeployedContracts to introspect the chain when there is simply no need.

In test, setUp() is run per test case, so each test runs in a clean environment (as is correct). Thus, we should create the contracts in setUp() and not look for previously deployed contracts. This applies even if the environment is not scraped clean per iteration. There is nothing  with deploying new contracts at different addresses per test case.

Superseded by https://github.com/credbull/credbull-defi/pull/85


Pin latest contrib

Description
Pin latest contrib
As a result:
go: upgraded cloud.google.com/go v0.110.4 => v0.110.7
go: upgraded cloud.google.com/go/compute v1.20.1 => v1.23.0
go: upgraded cloud.google.com/go/datastore v1.13.0 => v1.14.0
go: upgraded cloud.google.com/go/iam v1.1.0 => v1.1.1
go: upgraded cloud.google.com/go/storage v1.31.0 => v1.32.0
go: upgraded github.com/Azure/azure-sdk-for-go/sdk/azcore v1.7.0 => v1.7.1
go: upgraded github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.3.0 => v1.3.1
go: upgraded github.com/Azure/azure-sdk-for-go/sdk/data/azcosmos v0.3.5 => v0.3.6
go: upgraded github.com/Azure/azure-sdk-for-go/sdk/security/keyvault/azkeys v1.0.0 => v1.0.1
go: upgraded github.com/Azure/azure-sdk-for-go/sdk/security/keyvault/azsecrets v1.0.0 => v1.0.1
go: upgraded github.com/Azure/azure-sdk-for-go/sdk/security/keyvault/internal v0.8.0 => v1.0.0
go: upgraded github.com/AzureAD/microsoft-authentication-library-for-go v1.0.0 => v1.1.1
go: upgraded github.com/aliyun/aliyun-log-go-sdk v0.1.50 => v0.1.54
go: upgraded github.com/aliyun/aliyun-oss-go-sdk v2.2.7+incompatible => v2.2.9+incompatible
go: upgraded github.com/aliyun/aliyun-tablestore-go-sdk v1.7.7 => v1.7.10
go: upgraded github.com/aws/aws-sdk-go v1.44.315 => v1.44.333
go: upgraded github.com/camunda/zeebe/clients/go/v8 v8.2.8 => v8.2.12
go: upgraded github.com/choleraehyq/pid v0.0.16 => v0.0.17
go: upgraded github.com/cloudwego/thriftgo v0.2.8 => v0.3.0
go: upgraded github.com/coreos/go-systemd/v22 v22.3.3-0.20220203105225-a9a7ef127534 => v22.5.0
go: upgraded github.com/dapr/components-contrib v1.11.3-0.20230814210647-01646b8833e1 => v1.11.3-0.20230830004725-1c657f7b5b3e
go: upgraded github.com/eapache/go-resiliency v1.3.0 => v1.4.0
go: upgraded github.com/eapache/go-xerial-snappy v0.0.0-20230111030713-bf00bc1b83b6 => v0.0.0-20230731223053-c322873962e3
go: upgraded github.com/google/s2a-go v0.1.4 => v0.1.5
go: upgraded github.com/google/uuid v1.3.0 => v1.3.1
go: upgraded github.com/googleapis/enterprise-certificate-proxy v0.2.4 => v0.2.5
go: upgraded github.com/hamba/avro/v2 v2.13.0 => v2.15.0
go: upgraded github.com/hashicorp/consul/api v1.22.0 => v1.24.0
go: upgraded github.com/hashicorp/golang-lru/v2 v2.0.4 => v2.0.6
go: upgraded github.com/huaweicloud/huaweicloud-sdk-go-obs v3.22.11+incompatible => v3.23.4+incompatible
go: upgraded github.com/huaweicloud/huaweicloud-sdk-go-v3 v0.1.28 => v0.1.56
go: upgraded github.com/jackc/pgx/v5 v5.4.2 => v5.4.3
go: upgraded github.com/jackc/puddle/v2 v2.2.0 => v2.2.1
go: upgraded github.com/klauspost/compress v1.16.5 => v1.16.7
go: upgraded github.com/labd/commercetools-go-sdk v1.2.0 => v1.3.1
go: upgraded github.com/lestrrat-go/jwx/v2 v2.0.11 => v2.0.12
go: upgraded github.com/mrz1836/postmark v1.4.0 => v1.6.1
go: upgraded github.com/nats-io/nats.go v1.27.1 => v1.28.0
go: upgraded github.com/open-policy-agent/opa v0.49.2 => v0.55.0
go: upgraded github.com/pierrec/lz4/v4 v4.1.17 => v4.1.18
go: upgraded github.com/prometheus/procfs v0.10.1 => v0.11.0
go: upgraded github.com/redis/go-redis/v9 v9.0.5 => v9.1.0
go: upgraded github.com/sendgrid/sendgrid-go v3.12.0+incompatible => v3.13.0+incompatible
go: upgraded github.com/sijms/go-ora/v2 v2.7.9 => v2.7.17
go: upgraded github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.608 => v1.0.732
go: upgraded github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/ssm v1.0.608 => v1.0.732
go: upgraded github.com/tetratelabs/wazero v1.3.0 => v1.5.0
go: upgraded github.com/valyala/fasthttp v1.48.0 => v1.49.0
go: upgraded github.com/vmware/vmware-go-kcl v1.5.0 => v1.5.1
go: upgraded github.com/yashtewari/glob-intersection v0.1.0 => v0.2.0
go: upgraded go.mongodb.org/mongo-driver v1.12.0 => v1.12.1
go: upgraded golang.org/x/crypto v0.11.0 => v0.12.0
go: upgraded golang.org/x/exp v0.0.0-20230801115018-d63ba01acd4b => v0.0.0-20230817173708-d852ddb80c63
go: upgraded golang.org/x/net v0.13.0 => v0.14.0
go: upgraded golang.org/x/oauth2 v0.10.0 => v0.11.0
go: upgraded golang.org/x/term v0.10.0 => v0.11.0
go: upgraded golang.org/x/text v0.11.0 => v0.12.0
go: upgraded golang.org/x/tools v0.11.0 => v0.12.1-0.20230815132531-74c255bcf846
go: upgraded google.golang.org/api v0.128.0 => v0.138.0
go: upgraded google.golang.org/genproto v0.0.0-20230706204954-ccb25ca9f130 => v0.0.0-20230821184602-ccc8af3d0e93
go: upgraded google.golang.org/genproto/googleapis/api v0.0.0-20230629202037-9506855d4529 => v0.0.0-20230803162519-f966b187b2e5
go: upgraded google.golang.org/genproto/googleapis/rpc v0.0.0-20230711160842-782d3b101e98 => v0.0.0-20230807174057-1744710a1577
go: upgraded google.golang.org/grpc v1.56.2 => v1.57.0
go: upgraded k8s.io/klog/v2 v2.80.1 => v2.90.1
go: upgraded modernc.org/sqlite v1.24.0 => v1.25.0

/ok-to-perf

/ok-to-perf

Note that there are many more dependency upgrades for indirect dependencies like sarama going from<EMAIL_ADDRESS>to<EMAIL_ADDRESS>

/ok-to-test

/test-sdk-all

/ok-to-perf


Make the filter less fuzzy or rank exact matches higher

On the model hub page, we can easily search for specific models. It seems that this filter has been created for maximal usability - trying to protect users from accidental typos. In other words, some fuzzy matching seems to be going on behind the scenes. However, this can have adverse side effects.
A prominent example is that there is a "robbert" model (Dutch RoBERTa). So I would expect to be able to easily find this with the query "robbert". However, instead I get results of more widely used models - all with "roberta" in their name (so clearly not an exact match).
One approach to improve this would be to rank exact (lower-case) matches higher than fuzzy matches.

Could potentially be solved by (⚠  internal tracker) https://github.com/huggingface/moon-landing/pull/2964

This has been long updated. The robbert example should work now, but if you face any issues let us know! :rocket:


[Feature Request]: Live Dictation

Describe the feature
Love this project and the fact it is written in rust and has a slick interface.
Not sure if this is a direction you wish to see this project develop, but I think system-wide dictation would be a really cool use-case for this project.
The keyboard input might be handled by a crate such as enigo.

Hey!
Glad to hear you love it :)
The feature you proposing sounds useful, however there's few limitations & things which needs to check

It will work fast enough only with tiny / small models
I didn't worked a lot with realtime, so I'm not sure what's the logic should be
I think it will be something like:
Getting microphone samples -> Push to thread safe array / queue of samples -> Transcribe in another thread every 5 seconds and pad to 30s (limitation of whisper model).

But I'm not sure in details what really data structure it suitable for that etc.

@CypherNaught-0x Did you get a chance to work on it? Sounds very interesting!

Put me down as a +1 on wanting a live dictation feature, even if it's at the cost of having to disable certain features and go back to reprocess the file after-the-fact to get speaker diarization and better transcript at that point.
Being deaf, I'm always testing out new captioning and transcription tools and stumbled across this while looking into some more base-level libraries to try rolling my own. This is not entirely my area of expertise right now, but I have worked with some real-time server based speech-to-text APIs - mostly Deepgram - and what I can say is that they generally work by returning partial responses on something up until the point where they "finalize" it and then they no longer pay attention to that audio. I'm somewhat less clear on how you'd chunk this up for local parsing, versus "I'm gonna bundle this audio up and throw it at a server" which is easier, but not cheap.
In addition to the Whisper live transcription libraries @CypherNaught-0x linked above, you might also want to look at https://github.com/abb128/LiveCaptions and https://github.com/abb128/april-asr which it's built on. They use their own model on top of ONNX runtime for doing STT which may have useful insights to their audio processing approach. I have used LiveCaptions extensively on both Linux and also in preference to the built-in live captioning on macOS; it's not Whisper-level accurate, but it's pretty good.
All that aside, @thewh1teagle, my compliments on this app - I have tested a lot of apps for captioning and transcribing and this is one of the nicer and more put together options that I've seen, with a UI that's less of an afterthought than most.

How do you imagine useful dictation in Vibe?
I imagine it like in a new tab in the main page, similar to the 'record'. After selecting the language, hit the button 'Start' and it start transcribe in live while detecting speech for efficiency (no speech - no computing).
The text area element will be displayed immediately with the transcriptions. but I'm wondering why it's useful more than the 'record' option.

All that aside, @thewh1teagle, my compliments on this app - I have tested a lot of apps for captioning and transcribing and this is one of the nicer and more put together options that I've seen, with a UI that's less of an afterthought than most.

I'm glad you liked it and find it intuative! that was my biggest goal when creating Vibe. to keep it simple.

I believe it should be possible to set the sample-rate to 16khz at the point of recording by setting it in the hound::WavSpec.

That's actually a bit more complex, it requires realtime resampling. but certainly possible.

I don't believe latency of the larger models is that much of a bottleneck, since the offline transcription runs way faster than real-time on a modern GPU, even when running the large-v3 model.

That will work on most modern computers. on macOS / nvidia / good amd gpu it should be real time. On other modern laptops with integrated ML chip it will be near real time which is enough. but of course it won't be useful on non modern computers.
We don't need to use onnx implementations. we can use whisper.cpp directly. I've done it in other projects and it works nice and fast :)

I started working on #303
It will be ready soon

Hi, love the idea,
Igotta say thank you @thewh1teagle for this awesome software,
I would love to have a live/streaming feature but with server mode, kind of a headless live streaming the transcription through API. 😍


[feat] L2 fee calculator

L2 fee calculator:

OpStack supported
Arbitrum WIP
Scroll WIP

Base fee calculator tests

@yi-sun ready for re-review

@yi-sun ready for review again

@yi-sun should be good to go now; lmk there are any other changes i should make

@yi-sun ready for review again

@yi-sun comments addressed


Add replacestate link type

In some use cases it is useful to change the url without reseting the scroll position. It solves #82.

CLA is valid!

I think there should be a test to verify in https://github.com/yahoo/flux-router-component/blob/master/tests/unit/lib/RouterMixin-test.js

@tbo  Thanks for your contribution!
I like it, and am thinking it could actually be applied to both replace state and push state.  Like in your product size use case, your product person can also decide to use pushState instead of replaceState.
What do you think about making preserveScrollPosition and replaceState as part of nav.params with both default to false, and stick with the DEFAULT/CLICK nav type?
BTW, nav.params can be configured as navParams on the NavLink.

@lingyan Thanks for your suggestions. I added it. But instead of encapsulating preserveScrollPosition in an option object I passed it directly. I hope that is okay.

@tbo Thanks for updating it!  Passing the params as props is totally what I wanted :)
Could you add the params to the NavLink doc?
Also, can we do the same for replaceState?  So it can be passed in as another prop like this.props.replaceState?  That way, we can keep the code DRY by removing the repeated code in https://github.com/tbo/flux-router-component/blob/master/lib/RouterMixin.js#L141-L149 and https://github.com/tbo/flux-router-component/blob/master/lib/RouterMixin.js#L153-L161.  And we won't really need to introduce a new nav type.
        switch (navType) {
            case TYPE_CLICK:
            case TYPE_DEFAULT:
                historyState = {params: (nav.params || {})};
                if(this._enableScroll) {
                    if (!nav.preserveScrollPosition) {
                        resetScrollPosition();
                    } else {
                        historyState.scroll = {x: window.scrollX, y: window.scrollY};
                    }
                }
                pageTitle = nav.params && nav.params.pageTitle || null;
                if (nav.replaceState) {
                    this._history.replaceState(historyState, pageTitle, newState.route.url);
                } else {
                    this._history.pushState(historyState, pageTitle, newState.route.url);
                }
                break;
            case TYPE_POPSTATE:
               ...

@lingyan I removed the repeated code, but I opted to keep the additional nav type. What do you think about it? I also added your suggestions regarding NavLink.

@tbo  Thanks a lot for the update.  My two cents:  I actually think it would be better (and easier to read) to just make some minor change to the previous commit, like this:
        switch (navType) {
            case TYPE_CLICK:
            case TYPE_DEFAULT:
            case TYPE_REPLACESTATE:
                historyState = {params: (nav.params || {})};
                if(this._enableScroll) {
                    if (!nav.preserveScrollPosition) {
                        resetScrollPosition();
                    } else {
                        historyState.scroll = {x: window.scrollX, y: window.scrollY};
                    }
                }
                pageTitle = nav.params && nav.params.pageTitle || null;
                if ((navType === TYPE_REPLACESTATE) || nav.replaceState) {
                    this._history.replaceState(historyState, pageTitle, newState.route.url);
                } else {
                    this._history.pushState(historyState, pageTitle, newState.route.url);
                }
                break;
            case TYPE_POPSTATE:
                if (this._enableScroll) {

WDYT?

@lingyan Done.

Cool.  Thanks @tbo!  There is a minor tweak to move the resetScrollPosition function out for performance best practice.  I will fix it after merging.


[experiment] remove a problematic optimization in instantiateSymbol

See: https://github.com/microsoft/TypeScript/pull/55030#discussion_r1294988471
This is technically a fix for #50355, though I'm curious whether or not it hurts perf.
Interestingly, to make tests pass, I had to update a fourslash test for hover... but it actually looks like a good change?

@typescript-bot perf test this

@typescript-bot perf test this

@typescript-bot perf test this

@typescript-bot perf test this faster

Yeah, seems like a consistent loss in perf on Compiler-Unions plus increased memory. It may not be worth it, though the baseline change is interesting. Probably #55030 is fine.


How to use Factor to evaluate instruction-tuned LLMs?

Dear authors,
Firstly, I would like to express my gratitude for your exceptional work.
Recently, I attempted to utilize Factor for evaluating instruction-tuned models, such as llama2-chat. However, I observed that the evaluation format of Factor is primarily designed for text completion, making it more suitable for base models rather than instruction-tuned models.
In an effort to instruct SFT models, I experimented with prompts such as "Please complete the following text." However, their performance still falls behind that of base models. This differs from the results I obtained when conducting experiments on other benchmarks, such as TruthfulQA.
I would greatly appreciate any insights or suggestions you may have. Thank you!

Hey @HillZhang1999
Thanks for your interest in our paper!
We have recently added Expert-FACTOR, based on ExpertQA (https://arxiv.org/abs/2309.07852), a long-from question answering dataset. In order to adapt the QA task to text completion, we first concatenated each question-answer pair into a single doc, and then utilized the FACTOR data pipeline. Since the benchmark evaluate factuality in a more task-specific scenario, it may be more suited for evaluating instruction-tuned model.

Thanks a lot! I will try them asap.

Hi @HillZhang1999 @dorm-ai21  if you're still trying to benchmark / eval llms
I'm the maintainer of LiteLLM. I believe LiteLLM makes it easier for you to run benchmarks and evaluate LLMs (I'd love your feedback if it does not)
Try it here: https://docs.litellm.ai/docs/simple_proxy
https://github.com/BerriAI/litellm
Using LiteLLM Proxy Server
Creating a proxy server
Ollama models
$ litellm --model ollama/llama2 --api_base http://localhost:11434

Hugging Face Models
$ export HUGGINGFACE_API_KEY=my-api-key #[OPTIONAL]
$ litellm --model claude-instant-1

Anthropic
$ export ANTHROPIC_API_KEY=my-api-key
$ litellm --model claude-instant-1

Palm
$ export PALM_API_KEY=my-palm-key
$ litellm --model palm/chat-bison

Set api base to proxy
openai.api_base = "http://<IP_ADDRESS>:8000"

Using to run an eval on lm harness:
python3 -m lm_eval \
  --model openai-completions \
  --model_args engine=davinci \
  --task crows_pairs_english_age


Upgrade to the latest Hedera SDK

I had two errors happen related to private key length checks and safe number checks.

this is partially in #29 should there be another branch for updates as well?
I included a small fix for some uncaught errors in #73  but took out the version update because it effected too many unrelated sections of code.


Cleanup Demo Inconsistency and Readability

There is some inconsistency and lack of clear explanation for a few components on
http://angular-ui.github.io/bootstrap/

The descriptions for Button and Collapse do not say what the actual directives are.

Some directives are used as Elements and some as Attributes. It would be good to state the actual rules rather than guess them from demo examples.

Typeahead description does not document the API match.label and typeaheadHighlight:query used inside examples' templates.

Is there Controller namespace clashing issues? None is mentioned on the page.

Also in the Demo the UIB-components get blended among other "noise" created by the bootstrap markup, so it is hard to tell which one is which.
I would suggest an easy solution to this problem - highlight all new markup related to UIB-components.
This would really help the readability.
If there is agreement, I could make the corrections (once I find how to view demo pages locally, that is :)

@dmitriz PR welcome!

Ok  :)
Any easy way to build and view the doc locally?
Couldn't find in Grunt but I'm no Grunt (I'm Gulp :-)

When you run grunt it builds the documentation in the dist folder. You can run a http server (such as http-server on npm) and point your browser to dist/index.html .

Thanks!
Didn't expect the demo pages "hidden" inside dist. :)
PR submitted!

Unfortunately, I could not find an easy way to highlight the demo code as I previously proposed. Too bad as that would really improve the readability.
The main problem seems to be that the same files are used as actual code and again to show the markup. Which is a good precaution against putting messy code on the Demo. But this makes it very hard to add markup without affecting the functionality.
If anyone has a solution - please let me know.

I think it will be too much to highlight the demo code where actual UI Bootstrap code is used. It's expected from users that they have some sort of experience with using Twitter Bootstrap and by having that, I think it's fairly clear to read the code examples and know what's 'new' (e.g. from UI Bootstrap).

Assigned to @Foxandxss and moved the milestone back - he has been slowly doing some work in this area


Incorrect pluralization (1 likes received)

In the English language, when you've received 1 like from another person, the VSCode extension says "1 likes received" instead of "1 like received".
The simple approach is to branch on n >= 2. The "big picture" solution (generalizing across languages other than English) is to use a translation framework. I don't have experience using translation frameworks, but https://hacks.mozilla.org/2019/04/fluent-1-0-a-localization-system-for-natural-sounding-translations/ seems like an interesting approach to pluralization and word forms.

Hi there, I think for a start using «Like(s)» will do, well just a suggestion.

Hi there, I think for a start using «Like(s)» will do, well just a suggestion.


Base for individual parameters #225

base parameter struct to inherit from
param_wrapper to autogenerate serialization/deserialization and comparison stuff
param_helper with common logic:

check and validate incoming parameters
calculate median
calculate majority
update state

setparams can accept one or several parameters
emission parameters implemented as a sample
base tests for emission parameters

#225, #252

Parameters calculations moved to separate contract.

setparams now directly changes parameters; requires self auth
median/majority calculations moved to golos.config contract (not yet finished)
validateprms action added to make golos.config (and maybe multisig wrapper) able to disallow invalid parameters
majority thresholds are moved to individual parameters of golos.config


Update akka-http 10.2.0 to 10.2.1

Hi,
while compiling my project I got the following warning:
Here are other dependency conflicts that were resolved:

com.typesafe.akka:akka-http_2.13:10.2.1 is selected over 10.2.0
+- default:postgres_service_2.13:0.1.0-SNAPSHOT        (depends on 10.2.1)
+- de.heikoseeberger:akka-http-circe_2.13:1.35.2         (depends on 10.2.1)
+- ch.megard:akka-http-cors_2.13:1.1.0                        (depends on 10.2.0)

Its possible to upgrade your akka-http dependency to 10.2.1?
Thanks in advance.

Hi Dawid,
This warning can safely be ignored (and in large projects I can assure you it's actually very common). Akka and akka-http follow strict binary compatibility between their releases, especially for a patch bump. See the compatibility guidelines for more information.
I will nevertheless plan a new release, I was actually waiting for the 10.2.2 version that should come out soon.

Hi,
thanks for the fast response.
Okay, so let's wait until 10.2.2.
Your,
Dawid

@DawidWalczak I just released version 1.1.1 with akka-http 10.2.2. Should be synced to Maven central soon.

Great!, thanks for the info.
Best Regards,
Dawid.
Lomig Mégard<EMAIL_ADDRESS>schrieb am Sa., 12. Dez. 2020,
12:12:

@DawidWalczak https://github.com/DawidWalczak I just released version
1.1.1 with akka-http 10.2.2. Should be synced to Maven central soon.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/lomigmegard/akka-http-cors/issues/128#issuecomment-743740509,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AOYEMJK5VT52RVEKVRWW35TSUNFZ3ANCNFSM4UOOUKBQ
.


Add a vector search for semantic and reverse image searching

Since we already have pynndescent as a dependency we can use it as a quick and dirty vector database to allow for semantic searching. I tried to keep everything general so that any embedder can be used, allowing for reverse image search and other things as well.

I merged in the changes already merged to main, so this should be clean now.


I am adding a button in the view returned in mediaView() function in JSQMediaItem and set a target for that Button and when when i get the message with button in JSQChatController .... button click is not working i.e the function is not getting executed.. please help me out @jessesquires

New issue checklist

[x] I have read all of the README, documentation, and FAQ.
[x] I have reviewed the contributing guidelines. Confirmation: ____
[x] I have searched existing issues and this is not a duplicate.

General information

Library version(s):
iOS version(s):
Devices/Simulators affected:
Reproducible in the demo project? (Yes/No):
Related issues:

What happened?

Thanks! 😄
Please provide all the information in the issue template so we can help!
And don't forget to read our contribution guidelines. 😊


[Feature Request] Extracting Citekey on [selected] item

Debug log ID
QMA4TX3I-fio-5HzjgGieWRNi
TFR78JMK-euc/6.7.229-7
What happened?
As discussed here: https://github.com/retorquere/zotero-better-bibtex/discussions/2978
I'd love a way to extract the Citekey so I can use it to copy quotes from Zotero to Obsidian, though I imagine the functionality could be useful for others and other workflows as well.
Thanks so much :)

That's really cool, thank you! One last thing: Is it possible to modify it so it gets the citekey of the item where the PDF is currently open, i.e. the document I'm currently reading? Since I'm using this to copy text from the PDF that would be ideal. Thanks!!

Hi, just wanted to ask if this was possible? Not a rush :)


Installation & Running EMQTT

Environment

OS: Raspian Jessie
Erlang/OTP: 19+
EMQ: 2.0.5

Description
I can manage to install the broker, I'm having to build from source.  It runs fine, but if I restart the Pi or try to send any command (stop restart etc) I have to delete the folder and reinstall all over to get the broker running again.
The error that seems most prevalent is
" vm.args needs to have a -name parameter.
-sname is not supported."

sudo apt-get update
sudo apt-get install wget
sudo apt-get install libssl-dev
sudo apt-get install ncurses-dev
wget http://www.erlang.org/download/otp_src_19.2.tar.gz
tar -xzvf otp_src_19.2.tar.gz
cd otp_src_19.2/
./configure
make
sudo make install
cd ..
rm otp_src_19.2.tar.gz
sudo rm -R otp_src_19.2/
git clone https://github.com/emqtt/emq-relx.git
cd emq-relx && make
cd _rel/emqttd && ./bin/emqttd console
These are the exact steps I took to install it the first time.  Hence - I've been forced to delete the folder and start at the "git" command, rebuild from source to get it running again.  to which it will run, I can stop the console - and run emqttd start, then emqttd status - get correct messages.  Access the web dashboard - and my qmtt client has already communicated.  But on restart of the pi, or shut down of the emqttd daemon from there forward - it will never start up (see error in last post)

NOTE - Solved myself - was never in the _rel/emqttd directory when trying to restart the service.  Once I as this became a non-issue.


Filtering collections does not appear to work

My class looks like this:
public class Transformation
   {
       [Key]
       [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
       public int TransformationId { get; set; }
       public string Name { get; set; } = "";
       public string Description { get; set; } = "";
       public virtual ICollection<TransformationEntry> TransformationEntries { get; set; } = new List<TransformationEntry>();
  }

When I use the following with the mock:
var transformation = await Context.Transformations.Include(f => f.TransformationEntries.Take(2));
It brings over all entries. The Take(2) appears to be ignored. When I run this on a real data set it only returns two items.

Hi,
It is because you are mocking Context.Transformations and when you are executing Include it is actually mocked method that is being ignored.
You need to extent your mock setup and add there also configuration for Include method.

Struggling to implement that so any help you (or anybody else) can offer is appreciated...

It is not obvious. Include is an extension method and Moq does not support having an extension method in Setup.
If you want to mock it you can create a wrapper for Include that can be easily mocked.
I do not like this approach because it is complicating code finally and add unclear abstractions. I would instead mocking Include return object with two items and assume that EF is working correctly.


Performance statistics for the analysis

I think the user should be able to understand the performance of the static analysis, so she can optimize the code or the analysis process to her needs.
It should be possible to query:

The whole analysis time
The analysis time per analyzer
Average analysis time per translation unit
The max analysis time of translation units and maybe a list for the slowest translation units.
Ability to rerun the analysis on a translation unit after optimization (e.g.: after removing the redundant header includes)

It is a good idea, but I would not store this type of information into the database.
I think this type of information should be generated by the analyze command and stored where the reports are generated. So tweaking the analysis can be done without any running database dependency.
It is possible that the user does not want to store the results into a database just view it locally in the terminal.

That is a good point. Probably separate profile info would be great for the storage, so the user can measure how long does it take to store everything into the database.


home section added

Fix #1 code for home section including the suggestion of putting background image and a welcoming message on it.

Good design for welcoming visitors. Nav menus are also responsive.


ci.yaml: move the sanity check to the start of the build

This change indicates any sanity issues before starting the build and hence saves us the waiting time of 2m31s
Fixes: #573

Removed the dummy function used for testing. Last build with the test function: https://github.com/Shwetha-Acharya/ramen/actions/runs/5551310804

Looks good, but the commit message miss an important fact - this change fix the check that never worked!

Updated the commit message!

Looks good, but the commit message miss an important fact - this change fix the check that never worked!

It would be accurate to state it stopped working post the commit 6c1fc0dad337acb45dc0ac73737ad9586fdb8405 in case we are making this statement in the commit message.


Add documentation for 'accessor' function

Q
A

Bug fix?
no

New feature?
yes

API breaks?
no

Deprecations?
no

Related tickets
documents bank-vaults #1651

License
Apache 2.0

What's in this PR?
Documents the accessor function added in bank-vaults #1651.
Why?
The function added needs documentation.
Checklist

[x] Code meets the Developer Guide
[x] User guide and development docs updated (if needed)
[x] Related Helm chart(s) updated (if needed)

@fekete-robert Do we now just wait until the corresponding PR in bank-vaults gets merged before merging this?

@patoarvizu Yes, it would be best if we merged the docs after the related PR has been released in bank-vaults


Move to npm

JQuery plugin repo is dead. Move the plugin to npm

Done. pushed to https://www.npmjs.com/package/img-slider


User can open the survey on the website

[x]  Survey page can be opened through navigation bar
[x] Survey has answerable questions
[ ] Survey has mock submit button

Acceptance criteria:

User can answer questions now and answers persists through different sessions. State is saved in local storage, functionality added in pull request #109


Fix getting last object

getSpans() returns the last added object as the first element of the array and not the last one: https://android.googlesource.com/platform/frameworks/base/+/master/core/java/android/text/SpannableStringBuilder.java#848
This issue can be reproduced by wrapping text in two block style listeners that start and end at the same position, e.g. foo

Hi @fourlastor, I found this issue and confirmed that the fix is working. Let me know if I can provide additional information!

@ultrah tank you for the PR!
one question, shouldn't it be <tag1><tag2>foo</tag2></tag1>? In your example you're closing tag1 first which I don't believe is correct XML. Does the bug reproduce also with the closing tags in the correct order?

Of course, good catch! I fixed the commit description.
And yes, I was able to reproduce the bug with <tag1><tag2>foo</tag2></tag1>,  the original commit description would not have been valid XML.


Incorrect Positioning of "RESUME BUILDER" Header on Login Page

Description
The "RESUME BUILDER" header on the login page is erroneously positioned under the login form, instead of being at the top of the page as intended. This issue consistently occurs on all instances of the login page and disrupts the expected layout and structure of the page.
Upon accessing the login page, it is evident that the "RESUME BUILDER" header is incorrectly positioned under the login form. This placement is inconsistent with the desired layout and negatively impacts the visual hierarchy and user experience of the page.
Screenshots

Additional information
The issue can be reproduced consistently on all instances of the login page. Regardless of the device or browser used, the header consistently remains misaligned below the login form.
To resolve this issue, it is necessary to correct the positioning of the "RESUME BUILDER" header. The header should be positioned at the top of the page, above the login form, in accordance with the intended design and layout.

Sir kindly assign this issue to me under GSSoC'23.


Add mapreduce for hosts import

Yikes! Looks like I won't be able to directly to reply to comments until github fixes their stuff... seeing github-144a332….js:10 Uncaught TypeError: Cannot read property 'click' of null whenever I try.

@brianmountford A reader must throw NoSuchElementException in order to terminate the stream. If it does not, the reader will continue to emit a stream of null values.

@brianmountford Updates made to tests/testdata files.

Closing this pull request. The changes have been integrated into the code base, and will be present in the next open source release.

Merged here: https://github.com/google/nomulus/commit/4cfe107475752dd3ebb58a8fc8de73fb6cd5278d


Added a quality app built with Music Tulip

Change Summary

Added an app to RN show case.

Test plan (required)
No - Js change for showcase.

Thanks for submitting, however please check the guidelines on GitHub:
https://github.com/facebook/react-native/blob/master/website/src/react-native/showcase.js#L15

The app looks nice! Just read the guidelines please, sorry they were not clearly visible.

@mkonicek  Can you please tell me what has to be added / removed for this to be merged ?


Add directory based open & create calls

Since in the examples and most implementations NuDB will use 'nudb.[dat|key|log]' files to persistently store the DB, this patch simplifies this 'default' scenario, allowing the end user to create and access a database given the directory in which those files reside.
Thus the user can now open the db like so:
store.open("/path/to/db/", error_code)

This is a reasonable quality of life feature in principle, but it should not require accessing private members of store. It should be implementable as a free function using only public interfaces:
open_dir(store, "/path/to/db/", ec);

Hey @vinniefalco I'm afraid I'm not following. The basic_store public/private access control is still in effect and this patch just overloads nudb::create and nudb::basic_store#open to facilitate dir based initialization. Can you help me understand your design principles behind preferring external wrapper methods to extending the base_store interface?

See: https://www.reddit.com/r/cpp/comments/262it3/effective_c_prefer_nonmember_nonfriend_functions/

OK @vinniefalco thanks for the link, I just bought a copy of "effective c++" for future reference!
I incorporated the feedback you had for this patch from this PR and #75. Specifically:

open_dir is now a function in the nudb namespace, constructing the default file paths under the specified base dir, and then invoking the 'open' method on the specified store
filesystem helpers were embedded in the project so as to remove the dependency on 'boost::filesystem'. In addition to the provided 'path_cat' function, the following others were added: 'path_exists', 'is_dir', 'mkdir_p'. I should not that while I attempted to support win32 functionality I do not have an environment to test it on.
a file.ipp implementation file was added to implement the previous
tests were added to the test suite verifying directory based creation and access
default path helpers were made inline, when the string_type/string_view patch is available I can PR / base this on that

Let me know if there's anything else!


Add more than one reason to restart

Hey, i was thinking about asking if you can add more than one reason to restart like :+1:
arkmanager restart --warnreason1
arkmanager restart --warnreason1
and adding in the arkmanager.cfg different lines for that
That would be great to add custom restart like a restart every night etc..
Thanks

One can currently use:
shutdownreason="Nightly restart" arkmanager restart --warn

We can add a --reason="..." option.

that would be great too yep

or maybe a --reason="1" related to the reason in the arkmanager.cfg

any update ? :)

I've fixed the --warnreason option I added in May, and have added it to arkmanager update.
It can now accept either a plain reason (e.g. "Nightly restart") or a reason identifier (i.e. --warnreason=1 will look at the warnreason_1=... setting in your config)
This won't currently work if you don't have msgWarnReason=... in your config.

ok so for exemple
i will add warnreason_1=Nightly Restart in my arkmanager.cfg
to launch it i will use arkmanager restart --warnreason=1
is that allright ?

You need to quote strings in the config, so use:
warnreason_1="Nightly Restart"

Apart from that, it should work.

ok i will check that tomorrow

it seems to restart but no warning

What is the output of your arkmanager restart --warn --warnreason=1 run?

warnreason_1="Reboot quotidien, il est temps d'aller au lit les geeks !"
my bad
30 5 * * * /usr/local/bin/arkmanager useconfig val restart --warnreason=1

30 5 * * * /usr/local/bin/arkmanager useconfig val restart --warn --warnreason=1
that will work

That should work.

it does :)


chore: TranslateContext

This Pull Request abstracted a concept named as TranslateContext, now it contains routes, upstreams, which made the code base cleaner as we'll just add stream_route, if we don't do this encapsulation, the number of return value for the translator will be more.

Codecov Report

Merging #400 (43f25a1) into master (3c6f911) will decrease coverage by 0.40%.
The diff coverage is 47.36%.

:exclamation: Current head 43f25a1 differs from pull request most recent head 4473fbd. Consider uploading reports for the commit 4473fbd to get more accurate results

@@            Coverage Diff             @@
##           master     #400      +/-   ##
==========================================
- Coverage   40.31%   39.91%   -0.41%
==========================================
  Files          39       39
  Lines        3264     3237      -27
==========================================
- Hits         1316     1292      -24
+ Misses       1785     1784       -1
+ Partials      163      161       -2

Impacted Files
Coverage Δ

pkg/ingress/apisix_route.go
0.00% <0.00%> (ø)

pkg/ingress/ingress.go
8.80% <0.00%> (+0.17%)
:arrow_up:

pkg/kube/translation/translator.go
51.38% <0.00%> (ø)

pkg/kube/translation/apisix_route.go
48.38% <32.00%> (+1.85%)
:arrow_up:

pkg/kube/translation/context.go
87.50% <87.50%> (ø)

pkg/kube/translation/ingress.go
90.90% <100.00%> (-0.54%)
:arrow_down:

pkg/kube/translation/plugin.go
100.00% <100.00%> (ø)

pkg/apisix/cluster.go
29.95% <0.00%> (-6.29%)
:arrow_down:

pkg/apisix/route.go
33.33% <0.00%> (-2.23%)
:arrow_down:

test/e2e/e2e.go

... and 1 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 3c6f911...4473fbd. Read the comment docs.


CoreDNS: amend values.yaml to match template

What this PR does / why we need it:
The values.yaml does not match the structure of the data that is pulled into the service template. If the README instructions are followed directly then it's not possible to set the serviceType to anything other than default.
This amends the values.yaml to reflect the service template https://github.com/helm/charts/blob/master/stable/coredns/templates/service.yaml#L29

/ok-to-test
/assign

/lgtm


♻ Simplify project structure

Changes

Remove standalone isort - use with ruff instead.
Remove types namespace.
Make phonenumbers optional.
Use pydantics ruff rules.
Install pydantic beta instead of pydantic main's branch - matching pydantic-settings.
Remove pytest-asyncio and pytest-mock from dependencies.

please review


Reenable tab to indent

Adding indentation can be fairly important for readability when doing block code so having it be forced overwritten to jump to the next parentheses makes the plugin difficult to use and slows down writing by a lot

Hi!
I was unable to replicate the problem you were mentioning. Would it be possible for you to provide a gif of what happened?


Add cursor style support for SuperTextField

Right now SuperTextField keeps the cursor style as a private value in the SuperTextFieldGestureInteractor as follows
final _cursorStyle = ValueNotifier<MouseCursor>(SystemMouseCursors.basic);

This causes the SuperTextField to only have the basic cursor if there isn't any text. On the other hand, as a user, I would expect to have a different cursor indicator time to time.
Therefore I would suggest to add the basic cursor style to the SuperTextField as a field with default value of SystemMouseCursors.basic and give users a chance to change the cursor.

Based on the discussion in the associated PR, the root problem for this issue is unclear, and without further investigation, we shouldn't make any changes to this behavior. I'm going to move this ticket to the next milestone so that we're not holding up the mobile release.

@miguelcmedeiros do you remember what you wanted to do with this? Did you want the text-style cursor whenever the user hovers over a SuperTextField, regardless of whether it's hovering over text? If so, did you think it was important to make that choice customizable, or should we make it a default and unchangeable behavior?

@matthew-carroll
I can't think of a case where the cursor should be different than the text-style when hovering the text field container.
My proposal is to make have the cursor as text-style by default when hovering the text field container and not making it configurable.


WIP Fix bug where record key wouldn’t be updated with actual ID

Previously the create success reducer would update the record, but not update the record key if using a cid for the map store. Would end up with something like this:
{
  ‘myCid123’: {
	id: 1234,
	...
  }
}

Also cleaned up the create success reducer quite a bit. All tests pass and everything seems to work in my app, but I'm still a little worried maybe I missed something when replacing the previous logic?
BTW @sporto Thank you for adding the Map store!!!

Hi, thanks for doing this. I will merge this and publish a patch as the current reducer is broken.
I'll look at the details with more time later.

On second thought, will not publish straight away.  I will take some time later today or tomorrow to look at what needs to happen here. Feel free to put another PR to improve this.

@mattvague 	I have done some changes. Please try version 3.0.2 thanks


Misleading Instructions in Cloud Foundry Documentation

The instructions I'm referring to can be found in the following URL: HERE
I was trying to follow the instructions to set up an Oracle database using the Cloud Foundry Connector and found the instructions were misleading by including all the following options as keys that could be included in the VCAP_SERVICES environment variable:

uri or uris using the scheme oracle
jdbcUrl field in credentials using the scheme oracle
oracleUri, oracleuri, oracleUrl, or oracleurl fields in credentials

After debugging, I found that the only key that the connector responds to is the "jdbcUrl" key. Can you please revise the documentation to reflect that you must use the "jdbcUrl" key and that none of the other options work?
Additionally, will you please consider adding sample VCAP_SERVICES JSON documents as examples for each type of datasource?
Thank you!
Juan

@juanjose49 It is surprising to hear that you couldn't get anything except the jdbcUrl key to work. I haven't seen this reported anywhere else, and we have several unit tests to verify that the different detection options work:

https://github.com/spring-cloud/spring-cloud-connectors/blob/master/spring-cloud-cloudfoundry-connector/src/test/java/org/springframework/cloud/cloudfoundry/CloudFoundryConnectorOracleServiceTest.java
https://github.com/spring-cloud/spring-cloud-connectors/blob/master/spring-cloud-spring-service-connector/src/test/java/org/springframework/cloud/service/relational/OracleDataSourceFactoryTest.java

I assume you are using user-provided service instances when connecting to the Oracle database. Can you provide some examples of the cf create-user-provided-service command you used to create the service instance and the resulting VCAP_SERVICES seen by the application to help figure out what you are seeing?

@juanjose49 As requested above, you can provide more information to help reproduce this problem?

@juanjose49 Some docs clarifications were made here: 5d06861ef19dabc35cb4d7f1ae54f66f4f56c91d. Please re-open this issue and add more details if you are still having problems.


build(api-markdown-documenter): Add good-fences to package build

Adds good-fences to the package build, enforcing particular inner directory-wise dependency invariants.

/azp run


[BQ Connector] Authentication Feasibility

To implement a new Import API BigQuery connector available in the SaaS we need to provide an authentication method that is acceptable from a security point of view and which can be integrated into our DB connectors, ideally using bigquery_fdw.
This task consists in updating and testing the existing odbc connector #14790 to analyse it in order to either reuse its authentication method or learning from it for our implementation. In case that using the specific fdw for our connector ends up not being possible, this work will also serve to try to put the odbc connector in production as a backup plan.

Configuration
Installing the BigQuery ODBC Driver
The steps to install and configure the driver are the following:

Downloading the Simba ODBC Driver from the webpage

wget https://storage.googleapis.com/simba-bq-release/odbc/SimbaODBCDriverforGoogleBigQuery_<IP_ADDRESS>7-Linux.tar.gz

Putting the driver into /opt following this structure:

opt/
└── simba
    ├── driver
    │   ├── ErrorMessages
    │   │   └── en-US
    │   │       ├── DSMessages.xml
    │   │       ├── DSOAuthMessages.xml
    │   │       ├── ODBCMessages.xml
    │   │       ├── SimbaBigQueryODBCMessages.xml
    │   │       └── SQLEngineMessages.xml
    │   ├── lib
    │   │   ├── cacerts.pem
    │   │   ├── GoogleBigQueryODBC.did
    │   │   ├── libbigqueryhtapi_sb64.so
    │   │   └── libgooglebigqueryodbc_sb64.so
    │   ├── third-party-licenses.txt
    │   └── Tools
    │       └── get_refresh_token.sh
    └── setup
        ├── odbc.ini
        ├── odbcinst.ini
        └── simba.googlebigqueryodbc.ini

sudo mkdir /opt/simba && sudo tar zxvf SimbaODBCDriverforGoogleBigQuery_<IP_ADDRESS>7-Linux.tar.gz -C /opt/simba --strip-components 1

sudo mkdir /opt/simba/driver && sudo tar zxvf /opt/simba/SimbaODBCDriverforGoogleBigQuery64_<IP_ADDRESS>7.tar.gz -C /opt/simba/driver --strip-components 1

sudo rm /opt/simba/SimbaODBCDriverforGoogleBigQuery*

sudo rm -rf /opt/simba/docs

sudo mv /opt/simba/GoogleBigQueryODBC.did /opt/simba/driver/lib/

:warning: IMPORTANT: Adding ownership to ubuntu:
sudo chown -R ubuntu:ubuntu /opt/simba

Adding the BigQuery ODBC Driver to the ODBC drivers in the machine:

Listing all the drivers installed:
odbcinst -q -d

[PostgreSQL ANSI]
[PostgreSQL Unicode]
[MySQL ANSI]
[MySQL]
[FreeTDS]

Adding the driver by editing the odbcinst.ini file. To know where it is execute:
odbcinst -j

DRIVERS............: /etc/odbcinst.ini
SYSTEM DATA SOURCES: /etc/odbc.ini
FILE DATA SOURCES..: /etc/ODBCDataSources
USER DATA SOURCES..: /home/ubuntu/.odbc.ini
SQLULEN Size.......: 8
SQLLEN Size........: 8
SQLSETPOSIROW Size.: 8

Editing the odbcinst.ini file to add the driver:
sudo vim /etc/odbcinst.ini

Adding the following:
[Simba ODBC Driver for Google BigQuery 64-bit]
Description=Simba ODBC Driver for Google BigQuery(64-bit)
Driver=/opt/simba/driver/lib/libgooglebigqueryodbc_sb64.so
DriverManagerEncoding=UTF-16

:warning: IMPORTANT: The encoding has to be configured to use UTF-16 because by default uses UTF-32 and this might cause problems with certains API clients.

Configuring error messages produced by the driver:

vim /opt/simba/setup/simba.googlebigqueryodbc.ini

[Driver]
DriverManagerEncoding=UTF-16
ErrorMessagesPath=/opt/simba/driver/ErrorMessages
LogLevel=0
LogPath=/home/ubuntu/

:warning: IMPORTANT: The encoding has to be configured to use UTF-16 because by default uses UTF-32 and this might cause problems with certains API clients.
:beetle: Setting the LogLevel to a higher number will help us to debug driver erros by logging them into two files called simbaodbcdriverforgooglebigquery_connection_0.log and simbaodbcdriverforgooglebigquery.log. The higher number, the more detailed logs.

Setting the variable SIMBAGOOGLEBIGQUERYODBCINI pointing to the previous file:

export SIMBAGOOGLEBIGQUERYODBCINI=/opt/simba/setup/simba.googlebigqueryodbc.ini

Testing the driver
To test the driver we can use the isql command, but previously we have to creating a DSN (Data Source Name) which uses the driver.
We're going to test our driver against a Catalog of a BigQuery account so we need the following info:

Client Id of the BigQuery account
Client secret of the BigQuery account
Catalog we'll use for the test
A genereated refresh token which grants the BigQuery account to access to the Catalog.

Once we have this info we'll edit the file odbc.ini included in the driver in order to add the DSN:

vim /opt/simba/setup/odbc.ini

We have to focus on the [Google BigQuery 64-bit] secion:
[Google BigQuery 64-bit]
Description=Simba ODBC Driver for Google BigQuery (64-bit) DSN
Driver=/opt/simba/googlebigqueryodbc/lib/64/libgooglebigqueryodbc_sb64.so
Catalog=<CATALOG>
SQLDialect=1
OAuthMechanism=1
RefreshToken=<REFRESH TOKEN>
ClientId=<CLIENT ID>
ClientSecret=<CLIENT SECRET>
AllowLargeResults=0
LargeResultsDataSetId=_bqodbc_temp_tables
LargeResultsTempTableExpirationTime=3600000

:beetle: Setting the Trace property to yes and setting a file into the property TraceFile under the section [ODBC] at the begining of the file will help us to debug ODBC erros by logging them into a file.
[ODBC]
Trace=yes
TraceFile=/home/ubuntu/odbc.error

Export the DSN file as DataSource file:

export ODBCINI=/opt/simba/setup/odbc.ini

Checking if the DSN has been installed successfuly:
odbcinst -q -s

[ODBC]
[Google BigQuery 32-bit]
[Google BigQuery 64-bit]

Testing the driver:

isql 'Google BigQuery 64-bit'

If everythin went well the previous command will show the following message:
+---------------------------------------+
| Connected!                            |
|                                       |
| sql-statement                         |
| help [tablename]                      |
| quit                                  |
|                                       |
+---------------------------------------+
SQL>

Now we can test a query:
SQL> select name from f1.circuits limit 10;

Changes in Builder
All changes made to use ODBC driver have been included into the branch bq-connector-sas.

To use the BQ Storage API we must take this into account: https://www.simba.com/products/BigQuery/doc/ODBC_InstallGuide/linux/content/odbc/bq/configuring/ht-api.htm