Make Self available to instance member functions (SE-0068?)

Hi Apple,
A cheeky implementation of SE-0068 that intercepts the error message use of unresolved identifier 'Self'; did you mean 'self'? and makes Self a synonym for type(of: self) when it has no other meaning. Works surprisingly well and only required a change to an error message in one test to have them pass.
Resolves SR-1340.

You'll have to get this working in type context as well, eg struct S { func foo() -> Self { ... } }

Eh? I don’t understand. Why would you return Self from a member of a struct. It works fine for a class:
class S {
  required init() {
  }
  func foo() -> Self {
    return Self.init()
  }
}

It works fine for a class:

Right, but to implement SE-0068, it'll need to work for a struct too.

If works inside the function body for a struct but I don’t understand why there would be a use case for Self as a return type for a struct type. The following works:
struct S2 {
  let x = 99
  let y: S
  init() {
    y = S()
  }
  func foo() -> S2 {
    return Self.init()
  }
}

Is it important that this works for a struct which cannot inherit?
  func foo() -> Self {
    return Self.init()
  }

I don’t see this mentioned in the proposal.

OK, I can see where it is mentioned in the review decision. Seems pointless to extend Self to value types to me.

@johnno1962 It's not pointless. With generics it allows you to avoid re-stating a complex type.

@johnno1962 It's not pointless. With generics it allows you to avoid re-stating a complex type.

This is great! Does this manage to make x as? Self work too?

x as? Self doesn't work at the moment as it expands to x as? type(of: self) at the moment. It may work if we get the TypeExpr change working.

Thanks for trying. This is great progress nonetheless!

Wrapping up for the day. I can get TypeExpr working but I'm not seeing overloaded methods being called when they are messaged on Self so I've given up on using a TypeExpr for now.
//        Type SelfType = DC->getInnermostTypeContext()->getSelfInterfaceType();
//        if (ClassType::classof(SelfType.getPointer()))
//          SelfType = DynamicSelfType::get(SelfType, Context);
//        return new (Context) TypeExpr(TypeLoc(new (Context)
//                FixedTypeRepr(DC//->getInnermostTypeContext()
//                              ->mapTypeIntoContext(SelfType), Loc)));

With Joe's x as? Self it works even using a DynamicTypeExpr provided Self is not generic. You get a similar result when you try something like let a: Self = Self.init(). The code that fails in both cases is:
swift was compiled with optimization - stepping may behave oddly; variables may not be available.
frame #4: 0x0000000100a480c8 swift`swift::constraints::ConstraintSystem::openUnboundGenericType(this=<unavailable>, type=<unavailable>, locator=ConstraintLocatorBuilder @ 0x00007ffeefbf9560) at ConstraintSystem.cpp:538:3 [opt]
   535
   536 	Type ConstraintSystem::openUnboundGenericType(
   537 	    Type type, ConstraintLocatorBuilder locator) {
-> 538 	  assert(!type->hasTypeParameter());
   539
   540 	  checkNestedTypeConstraints(*this, type, locator);
   541
(lldb)
frame #5: 0x00000001009cf2a8 swift`swift::ASTVisitor<(anonymous namespace)::ConstraintGenerator, swift::Type, void, void, void, void, void>::visit(swift::Expr*) [inlined] (anonymous namespace)::ConstraintGenerator::visitConditionalCheckedCastExpr(this=0x00007ffeefbf9968, expr=0x00000001098ddcf8) at CSGen.cpp:2762:24 [opt]
   2759	        return nullptr;
   2760
   2761	      // Open the type we're casting to.
-> 2762	      auto toType = CS.openUnboundGenericType(expr->getCastTypeLoc().getType(),
   2763	                                              CS.getConstraintLocator(expr));
   2764	      CS.setType(expr->getCastTypeLoc(), toType);
   2765

Which implies the type has this property:
    /// This type expression contains a GenericTypeParamType.
    HasTypeParameter     = 0x04,

Fixable or can we only improve the error message?

The problem with DynamicSelfType should be fixable. I'll take a look at it.

Hi @slavapestov, managed to get a TypeExpr working with overrides with the following code:
        Type SelfType = DC->getInnermostTypeContext()->getSelfInterfaceType();
        if (!isa<StructType>(SelfType.getPointer()))
          SelfType = DynamicSelfType::get(SelfType, Context);
        SelfType = DC->mapTypeIntoContext(SelfType);
        return new (Context) TypeExpr(TypeLoc(new (Context)
                FixedTypeRepr(SelfType, Loc), SelfType));

Does !isa<StructType>(SelfType.getPointer()) sound right to you?

@johnno1962 Rather than testing the type of the DeclContext you can more directly check if its a class or class extension by calling getSelfClassDecl() on the DeclContext.

Thanks, I've updated the tests in the last commit. This has to be fairly close now.

@swift-ci Please test source compatibility

@swift-ci Please test source compatibility

Good to go?

@swift-ci Please test

@swift-ci Please test source compatibility

Build failed
Swift Test Linux Platform
Git Sha - d08b319bd5bc13b5b5165372fa48df4ffd90b9f9

Build failed
Swift Test OS X Platform
Git Sha - d08b319bd5bc13b5b5165372fa48df4ffd90b9f9

Thanks @jckarter, I've just pushed another commit. Are yo able to restart the tests?

@swift-ci Please test

@swift-ci Please test source compatibility

Build failed
Swift Test Linux Platform
Git Sha - 1eb98989f2f4beaf71f74efb378a399eae05a17a

Build failed
Swift Test OS X Platform
Git Sha - 1eb98989f2f4beaf71f74efb378a399eae05a17a

Updated validation-test/compiler_crashers_2_fixed/0164-sr7989.swift. Not suer about the other errors.

One more time @jckarter...

@swift-ci Please test

@swift-ci Please test source compatibility

Build failed
Swift Test Linux Platform
Git Sha - e9354261e5fac36d6596192f34f9d23e92c4bb76

Looking at ./validation-test/compiler_crashers_2_fixed/0179-rdar44963974.swift

Previous logs: https://ci.swift.org/job/swift-PR-Linux/11749/. I've pushed a fix in for 0179-rdar44963974.swift

If you're working through validation test failures, you may get quicker feedback running them locally (which you can do by building the check-swift-validation target to run the entire suite, or running llvm-lit validation-test/path/to/test.swift to individually invoke tests).

Thanks, running them now.

Tests complete now including validation. Thanks for your help. It'll be worth it!

Build failed
Swift Test OS X Platform
Git Sha - e9354261e5fac36d6596192f34f9d23e92c4bb76

@swift-ci Please test

@swift-ci Please test source compatibility

Build failed
Swift Test Linux Platform
Git Sha - ec32f041924e40d87edba6f27ba6b465376fa1d6

Build failed
Swift Test OS X Platform
Git Sha - 988e565166228952f42b149fc223f21f08c56ca0

@slavapestov, The version you see should pass tests + validation. I tried to centralise processing of Self off the diagnostic path and the wheels fell off so can you let me know if f2dff17 is the right direction and I'll persevere.

@jckarter can you for the tests for me please. I've reverted to where things were at the end of last night.

@johnno1962 No worries, we can clean up the rest later.
One more thing -- can you add a CHANGELOG entry?

CHANGELOG  Entry added -- for 5.1?

Over to you @slavapestov

I think this is good enough to merge. We can iterate on the details later (the local function case is probably going to be rare anyway).

@swift-ci Please test

@swift-ci Please test source compatibility

Build failed
Swift Test Linux Platform
Git Sha - 988e565166228952f42b149fc223f21f08c56ca0

Build failed
Swift Test OS X Platform
Git Sha - d91769fba45e9d7e52f82ed910715b9f26c53e28

Thank you for your contribution!

Before I forget -- can you submit a PR to the swift-evolution repo marking this proposal as implemented, and file a JIRA to implement the remaining case with local functions?

@johnno1962 I've updated the proposal status to Implemented (Swift 5.1)
@slavapestov Can you close SR-1340 as resolved? Or should it be left open for the local functions issue?

There is some code mentioned on the forum that doesn't compile:
protocol Container : AnyObject {
  var coordinator: Coordinator<Self> { get }
}

class Base<T> where T : Container {
  unowned let interface: T

  init(interface: T) {
    self.interface = interface
  }
}

final class Coordinator<T> :
  Base<T> where T : Container {}

class BaseContainer : Container {
  private(set) lazy var coordinator = Coordinator<Self>(interface: self)
}

h.swift:144:13: error: type 'BaseContainer' does not conform to protocol 'Container'
final class BaseContainer : Container {
            ^
h.swift:145:25: note: candidate has non-matching type 'Coordinator<Self>'
  private(set) lazy var coordinator = Coordinator<Self>(interface: self as! Self)
                        ^
h.swift:130:7: note: protocol requires property 'coordinator' with type 'Coordinator<BaseContainer>'; do you want to add a stub?
  var coordinator: Coordinator<Self> { get }
      ^

Can I leave it to you to arrange the cherry-pick to swift-5.1-branch?

Local functions should wok though I've not tried your dc->getParent()->isLocalContext() suggestion.

@johnno1962 There's no need to cherry-pick. The final branching for swift-5.1-branch is March 18.

Just in time 🙂

Another case that would be nice to eventually support is the use of Self in a covariant position of a class method's parameter, e.g:
class C {
  func foo(_ fn: (Self) -> Void) {}
}

Filed SR-10121 to track that :)

class BaseContainer : Container {
  private(set) lazy var coordinator = Coordinator<Self>(interface: self)
}

h.swift:144:13: error: type 'BaseContainer' does not conform to protocol 'Container'
final class BaseContainer : Container {
            ^

@johnno1962, are you missing a final keyword in your example?
I agree that if BaseContainer is final then this should work; if it is not, I don't see how it can be made to work (since conformances in Swift are inherited by subclasses, a protocol requirement for var coordinator: Coordinator<Self> would require coordinator to have type Coordinator<BaseContainer> in order for the base class to conform and simultaneously to have type Coordinator<DerivedContainer> in order for the derived class to conform, which is impossible).

I tried with a final as you can see but it didn’t fix it. There will be corner cases to iron out.

Another snippet of code that is not supported:
class A1 {
    required init() {}
    func copy() -> Self {
        let copy = Self.init()
        return copy
    }

    var copied: Self {
        let copy = Self.init()
        return copy
    }
}

class B: A1 {
    override func copy() -> Self {
        let copy = super.copy() as! Self // supported
        return copy
    }
//    override var copied: Self {
//        let copy = super.copied as! Self // unsupported
//        return copy
//    }
}

print(B().copy())


Correlation function needs reconsideration

Currently the correlation function returns:
577  return 1.0 - (dot_product / np.sqrt(norm_x * norm_y))
If I understand correctly this is an attempt to invert the correlation similarity value to dissimilarity distance metric. However, since values near to both the lower and upper bounds of the correlation coefficient, [-1, 1], indicates strong similarity, this is problematic.
In the current form,
Negative correlation coefficient, which ranges from 0 to -1, yields distance ranging from 1 to 2 and
Positive correlation coefficient, which ranges from 0 to 1, yields distance ranging from 1 to 0.
The distance in this form cannot be ordered correctly as similarity decreases from 0 to 1 but then increases from 1 to 2.
One way of correcting would be to put an absolute value: 1 - |corr|. Such distance metric would not be able to differentiate between positive and negative association, but it would make the distance monotonic wrt similarity.
May be the negative and positive correlation can be treated separately when assigning the nearest neighbor.

Two variables being perfectly anti-correlated (r = -1) implies a relationship, but it definitely doesn't imply similarity.
The current implementation is the definition of Pearson's distance.
You could certainly implement 1 - |corr| as a custom metric if you wished, if that makes sense for you.

Yes, it does. Both 1 and -1 Pearson correlation coefficient corresponds to cosine similarity of 1(or near 1), at least for the positive space. Because corr coeff is simply a cosine similarity in the sample space centered at the mean.
Yes, I understand the attempt to convert correlation into distance by subtracting it from 1. However, this does not work for correlation coefficient.
Currently I am defining |1-corr| but I think I will just stick to 1-cos instead.
corr_vs_cos.pdf

Yes, it does. Both 1 and -1 Pearson correlation coefficient corresponds to cosine similarity of 1(or near 1), at least for the positive space.

??? This just isn't true

Thanks James, I just checked the cor is -1 but the cos is 0.571, but both cor and cos between np.arange(10) and np.arange(10) was 1.  So, looks like cos distance does differentiate between positive and negative correlation, but considers positive correlation to be more similar than negative correlation. Both positive and negative correlation are similar (\in [0,1]) wrt cosine.
Anyways, the argument about 1-cor distance still holds. For negative correlation, the distance is large, and when pydescent finds NN its will only consider neighbor with positive cor and neglect neighbor negative cor.  However, in reality finding a strong negative correlation is just as important.

Anyways, the argument about 1-cor distance still holds. For negative correlation, the distance is large, and when pydescent finds NN its will only consider neighbor with positive cor and neglect neighbor negative cor. However, in reality finding a strong negative correlation is just as important.

This will always be application and data-dependent, though. Sometimes it's important, sometimes it isn't, sometimes it's important but does not imply they are similar items that should be linked in a kNN graph. It depends on context, which is beyond the scope of a generic kNN package.
This package can't redefine "correlation distance" to mean something different from how it is defined in the literature and other packages. It is simple to write your own metric if you want your distances to work that way, but it won't be correlation distance.

Well in that case, it might be worth including one sentence on this issue: Defining correlation "distance" as 1-corr does not treat negative correlation as nearest Neighbour.


[Request deployment] New Hub: 2i2c-aws

Important dates

Target start date: 2022-12-05
Required start date: 2022-12-12
Any important dates for usage: N/A

Hub Authentication Type
GitHub (e.g., @mygithubhandle)
First Hub Administrators
@jmunroe
Hub logo image URL
2i2c logo (@jmunroe will provide)
Hub logo website URL
https://2i2c.org
Hub user image GitHub repository
No response
Hub user image tag and name
TBD. See below
Extra features you'd like to enable

[X] Specific cloud provider or datacenter (otherwise GCP)
[ ] Dedicated Kubernetes cluster
[X] Scalable Dask Cluster

(Optional) Preferred cloud provider
AWS
(Optional) Billing and Cloud account
No response
Other relevant information to the features above
This hub is for demo use, initially, by @jmunroe at AGU in December.  I'd like this to be on an AWS shared cluster (us-west-2) and so proximate to NASA and NOAA datasets.  My vision here is this would be a "showcase" hub that can be used to demonstrate what is possible for science/research communities.
This new hub is part of the Q4 goal:

https://github.com/2i2c-org/infrastructure/issues/1813

The hub image itself is part of the demonstration and should follow our "best practices" we are recommended our community partners follow.
Tasks to deploy the hub

[ ] 1. Deploy information filled in above
[ ] 2. Engineer who will deploy the hub is assigned
[ ] 3. Initial Hub deployment PR
[ ] 4. Administrators able to log on -> Hub now in steady-state

Thanks for opening this new hub request @jmunroe!
I think it is important to define which image you might use.
Do you have in mind using some pre-existing image? Building one on top of our user image repo? Something else?

I've created a placeholder image and linked up through quay.io
quay.io/2i2c/researchdelight-image

Given that this hub is meant to showcase what is possible on a 2i2c research hub, it made sense to rename it something that evoked 2i2c's mission to make research and education more impactful, accessible, and delightful by developing, operating, and supporting infrastructure for interactive computing.
For me, researchdelight has the right distinctiveness but naming things is hard. I am totally open to suggestions if we need to get a '2i2c-' in there somehow.

@jmunroe Regarding GitHub auth - how do you expect to use this hub in demos? Should we be able to add anyone with a valid GitHub account to the hub to try it out, e.g. manually via the admin panel, or by adding them to a GitHub team? Should I restrict it to only 2i2c-org members for now?

GitHub authentication so I can manage a list of specific handles in the JupyterHub admin panel.  Thanks.

Hub is now available for testing at https://researchdelight.2i2c.cloud/

Awesome. Thanks!

This issue can be closed once #1967 has a positive review from @2i2c-org/tech-team and is merged.


Change root dir not working?

How to change root dir? My script ist not working. Always log in "/"
import os

from pyftpdlib.authorizers import DummyAuthorizer
from pyftpdlib.handlers import FTPHandler
from pyftpdlib.servers import FTPServer

def main():
    # Instantiate a dummy authorizer for managing 'virtual' users
    authorizer = DummyAuthorizer()

    # Define a new user having full r/w permissions and a read-only
    # anonymous user
    authorizer.add_user("user", "12345", "/home/pi", perm="elradfmwMT")
    authorizer.add_anonymous("/home/pi")

    # Instantiate FTP handler class
    handler = FTPHandler
    handler.authorizer = authorizer

    # Define a customized banner (string returned when client connects)
    handler.banner = "pyftpdlib based ftpd ready."

    # Specify a masquerade address and the range of ports to use for
    # passive connections.  Decomment in case you're behind a NAT.
    # handler.masquerade_address = '<IP_ADDRESS>'
    handler.passive_ports = range(60000, 65535)

    # Instantiate FTP server class and listen on <IP_ADDRESS>:2121
    address = ('<IP_ADDRESS>', 2121)
    server = FTPServer(address, handler)

    # set a limit for connections
    server.max_cons = 256
    server.max_cons_per_ip = 5

    # start ftp server
    server.serve_forever()

if __name__ == '__main__':
    main()

What do you mean it always log in to "/"? If by that you mean that the logs show "/" as your home directory that is on purpose, but in reality the directory being exposed to the client as home dire is "/home/pi" (according to your code).


Removed checks of useless keys by the property of sorted elements

The function "from_prefixed_env" finds all words with the concrete prefix (by default "FLASK_"). The description of the function has the important condition: all keys are loaded in sorted order. Sorted order guarantees that all keys with needed prefix are consecutive (trivial statement). So, the function can use this property to reduce the number of operations.
Checklist:

[x] Add tests that demonstrate the correct behavior of the change. Tests should fail without the change.
[x] Add or update relevant docs, in the docs folder and in code.
[x] Add an entry in CHANGES.rst summarizing the change and linking to the issue.
[x] Add .. versionchanged:: entries in any relevant code docs.
[x] Run pre-commit hooks and fix any issues.
[x] Run pytest and tox, no tests failed.

I don't think this makes sense. As I understand it, only the first prefixed environment variable will be loaded.
It also isn't sure what you are hoping to achieve - maybe add a test to demonstrate the need?


Add a feature to validate config files.

I'm working on a codeplug generator compatible with the format of device.conf - and needed a way to validate my files. I've made two other cosmetic changes around dumping contacts and changed how comments are handled in the file.

This is where the code for the generator is, btw: https://github.com/jasiek/dmr-codeplug-gen

Thanks!


Model Action colliding with rails_admin internals

Created a new model named Action with simple attributes and apparently rails_admin have some conflict between the name of the model and the internal abstraction used.
Reproducible steps:
rails new MyApp
rails g model Action name
rails db:migrate
# append to Gemfile: gem 'rails_admin', '~>1.0'
bundle install
rails g rails_admin:install
rails s
# open: http://localhost:3000/admin/action/new

Gist with stack trace
ENV:

macOS Sierra: 10.12.2
Ruby: 2.3.1
Rails: <IP_ADDRESS>
rails_admin: 1.1.0

Dup of #2329.


Scaling OroPlatform to a very large number of users

Hi there!
I'm evaluating OROPlatform for a big incoming project.
We expect to import a large existent user-base, something like 2 million of users, and to map the organization chart to a deep oro's BU tree.
I created 150.000 new users sorted in 150.000 Business Units for testing purpose. I found that the owning-tree invalidation\re-build process, from OwnerTreeProvider::fillTree(), iterates in-memory all the existent business units and users, through a single http request.
The result is an unresponsive platform (during the process) and a very big memory usage. I like the platform but I fear the performances with an even bigger database, as with just 150.000 the system is unresponsive on some actions.
Am I doing something wrong here? Is the Enterprise Edition any better on dealing with a complex acl-user-base?
Thank you for your time.

Hi @dewos,
AFAIK, there are very few organizations in the world with 2 million or more employees (Walmart, Chinese army,  US Department of Defense).
Can you please provide more information on your use case?
I'm not sure that you need to map your user base to OroPlatform users and BUs as is. Generally we see more records related to customer data  (e.g. customers of an organizations that uses OroCRM, for example), and less records related to the employees (usually companies have less employees than customers).

Hi @mbessolov, thanks for the reply.
The project involves not only one single organization but a network of them. Also it's not only about employees but, we need to grant access (login access) to their clients too. Hence the user base grows fast.
Anyway the system is unresponsive with only 150.000 users, and that number is not a really big in the enterprise world, so if I understood well, the problem is that probably the ACL architecture does not scale well on big numbers. Maybe a selective invalidation of the owner-tree would bound the memory usage.

Following

Hi @dewos - Thanks for reaching out on this.  Given the size/scale of your project, it definitely makes sense to discuss our Enterprise offering.  Please feel free to connect with me directly - jary@orocrmdotcom and we can talk about the technology differences.

@dewos did you test with just a single BU?  (To identify if it is more of a issue with user count or BU count / structure)

@dewos, are you testing latest version (1.10.4)?

@StephenOTT It is for both.
@DimaSoroka Let's see, from (1.10.4):
Here the OwnerTreeListener invalidate the tree onFlush() of changed User, BusinessUnit and Organization entities.
Here OwnerTreeProvider fetches in memory ALL the users, and ALL the BUs, in a single http request.
Unless I'm missing something, this is hardly scalable.
@jarycarter, sure I'll keep in touch, but OroCRM EE is definitely overly and off-scope, we need just a bare and scalable platform to build upon custom logic. Can you tell me a "OroPlatform Enterprise Edition" exists, one that scales better compared to the limited current OroPlatform? Thank you.

@dewos - We have worked with a handful of customers on OroPlatform Enterprise.  I would be happy to explore it with you.

Thanks @dewos for your usecase.
I just wanted to add (in reply to @mbessolov): You don't need 2M active users. Inactive users will be a problem too. I don't know concrete statistics, but I guess there are always more inactive users than active ones in a company. And you don't want to delete the users after they leave.

@sbani 2M? Actually it is, more o less, like rendering a datagrid of the whole oro_user table without any pagination, in a single page. 100.000 rows are more than enough to stress the system.
@DimaSoroka In my humble opition, allowing (a good number of) customers to log-in in the platform (for example for downloading an attachment or for completing a workflow) is a pretty basic use-case for a business application. If you like, I volunteer some of my time to sort this out inside the open-source community. Let me know.
@jarycarter I sent you an email for the "OroPlatform Enterprise Edition" (this is new, I never heard about that). Thanks.

@sbani Even putting OwnerTreeProvider issues aside (let's assume for a minute they are fixed in the next version), IMO, mixing logins (somebody, or something, who needs to be able to login into an application and interact with it) and other user information is not a simplification but rather a complication. When designing a system for a large organization my preference would be to have a separate Employee entity to hold all employment related information for current and former employees (or a Member, Patient, Dealer, Customer, etc. - if we are talking about other use cases) in the system. And to use User entity in addition to that and only for the employees (members, patients,  dealers, customers) who need to login into the system. I believe that applications should be designed and modeled closely following the business domain logic (in real world each employee may have no logins, one login, or multiple logins into the same system) and that they do not necessarily have  to try to fit everything into the framework or platform models.

@dewos your use case with customers login is absolutely clear, thanks for this. We are planning to enable "Customer Portal" functionality for this purpose later on. As for the issue itself we'll investigate it and will provide update later.

@mbessolov "Scaling OroPlatform to millions of users".... hopefully! As probably hundreds++ of thousands are too much, right now (oh well... or you'll need sooo much RAM :)
Anyway I am the first to agree with you. A flexible platform should split the verb (Login) from the subject (User, Customer, Supplier etc...), allowing an easy configuration of them. Ideally just a "LoginEntity" to deal with Security\UserBundle, and "n" configurable linked or joined concrete "User" entities with additional data.
@DimaSoroka Wonderful, glad to hear. Coming from you, that means a lot. Let me know if I can be of any help. I'm looking forward an update, thanks.

Hi @DimaSoroka, I was wondering. Is there any news about this topic?

hello @dewos!
We were able to reproduce this issue and made some research on possible solutions. The current bottleneck, as you identified, is in OwnerTreeProvider and we are going to change caching logic there. We are going to work on this issue early next year, in the meantime any contributions are welcome.

@DimaSoroka is this confirmed for 2.1?

Not yet, finalizing scope and dates.

Hello @DimaSoroka
I'm still interested about this for future projects.
Maybe could you kindly give me a loose ETA? Thanks

@dewos we are targeting the fix for our July release.

@artml July 2018?

@dewos plans and priorities have changed, as it often happens.
Regarding the items mentioned in this thread: We have fixed login performance issues caused by OwnerTreeProvider caching logic, but had to delay the delivery of Customer Portal feature. It currently has no ETA for release, but I will double check with @DimaSoroka and @mbessolov on our long-term plans for its implementation.


App failed to compile in Android

With the gallery_saver: ^2.1.0 app is unable to compile in Android. iOS is working fine in 14.6 version.

same here

same +1

same +1

same here 3

same...

Same

same +1

fixed with 2.1.1


Feature Request: Option for automatic localized conjunction

For now, we have to localize conjunction rules outside of your project.
Will be nice if we can have a simple option to turn on localized conjunction.
ex: humanizeDuration(1000000000000, {largest: 3, conjunction: true, language: 'fr'}) => 31 ans, 8 mois et 1 semaine
ex language config:
 fr: {
      y: function (c) { return 'an' + (c !== 1 ? 's' : '') },
      mo: 'mois',
      w: function (c) { return 'semaine' + (c !== 1 ? 's' : '') },
      d: function (c) { return 'jour' + (c !== 1 ? 's' : '') },
      h: function (c) { return 'heure' + (c !== 1 ? 's' : '') },
      m: function (c) { return 'minute' + (c !== 1 ? 's' : '') },
      s: function (c) { return 'seconde' + (c !== 1 ? 's' : '') },
      ms: function (c) { return 'milliseconde' + (c !== 1 ? 's' : '') },
      decimal: ',',
      conjunctionDefaults: {
         conjunction: ' et ',
         serialComma: false
      }
    },

I can easily make a pull request with needed code to make it work, but, I can't get all rules for each languages.

I think this is a good idea but I'd prefer it to be part of another module—I'm trying to avoid adding new features to this library.
If you want to make your own, I'm happy to link to it from the readme!


appsettings.json or local.settings.json

in the sample code in this page, appsettings.json is used for configuration - every .net core developer is familiar with this. while the function dev tool still requires a local.setting.json instead of appsettings.Development.json as per this thread https://github.com/Azure/azure-functions-core-tools/issues/2504
can this be improved?

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

ID: 5786402e-9d88-5de0-607a-1c2a143af006
Version Independent ID: 15368d1c-b22e-7eb2-413f-cc0d41d2b909
Content: Use dependency injection in .NET Azure Functions
Content Source: articles/azure-functions/functions-dotnet-dependency-injection.md
Service: azure-functions
GitHub Login: @ggailey777
Microsoft Alias: glenga

@jzhouw Thank you for your feedback! We will review and update as appropriate.

@jzhouw The code here is required for appsettings.json files to be picked up but the default local.settings.json is still required.
This issue tracks the change to use ASP.NET Config Patterns. Some of the changes required are mentioned in this comment which is how the code in this doc works and why it isn't the default just yet.
Also, note that configuration loaded from files here won't work with triggers in the consumption tier, which is also covered in this issue.
It would be best to share you feedback in the linked issue that tracks this change. Since there is no doc update required here, we will now proceed to close this thread. If there are further questions regarding this matter, please tag me in your reply. We will gladly continue the discussion and we will reopen the issue.


ECONNRESET err.code for abort()

Currently you can abort requests like so:
var req = xhr(url, (err, resp) => {
   // ...
})

// when user cancels request
cancelButton.on('click', () => req.abort())

However, it just passes err as "Internal XMLHttpRequest Error" which makes it hard to distinguish between user-initiated cancellation and actual XHR errors.
If possible, it would be nice to emulate Node and use ECONNRESET for err.code when the error is due to an abort() rather than, say, a connection or JSON parse error. This way abstractions like xhr-request that work in Node/Browser could both use the same logic for handling req.abort().

Yes, please!
I get quite a bit of 'Internal XMLHttpRequest Error' entries in our error-logging due to aborting requests on purpose :(

This seems very related to #104.  These issues could probably be merged once we decide what xhr should actually be doing when a XMLHttpRequest is aborted.

To emulate node (https://github.com/request/request to be precise) it would require to skip calling the callback at all, as in https://github.com/Raynos/xhr/tree/abort-timeout
Any feedback on that?

Requesting feedback ;)

I haven't poked at request, but if it skips returning any output after cancel is called, I don't have any issue with copying that.

#104 is fixed, this should not be an issue anymore.
Feel free to reopen if anything's wrong.

I am running into an issue here where if I call abort() immediately, the callback is still called, with an error. For a minimal example, this test fails in Chrome 55 (using npm run browser):
test("aborting XHR prevents callback from being called", { timeout: 500 }, function(assert) {
    var req = xhr({ uri: "/mock/200ok" }, function(err, response) {
      assert.fail('this callback should not be called');
    });
    req.abort();
    assert.end()
})

AFAICT, loadFunc and specifically this code path is executing before the xhr.onabort handler sets aborted to true here.
Is there anything I'm missing here? I'd be happy to take a crack at a PR if I can figure out a good approach to fixing this.

I can make the test above pass with the following code modification, pushing the onreadystatechange call to loadFunc into the next callstack using setTimeout:
function readystatechange() {
    if (xhr.readyState === 4) {
        setTimeout(loadFunc, 0)
    }
}

Any thoughts on this approach?

(I don't think I have GH permissions or I would re-open this issue 😄 )

The issue was about something else and I'd rather you created a new one, but there's valuable content here now and I came too late, so there you go.
Please create the PR and I'll get to it on Monday to check if it's the way to go.
I'm not yet sure if the new behavior is better than the current one for everybody.

Ok cool, I will PR this, thanks @naugtur. Also I'm happy to open a separate issue if that's more useful to you...LMK.


nextdns: 1.42.0 -> 1.43.0

Automatic update generated by nixpkgs-update tools. This update was made based on information from https://github.com/nextdns/nextdns/releases.
meta.description for nextdns is: NextDNS DNS/53 to DoH Proxy
meta.homepage for nextdns is: https://nextdns.io
Updates performed

Golang update

To inspect upstream changes

Release on GitHub

Compare changes on GitHub

Impact
Checks done

built on NixOS
The tests defined in passthru.tests, if any, passed
found 1.43.0 with grep in /nix/store/h9mqk1aki9ccjhgi0km9j6h4zygg0bab-nextdns-1.43.0
found 1.43.0 in filename of file in /nix/store/h9mqk1aki9ccjhgi0km9j6h4zygg0bab-nextdns-1.43.0

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

2 total rebuild path(s)

2 package rebuild(s)

First fifty rebuilds by attrpath

nextdns

Instructions to test this update (click to expand)

Either download from Cachix:
nix-store -r /nix/store/h9mqk1aki9ccjhgi0km9j6h4zygg0bab-nextdns-1.43.0 \
  --option binary-caches 'https://cache.nixos.org/ https://nix-community.cachix.org/' \
  --option trusted-public-keys '
  nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs=
  cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY=
  '

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

Or:
nix build github:r-ryantm/nixpkgs/c190f9b77b98abb13c46cbc065fbc95c09a7956f#nextdns

After you've downloaded or built it, look at the files and if there are any, run the binaries:
ls -la /nix/store/h9mqk1aki9ccjhgi0km9j6h4zygg0bab-nextdns-1.43.0
ls -la /nix/store/h9mqk1aki9ccjhgi0km9j6h4zygg0bab-nextdns-1.43.0/bin

Pre-merge build results
We have automatically built all packages that will get rebuilt due to
this change.
This gives evidence on whether the upgrade will break dependent packages.
Note sometimes packages show up as failed to build independent of the
change, simply because they are already broken on the target branch.
Result of nixpkgs-review --extra-nixpkgs-config '{ allowInsecurePredicate = x: true; }' run on x86_64-linux 1

1 package built:

nextdns

Maintainer pings
cc @pnelson for testing.

Result of nixpkgs-review pr 307360 run on x86_64-linux 1

1 package built:

nextdns


Swizzling setBounds breaks UIScrollView bounce in iOS — is it required?

Hey @cntrump! I appreciate you putting this fork together. I found it while converting all my old cocoapods to swift packages.
Anyway, I started to do some digging because, after using your version, my UIScrollView wasn't bouncing properly — and the conventional wisdom is to check if there are a bunch of layout calculations happening when it moves. I saw that you're swizzling a number of methods on the UIView itself — including setBounds. Well, commenting out that seems to reinstate the bouncing in UIScrollView.
So my question is whether or not this is actually required. I'm trying to decide whether or not to use your fork, or Facebook's — and apply more fixes and the add support for SwiftPM myself. You seem to have done a lot of hard work here (thanks again!) so I'm just looking for clarity.
Thanks!

I guess it is _yoga_applyLayout called multiple times in setBounds.

I think it fixed in latest commit, try it againt.
And thanks for feedback 🫡

That's definitely fixed the bounce! Thanks for the fix, and for getting it done so quickly 🙏
I'll keep doing some testing to make sure it's all 100% but looking really good so far. Thanks again!


Question about dataset

Hello, I am interested in your HCT. And I try to understand your paper and code.
Now, I have some problems about the code.
First, about pre-train:
You know, in few shot learning, the most popular dataset is miniimagenet.
Why do you train the HCT with imagenet? All of your codes run under the  imagenet dataset rather than miniimagenet.
[--data_path /path/to/imagenet/train]
Second, about main_hct_first.py
Does main_hct_first.py run  under the  imagenet dataset?  I think main_hct_first.py needs to run with  miniimagenet dataset.
But I try to run main_hct_first.py with  miniimagenet dataset. However,  the format of miniimagenet dataset is not suitable to main_hct_first.py.
I am looking forward to your reply.

Feel sorry to confuse you. Our repo is still being improved, so there may be some writing errors.
We did pretrain on the Few-shot learning dataset, but we had some writing errors editing the README. We do not use Imagenet as input, because Imagenet's training set contains test sets of mini_Imagenet and tiered_Imagenet.Testing mini directly with DINO's pre-trained model was 98% accurate because DINO was done on Imagenet.Finally, we changed mini_Imagenet from split to folder read, so you might have to do something with the data as well.
Thank you very much for your attention to our work, and I'm sorry to bring you trouble.
------------------ 原始邮件 ------------------
发件人:                                                                                "StomachCold/HCTransformers"                                                                                @.>;
发送时间: 2022年4月12日(星期二) 晚上8:54
@.>;
@.***>;
主题: [StomachCold/HCTransformers] Question about dataset (Issue #1)
Hello, I am interested in your HCT. And I try to understand your paper and code.
Now, I have some problems about the code.
First, about pre-train:
You know, in few shot learning, the most popular dataset is miniimagenet.
Why do you train the HCT with imagenet? All of your codes run under the  imagenet dataset rather than miniimagenet.
[--data_path /path/to/imagenet/train]
Second, about main_hct_first.py
Does main_hct_first.py run  under the  imagenet dataset?  I think main_hct_first.py needs to run with  miniimagenet dataset.
But I try to run main_hct_first.py with  miniimagenet dataset. However,  the format of miniimagenet dataset is not suitable to main_hct_first.py.
I am looking forward to your reply.
—
Reply to this email directly, view it on GitHub, or unsubscribe.
You are receiving this because you are subscribed to this thread.Message ID: @.***>

Thank you for your reply. So, in README, you said that "Download links of datasets could be found in the meta-transfer-learning repo". How does the format of miniimagenet change to the format, which is suitable to your repo.


Working with Slices in Rust

This PR resolves #1944

https://onelinerhub.com/rust/working-with-slices


autogluon has too many dependencies

autogluon lists
requirements = [
    'Pillow<=6.2.1',
    'numpy>=1.16.0',
    'scipy>=1.3.3',
    'cython',
    'tornado>=5.0.1',
    'requests',
    'matplotlib',
    'tqdm>=4.38.0',
    'paramiko>=2.5.0',
    'dask==2.6.0',
    'cryptography>=2.8',
    'distributed==2.6.0',
    'ConfigSpace<=0.4.10',
    'gluoncv>=0.5.0',
    'gluonnlp==0.8.1',
    'graphviz',
    'scikit-optimize',
    'catboost',
    'boto3',
    'lightgbm==2.3.0',
    'pandas>=0.24.0,<1.0',
    'psutil>=5.0.0',
    'scikit-learn>=0.20.0',
]

as requirements.
This makes it essentially infeasible for other projects to introduce a dependency on autogluon and make use of it's tuning facilities.
It would be good for autogluon to provide a minimal core that allows external projects to integrate with it easily.

I can see this being quite beneficial and healthy long term for users especially as AutoGluon gains more components.
An interesting point here is the complexity in regards to development once the package has been modularized. I'm not very familiar with handling projects split into various modules in terms of code-refactors, but it seems to me like it adds complexity it terms of ensuring the code is working across the package.
I feel like it may be too early in AutoGluon's development to introduce such complexities to its developers, thus potentially slowing down progress. This opinion primarily stems from my lack of experience in this matter, so I am happy to be shown counterexamples where it works well, and what kind of external integration becomes feasible upon modularization that was previously infeasible.

This is an important request, but also not something simple to do quickly.
The best would be to think of a way to split between the core scheduling and optimization capabilities, and then the code needed to get important use cases going (e.g., GluonCV, GluonNLP, different boosting methods, ...).
On the other hand, I feel it needs to remain simple and robust to install the "sum of all important parts".

Would extras_require option in setup.py help solve this problem? For example, to use autogluon tabular, users wculd then be required to install pip install autogluon[tabular].

What other packages make use of this? I think it would be good to take examples from other popular open source projects.

This is the standard way to declare optional dependencies https://setuptools.readthedocs.io/en/latest/setuptools.html#declaring-extras-optional-features-with-their-own-dependencies
I suppose any python project with optional dependencies uses it.

Seems like it could be a nice solve, although I haven't seen other packages use this before, which is why I was wondering what other packages use it.
Can we do the reverse? pip install autogluon installs everything but we have pip install autogluon[tabular] which only installs tabular dependencies and pip install autogluon[core] which only installs core dependencies etc.?

GluonNLP does: https://github.com/dmlc/gluon-nlp/blob/a0d7fbb1b9be4b155c9b03ecdf56ae4c844389c8/setup.py#L64-L93
and so does GluonTS: https://github.com/awslabs/gluon-ts/blob/master/setup.py#L212-L217

@Innixma The feature is for extra dependencies so the semantics of autogluon[tabular] means the required dependencies plus the extra dependencies for tabular. What you described sounds more like having a separate package for the tabular part (e.g. autogluon-tabular), which is a feasible alternative.

Let us separate two issues here:

Different built-in large features of AutoGluon (e.g., tabular)
ML frameworks we'd want AutoGluon to apply to (for tuning parameters) (e.g., GluonCV,
GluonNLP, )

I personally would have 1) always be part of the core, unless it becomes really large. I think we want a strategy for dealing with 2). Not only will many users not care, but others who do care, will have their favorite version and not be happy with our dependency, etc.
And for newby users, we should certainly have a smooth way to deal with 2), so they can get up and running quickly. Not an easy task ...

Can we do the reverse? pip install autogluon installs everything but we have pip install autogluon[tabular] which only installs tabular dependencies and pip install autogluon[core] which only installs core dependencies etc.?

I also like this solution the best but would be good to see examples.
It would be nice to keep it as simple as possible for users who just want to quickly try out various autogluon functionalities (single pip install).  Users who've already tried autogluon and decided they like it enough to integrate it into a bigger system can then install only the dependencies for components they want to integrate.

You can provide pip install autogluon[all]. I don't think the reverse is supported, but maybe I'm wrong

AutoGluon v0.1 release introduces namespace packaging modules, which should resolve this issue.


[request] pop'n music UniLab, Jam&Fizz

There are no patches since 解明リドルズ, is there support?

pop'n'hax is what people tend to use, so I haven't truly bothered porting patches any further.
Anyone's free to contribute though, this is an open repo and I don't have to be the one to do it.

I have seen the advantages of popnhax.
However, I play multiple BGames, and I think it would be nice to have a common management system using sp2xpatcher, so I made a request.
If you feel this is unnecessary, please feel free to close the issue.
Thank you very much for your response.


Optional logs to mongodb

This PR:

removes unused python methods from the python functions
add parameters that provide options on where to store the component logs: on file and/or in the mongodb: the parameters are boolean flags for both storage options: they can be set by the component on each run of the component

Hello @sabinem, thanks for the choring.


[QUESTION]:Is there a way to scrape likes/retweet names from a specific tweet?

Command Ran

NA

Description of Issue
Trying to see if there is a way to use the tool to scrape likes/retweet users (together OR separately) from a particular tweet. This can be incredibly useful in identifying bots and bot pushes for various analysis scenarios. If there is what would be the appropriate command for it? Regards
Environment Details

Environment is various. Mac, Windows, Linux systems.

Hi @rinkydinkyproject,
Yes, you can scrape the number of likes & retweets & even replies from a particular Tweet.
I would go about by doing this by using the "Search" feature, to search for the specific Tweet with -s; Or if it's by a particular user, you can include that too with the -u option in Twint.py. --stats will display the likes, retweets, and replies stats, or you can customize your own format with --format.
Custom formatting from Twint.py is very similar to how it's done w/ the module. You can read more about that here: https://github.com/haccer/twint/wiki/Module

I think @rinkydinkyproject wanted to scrape the users who like or retweet, not just the like or retweet counts. If I understood correctly?

Oh thank you @hudmb, I misread.
TWINT doesn't feature that, but I wonder if it's possible

Neat idea actually, but maybe slow and hungry to do?

I think you could do it with the twitter api and limited to 100 retweets or something like that. tweepy is a good library for that.  maybe you were also thinking in include some twitter api features to complement twint but..... you need api credentials and it has many limitations.

Hudmb nailed it. That's correct. Yes the api does offer that, but Twint goes around that limitation. Hence the ask. The idea is tweet link, then twint searches the tweet for names in likes and retweets. Hopefully that makes more sense?

I'm looking for something similar.. Is this doable using existing twint features?

Scraping the usernames of retweeters requires authentication to Twitter, therefore I don't think twint would be able to do that as of now, I think.

@rinkydinkyproject I'm looking for the same feature but I couldn't find that option with Twitter API. Did you manage to solve the problem?

The project did not support fetching the retweeters list when I had last checked. I managed to write this small function to do the job.
def get_retweeters_list(username, tweet_id):
# get the data of retweets
r = requests.get('https://twitter.com/i/activity/retweeted_popup?id='+tweet_id)
# use the grep in order to get the retweeters
text = r.text
x = re.findall('div class=\\"account  js-actionable-user js-profile-popup-actionable \\" data-screen-name=\\"(.+?)\\" data-user-id=\\"', text)
return x
Its not the best of the works, but I hope it helps.

Thanks but this type of solution limits the maximum number of retweeters to 25.

(@x00x78 I edited your comment just to make clear the syntax)

@miguelwon it's limited to the first 25 retweeters because Twitter does not allow you to view more. This limit is imposed by Twitter and not a limit of the script, it can be verified with the browser

The project did not support fetching the retweeters list when I had last checked. I managed to write this small function to do the job.
def get_retweeters_list(username, tweet_id):
    # get the data of retweets
    r = requests.get('https://twitter.com/i/activity/retweeted_popup?id='+tweet_id)
    # use the grep in order to get the retweeters
    text = r.text
    x = re.findall('div class=\\\\"account  js-actionable-user js-profile-popup-actionable \\\\" data-screen-name=\\\\"(.+?)\\\\" data-user-id=\\\\"', text)
    return x

Its not the best of the works, but I hope it helps.

Hi,
is it possible to do the same thing to get the list of people that liked the tweet?


Epic: PD -- TC State Step Form (Also see 5567)

For reference:
Thermocycler form field values:
// Flow Type (FormData isn't typed :( so this is just for reference)
{|
    thermocyclerFormType: 'thermocyclerState' | 'thermocyclerProfile',
    moduleId: string,

    blockIsActive: boolean,
    blockTargetTemp: string | null, // string is a string of a number eg '4'
    lidIsActive: boolean,
    lidTargetTemp: string | null,  // string is a string of a number eg '4'
    lidOpen: boolean | null // if false, closed. If null, it's the initial unknown state

    // TODO later we will add the TC Profile fields here
|}

// form initial values
{
    thermocyclerFormType: 'thermocyclerState', // since this field is disabled, might as well set it to the only possible value for now
    moduleId: null, // to be set dynamically via createPresavedStepForm (#5596)

    blockIsActive: false,
    blockTargetTemp: null,
    lidIsActive: false,
    lidTargetTemp: null,
    lidOpen: null // Still TBD as per convos on Slack, but let's start with null = unknown initial lid state

    // TODO later we will add the TC Profile fields here
|}

ThermocyclerModuleState: see https://github.com/Opentrons/opentrons/issues/5609

All tickets done!


Unable to Add 404 host

I seem to not be able to add a 404 Host!
When clicking the "Add 404 Host" button, nothing happens...
Any idea ?

I'm unable to replicate this.
I suggest you clear your entire browser cache and reload the admin site again. It's probably the annoying mismatch of javascript bundles.
If not, inspect the browser console window and check for any console errors.

I did clear the cache, several times, and it still didn't work - at the time!
However, after your response I used a tablet instead of PC, and  it worked!
Great, thanks for your reply!


fix: add touchmove event

The props draggable=false desn't work on mobile because the event is not "mousemove" but "touchmove".
I encountered the bug myself and saw this opened issue
Not a big change, just one line, but very needed in my opinion !

Thank you for taking the time to fix this @Adeams1805 🙏
I have some catching up to do on this repo. Been swamped with professional responsibilities + out sick during the last few weeks, at the cost of any OSS contributions and addressing issues here (even this silly 1 liner bug!).

Fixed in https://github.com/bkrem/react-d3-tree/releases/tag/v3.5.1
Thanks again 💯

No worries ! I'm glad I was able to contribute 👍


Update normalization logic to allow local images named "library/*"

Currently pushing official images is broken since images must be tagged and and pushed with the library prefix. This change roles back the normalization which strips the library prefix.

ping @tianon @dkjer PTAL

@dmcgowan some work on tests is needed?

@dmp42 yes, given the extent at which the tests are enforcing the behavior I am trying to change, I am going to relabel this as design review.

I'm personally +1 on changing this back -- it feels too much to me like a Hub implementation detail making it's way into Docker itself (ie, "library" user == top-level namespace).

I partially agree with this change. In https://github.com/dmcgowan/docker/commit/d9a1da382d7ec3fff87d439c0fde1a69066e8b70, registry/config.go seems reasonable, allowing images to be stored locally with a library/ prefix.
I am not sure if I agree with the push.go change. I think that should be a server-side implementation and not a client side. The client should be able to push to library/something, but it's the server's job to reject the push. Imagine a scenario where registry.docker.io is setup to point to <IP_ADDRESS> by the user. He should be able to push any kind of image to his registry.

For pushing the official images with the 1.6 release, we have to be able to both build library/* locally, and push library/*, so I'm definitely still very much +1 on this, but it's really late in the game for 1.6 and it looks like we'll probably either have to use some strange verbose prefix like the-raw-hub-server/library/image-name or a patched binary (again).

@dmcgowan Some broken tests here!

@icecrime the tests will need to be updated if this change is accepted to match the agreed upon design.  Once this hits code review I will make those updates.
The exact change which needs to be reviewed is that with this change library/ubuntu and ubuntu are both valid names for the same image.  Either one may be pulled but only library/ubuntu may be pushed since we force that a namespace component exists on push. This requires design review because the existing code is enforcing that official images can only be referred to by their shortest representation and never allows the same remote image to be have two possible local names.

One question, but other than that SGTM: pushing to code review.

@dmcgowan unit-tests failed.

ping @dmcgowan

ping @dmcgowan is this something for the 1.7 release? Reading https://github.com/docker/docker/pull/11480#issuecomment-91623157 it looks like this was originally planned for inclusion in 1.6?

There is currently a workaround for this issue. I am currently working on the longer term solution to this problem with the distribution namespace package. I am going to close this since it would involve significant changes to the unit tests, does not effect normal users, and has a workaround for pushing official images.

a Hub implementation detail making it's way into Docker itself (ie, "library" user == top-level namespace).

Even though this is not normally encountered by "normal" users, I do not think the workaround is a satisfactory long term solution for official images.  It is also a "Hub implementation detail" that really should not be in docker.

@yosifkit agreed, the long term solution is already being worked on. We are working on a specification here https://github.com/docker/distribution/pull/303. The larger problem of images not stored by their canonical name in the daemon is not solved by this PR.


Remove safe area padding for some screens

Details

Fixed Issues
$ https://github.com/Expensify/App/issues/12963
Tests
Same as QA

[ ] Verify that no errors appear in the JS console

Offline tests
N/A
QA Steps

Sign into NewDot
Verify that the sidebar / list of chats has a transparent bottom notch area and there is no black bar (I will refer to this as the “transparent notch” or TN). If you do not have enough chats in the list then create some more so that the area is filled completely with chat rows.
Tap on Search in the header and verify TN
Close and tap on the Settings avatar
Pull the content all the way down from the top and verify the TN
Create a workspace and navigate to the list of workspaces verify correct button position
Navigate to a workspace
Pull down and verify TN
Tap the ? In the header
Tap “Request a setup call”
Pull down and verify TN
Enter information in the form then press the Call me button
Verify the “Got it” button appears in the correct spot
Press the “Got it” button
Go back to the Workspace screen
Tap “General settings”
Pull down and verify the TN
Go back and navigate to each section between “Issue Cards” and “Book Travel”
For each screen verify the TN if the screen has enough content to be dragged down past the notch (some do not).
Got to the “Manage members”
If the workspace does not have enough members to fill the screen invite members until the screen is full. Then verify the TN.
Go back and tap “Connect bank account”
Tap “Connect online with Plaid”
Enter credentials and click through screens until back in the New Expensify app
Pull down and verify the TN and correct button placement
Tap “Save & Continue”
Verify the “Company information” screen has the TN
Fill out the form to create an “OPEN” bank account
On the “Personal information” screen pull down and verify the TN
Go back to the “Settings” screen
Navigate to the “Profile” screen. Pull down and verify the TN
Navigate to the “Add phone number” screen and verify correct button placement
Navigate back to “Settings” then “Preferences”. Pull down and verify TN.
Go back and navigate to “Security” > “Change Password”
Verify correct “Save” button placement
Go back and navigate to “Close Account”. Verify correct “Close account” button placement. Pull down and verify TN.
Navigate to “Payments” verify correct “Add payment method” button placement.
Press and select“Bank account” option
Move through Plaid flow so you are on the “Add bank account” screen
Select a “Plaid Checking” from the list
Verify the correct placement of the “Save & continue” button. Pull down and verify TN.
Press “Save & continue”. Verify the “Continue” button on the following screen has the correct placement. Press “Continue”.
Tap “Add payment method” again and select “Debit card”. Pull down and verify TN.
Go back and select the PayPal option - verify correct placement for “Add PayPal account” button.
Close out of the “Setting” screen
Navigate to a Chat
Tap the + in the Composer
Tap "Add attachment"
Select an image
Verify the correct spacing of the "Send" button
Tap the Green +
Tap “New chat”. Pull down and verify TN.
Go back and select “New group” Pull down and verify TN.
Select a person from the list. Verify correct position of “Create group” button
Go back select “New Room”. Verify correct button position.
Go back select “Send money”. Enter an amount and tap “Next”
Select a user. Verify correct “Pay with Expensify” button placement.
Go back select “Request Money” Verify correct “Next” button position.
Enter amount and hit “Next”
Pull down and verify TN on next screen
Select a user and verify the “Request” button placement is correct.
Go back and select “Split Bill”. Verify “Next” button placement
Tap currency symbol.
Verify TN on currency selection screen
Go back enter amount and press “Next”
Verify TN on user selection screen
Select a user and verify “Next” button placement.
Hit “Next” verify “Split” button placement.

[ ] Verify that no errors appear in the JS console

PR Author Checklist

[x] I linked the correct issue in the ### Fixed Issues section above
[x] I wrote clear testing steps that cover the changes made in this PR

[x] I added steps for local testing in the Tests section
[x] I added steps for the expected offline behavior in the Offline steps section
[x] I added steps for Staging and/or Production testing in the QA steps section
[x] I added steps to cover failure scenarios (i.e. verify an input displays the correct error message if the entered data is not correct)
[x] I turned off my network connection and tested it while offline to ensure it matches the expected behavior (i.e. verify the default avatar icon is displayed if app is offline)
[x] I tested this PR with a High Traffic account against the staging or production API to ensure there are no regressions (e.g. long loading states that impact usability).

[x] I included screenshots or videos for tests on all platforms
[x] I ran the tests on all platforms & verified they passed on:

[x] Android / native
[x] Android / Chrome
[x] iOS / native
[x] iOS / Safari
[x] MacOS / Chrome / Safari
[x] MacOS / Desktop

[x] I verified there are no console errors (if there's a console error not related to the PR, report it or open an issue for it to be fixed)
[x] I followed proper code patterns (see Reviewing the code)

[x] I verified that any callback methods that were added or modified are named for what the method does and never what callback they handle (i.e. toggleReport and not onIconClick)
[x] I verified that comments were added to code that is not self explanatory
[x] I verified that any new or modified comments were clear, correct English, and explained "why" the code was doing something instead of only explaining "what" the code was doing.
[x] I verified any copy / text shown in the product is localized by adding it to src/languages/* files and using the translation method
[x] I verified all numbers, amounts, dates and phone numbers shown in the product are using the localization methods
[x] I verified any copy / text that was added to the app is correct English and approved by marketing by adding the Waiting for Copy label for a copy review on the original GH to get the correct copy.
[x] I verified proper file naming conventions were followed for any new files or renamed files. All non-platform specific files are named after what they export and are not named "index.js". All platform-specific files are named for the platform the code supports as outlined in the README.
[x] I verified the JSDocs style guidelines (in STYLE.md) were followed

[x] If a new code pattern is added I verified it was agreed to be used by multiple Expensify engineers
[x] I followed the guidelines as stated in the Review Guidelines
[x] I tested other components that can be impacted by my changes (i.e. if the PR modifies a shared library or component like Avatar, I verified the components using Avatar are working as expected)
[x] I verified all code is DRY (the PR doesn't include any logic written more than once, with the exception of tests)
[x] I verified any variables that can be defined as constants (ie. in CONST.js or at the top of the file that uses the constant) are defined as such
[x] I verified that if a function's arguments changed that all usages have also been updated correctly
[x] If a new component is created I verified that:

[x] A similar component doesn't exist in the codebase
[x] All props are defined accurately and each prop has a /** comment above it */
[x] The file is named correctly
[x] The component has a clear name that is non-ambiguous and the purpose of the component can be inferred from the name alone
[x] The only data being stored in the state is data necessary for rendering and nothing else
[x] For Class Components, any internal methods passed to components event handlers are bound to this properly so there are no scoping issues (i.e. for onClick={this.submit} the method this.submit should be bound to this in the constructor)
[x] Any internal methods bound to this are necessary to be bound (i.e. avoid this.submit = this.submit.bind(this); if this.submit is never passed to a component event handler like onClick)
[x] All JSX used for rendering exists in the render method
[x] The component has the minimum amount of code necessary for its purpose, and it is broken down into smaller components in order to separate concerns and functions

[x] If any new file was added I verified that:

[x] The file has a description of what it does and/or why is needed at the top of the file if the code is not self explanatory

[x] If a new CSS style is added I verified that:

[x] A similar style doesn't already exist
[x] The style can't be created with an existing StyleUtils function (i.e. StyleUtils.getBackgroundAndBorderStyle(themeColors.componentBG)

[x] If the PR modifies a generic component, I tested and verified that those changes do not break usages of that component in the rest of the App (i.e. if a shared library or component like Avatar is modified, I verified that Avatar is working as expected in all cases)
[x] If the PR modifies a component related to any of the existing Storybook stories, I tested and verified all stories for that component are still working as expected.
[x] If a new page is added, I verified it's using the ScrollView component to make it scrollable when more elements are added to the page.
[x] I have checked off every checkbox in the PR author checklist, including those that don't apply to this PR.

Screenshots/Videos

Web

Mobile Web - Chrome

Mobile Web - Safari

Desktop

iOS

Android

This is working pretty well for me so far.
I think the test steps are going to end up slightly next level since we have to look at basically every screen and form 💀
@shawnborton wondering if you want to help test this and try to find any spots that I missed here?

Happy to help! I have not run the iOS app locally in a while but I am happy to get that back up again. Also, web is working just fine for me

@shawnborton awesome - I have tried to hit most of the screens today and verified they are looking good. There are quite a few more changes that were needed than originally reported. Gotta go back and run through the activate wallet flow as well (which I'll do tomorrow).

I think this looks pretty good to me, though I noticed it is a bit inconsistent at times in terms of how close the bottom button might be to the bottom home bar:

There's a screen name: WalletStatementPage that might need to update the padding too, but I don't know how to open it.
I think you can take a look at it @marcaaron

@hungvu193 I'm not actually seeing a clear way to access that page via iOS, but the content looks like this:

so I think we can safely remove the safe area padding.
Separately, I think this should have the dark design 🤔

Made a few updates here. I think I've just about got all the places that need to be tested. One interesting observation is that:

Every single Form will need to have the padding style added (so I hardcoded the padding in instead of pass via a prop)
Every ScreenWrapper that has a form in it will need to disable it's padding style

That kind of leads me to think that maybe ScreenWrapper should just never ever add the padding style. But to do that we've gotta check all of those usages to see if this change would be OK.

I think the advantage of the padding style inside ScreenWrapper, that's it will add a nice padding bottom to all the screens since currently all the screens (that have SafeArea) have a very small padding at the bottom.
So if we feel ok with small padding bottom we can just remove the includePaddingBottom props, otherwise we can make it default by false and only make it true in the screen that can't scroll. I attached some screenshots below, that's the screen that can't scroll and has the button at the bottom.

Sorry @hungvu193 I don't think I clearly understood what you are trying to say in your last comment. Mind rephrasing it?

That kind of leads me to think that maybe ScreenWrapper should just never ever add the padding style. But to do that we've gotta check all of those usages to see if this change would be OK.

Sorry, that's comment to answer this quote. If we remove the padding style inside ScreenWrapper, there will screens that had very small padding at the bottom between the button and safe area.

If we remove the padding style inside ScreenWrapper, there will screens that had very small padding at the bottom between the button and safe area like I attached the my previous comment.

Yes, I'm thinking we would just add the padding back in where it's needed explicitly, but not make it the responsibility of ScreenWrapper to automatically add this unless there is an offline indicator (which I think will always need the padding, so we can maybe just add it directly to the indicator).

The only time we need the padding is when the content can be dragged down past the bottom or there is a button of some sort.

Yeah right, I agree

Ok I've thought about it for a bit, but can't figure out a better way to do this. For now, I will just leave the default padding on all screens. People will just have to remember that it needs to be set to false whenever we implement a <Form /> somewhere.

Hey @marcaaron! Is this ready for review? I saw some new commits so wasn't sure if it's ready to go. I'll be able to look on 1/3 but will be OOO until then. If that's too late, feel free to grab someone else. Thanks!

Yes!

Reviewed the code, it looks fine. I'll take another look at it  (too many files) and then start with the testing.

People will just have to remember that it needs to be set to false whenever we implement a  somewhere.

@marcaaron I was wondering if we should this as a note in Forms.md

@marcaaron I think we'll need to handle the Pronouns and Timezone page. Attached are the screenshots for your reference.

Thanks @mananjadhav! Updated the PR with the suggestions. 🙇

Thanks for the changes @marcaaron. I hoping we were able to cover all the screens. Will update the screencasts shortly.

Reviewer Checklist

[x] I have verified the author checklist is complete (all boxes are checked off).
[x] I verified the correct issue is linked in the ### Fixed Issues section above
[x] I verified testing steps are clear and they cover the changes made in this PR

[ ] I verified the steps for local testing are in the Tests section
[x] I verified the steps for Staging and/or Production testing are in the QA steps section
[x] I verified the steps cover any possible failure scenarios (i.e. verify an input displays the correct error message if the entered data is not correct)
[x] I turned off my network connection and tested it while offline to ensure it matches the expected behavior (i.e. verify the default avatar icon is displayed if app is offline)

[x] I checked that screenshots or videos are included for tests on all platforms
[x] I included screenshots or videos for tests on all platforms
[x] I verified tests pass on all platforms & I tested again on:

[x] Android / native
[x] Android / Chrome
[x] iOS / native
[x] iOS / Safari
[x] MacOS / Chrome / Safari
[x] MacOS / Desktop

[x] If there are any errors in the console that are unrelated to this PR, I either fixed them (preferred) or linked to where I reported them in Slack
[x] I verified proper code patterns were followed (see Reviewing the code)

[x] I verified that any callback methods that were added or modified are named for what the method does and never what callback they handle (i.e. toggleReport and not onIconClick).
[x] I verified that comments were added to code that is not self explanatory
[x] I verified that any new or modified comments were clear, correct English, and explained "why" the code was doing something instead of only explaining "what" the code was doing.
[x] I verified any copy / text shown in the product is localized by adding it to src/languages/* files and using the translation method
[x] I verified all numbers, amounts, dates and phone numbers shown in the product are using the localization methods
[x] I verified any copy / text that was added to the app is correct English and approved by marketing by adding the Waiting for Copy label for a copy review on the original GH to get the correct copy.
[x] I verified proper file naming conventions were followed for any new files or renamed files. All non-platform specific files are named after what they export and are not named "index.js". All platform-specific files are named for the platform the code supports as outlined in the README.
[x] I verified the JSDocs style guidelines (in STYLE.md) were followed

[x] If a new code pattern is added I verified it was agreed to be used by multiple Expensify engineers
[x] I verified that this PR follows the guidelines as stated in the Review Guidelines
[x] I verified other components that can be impacted by these changes have been tested, and I retested again (i.e. if the PR modifies a shared library or component like Avatar, I verified the components using Avatar have been tested & I retested again)
[x] I verified all code is DRY (the PR doesn't include any logic written more than once, with the exception of tests)
[x] I verified any variables that can be defined as constants (ie. in CONST.js or at the top of the file that uses the constant) are defined as such
[x] If a new component is created I verified that:

[x] A similar component doesn't exist in the codebase
[x] All props are defined accurately and each prop has a /** comment above it */
[x] The file is named correctly
[x] The component has a clear name that is non-ambiguous and the purpose of the component can be inferred from the name alone
[x] The only data being stored in the state is data necessary for rendering and nothing else
[x] For Class Components, any internal methods passed to components event handlers are bound to this properly so there are no scoping issues (i.e. for onClick={this.submit} the method this.submit should be bound to this in the constructor)
[x] Any internal methods bound to this are necessary to be bound (i.e. avoid this.submit = this.submit.bind(this); if this.submit is never passed to a component event handler like onClick)
[x] All JSX used for rendering exists in the render method
[x] The component has the minimum amount of code necessary for its purpose, and it is broken down into smaller components in order to separate concerns and functions

[x] If any new file was added I verified that:

[x] The file has a description of what it does and/or why is needed at the top of the file if the code is not self explanatory

[x] If a new CSS style is added I verified that:

[x] A similar style doesn't already exist
[x] The style can't be created with an existing StyleUtils function (i.e. StyleUtils.getBackgroundAndBorderStyle(themeColors.componentBG)

[x] If the PR modifies a generic component, I tested and verified that those changes do not break usages of that component in the rest of the App (i.e. if a shared library or component like Avatar is modified, I verified that Avatar is working as expected in all cases)
[x] If the PR modifies a component related to any of the existing Storybook stories, I tested and verified all stories for that component are still working as expected.
[x] If a new page is added, I verified it's using the ScrollView component to make it scrollable when more elements are added to the page.
[x] I have checked off every checkbox in the PR reviewer checklist, including those that don't apply to this PR.

Screenshots/Videos

Web
https://user-images.githubusercontent.com/3069065/210643607-099bc3a2-37f5-45ad-9dfb-1c406ec6c62f.mp4

Mobile Web - Chrome
https://user-images.githubusercontent.com/3069065/210643334-741955cb-c5a7-4d7d-8710-bed66b02e8e2.mp4

Mobile Web - Safari
https://user-images.githubusercontent.com/3069065/210643089-80dcbcdf-17de-4a74-bfe9-7146c75fa781.mov

Desktop
https://user-images.githubusercontent.com/3069065/210642996-6285d3ca-c7c3-464a-965d-dd7b744e7b10.mov

iOS
https://user-images.githubusercontent.com/3069065/210643665-2894fbce-8c32-438f-a129-b0473c03f94e.mp4
Updated Screenshots for Pronouns and Timezone screens:

Android
https://user-images.githubusercontent.com/3069065/210642645-36f03052-a7e7-4244-8977-385cf53831d7.mov

@dangrous All yours. I've tried to cover almost all screens across the app. If you think we've missed any, do let me know I'll test them once more.

:hand: This PR was not deployed to staging yet because QA is ongoing. It will be automatically deployed to staging after the next production release.

🚀 Deployed to staging by @dangrous in version: 1.2.49-0 🚀

platform
result

🤖 android 🤖
success ✅

🖥 desktop 🖥
success ✅

🍎 iOS 🍎
success ✅

🕸 web 🕸
success ✅

🚀 Deployed to production by @luacmartins in version: 1.2.49-0 🚀

platform
result

🤖 android 🤖
success ✅

🖥 desktop 🖥
success ✅

🍎 iOS 🍎
success ✅

🕸 web 🕸
success ✅

Ok this was linked to a regression here: https://github.com/Expensify/App/issues/14283
I think we would have had to remember the error screen while testing this so that's a pretty tough one to catch. Overall I think we tested this pretty well. Maybe we could implement some way to trigger the error manually so QA can do a regression test on the error screen.

This PR caused a regression here, probably missed finding/handling this here.


Update Readybox logo

From @jhil on April 17, 2016 17:8
http://readybox.io/
Copied from original issue: StartupShell/web-2015#38

From @chrisszeluga on April 17, 2016 22:58
requested the vector from brett

Updated


cargo-insta: 1.31.0 -> 1.32.0

Diff: https://github.com/mitsuhiko/insta/compare/refs/tags/1.31.0...1.32.0
Changelog: https://github.com/mitsuhiko/insta/blob/1.32.0/CHANGELOG.md
Description of changes

Things done

Built on platform(s)

[x] x86_64-linux
[ ] aarch64-linux
[ ] x86_64-darwin
[ ] aarch64-darwin

[ ] For non-Linux: Is sandbox = true set in nix.conf? (See Nix manual)
[ ] Tested, as applicable:

NixOS test(s) (look inside nixos/tests)
and/or package tests
or, for functions and "core" functionality, tests in lib/tests or pkgs/test
made sure NixOS tests are linked to the relevant packages

[ ] Tested compilation of all packages that depend on this change using nix-shell -p nixpkgs-review --run "nixpkgs-review rev HEAD". Note: all changes have to be committed, also see nixpkgs-review usage
[x] Tested basic functionality of all binary files (usually in ./result/bin/)
23.11 Release Notes (or backporting 23.05 Release notes)

[ ] (Package updates) Added a release notes entry if the change is major or breaking
[ ] (Module updates) Added a release notes entry if the change is significant
[ ] (Module addition) Added a release notes entry if adding a new NixOS module

[x] Fits CONTRIBUTING.md.

Result of nixpkgs-review pr 256909 run on x86_64-linux 1

1 package built:

cargo-insta


Experience bar breaks css style

The experience bar breaks the css style of the page

.CustomLevel-level {
float: left;
position: relative;
margin-left: -85px;
margin-top: 75px;
width: 64px;
text-align: center;
}
The problem is margin-top

Thank you for feedback, however, it works well on my site.
Please reply with screenshots of the problem or your site's url, so that I can solve it.


Introduce a custom build-output-path and app-path argument for more flexible monorepo support.

This change introduces a custom build-output-path and app-path argument which makes it more flexible to support monorepo flavors with decentralised build options.
An example of such a monorepo is an Nx integrated repository, where apps are placed under apps/[appName] and build artifacts are output to dist/apps/[appName]. This will allow you to build a more generic script which is being executed from the root of the monorepo.
Besides that a small change is included to also support single-version monorepos, where the package.json is exclusively maintained from the root of the monorepo.
These changes are made in a non-breakable manner, paths are being defaulted to the current process.cwd() just like before.

Hey @lorenzodejong thanks for putting this up! The nx folks will appreciate your efforts. I'll test this and cut a release after some of the 2.1.0 goes in in a few hours. I'll try to get 2.1.1 w/ this next.

Thanks @lorenzodejong, this will go out in 2.1.1 soon.

Great to hear @khuezy, thanks for the review!

@lorenzodejong can you try out 2.1.1 w/ nx and let us know if that behaves as desired? Some people on the discord are having issues. https://discord.com/channels/983865673656705025/1027265626085019769/1148981157438951444
If there's some missing gaps, we can fix in 2.1.2

@khuezy i will take a look and also update my results in the Discord when i get home.


Pipelines are not triggering

I have configured the pipeline and storage account as documented below, but the storage events are not getting fired because of the filters applied on the events. I can see the files getting updated on the data lake, but the triggers are not getting invoked.
If i include the "CopyBlob" in the advanced filters, i can see it trigger, but as per the documentation, we need to remove the "CopyBlob" from the filter.
https://learn.microsoft.com/en-us/power-apps/maker/data-platform/azure-synapse-link-pipelines?tabs=synapse-analytics#add-an-event-subscription-filter

@JasonHQX - For assistance.


Bug: markdown preview content coming out of card

Describe the bug
markdown preview content coming out of the card
To Reproduce
Steps to reproduce the behavior:

Fill as much markdown code as possible
Check the preview card

Expected behavior
content not out from card markdown preview
Screenshots

Desktop (please complete the following information):

OS: MacOS
Browser Brave

@bangadam, thanks for raising this issue, we will fix this issue as soon as possible, are you interested in fixing this issue ?

please assign this task to me

Assign this task to me, please.

Assigned to both @himughanakash , @bangada, fix it asap


Progressbar

Implement progressbar from UI Bootstrap/Bootstrap 3

Does this directive makes any sense? Checking BS4 docs, I am not sure what can we provide.

AFAIK we need a directive if we want to support browsers that don't have <progress> element support.
I've got a simple impl here: https://github.com/pkozlowski-opensource/ng2-bs/blob/master/src/progress/progress.ts

Nice @pkozlowski-opensource. You want to tune it up and make a PR or do you want me to do it?

Yep, the plan is to make a PR. I will do it over the weekend as I'm running a training right now (Wed-Fri) so can't do much in therms of OS work (other than commenting on some issues :-))

Updated WIP here: https://github.com/pkozlowski-opensource/ng2-bs/blob/master/src/progress/progress.ts

I'm working on this too. It doesn't make sense on the way you have it.
We need to reuse the built-in progressbar and decorate it with an attribute
directive. I have a plunker with my ideas, will link later, so hold on this
one.
El 29/10/2015 16:08, "Pawel Kozlowski"<EMAIL_ADDRESS>escribió:

Updated WIP here:
https://github.com/pkozlowski-opensource/ng2-bs/blob/master/src/progress/progress.ts
—
Reply to this email directly or view it on GitHub
https://github.com/ng-bootstrap/core/issues/25#issuecomment-152208799.

@Foxandxss it needs to work in all browsers supported by ng2 so I don't think we can just use <progress> element as it doesn't work in all browsers

IIRC it does work in all our supported browsers. We can do it without it,
but adds lots of extra complexity.
For example, making it stripped, would require to copy the ngb-progressbar
classes,  to put it on our template.
Would be good to investigate the built in support.
El 29/10/2015 16:12, "Pawel Kozlowski"<EMAIL_ADDRESS>escribió:

@Foxandxss https://github.com/Foxandxss it needs to work in all
browsers supported by ng2 so I don't think we can just use
element as it doesn't work in all browsers
—
Reply to this email directly or view it on GitHub
https://github.com/ng-bootstrap/core/issues/25#issuecomment-152209994.

@Foxandxss If you believe that there is a better approach, feel free to take ownership of this one.

Let me do some demos so we can discuss it.
I have something half baked on a plunker. Will also try to do the striped
thing with your implementation and see which one makes more sense on the
long term :)
El 29/10/2015 16:18, "Pawel Kozlowski"<EMAIL_ADDRESS>escribió:

@Foxandxss https://github.com/Foxandxss If you believe that there is a
better approach, feel free to take ownership of this one.
—
Reply to this email directly or view it on GitHub
https://github.com/ng-bootstrap/core/issues/25#issuecomment-152211625.

No ie9 support for the built in one. Grrr. Forget what i said
El 29/10/2015 16:21, "Jesus Rodriguez"<EMAIL_ADDRESS>escribió:

Let me do some demos so we can discuss it.
I have something half baked on a plunker. Will also try to do the striped
thing with your implementation and see which one makes more sense on the
long term :)
El 29/10/2015 16:18, "Pawel Kozlowski"<EMAIL_ADDRESS>escribió:

@Foxandxss https://github.com/Foxandxss If you believe that there is a
better approach, feel free to take ownership of this one.
—
Reply to this email directly or view it on GitHub
https://github.com/ng-bootstrap/core/issues/25#issuecomment-152211625.

Or not, bs4 have instructions to fix it out which could be good for what I have in mind. Let me do that plunker.

Okey, here it is: http://plnkr.co/edit/YtyckNLh6vOwLfl1OyHE?p=preview
Both have their "things", but I Think that I definitely go with the element one and not the attribute one (less verbose). Problem is the nativeElement thingy which is no good.


Record out-of-packet count/rate in prom.

Adding a field to AnalyticsStream to make this easier to report. Let me know if adding to AnalyticsStream is not ok.
Will set up a protocol PR if it is okay.

it should be ok, but CC: @shishirng to ensure our stream-processor schema is updated with this field during rollout

Thank you. Made this PR to make it easier to see the change in protocol - https://github.com/livekit/protocol/pull/803. Will wait for @shishirng 's green light.

@shishir going to merge this. Please holler if you see any issues and I will revert or figure out a solution.


allowImportingTsExtensions error when creating/building project

Current Behavior
If I run npx dts-cli create hackend-frontend and choose to create a React library, the dts build step at the end of the process (and running that command manually) causes this error:

RollupError: error TS5096: Option 'allowImportingTsExtensions' can only be used when either 'noEmit' or 'emitDeclarationOnly' is set.

I tried setting allowImportingTsExtensions to false in both tsconfigs (library and example) but I still get that error when trying to build.

Your environment

  System:
    OS: Linux 6.6 openSUSE Tumbleweed 20231226
    CPU: (16) x64 12th Gen Intel(R) Core(TM) i7-1260P
    Memory: 21.11 GB / 46.76 GB
    Container: Yes
    Shell: 0.14.1 - /usr/bin/xonsh
  Binaries:
    Node: 21.4.0 - /usr/bin/node
    Yarn: 1.22.19 - /usr/local/bin/yarn
    npm: 10.2.4 - /usr/bin/npm
    pnpm: 8.14.0 - /usr/local/bin/pnpm
    bun: 1.0.11 - ~/.bun/bin/bun
    Watchman: 4.9.0 - /usr/bin/watchman
  Browsers:
    Chromium: 119.0.6045.199
  npmPackages:
    dts-cli: ^2.0.3 => 2.0.3
    typescript: ^5.3.3 => 5.3.3

seems it was added in the new vite-react release, you can just add the config in your tsconfig.json:
  "compilerOptions": {
    "allowImportingTsExtensions": false
  },

it was resolved by adding the config on my macos. can you provide a repro if not, thanks! 🙏

@aladdin-add turning off that setting generates the following error:
node_modules/@types/react/index.d.ts:32:1
    32 export = React;
       ~~~~~~~~~~~~~~~
    This module is declared with 'export =', and can only be used with a default import when using the 'allowSyntheticDefaultImports' flag.

to repo simply run npx dts-cli create my-lib then try to build my-lib using npm run build

@osbornm I was not able to repro🤔.
I have pushed a new release. please provide a repro if you still encountered it, thanks! 🙏


Create TECNUN.txt

Please 	Create TECNUN.txt  …
Format<EMAIL_ADDRESS>

@ikermuniz Pull request merged. Please notice that this page of the university website says that the TECNUN students can use their TECNUN email addresses after their graduation from the university. However, according license terms for JetBrains tools it's illegal to continue using the license granted to a student for free after the graduation. Therefore, as soon as the students graduate from the university, they may wish to apply for another type of free license at JetBrains website or buy a professional license.
Thank  you!


A few dockerfile changes

Don't use -slim python base image. While rare, some systems will need compailer access to install some dependencies. This shouldn't affect binder startup performance, since the base image is likely to already be cached on the execution nodes.
Use the latest ibis release, rather than the dev branch.

Fixes #17.

LGTM!


Update procedures-related-to-post-deployment-operation.md

Updated code snippet headers

:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

exchange-2013-guide-management-pack/procedures-related-to-post-deployment-operation.md
:white_check_mark:Succeeded
View

For more details, please refer to the build report.
Note: If you changed an existing file name or deleted a file, broken links in other files to the deleted or renamed file are listed only in the full build report.


MS - Inbox issue

Working on Inbox rule issue

Rule issue - FL 1

Rule issue - FL 2

Rule issue - FL 3

closing


Disable Scroll Zoom on map

[ ] Is there a way to disable scroll view zoom ? If so, could you please point me to the documentation.

https://developers.google.com/maps/documentation/javascript/reference?hl=en
MAP_OPTIONS = {
  scrollwheel: false,
}

Thank you @istarkov

:-)

Hi,
Can you please explain where should this prop go?

<Map options={MAP_OPTIONS}


Can't install limych/hassio-presence-monitor-amd64:v0.2.0 -> 404 Client Error: Not Found

Version of the custom_component
0.1.0

Describe the bug
Unable to update to version 0.2.0
To Reproduce
If applicable, describe the steps to reproduce the behavior:

Go to add-on page
Click on update
Nothing happens
Check hassio_supervisor logs for error message.

Debug log

hassio_supervisor logs:

20-01-08 11:23:29 INFO (SyncWorker_19) [hassio.docker.interface] Update image limych/hassio-presence-monitor-amd64:0.1.0 to limych/hassio-presence-monitor-amd64:v0.2.0
20-01-08 11:23:29 INFO (SyncWorker_19) [hassio.docker.interface] Pull image limych/hassio-presence-monitor-amd64 tag v0.2.0.
20-01-08 11:23:31 ERROR (SyncWorker_19) [hassio.docker.interface] Can't install limych/hassio-presence-monitor-amd64:v0.2.0 -> 404 Client Error: Not Found ("manifest for limych/hassio-presence-monitor-amd64:v0.2.0 not found: manifest unknown: manifest unknown").

Additional context
Add any other context about the problem here.

Fixed. Refresh repository copy in your Hassio please before new attempt of installation.


do_get( ) method needed to be updated to process parameter for query under get operation.

Currently do_get( ) method only accepts URI. Based on upcoming URIs to be supported in python SDK this method needs to be updated with argument to pass query parameter dictionary object to format by appending uri with query parameters before hitting get () method.

The issue has been fixed under PR #67

Issue is fixed and merged in Master, therefore closing the defect


Create operational documentation (troubleshooting guides etc.)

Description
The reconciler requires a detailed documentation how trouble shooting has to happen and how issues can be analysed.
This has to include issue with the reconciler itself but also problems caused by the reconciliation.
Area
Internal documentation
Reasons
Required for operational readiness.
Assignees
@kyma-project/technical-writers
@tobiscr
Attachments

Relates to https://github.tools.sap/kyma/backlog/issues/1390

Operational test cases are tracked in the Wiki.
Troubleshooting guides and test protocols are available in the documentation repository.

The issue for test case 19: #466


Sticky on MacOS?

Hi guys,
How to force it to be sticky until user clicks on MacOS?
Tried:
timeout: 999999
reply: true
reply: true, timeout: 999999
and
timeout: 999999
    }, function () {
      console.log(arguments);
    }

Did not work for me. Thanks.

I don't think sticky is supported yet. There has been an issue with timeout settings in terminal-notifier (used to do notifications), so it might work better when new version is released. Have you tried the master branch and seen what the results are there?

It looks like sticky is supported in the version of terminal-notifier you have vendored in. For example, if I clone the repo and run npm install, I can run:
./vendor/terminal-notifier -message hello

The problem I seem to have is that your NotificationCenter code has this:
    timeout = setTimeout(
      function() {
        cp.kill('SIGTERM');
      },
      FAILSAFE_TIMEOUT
    );

which prevents me from having a notification open for more than 30 seconds. Can you please make this configurable?

This is due to a memory leak in the terminal-notifier which has been patched (and is in master), but there are some breaking changes in the way terminal-notifier handles icons which hasn't been resolved yet. The master branch now has the memory leak workaround removed, as the master uses the 1.8 version of terminal-notifier.

@mikaelbr Thanks for the context. Is there a task filed against https://github.com/julienXX/terminal-notifier that is tracking this?

Hmm, so it looks like the 2.0.0 release of terminal-notifier drops support for sticky notifications and says alerter should be used for those instead?
https://github.com/julienXX/terminal-notifier/releases/tag/2.0.0
alerter seems to be a fairly small, native macOS project:
https://github.com/vjeantet/alerter

I think we need to get off of terminal-notifier since it hasn't had a release since Nov 1, 2017 and seems to apparently still have reduced functionality.

Open to suggestions for alternatives.


Updated vgmm

This diff refactors variational finite and infinite mixture models, so they both use the same core methods. This is a step before Implementing a different faster variational algorithm for both of the classes.

Adding Stochastic Variational Inference variants of Finite GMM, and DP GMM
Now we have total of 5 Gaussian Mixture Model Algorithms

EM_GMM: finite model that uses Expectation Maximization algorithm to find the best fit
MEAN_FIELD_GMM: finite model that uses Mean-Field Variational Inference
MEAN_FIELD_DPGMM: inifinite model that uses Mean-Field Variational Inference
SVI_GMM: finite model that uses Stochastic Variational Inference
-SVI_DPGMM: inifite model that uses Stochastic Variational Inference

I'm still not sure which one performs better. SVI algorithms are supposed to be faster, but they don't seem to work very well with small amounts of data. I'll still have to do experiments to figure out benefits and drawbacks. So for now I think we should have all of them.

needs squash

Generally LGTM, minor comments.
Looking forward to syncing up this week to talk about what these actually do :)


Images for README.md

You think there is any chance that the same pin-out numbers match on the new version of the board?

Yes there is!
This configuration worked for me:

Disconnect the micro controller (1) from the circuit board by destroying the connections on one side coming from R4, R5 and R6.
Connect J1 (2) to GND
Connect R4 (R) to GPIO4
Connect R5 (G) to GPIO17
Connect R6 (B) to GPIO18

That's great! Thanks so much for the quick reply!

@kennylmay May I use your photo of the new board to add this configuration to the README?

Sure thing. Worked great by the way. Thanks for your help!

I have a different version of the board. Any idea which pins I should use?

There is no color wheel on this control unit. Are you sure this is a multi-color version of Ikea Dioder?

Yes, it is @ffraenz. A push on the button changes color. Holding down the button activates different modes that loop through the colors.

And another Board Variation.  Any idea which pins to use?

@thormartin91 @Ancient I guess someone needs to try out different configurations with the possible risk of losing the device. You may recognise similarities when comparing the two known board versions with the new ones. I'm rather working software-side, I can't give you safe advice on this.

@ffraenz
Hi,
i figured it out for my board Layout, maybe you could add it with your Markers, if someone else needs it.


Add a --server option to run a web server

This may be too much like an webui sort of thing, where it's essentially a web-based chatbot.

It could start very simple - a web-based interface for searching conversations. But seems if we allow the user to find a conversation on the web interface, should be able to chat in that conversation from the interface.
Would want the web-based chats and CLI-based chats to be saved in the same location.


Slack icon of iconles teams

I have Franz running with a bunch of slack chanels. Most of those have configured a team icon, and for those the team icon nicely appears in the side bar. However three of my teams did not configure an icon. In the Slack app, those are basically given the first letters as an icon so that I can distinguish them. It seems like Franz doesn't do that and now I have three the same icons, which will for sure lead to some confusion.
Expected Behavior
If the slack channel is called "Myslack", then I believe the Icon should be a capital "M". If the name is "My Chanel" it would probably be "MC"; essentially following what Slack does.
Current Behavior
It just shows the Slack application logo
Screenshots (if appropriate):

Your Environment

Franz Version used: 5.0.0-beta.13 (5.0.0-beta.13.316)
Operating System and version: OSX 10.12.6

I'm working on a custom icon upload for all services.

Fantastic! I can’t wait to see this feature coming.
Thanks.

Op 16 nov. 2017 om 23:21 heeft Stefan Malzner
<EMAIL_ADDRESS>het volgende geschreven:
I'm working on a custom icon upload for all services.
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub, or mute the thread.


refactor: Revert variable renamings lang / lang_rc

simplifies the review of #921

This PR undoes some semantic fixes but I will just redo them manually