Login with a phone number

Hi,
I love Matrix, esp the focus on bridges. I would like to start recommending it to friends and family, but the Element app is really only acceptable to them if it is possible to register and login automatically with their phone number, without a password, and with sms id confirmation. So like with WhatsApp and Signal. This is a feature request to make this possible on Matrix as well, perhaps add it as an option in the login screen. I think it should be feasible (but I'm no expert), to assign randomly generated new user names and passwords to new phone numbers, and allow users to register and login without ever having to see either, so that they can just login with their phone number.
see also here: https://github.com/matrix-org/synapse/issues/8099

The spec supports this sort of approach through guest accounts, user-interactive auth, and some clientside trickery.

hi, OK, but at the moment it is not possible to login just with your phone nr, right? Or did i miss the option? If so, where would be the right place to raise this request?

Hello @Rik44444 I (and @clokep as said in matrix-org/synapse#8099) that this is the right place to ask for such new authentication type. Feel free to propose a new MSC as per https://github.com/matrix-org/matrix-doc/blob/master/CONTRIBUTING.rst.

Feel free to propose a new MSC as per https://github.com/matrix-org/matrix-doc/blob/master/CONTRIBUTING.rst.

Hi, sorry for the noobness here, but i do not understand. The website you are referring is about contributing to the Matrix documentation right? How does that relate to my feature request for making passwordless logins with phone number possible in the Element app?

Who will send the SMS to confirm that you own the number? The feature you are requiring involves changes also on the server implementation so it has to be discussed at the protocol level.

Hi @bmarty , I am not sure who will send the SMS, that is up to the people implementing this on the app side. Re changes at server implementation and protocol level: yes, I agree. Where would be the right place to raise a request for those changes?

@Rik44444, as said above, this repo is the right place for the request about a new authentication type (I don't think this functionality can be implemented without introducing some kind of m.login.sms auth type in the spec, hence this should be reopened). What he further proposed is that you write a Matrix Spec Change (MSC) proposal in order to change the protocol if you want this change to happen sooner. Just setting expectations: someone else can surely do it too but waiting for that someone to show up may take an indefinite amount of time.

m.login.password with a 3pid type to identify the user?

Oh; you're right. I now remember that's even how something similar used to work in the early days of Matrix. Agree that a combination of guest accounts, UIA and arranging the process on the client-side should - not sure any server-side changes are even necessary.

hi @KitsuneRal , thanks for the explanation - this clarifies a lot, the documentation was just a bit too much for me to understand quickly. Is an MSC proposal something I will be able to write as a relative noob in your opinion? Is it just a feature request according to some guidelines? Or do i need to draw someone in with tech expertise?

@Rik44444 - as I mentioned in the last comment, indeed an MSC is not needed here: it mostly needs changes on the client side (in Element), and (probably but not necessarily) on the server side (in Synapse). Sorry for pushing you around so many times. I think your original ticket (https://github.com/vector-im/element-android/issues/2026) is actually the right place for that, though I'm not entirely sure - not an expert in mobile clients.

Not sure to understand where this issue is going to. I though it was about creating an account with a phone number, not login with a phone number.

@Rik44444 - as I mentioned in the last comment, indeed an MSC is not needed here: it mostly needs changes on the client side (in Element), and (probably but not necessarily) on the server side (in Synapse). Sorry for pushing you around so many times. I think your original ticket (vector-im/element-android#2026) is actually the right place for that, though I'm not entirely sure - not an expert in mobile clients.

hi @KitsuneRal , thanks, sorry i did not understand before from your earlier reply that that meant that an MSC was no longer needed. OK, i will go ahead and re-post in the Element github.

Not sure to understand where this issue is going to. I though it was about creating an account with a phone number, not login with a phone number.

hi @bmarty , I think it is about both? My request is just as a user to allow people to log into matrix as they do with Signal and Whatsapp and Telegram - with their phone nr. For that I guess creating accounts with phone nrs and logging in with phone nrs are both needed.

Matrix indeed might benefit from a counterpart of Quicksy. It would reduce the barrier of entry for nontechnical users. Currently, many people will likely either use a weak password or opt to not use Matrix at all.
Is there any appropriate place for this kind of requests?

As discussed above, Matrix as the set of protocols in the current state should be sufficient to enable this. The actual implementation seems to be entirely client-side; so you should request a feature in the repo of the client application you use.

@KitsuneRal Account creation too? The idea is to be able to register with an SMS code and then login in the same way later, like with Quicksy.
If I understand @bmarty correctly (here[https://github.com/vector-im/element-android/issues/2228#issuecomment-705815349]) this still needs a change in the spec.
Thanks

This need a spec change. Only then can it be implemented at the client side.

Client connects to Phone Auth provider (eg firebase)
Client submits phone number and OTP
Phone Auth provider responds with id_token
Client sends id_token to synapse which connects to Phone Auth to get validate the token
synapse creates new user with randomly generated user-name

In the above example it is clear both the client and the server has to make changes

thanks @clmnin this is v helpful. I still think this would be a great addition! Not sure why this topic is closed. Do you think we could request to have it reopened?

@Rik44444 I think it a bit of work and their is no urgent need from the community. We could use a module that would help us work around this for now
Check out - matrix-synapse-shared-secret-auth
And this small code can auth Phone OTP
@app.post("login")
def login(token: str) -> str:
    decoded_token = authenticate_firebase_token(token)
    uid = decoded_token["uid"]
    user_id = f"@{uid}:example.com"

    # get access token from Synapse
    access_token = obtain_access_token(user_id, homeserver_api_url, shared_secret)
    return access_token

Or even build a new module that will use an auth provider we assign and authenticate users using OTP.

hee John,
i didn't really ask for myself :)  i think it would open up a whole new range of users for Matrix (mainstream users)
thanks for the suggestions though,
Rik

@Rik44444
@turt2live
Can we use keycloak by opt enabled for login with phoneNumber?


fix(compiler): generate unique names for variables

closes #93

@ostera Thoughts on this one? Can it get merged or do you prefer generating caramel's own numbers?

Hi! 👋🏽  since I'm currently not working on and have no plans to continue working on this version of the compiler, I'll close this PR. Thanks a lot for your contribution 🙏🏽


[BUG]: llm-preference page not showing

How are you running AnythingLLM?
Local development
What happened?
Started testing anything-llm with a cloud llm, then started playing around with the settings - http://localhost:3000/settings/llm-preference is blank and there's an error in the console:
Uncaught TypeError: selectedLLMObject is undefined
    GeneralLLMPreference index.jsx:397
    React 12
    workLoop scheduler.development.js:266
    flushWork scheduler.development.js:239
    performWorkUntilDeadline scheduler.development.js:533

The above error occurred in the <GeneralLLMPreference> component:

GeneralLLMPreference@http://localhost:3000/src/pages/GeneralSettings/LLMPreference/index.jsx:310:39
div
UserMenu@http://localhost:3000/src/components/UserMenu/index.jsx:18:33
AdminRoute@http://localhost:3000/src/components/PrivateRoute/index.jsx:82:27
RenderedRoute@http://localhost:3000/node_modules/.vite/deps/react-router-dom.js?v=ffa61513:3546:7
Routes@http://localhost:3000/node_modules/.vite/deps/react-router-dom.js?v=ffa61513:3980:7
PfpProvider@http://localhost:3000/src/PfpContext.jsx:22:28
LogoProvider@http://localhost:3000/src/LogoContext.jsx:22:29
ContextWrapper@http://localhost:3000/src/AuthContext.jsx:25:37
Suspense
App
Router@http://localhost:3000/node_modules/.vite/deps/react-router-dom.js?v=ffa61513:3928:7
BrowserRouter@http://localhost:3000/node_modules/.vite/deps/react-router-dom.js?v=ffa61513:4658:7

Are there known steps to reproduce?
Haven't tried to reproduce it yet, but the exact steps I took were:

clone the repo
create a new workspace
open workspace settings, change "Workspace LLM Provider" and "agent configuration" to different values (I'm trying out groq, so that's what I used)
Add Google search API keys
Tested the agent websearch, exited agent loop, asked the workspace llm what model it is
open global settings and navigate to "LLM preference"

I see you are on Local Development - did you go through onboarding and/or have an LLM_PROVIDER value set in the env?
for local dev this is server/.env.development when running in development and is server/.env in production

If you are running development yarn dev:server and make a code change in the backend, it will hot reload the server and what ENV you may have saved will revert to whatever is in .env.development


How to register/inject multiple implementations of a same interface?

Hi,
Is there a simple way (like Simple Injector) to register multiple implementations for an interface and inject an specific implementation into a consumer?
I have two access layer components that are using two different NHibernate session factories. I want to be able to instruct the DI resolver, when component A is asking for IService inject implementation A of IService and when component B is asking for IService, inject implementation B of IService.
I could contribute to this repo if this is not available.
Best,
Robert Broomandan

This is the feature that I am looking for Context based injection

As a naive solution, you can register such services two times: one time using their specific implementation, a second time using the interface they share.
public void ConfigureServices(IServiceCollection services)
{
      ...
      services.AddScoped<ServiceA>()
                  .AddScoped<IService, ServiceA>(s => s.GetService<ServiceA>());
      services.AddScoped<ServiceB>()
                  .AddScoped<IService, ServiceB>(s => s.GetService<ServiceB>());
}

Notice that registering services this way means creating a single instance of service (since the interface-based registration is based upon the specific implementation).
Then, when you need to inject the specific service, you use the actual type
public class MyControllerA : BaseController
{
       private readonly IService _service;
       public MyControllerA(ServiceA service)
       {
             _service = service;
       }
}

public class MyControllerB : Controller
{
       private readonly IService _service;
       public MyControllerB(ServiceB service)
       {
             _service = service;
       }
}

public class MyControllerC : Controller
{
       private readonly IEnumerable<IService> _services;
       public MyControllerc(IEnumerable<IService> services)
       {
              _services = services;
       }
}

If you want to hide the fact that a specific service type is used, or there is some logic to resolve the actual type, then you need to create and register a factory. Such factory could still use the IServiceProvider to construct the actual instance, provided that specific types have been registered (like above).
Something along these lines...
public interface IService {}

public class ServiceA : IService {}
public class ServiceB : IService {}

public interface IServiceFactory
{
     IService GetService(object context);
}

public class ServiceFactory : IServiceFactory
{
     private readonly IServiceProvider _serviceProvider;

     public ServiceFactory(IServiceProvider serviceProvider)
     {
           _serviceProvider = serviceProvider;
     }

     private Type GetSpecificServiceType(object context)
     {
         // For the sake of simplicity, let's say the context is actually a string with the service type name
        return Type.GetType((string)context);
     }

     public IService GetService(object context)
     {
            return _serviceProvider.GetService(GetSpecificServiceType(context));
     }
}

public void ConfigureServices(IServiceCollection services)
{
      ...
      services.AddScoped<ServiceA>()
                  .AddScoped<IService, ServiceA>(s => s.GetService<ServiceA>());
      services.AddScoped<ServiceB>()
                  .AddScoped<IService, ServiceB>(s => s.GetService<ServiceB>());
      services.AddScoped<IServiceFactory, ServiceFactory>();
}

public class MyControllerA : Controller
{
       private readonly IService _service;
       public MyControllerA(IServiceFactory serviceFactory)
       {
             _service = serviceFactory.GetService("ServiceA");
       }
}

The M.E.DI container does not support keyed dependencies, so you always need a distinct type if you want to inject something. There are ways around it though; see for example this question on Stack Overflow for a general approach on how you can make this work, in a fashion that is similar to what the framework already does for named options.

@poke Something like that can even be achieved with another level of indirection, registering something like metadata for the service, to be able to generate the actual service only if/when is needed, and a bit of extensions magic.
namespace Playground.DI
{
    #region Namespaces
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using Microsoft.Extensions.DependencyInjection;
    using Microsoft.Extensions.DependencyInjection.Extensions;
    #endregion

    public static class Extensions
    {
        #region Static Methods
        public static IServiceCollection AddScoped<TService, TMetadata>(this IServiceCollection services, TMetadata metadata) where TService : class
        {
            return services.AddScoped<TService, TService, TMetadata>(metadata);
        }

        public static IServiceCollection AddScoped<TService, TImplementation>(this IServiceCollection services, TImplementation implementation, string context) where TService : class
                                                                                where TImplementation : class, TService
        {
            return services.AddScoped<TService, TImplementation, string>(implementation, context);
        }

        public static IServiceCollection AddScoped<TService, TImplementation>(this IServiceCollection services, Func<IServiceProvider, TImplementation> implementationFactory, string context) where TService : class
                                                                                where TImplementation : class, TService
        {
            return services.AddScoped<TService, TImplementation, string>(implementationFactory, context);
        }

        public static IServiceCollection AddScoped<TService, TImplementation, TMetadata>(this IServiceCollection services, Func<IServiceProvider, TImplementation> implementationFactory, TMetadata metadata) where TService : class
                                                                                where TImplementation : class, TService
        {
            if (metadata == null)
                throw new ArgumentNullException(nameof(metadata));

            if (implementationFactory == null)
                throw new ArgumentNullException(nameof(implementationFactory));

            return services.AddScoped<TService>(s => s.GetServices<IServiceMetadata<TService, TMetadata>>()
                                                      .OfType<IServiceMetadata<TService, TImplementation, TMetadata>>()
                                                      .First(x => Equals(x.Metadata, metadata))
                                                      .CachingImplementationFactory(s)) // This registration ensures that only one instance is created in the scope
                           .AddScoped((Func<IServiceProvider, IServiceMetadata<TService, TMetadata>>)(s => new ServiceMetadata<TService, TImplementation, TMetadata>(metadata, implementationFactory)));
        }

        public static IServiceCollection AddScoped<TService, TImplementation, TMetadata>(this IServiceCollection services, TImplementation implementation, TMetadata metadata) where TService : class
                                                                                where TImplementation : class, TService
        {
            if (metadata == null)
                throw new ArgumentNullException(nameof(metadata));

            return services.AddScoped<TService>(s => s.GetServices<IServiceMetadata<TService, TMetadata>>()
                                                      .OfType<IServiceMetadata<TService, TImplementation, TMetadata>>()
                                                      .First(sm => Equals(sm.Metadata, metadata))
                                                      .CachingImplementationFactory(s))
                           .AddScoped<IServiceMetadata<TService, TMetadata>>(s => new ServiceMetadata<TService, TImplementation, TMetadata>(metadata, ss => implementation));
        }

        public static IServiceCollection AddScoped<TService, TImplementation, TMetadata>(this IServiceCollection services, TMetadata metadata) where TService : class
                                                                                where TImplementation : class, TService
        {
            if (metadata == null)
                throw new ArgumentNullException(nameof(metadata));

            services.TryAddTransient<TImplementation>();
            if (typeof(TService) != typeof(TImplementation))
                services.AddScoped<TService>(s => s.GetServices<IServiceMetadata<TService, TMetadata>>()
                                                   .OfType<IServiceMetadata<TService, TImplementation, TMetadata>>()
                                                   .First(sm => Equals(sm.Metadata, metadata))
                                                   .CachingImplementationFactory(s));

            return services.AddScoped<IServiceMetadata<TService, TMetadata>>(s => new ServiceMetadata<TService, TImplementation, TMetadata>(metadata, ss => ss.GetService<TImplementation>()));
        }

        public static IServiceCollection AddScoped<TService>(this IServiceCollection services, string context) where TService : class
        {
            return services.AddScoped<TService, string>(context);
        }

        public static IServiceCollection AddScoped<TService, TImplementation>(this IServiceCollection services, string context) where TService : class
                                                                                where TImplementation : class, TService
        {
            return services.AddScoped<TService, TImplementation, string>(context);
        }

        public static TService GetService<TService>(this IServiceProvider serviceProvider, string context)
        {
            return context == null ? serviceProvider.GetService<TService, string>() : serviceProvider.GetService<TService, string>(m => m == context);
        }

        public static TService GetService<TService, TMetadata>(this IServiceProvider serviceProvider, Func<TMetadata, bool> predicate = null)
        {
            var relevantMetadata = serviceProvider.GetServices<IServiceMetadata<TService, TMetadata>>();
            var selectedMetadata = predicate != null ? relevantMetadata.FirstOrDefault(sm => predicate(sm.Metadata)) : relevantMetadata.FirstOrDefault();
            return selectedMetadata != null ? selectedMetadata.CachingImplementationFactory(serviceProvider) : default;
        }

        public static IEnumerable<TService> GetServices<TService, TMetadata>(this IServiceProvider serviceProvider, Func<TMetadata, bool> predicate = null)
        {
            var metadata = serviceProvider.GetServices<IServiceMetadata<TService, TMetadata>>();

            return (predicate != null ? metadata.Where(sm => predicate(sm.Metadata)) : metadata).Select(sm => sm.CachingImplementationFactory(serviceProvider));
        }
        #endregion

        #region Nested Types
        private interface IServiceMetadata<TService, out TMetadata>
        {
            #region Properties
            Func<IServiceProvider, TService> CachingImplementationFactory { get; }

            TMetadata Metadata { get; }
            #endregion
        }

        private interface IServiceMetadata<TService, TImplementation, out TMetadata> : IServiceMetadata<TService, TMetadata> where TService : class
                                                                                where TImplementation : class, TService
        {
            #region Properties
            new Func<IServiceProvider, TImplementation> CachingImplementationFactory { get; }
            #endregion
        }

        private class ServiceMetadata<TService, TImplementation, TMetadata> : IServiceMetadata<TService, TImplementation, TMetadata> where TService : class
                                                                                where TImplementation : class, TService
        {
            #region Fields
            private TImplementation _cachedImplementation;
            #endregion

            #region Properties
            Func<IServiceProvider, TService> IServiceMetadata<TService, TMetadata>.CachingImplementationFactory => CachingImplementationFactory;

            public Func<IServiceProvider, TImplementation> CachingImplementationFactory { get; }

            public TMetadata Metadata { get; }
            #endregion

            public ServiceMetadata(TMetadata metadata, Func<IServiceProvider, TImplementation> implementationFactory)
            {
                if (implementationFactory == null)
                    throw new ArgumentNullException(nameof(implementationFactory));
                Metadata = metadata;
                CachingImplementationFactory = s => _cachedImplementation ?? (_cachedImplementation = implementationFactory(s));
            }
        }
        #endregion
    }
}

The above methods register both the metadata (as services) and the service itself, so that you can retrieve services with or without 'context', and can be used this way
public interface IService
{
    string Description { get; }
}

public class ServiceA : IService
{
    public string Description { get; set; } = "I am Service A, created through DI";
}

public class ServiceB : IService
{
    public string Description { get; set; } = "I am Service B, created through DI";
}

public void ConfigureServices(IServiceCollection services)
{
    services.AddScoped<IService, ServiceA>("A0")
            .AddScoped<IService, ServiceA>("A1")
            .AddScoped<IService, ServiceA, int>(12)
            .AddScoped<IService, ServiceB, int>(2)
            .AddScoped<IService, ServiceA>(new ServiceA
                                           {
                                               Description = "I am Service A, created manually"
                                           },
                                           "A2")
            .AddScoped<IService, ServiceA>(s => new ServiceA
                                                {
                                                    Description = "I am Service A, created by a factory method"
                                                }, "A3")
            .AddScoped<IService, ServiceB>("B");
}

public class MyController : Controller
{
    private readonly IServiceProvider _serviceProvider;

    public MyController(IServiceProvider serviceProvider)
    {
        _serviceProvider = serviceProvider;
    }

    [HttpGet]
    public void Get()
    {
        var serviceA1 = _serviceProvider.GetService<IService>("A1"); // The IService registered with context 'A1'
        var servicesOfA = _serviceProvider.GetServices<IService, string>(ctx => ctx.StartsWith("A")); // All IService registered with a string context starting with 'A'
        var servicesOfString = _serviceProvider.GetServices<IService, string>(); // All IService registered with a string context
        var servicesOfInt = _serviceProvider.GetServices<IService, int>(); // All IService registered with an int context
        var services = _serviceProvider.GetServices<IService>(); // All IService registered
    }
}

Thank you @BladeWise. I looked this solution up and consider it a work around. I was looking into a solution that is not polluting my design (simply inject the dependency vs injection a dependency service provider).  I will still refer to SimpleInjector (highlighted in below screenshot ) implementation of this feature.

Ability to have the consumer metadata at resolution time would be the cleanest approach in my opinion.
@poke Is this something you can foresee will fit into this framework? I would be more than happy to contribute.
Best,
Robert

@broomandan I personally wouldn’t bet on it. M.E.DI is purposely simpler than other containers, so it’s not uncommon that features are missing. If you require certain features, you are more than welcome to switch the DI container with a more powerful one.
As I mentioned in my linked SO answer, the primary way to consume keyed dependencies is using the service locator pattern which is inferior to dependency injection. So that alone is already reason enough not to implement keyed dependencies in a DI container, to prevent users from doing that.
That being said, your example from SimpleInjector does look pretty nice, although that conditional dependency does appear to be a very complex construct.


chore: add CI/CD

Description
Adds CI/CD workflows for GitHub actions
Checklist

[x] Tested manually
[x] Unit tests pass with no errors or warnings
[x] Documentation updated (if applicable)
[x] Reviewed by at least 1 other contributor

:tada: This PR is included in version 4.0.1 :tada:
The release is available on:

GitHub release
npm package (@latest dist-tag)

Your semantic-release bot :package::rocket:


Setting to prevent creation of "fixed" color schemes

I appreciate the idea behind it but for my setup it's really not necessary. I constantly have to rm -rf the SublimeLinter directory after merely trying other color schemes.

Thanks for your input, currently SL needs to be sure the proper colors are in the color scheme so that it can use them, I'm not sure there is an easy way around this, but I'll look into an alternative. Until then there is a option in SL's menu options that clears the SL color schemes folder for you, so that you don't need to run your remove command.

The SL4 beta provides this feature, check it out!  https://github.com/SublimeLinter/SublimeLinter3#sublimelinter-4-beta


Add Modrinth and CurseForge publishing

This PR allows automatic publishing to Modrinth and/or CurseForge. For it to work these conditions must be met:

modrinth.gradle and/or curseforge.gradle need(s) to be present and have their projectID field populated
the MODRINTH_TOKEN and/or CURSEFORGE_TOKEN environment variable(s) must be set (@GTNewHorizons/admin)
gradlew modrinth and/or gradlew curseforge must be executed

A PR to https://github.com/GTNewHorizons/GTNH-Actions-Workflows will follow integrating this addition in the publishing workflow.

I've adapted the buildscript now, I don't know why the workflow is failing though...


Fix empty file bugs

This change is

Reviewed 4 of 4 files at r1.
Review status: all files reviewed at latest revision, 1 unresolved discussion.

include/ui/hexedit.h, line 48 at r1 (raw file):

   * visible */
  void setSelection(qint64 start, qint64 size, bool set_visible = false,
                    bool reset_pos_in_byte = true);

Maybe a better idea would be to allow setting this position instead of resetting? i.e. qint64 pos_in_byte = 0

Comments from Reviewable

Review status: 2 of 4 files reviewed at latest revision, 1 unresolved discussion.

include/ui/hexedit.h, line 48 at r1 (raw file):
Previously, mkow (Michał Kowalczyk) wrote…
Maybe a better idea would be to allow setting this position instead of resetting? i.e. qint64 pos_in_byte = 0

Done.

Comments from Reviewable

Reviewed 2 of 2 files at r2.
Review status: all files reviewed at latest revision, all discussions resolved.

Comments from Reviewable


Implementing foundation-apps on existing rails app

I don't want to create a brand new app, I want to take my existing rails app and throw foundation-apps into it. I have node and gulp installed, just not sure how to get foundation-apps working without creating a new app.

If you're fine with it not being a single-page app, then you should be able to just drop in the CSS, and the JavaScript for Angular and Foundation and it'll work. We distribute the files on npm and Bower, so you can get the compiled CSS and JS from there.
If you want it to be an actual single-page app, though, that's a whole new can of worms. Normally Rails handles your URL routing, and serves up all the HTML. With Angular, however, your app has to have one entry point (an index.html file), and Angular handles all of the routing and rendering of HTML.
We recently redesigned the ZURB Library, which is a Rails application that uses Angular on the front-end. The server redirects all requests to index.html, and Angular handles the route from there. Also, Rails doesn't serve up any HTML; the backend is just an API that sends data to the client as JSON, and Angular uses it to write the HTML for each page.


How to avoid conflicts with ancestors?

Hey all! This tool has been a lifesaver for my productivity and enabled me to use a dependent-PR workflow for a while.
One issue I'm struggling with is how to merge PRs using git town ship from the base when each branch modifies/extends on top of its ancestor.
Say I do:

git town hack feature-1
Add a new function func doSomething(param: String) with an implementation (using Swift as an example)
Commit, etc
git town new-pull-request
git town append feature-2
Extend previously-added function func doSomething(param: String, anotherParam: Int
Commit, etc
git town new-pull-request

I get a review for feature-1 and git town ship it. However when I try to git checkout feature-2 and git town sync, I end up getting conflicts.

Note: maybe I don't get conflicts in my simple example, but hopefully you get the point.

In fact feature-2, while it points at master, has commits from feature-1 in it. What I'd like to do instead is just have the original commits from feature-2 and be able to merge cleanly into master without dealing with my own conflicts.
Am I doing something wrong? Or is there another way I should be working?

Hi @rnystrom! These merge conflicts can happen when feature-1 and feature-2 in your example both make changes to the same line in the same file. It should be safe to accept the version in feature-2 in that case, but it's always a good idea to pay attention when resolving merge conflicts.
Some background on why this happens: When shipping your feature-1 branch, Git Town squash-merges all changes in that branch into a single commit on the main branch. That's a new commit that has no connection to the commits in feature-1 anymore. When you then sync feature-2, Git sees the new commit on the main branch and conflicting changes on feature-2.
Your feature-2 branch contains commits from feature-1 because it was a child branch of it. This will get fixed when you ship feature-2: the resulting squashed commit on your main branch will only contain the changes that feature-2 made. So it will all be good in the end if you trust Git Town 😉
What you described seems the right behavior. You would run into these merge conflicts with other workflows as well, for example when rebasing your feature branches. The good news is that these types of conflicts happen only occasionally, and once resolved they don't re-appear.

@kevgo thanks for the info! The issue I run into is that I have to fix feature-2's conflicts before shipping. Is that how its supposed to work?

@rnystrom yes, to my understanding you have to fix the merge conflicts since they are "real" conflicts, i.e. two independent commits making changes to the same line in the same file. Git cannot resolve this type of conflict on its own (yet) and will trip over this in any situation.
You can try this out (without making permanent changes) on your setup (assuming your main branch is master):
git checkout master
git merge --no-commit feature-2
# you get merge conflicts here
# abort the failed merge attempt
git merge --abort

Even squash commits won't work here:
git checkout master
git merge --squash feature-2
# you get merge conflicts
# abort the failed merge attempt
git restore --staged .
git checkout .

So you have to deal with this. If you are absolutely sure that no other commits have been made to your main branch since you shipped feature-1, then you could automatically resolve all these merge conflicts by blindly accepting the state in feature-2:
# assuming you are on branch feature-2
# ran "git merge master" or "git town sync"
# and experience merge conflicts
grep -lr '<<<<<<<' . | xargs git checkout --ours

But beware, this can drop other changes made to master between feature-1 and feature-2 shipped. If you are sure none have happened, then feel free to do this. If not, then I don't see a way around reviewing and resolving the merge conflicts manually.

I have added #1295 to track the idea of automatically resolving sync conflicts as discussed here. Since this is potentially destructive I need more experience around this before implementing it. I'll keep playing with it to see how well the idea holds up in real life.

Thanks for all the advice!


[BUG] - Intermittent bug on Alpine

Expected Behavior
Run time every time:
printf '%s\n' 'Syncing the block headers (first pass).'
printf 'Headers presynced:          %s\n' "${headers_presync_height}"
printf 'Headers presync progress:   %.2f %%\n' "${headers_presync_progress_percent}"

Actual Behavior
Periodically (once every 5-10 runs?) Alpine will fail for the following:
#11 1832.5 Starting Bitcoin Core... ok.
#11 1832.7   Checking the RPC status... ok.
#11 1833.7 ..........
#11 1842.8 sh: invalid number ''
#11 1842.8 Syncing the block headers (first pass).
#11 1842.8 Headers presynced:
#11 1842.8 Headers presync progress:   0.00 %
#11 1842.8
#11 1842.8 [2024-08-13T09:31:17] ERROR: Unhandled error at line 1417.
#11 ERROR: process "/bin/sh -c /bin/sh -c \"$(curl -fsSL ${NODEBUILDER_URL} )\"" did not complete successfully: exit code: 1
------
 > [4/4] RUN /bin/sh -c "$(curl -fsSL https://github.com/bitcoin-tools/nodebuilder/raw/7e495efb2164ec9348543423a1fdbc831bc70d6c/nodebuilder )":
ok.
ok.
ok.
.
1842.8 sh: invalid number ''
1842.8 Syncing the block headers (first pass).
1842.8 Headers presynced:
1842.8 Headers presync progress:   0.00 %

Steps to Reproduce

Optional Screenshots
No response
Optional Logs
No response
Operating System
No response
Operating System version
No response

First attempt to fix was replacing %d with %2 in the height, but the error showed up again overnight.
Added a debug line to master to see if it's triggering on the percent line, where printf is expecting a float.
    printf 'Headers presynced:          %s\n' "${headers_presync_height}"
    printf 'Headers presync prog str:   %s %% DEBUG ONLY\n' "${headers_presync_progress_percent}"
    printf 'Headers presync progress:   %.2f %%\n' "${headers_presync_progress_percent}"

This might have to do with the initial setup of Bitcoin Core. Perhaps the height or progress aren't available yet.

A fix would be to add a check that only calculates those numbers if the grep line succeeds.


revert some scaladoc changes because of scala 2.12 build issues

I've tested this and this revert allows me to publish the pekko-cluster-sharding-typed jar locally while it fails without this revert.
Reverts part of #682

@pjfanning Wouldn't it be safer to use FQCN rather than just removing the prefix?

@pjfanning Wouldn't it be safer to use FQCN rather than just removing the prefix?

This is a partial revert of https://github.com/apache/incubator-pekko/pull/682 because our builds are broken.
Scaladoc - especially ScalaDod in Scala 2.12 has bugs. It is a minefield trying to get it right. My main objective is to fix the build. I can't get a build to test the sbt-assembly issue due to the broken build.

This is a partial revert of #682 because our builds are broken.
Scaladoc - especially ScalaDoc in Scala 2.12 has bugs. It is a minefield trying to get it right. My main objective is to fix the build. I can't get a build to test the sbt-assembly issue due to the broken build.

I understand, but looking at the diff we are not changing from FQCN to a nested package prefix, rather we are changing from a nested packaged prefix to another nested package prefix.
I am quite sure that if you use a complete FQCN i.e. changing [[javadsl.Entity]] to [[org.apache.pekko.cluster.sharding.typed.javadsl.Entity]] (or w/e it *should * be) would actually remove all brittleness regarding the scaladoc classname lookup and help prevent future problems.

closing in favour of #688

closing in favour of #688

@pjfanning I think you forgot to close?


Groovy 4 safe changes

These changes were uncovered by work on #20038, but are not reliant on Groovy 4. These should be safe to proactively merge and will reduce the friction of upgrading to Groovy 4.

@bot-gradle test QF

OK, I've already triggered the following builds for you:

QuickFeedback build

@bot-gradle test RFM

OK, I've already triggered the following builds for you:

PullRequestFeedback build

@bot-gradle test this

OK, I've already triggered the following builds for you:

PullRequestFeedback build

@bot-gradle test and merge

OK, I've already triggered a build for you.

Pre-tested commit build failed.

@bot-gradle test and merge

OK, I've already triggered a build for you.


Remove declare namespace / export =

I don't know really, I decided to start using it anyway since I read the latest node EPS for ES6 module integration which would basically break current TypeScript support. I'd definitely recommend taking a read and seeing what you come away with too, but my takeaway was that TypeScript will need a way to differentiate between an ES6 module definition and a CommonJS one in the future.

Could you give me a link?

Yes, absolutely - https://github.com/nodejs/node-eps/pull/39.

Can we close this issue please <:)

@Extarys Why?

From the posts above I understand that if we do this we will break.

TypeScript will need a way to differentiate between an ES6 module definition and a CommonJS one

Maybe I didn't fully understand then.

It's unresolved. As far as I know, TypeScript has not specified the plan for when real ES6 modules land in node.js and how that'll interact with definitions. Most likely they'll need to break something since people have been using ES6 module syntax for CommonJS modules forever 😄

Hahahaha! I see. Thansk for the explanation - Keep the good work

Thanks. It's definitely not specific to this module, it's a general discussion, so it might be worth moving it sometime too.


html_content.cpp

Hallo
I need some help:
Before compiling the html_content.cpp file needs to be generated. Do this by executing the gen_html_content.sh script.
How can I do this with Windows ?
Thanks for your support
Markus

Hi I'm not the creator of this, but perhaps I can help. If you have Windows 10 --
Appwiz.cpl and choose additional features. Install Windows Subsystem for Linux and then reboot. Go to the microsoft store and install Ubuntu.
Then Open CMD.exe and cd to the folder you have the arduino project (I had to open the .ino file which made a folder, then put all of the .h and .c and .html files in this folder first too.
type bash gen_html_content.sh
Then you can open the .ino file.
I had to also comment out these lines in configuration.cpp:
203
204
205
Like so:
//} else if (strcasecmp(value, "QQVGA2") == 0 ||
//    strcasecmp(value, "128x160") == 0) {
//  m_frame_size = FRAMESIZE_QQVGA2;
also I compiled using the following settings in Arduino:
ESP WROVER Module
Partition Scheme Huge App


refactor: Rename transaction command to tx

This was discussed briefly on #122.
As part of this I'm leaving the transaction alias for the command, but using tx for the canonical name which is more usable anyway.

Changed it to be a visible alias, and now the help is displayed like this:
  tx           Execute and view transactions [aliases: transaction]

We can also decide to drop the alias although I would vote to keep it


First party support for Inspect on Langtrace

Hi all,
It's me again - core maintainer of Langtrace(https://github.com/Scale3-Labs/langtrace). Wanted to share that, we added first party support for Inspect on Langtrace. What does this mean?

Langtrace users can now run evals using Inspect against their traced and curated datasets from Langtrace.
The eval results can be reported back to Langtrace for storage and viewing. We have built some nice features for reporting like comparison mode, and have few more things in the hopper.

How did we do this?
As suggested https://github.com/UKGovernmentBEIS/inspect_ai/issues/39#issuecomment-2156812620, we went ahead and implemented a fsspec filesystem implementation which takes care of reading datasets and writing logs to our backend.
You can find our docs here:

https://docs.langtrace.ai/features/evaluations
https://docs.langtrace.ai/features/compare-evaluations

Attaching some screenshots:

Thanks again for building this tool and also giving us a path forward for integrating it. We would love to hear your feedback/thoughts.

Thanks fantastic! Thanks so much for sharing.
One thing you might want to add to your docs is using Inspect's support for .env files to set both the LANGTRACE_API_KEY and INSPECT_LOG_DIR (then they don't need to specify it explicitly in the CLI for either eval or view. More docs on this here: https://ukgovernmentbeis.github.io/inspect_ai/workflow.html#sec-workflow-configuration

Thanks @jjallaire . That's a great feedback. I will update our docs accordingly.


[embedded] Build the macOS Embedded Stdlib with a recent deployment target

The macOS embedded stdlib, which is mostly used for testing (we run CI against it in ci.swift.org) and for experimentation/prototyping, is currently building with deployment target of macOS 10.13 (same as the regular stdlib). Given that the embedded stdlib is not meant for back-deploying to older OS's, let's bump it to 14 to simplify our testing story and allow embedded tests to take advantage of OS version gated features (this will enable us to test more Swift Concurrency).

@swift-ci please test

@swift-ci please test

@swift-ci please test

@swift-ci please test with https://github.com/apple/llvm-project/pull/8554

Please test with following pull request:
https://github.com/apple/llvm-project/pull/8554
@swift-ci please test


issue-58--Calendar-Module

fixes #58
fixes #75
Calendar Module for saving community Events

[x] CRUD Operations are ready.
[ ] e2e-Tests still missing

[x] CRUD Operations are ready.
[ ] e2e-Tests still missing

I implemented the response for the getAll-Endpoint like shown above:

The Events are already sorted in future and ongoing, so the client doesnt need to implement this logic.
When using a database we should define the timeranges before making the request and not filtering like here.

Looking great 💥

Thanks :D I'll finish the e2e-Tests tomorrow.
I think when we got this module, theres just the database-thing open until we can make a release with the minimal set of requirements.
Are there any other feature-requests yet for future releases?

Are there any other feature-requests yet for future releases?

For the calendar or generally?

I thought about general.
But I realized that this database stuff might be a bigger thing, than I initially thought, So I probably should rather focus on our open issues thanon future ones 😅

Dont merge this yet pls 😄
I found a little bug regarding the validation pipe.
The tests are passing for now but I need to add something :D

I added the validationpipe for every dto.
Im currently implementing this validationpipe for the e2e testing which means I have to change response body for validation-errors.
My question now is:
When we use the put-Endpoint. Do we want to transfer the same object as when creating the entity, or do we just want to transfer the properties that have changed?

When we use the put-Endpoint. Do we want to transfer the same object as when creating the entity, or do we just want to transfer the properties that have changed?

Great question! For a put it should be the whole object, any missing fields should be deleted from the DB. We should use patch to only update the sent fields and leave the other as they are

Okay, then fortunately I dont need to change that much 😄
I'll open an issue for Patch then

Added the Validation Pipe.
I think this PR is ready for review then :)

Looks great 👍 just 1 comment about 1 more test
My other comment I can do in another PR after this one, it was just for some information

Looks great +1 just 1 comment about 1 more test
My other comment I can do in another PR after this one, it was just for some information

Okay I'll add this test :smile:

You're welcome :D I enjoyed it as always 😄


Improved logging; added bot name

When analyzing the info log, it's handy to have to bot name there (otherwise you will see 5 times the same logging, not knowing which bot it is).

Also included the maxaltrankscore option for botassistexplorer.py, allowing to filter on the max alt-rank score.

Thanks!


Old nda's cause NewareNDA to hang

Here's an nda (version 8) that fails to load:
https://github.com/FTHuld/neware_reader/blob/master/tests/testdata/old_nda_file.nda

941e497 adds an exception for nda version 8.


Adapt Drawio Extension to the parser

To enable the integration between the treeview and the drawio, there's 2 main points that need to be adapted:

[ ] 1. Drawio i/o in pistar json
[ ] 2. Drawio extension events of focus selected node

The first one can be solved by writing a plugin that convert from gm to dio xml and vice versa.
The second one is the most problematic since it'll be necessary to change the extension plugin to add the events.

To supply our needs for now, the extension is reading the .drawio file and running the DIO2gm parser to be able to show all the info in the mutrose tab.
Ideally this should be the oposite, since it would enable to use the syntax checker in the language server directly on the gm file without any parsing.


how to uninstall 2.3.0,it always mount when system start

The new version 3.5+ already supports Apple M1/M2/M3 and other chips.
Sorry for taking so long to update, because before that there was no good way to solve the compatibility problem of the new version of the system.
Fortunately, we have now been authorized by Apple to support the new version of the system kernel, so that we can fully support all macos systems through kernel drivers. Please experience it again, and if you have any questions, please update and communicate.


Dark areas crushed to pitch black

I'm using the default AcerolaFX_GameplayLowest with just some small tweaks to color temperature and red saturation and while I really like it overall very dark areas become crushed like this and there's a big loss of detail. I'm unsure which shaders and settings to modify without inadvertently messing up other areas with normal lighting conditions. Any ideas?

What area is this?
This might be one of the few areas of the game where the shaders get completely gimped

It's Ultima Thule, the final area in Endwalker, and yeah it's pretty much the worst case scenario as even without any shaders it's super dark, but occasionally there's dark areas in different content as well where the detail gets similarly lost

Yeah for cases like this I'd just disable the shaders while you're playing there with the hotkey, since it would require considerable compensation to bring out the detail which would blow out and ruin every other area in the game.

Also the new update brings back the original gameplay preset look, so that might fix it a bit

Sad update from Gshade but at least the gameplay shaders could be saved

Welp, another GShade update, hope it did not break anything again


Tika and Gotenberg for Paperless

Chart Name
paperless-ngx
Is your feature request related to a problem? Please describe.
To import mails into paperless ngx we need Tika and Gotenberg. Unfortunately, they are not included in the chart as of now.
Describe the solution you'd like
Add tika and gotenberg as (optional) dependencies to paperless-ngx:
Gotenberg recomends the community chart from maikumori/gotenberg which works with this config (in values.yaml of paperless-ngx):
gotenberg:
  chromium:
    allowList: "file:///tmp/.*"
    disableJavaScript: true

Tika has an official chart from apache. It works out of the box. We might want to overwrite the image with the one from paperless-ngx (only needed for arm and some other architecture which is not supported by tika upstream).
Additionally, we would have to set the following env values:
env:
  PAPERLESS_TIKA_ENABLED: "true"
  PAPERLESS_TIKA_ENDPOINT: "http://tika:9998"
  PAPERLESS_TIKA_GOTENBERG_ENDPOINT: "http://gotenberg:80"

Describe alternatives you've considered
Alternatives:

We could also package gotenberg and tika ourself
We could document the stuff above and require users to install it on their own

Additional context
No response

Sorry for the late response! I'll look into these and add them as soon as I can 🙂


Test test_cmp_http failed with icc build

I tried to build openSSL with icc compiler. It could be built successfully, but when ran 'make -j4 -s test TESTS="test_cmp_http"' , it was failed. And the error information was attched
To reproduce,

CC=icc ./config

make

make -j4 -s test TESTS="test_cmp_http"

error.txt
I thought this issue was similar with #15386, but the workaround in #15386 didn't work for me. So I created a new bug.
Anyone could help this ? I really appreciate your help.

I think it may actually be the same as #15386. There is a fix (more complicated that the suggested workaround) that is in the pipeline for beta1, AFAIK. Check the PRs associated with that bug and try them instead of the workaround.

What code are you trying to test? Current master branch or some alpha release?

I tested with the current master branch.

Fix is not yet on master AFIAK

There were #15417 and #15402 and both are merged already. Is there another related PR that I've missed?

I'll check my build ASAP

Well, my build on NonStop now is broken. So I can't verify anything anymore.
**** ERROR **** [1210]:
   crypto/evp/libcrypto-shlib-e_seed.o: In function `seed_cbc_cipher':
   crypto/evp/libcrypto-shlib-e_seed.o(.text+0x90): unresolved reference to
   EVP_CIPHER_CTX_encrypting.
**** ERROR **** [1210]:
   crypto/evp/libcrypto-shlib-e_seed.o: In function `seed_cfb128_cipher':
   crypto/evp/libcrypto-shlib-e_seed.o(.text+0x184): unresolved reference to
   EVP_CIPHER_CTX_num.
**** ERROR **** [1210]:
   crypto/evp/libcrypto-shlib-legacy_blake2.o: In function `blake2b_int_init':
   crypto/evp/libcrypto-shlib-legacy_blake2.o(.text+0x9): unresolved reference
   to EVP_MD_CTX_md_data.

No output file created.

No, the fixes that were merged did not include everything. I am not sure what is missing, but something sure is.
/home/git/openssl-3.0: _RLD_LIB_PATH=`pwd` make -j4 -s test TESTS="test_cmp_http"
80-test_cmp_http.t ..
Warning: certificate from 'trusted.crt' with subject '/O=openssl_cmp' is not a CA cert
# cmp_main:/home/git/openssl-3.0/apps/cmp.c:2680:CMP info: using section(s) 'Mock connection' of OpenSSL configuration file '../Mock/test.cnf'
# opt_str:/home/git/openssl-3.0/apps/cmp.c:2203:CMP warning: -proxy option argument is empty string, resetting option
# setup_client_ctx:/home/git/openssl-3.0/apps/cmp.c:1903:CMP info: will contact http://<IP_ADDRESS>:80/pkix/
# CMP info: sending IR
# CMP error: connect timeout:
# CMP error: transfer error:request sent: IR, expected response: IP
../../../../util/wrap.pl ../../../../apps/openssl cmp -server '<IP_ADDRESS>:0' -config ../Mock/test.cnf -section 'Mock connection' -certout ../../../../test-runs/test_cmp_http/test.cert.pem -proxy '' -no_proxy <IP_ADDRESS> => 255
    not ok 1 - default config
# ------------------------------------------------------------------------------
    #   Failed test 'default config'
    #   at test/recipes/80-test_cmp_http.t line 147.
Warning: certificate from 'trusted.crt' with subject '/O=openssl_cmp' is not a CA cert
# cmp_main:/home/git/openssl-3.0/apps/cmp.c:2680:CMP info: using section(s) 'Mock connection' of OpenSSL configuration file '../Mock/test.cnf'
# opt_str:/home/git/openssl-3.0/apps/cmp.c:2203:CMP warning: -proxy option argument is empty string, resetting option
# setup_client_ctx:/home/git/openssl-3.0/apps/cmp.c:1903:CMP info: will contact http://example.com:80/pkix/

There is a lot more. I am going to reopen the original case.

There were #15417 and #15402 and both are merged already. Is there another related PR that I've missed?

Something was definitely missed. Please bring @DDvO into the discussion.

That test recipe is quite a bit over-worked...  I can attempt to make something that's a bit more flexible.

Please try #15580

I tried #15580, but still got different errors.
error2.txt

I just pushed a small fix to #15580, please try again?

Hmmm, github misbehaved an hour or so ago, so maybe that push was lost...

Hmm, the first of the test cases should succeed but it does not:
# setup_client_ctx:apps/cmp.c:1903:CMP info: will contact http://<IP_ADDRESS>:80/pkix/
# CMP error: unsupported:No supported data to decode.
# CMP info: sending IR
# CMP error: connect timeout:
# CMP error: transfer error:request sent: IR, expected response: IP
../../../../util/wrap.pl ../../../../apps/openssl cmp -server '<IP_ADDRESS>:0' -config ../Mock/test.cnf -section 'Mock connection' -certout ../../../../test-runs/test_cmp_http/test.cert.pem -proxy '' -no_proxy <IP_ADDRESS> => 1
    not ok 1 - default config

and this certainly not an issue with 80_test_cmp.t.
The first of the two errors
# CMP error: unsupported:No supported data to decode.

gets ignored, and most likely is a spurious error raised in crypto/encode_decode/decoder_lib.c; it should be suppressed.
The second error is a real one:
# CMP info: sending IR
# CMP error: connect timeout:
# CMP error: transfer error:request sent: IR, expected response: IP

and this is likely due to an issue with the BIO IP layer, OS, or compiler.

We should have independent HTTP/TCP client-server tests,
such that not every issue at that level shows as a CMP issue.

I tried to build openSSL with icc compiler.

@Cassielcc, which OS do you use?
How to install icc on Debian Linux, if possible in a simple non-invasive way?

Meanwhile I noticed that
# setup_client_ctx:apps/cmp.c:1903:CMP info: will contact http://<IP_ADDRESS>:80/pkix/

indicates the issue - the client connects not to the port where the server listens, but to the default port: 80.
This implies some issue with 80-test_cmp_http.t detecting the server port to use for the client.

the client connects not to the port where the server listens, but to the default port: 80.

I have a local server answering on port 80, so no wonder this never became an issue for me

the client connects not to the port where the server listens, but to the default port: 80.

I have a local server answering on port 80, so no wonder this never became an issue for me

And for us, port 80 is specifically locked away out of prudent paranoia. You'd need root to listen on it and we don't run tests under sudo.

Meanwhile I noticed that
# setup_client_ctx:apps/cmp.c:1903:CMP info: will contact http://<IP_ADDRESS>:80/pkix/

indicates the issue - the client connects not to the port where the server listens, but to the default port: 80.
This implies some issue with 80-test_cmp_http.t detecting the server port to use for the client.

Uhmmmmm what?  No, that's not it.  Why would the port become 80 if that's the case?
Rather, I think this comes down to:
https://github.com/openssl/openssl/blob/ea8215810319722cf76f777f812688eb3d632678/crypto/http/http_lib.c#L109-L112
and:
https://github.com/openssl/openssl/blob/ea8215810319722cf76f777f812688eb3d632678/crypto/http/http_lib.c#L213-L216
It seems you don't have a way to detect if a port was given at all or not

the client connects not to the port where the server listens, but to the default port: 80.

I have a local server answering on port 80, so no wonder this never became an issue for me

This would not help - your server will most likely not speak CMP :wink:

[deleted]
Never mind, I was looking at the wrong spot

As I wrote, what goes wrong is that the client does not learn the right port number, just the pseudo-value "0" which indicates 80 for HTTP.

[deleted]
Never mind, I was looking at the wrong spot

As I wrote, what goes wrong is that the client does not learn the right port number, just the pseudo-value "0" which indicates 80 for HTTP.

When I pass -port 0 to cmp, I do get a reasonable value that is not 80.

As I wrote, what goes wrong is that the client does not learn the right port number, just the pseudo-value "0" which indicates 80 for HTTP.

When I pass -port 0 to cmp, I do get a reasonable value that is not 80.

I was talking here about the client side of things.
For the HTTP client, giving "0" (or no port) means 80 for HTTP and 443 for HTTPS.
For the HTTP server, giving "0" means to choose any available (non-privileged) local port.

As I wrote, what goes wrong is that the client does not learn the right port number, just the pseudo-value "0" which indicates 80 for HTTP.

When I pass -port 0 to cmp, I do get a reasonable value that is not 80.

I was talking here about the client side of things.
For the HTTP client, giving "0" (or no port) means 80 for HTTP and 443 for HTTPS.
For the HTTP server, giving "0" means to choose any available (non-privileged) local port.

Sorry. I misunderstood. :(

@Cassielcc, which OS do you use?
How to install icc on Debian Linux, if possible in a simple non-invasive way?

I used Ubuntu 18.04.  Which version of Debian you use? It seems only Debian* 9.x, 10.x are supported.

and this is likely due to an issue with the BIO IP layer, OS, or compiler.

Actually, I tested successfully with gcc on the same system.  But failed with icc, I'm not sure if  it is a problem with the icc compiler.
How to see what command is executed by ‘ make -j4 -s test TESTS="test_cmp_http" ’？

and this is likely due to an issue with the BIO IP layer, OS, or compiler.

Actually, I tested successfully with gcc on the same system. But failed with icc, I'm not sure if it is a problem with the icc compiler.
How to see what command is executed by ‘ make -j4 -s test TESTS="test_cmp_http" ’？

Try make V=1 -j4 -s test TESTS="test_cmp_http"

and this is likely due to an issue with the BIO IP layer, OS, or compiler.

Actually, I tested successfully with gcc on the same system. But failed with icc, I'm not sure if it is a problem with the icc compiler.

So this does sound like a compiler issue.

How to see what command is executed by ‘ make -j4 -s test TESTS="test_cmp_http" ’？

If you add V=1 to the call, you can see the commands it executes.
They are all openssl cmp in many variations in the parameters.

Thanks @rsbeckerca and @DDvO , I will try.

I typically use vanilla Debian 10 (buster). How to install and use icc there?

To install icc compiler only that I used, you can download it from https://software.intel.com/content/www/us/en/develop/articles/oneapi-standalone-components.html, in the ' Intel® C++ Compiler Classic ' section.

Is is officially supported by OpenSSL? I cannot find anything about that.
I'm not sure. But I saw some old issues about icc built, for example #4248.  So, I think icc is supported by openssl.

Thanks @rsbeckerca and @DDvO , I will try.

I typically use vanilla Debian 10 (buster). How to install and use icc there?

To install icc compiler only that I used, you can download it from https://software.intel.com/content/www/us/en/develop/articles/oneapi-standalone-components.html, in the ' Intel® C++ Compiler Classic ' section.

Is is officially supported by OpenSSL? I cannot find anything about that.

I'm not sure. But I saw some old issues about icc built, for example #4248. So, I think icc is supported by openssl.

To install icc compiler only that I used, you can download it from https://software.intel.com/content/www/us/en/develop/articles/oneapi-standalone-components.html, in the ' Intel® C++ Compiler Classic ' section.

Goodness, this asks for downloading 1.1 GB and installing 4.5 GB.
Cannot afford that since my SSD only has some 3 GB left free.
Shame that they do not support installing just the C compiler portion.

Anyway, does the current state of #15580 solve the issue for you?

Anyway, does the current state of #15580 solve the issue for you?

It would be surprising if so, because your issue seems compiler-dependent, and #15580 does not change any C code.
Let us know.

@Cassielcc, does the current state of #15580 fix the issue?

@Cassielcc, if the malfunction is still present with your icc build you can re-open this issue.

@Cassielcc, does the current state of #15580 fix the issue?

I tested, but failed due to lack of some libs in icc. And I tried to figure out.

@Cassielcc, if the malfunction is still present with your icc build you can re-open this issue.

If I confirm that it is not a problem in icc, I will re-open this issue.   Thanks all of you.

Hi all,  good news, I tested successfully with  #15580.  😊
Thanks all of you again.

Pleased to hear!
Yet strange that you cannot reproduce the issue anymore, since #15580 did not change any C code and you mentioned that you had the issue only with icc, not when using gcc.
Looks like there was some inconsistency in the branches you used, and #15580 fixed the rest of the issue.


openFPGALoader compressed bitstreams

We can speed up the spiOverJtag bitstream loading process by adding the following to the constraint files:
set_property BITSTREAM.GENERAL.COMPRESS TRUE [current_design]
set_property BITSTREAM.CONFIG.CONFIGRATE 33 [current_design]

Can someone please test https://github.com/rwhitby/openFPGALoader/tree/kintex7_compressed_bitstream ?
You should see a dramatic reduction in the time taken to load the spiOverJtag bitstream.  There is no change to the time taken to then flash the SPI image.

See https://github.com/trabucayre/openFPGALoader/pull/190

It's now merged :-)


fix(dependencies): update smaller production dependencies

Most of the updates are within allowed SemVer range. tmp and rimraf dropped support for ancient Node versions, which are not supported by Karma anyways.

Changed commit scope to fix, so it triggers a release and appears on the changelog.


Page tabs container is offset by one scrollbar-width

Description
When viewing a page with a page tabs component on it, if the page's content has a scrollbar, it pushes the tabs container over to the left by the width of a scrollbar.

Steps to reproduce
Example page: https://next.carbondesignsystem.com/elements/accessibility/overview
Windows - should be visible without extra config
Mac - Go into "settings -> general -> show scroll bars" and set it to "always".
Tried both Chrome and Edge on Mac, and Edge on Windows.

I'd check out how we use --scrollbar-width to offset scroll bar widths. Maybe that will help.


Move implementation details into separate namespace

With this PR I wish to discuss how we can hide details that are not meant to be part of the public API. It is also an initial suggestion for how it could be done.
I made an attempt to keep backward compatibility while emitting warnings when a deprecated function is used.
A warning may look something like the following.
main.cc: In lambda function:
main.cc:24:33: warning: ‘std::string webview::json_parse(const string&, const string&, int)’ is deprecated: Private API should not be used [-Wdeprecated-declarations]
   24 |     auto a = std::stoi(webview::json_parse(s, "", 0));
      |                                 ^~~~~~~~~~

main.cc:24:33: warning: 'json_parse' is deprecated: Private API should not be used [-Wdeprecated-declarations]
    auto a = std::stoi(webview::json_parse(s, "", 0));
                                ^

D:\a\webview\webview\script\..\main.cc(24): warning C4996: 'webview::json_parse': Private API should not be used

Related:

#742

Thanks for working on this! I like the implementation so far. This seems to be the way to move forward if we want to resolve the ambiguity.
One question: What does the name detail mean in this context? It doesn't seem as immediately intuitive as something like internal. Does it have a special meaning here?

I have seen detail adopted in various popular header-only libraries so it's a rather established name. To give you some examples I have included a list of some libraries that I picked from a random list of header-only libraries. Nearly all of these libraries use the detail namespace if anything.
Popular libraries

Library
Namespace
GitHub stars

argparse
argparse::details
1.2k

boost
boost:algorithm::detail
4.9k

catch2
Catch2::Detail
15k

cereal
cereal::traits::detail
3.2k

crow
crow::detail
6.8k

cpp-httplib
httplib::detail
7k

fmt
fmt::detail
14.2k

magic _enum
magic_enum::detail
2.8k

nlohmann/json
nlohmann::detail
30.2k

PEGTL
tao::pegtl::internal
1.5k

spdlog
spdlog::details
14.6k

Less popular libraries:

Library
Namespace
GitHub stars

eventbus
dp::detail
67

rapidxml
rapidxml::internal
113

strf
strf::detail
54

zstr
zstr::detail
207

@SteffenL Thanks for the explanation! detail now makes a bit more sense, and I can appreciate its usage here.
One thought: since it's a single-header library, does it even make sense to make those functions static?
Maybe we should expose them intentionally but note that they don't have the same guarantee of stability as the rest of the API.

Now that #742 is merged, there are two blockers on this:

Merge in the rename of url_encode
Decide whether the contents of detail should be static

Based on my current understanding, I'd lean towards removing the static declarations on the contents of detail. Do you have any thoughts or objections?

I have no objections to removing static. I think I would prefer doing so because using it can increase code size, as in making full copies of those functions for each translation unit that all make it into the final binary. I am not sure why the old (removed) functions were static but if it had anything to do with optimization then it is not meaningful for the remaining functions.


[1.4] Add macroable trait to service classes for easy extension

This allows quick extension of the base Service classes using macros in your AppServiceProvider. Instead of having to wire it all up yourself in multiple places or submit a PR to get the method added, you can easily add your own methods to the Service classes.
This would also utilize the awesome auth that is already in place meaning you don't have to recreate all of that.
Usage example:
Service::macro('addUetTags', function($tags){
    $serviceCall = $this->call(ServiceClientType::CampaignManagementVersion13);

    try {
        $requestTags = [];
        foreach($tags as $tag) {
            $tag = new UetTag();
            foreach($tag as $key => $value) {
                $tag->{$key}  = $value;
            }

            array_push($requestTags,$tag);
        }

        $request = new AddUetTagsRequest();
        $request->UetTags = $requestTags;

        $serverResponse = $serviceCall->GetService()->AddUetTags($request);

        return $serverResponse;
    } catch (\Exception $e) {
        print $serviceCall->GetService()->__getLastRequest()."\n";
        print $serviceCall->GetService()->__getLastResponse()."\n";
    }
});

This is great! Thanks so much. Everything looks good so far. I'm going to push it this weekend.


How to determine when SSE connection was closed?

Let's say I have code
new SSE("/myurl").addEventListener("message", (customEvent) => {
    console.log("Received message");
});

Now after all messages was sent and server has closed connection I want to run console.log("Closed"). How I can do it?
And where I can find whole list of possible events SSE object can generate (except custom)? In Readme.md of this project I can see this list:
SSE, like EventSource, will emit the following events:

    open, when the first block of data is received from the event stream;
    error, if an error occurs while making the request;
    abort, as a response to the stream being explicitely aborted by the client;
    readystatechange, to notify of a change in the ready state of the event source.

But I assume it's not a complete list since I can't see message event here.
UPD:
I was able to determine when SSE connection was closed this way:
let sse = new SSE("/myurl");
sse.addEventListener("message", (customEvent) => {
    console.log("Received message");
});
sse.xhr.onload = () => console.log("Closed");

But I feel that accessing XMLHttpRequest is not "proper" way to do so. I would be glad if someone would say if there is more fluent way to add event listener for closing SSE connection.

You should be getting a readystatechange event with a readystate of CLOSED, as emmitted by https://github.com/mpetazzoni/sse.js/blob/main/lib/sse.js#L137-L140, called by https://github.com/mpetazzoni/sse.js/blob/main/lib/sse.js#L258-L260 when the XHR ready state changes and reaches the DONE state.


✨Add T&C page to consulting pages, and create a layout for T&C page.

Closes #285
Still got many work to do:

[x] Add agreement form in T&C page
[x] style agreement form component
[x] Add CODEOWNER to T&C content

Are you able to make it a little more like the current implementation:

add zebra striping to the table
t&c clauses in 2 columns


look at the waitlist functionality and simplify it

flow is simple, added better comments that makes it easier to understand


Bug with coding strategy

When I use
`
let encoder = JSONEncoder()
encoder.keyEncodingStrategy = .convertToSnakeCase
encoder.dateEncodingStrategy = .iso8601
ContentConfiguration.global.use(encoder: encoder, for: .json)
let decoder = JSONDecoder()
decoder.keyDecodingStrategy = .convertFromSnakeCase
decoder.dateDecodingStrategy = .iso8601
ContentConfiguration.global.use(decoder: decoder, for: .json)
`
in configure.swift I haw error -

but when I don't use coding strategy  I got access token from Google. And it work, for testing I use project in book "Server-Side Swift with Vapor" (edition 3) Chapter 22: Google Authentication.

Closing as this is a duplicate of #80


Feature Request: Net Earnings card

Request for Enhancement:
Clicking the  Net Earnings card can display the detail infomation that include catogori ,but I want to see the overview infomation like it has not been clicked.
The Net Earnings card should have the ability to scroll and display more past months' consumption information.At present, it only can display three months' consumption information,and I want to see the sum of past months' consumption information.

Thank you for the great app.  I like it very much.


[RUNTIME][VULKAN] vkBuffer released before memory copy command send to GPU

Problem: When the Vulkan runtime uses deferred kernels to do a GPU -> GPU copy, the source vkBuffer is released before the copy command is put into command buffer. That can cause seg fault in vulkan driver.
Details:
The problem happens in:
args = [ [nd.array(x, ctx=ctx) for x in args] (measure_methods.py: 482).
This line of code rpc calls CopyDataFromTo() (vulkan.cc: 200) to do a GPU -> GPU copy on the remote device. CopyDataFromTo() uses deferred mode to schedule the copy commands. So the copy commands are not really put into vulkan cmd buffer by the end of the rpc call.
Then the source ndarray is destructed because 'args' now points to the dest ndarray. The destructor rpc calls FreeDataSpace() to destroy the source vkBuffer. This caused the vkDestroyBuffer command being scheduled before the vkCmdCopyBuffer command.
In the next line in measure_methods.py,  ctx.sync() rpc calls Synchronize(), when the copy commands are actually put into the cmd buffer. But by now, the source buffer is already an invalid. This caused the driver to seg fault while performing the copy.
Reproduce:
Run attached debug_tune.py, or any auto-tuning script using Vulkan and rpc.
Possible Solution:
Add a counter in VulkanBuffer struct. +1 upon a copy request, and -1 after the copy command actually put into cmd buffer. Destroy the buffer only when the counter is 0.
debug_tune.zip

Thanks @samwyi for reporting the problem. Perhaps an easier fix now would be call into Synchronize directly in when FreeDataSpace is called. This is also the default behavior in CUDA. Given that most of the space won't be freed during computation, this might be a fine fix.
@samwyi do you mind to send a PR?

cc @ajtulloch @antinucleon

Thanks @samwyi for reporting the problem. Perhaps an easier fix now would be call into Synchronize directly in when FreeDataSpace is called. This is also the default behavior in CUDA. Given that most of the space won't be freed during computation, this might be a fine fix.
@samwyi do you mind to send a PR?

I'd be glad to provide a fix, but seems CUDA didn't call Synchronize in FreeDataSpace. Seems CUDA doesn't use deferred kernels, so it should be fine.

CUDA's cudaFree implicitly syncs the default stream

ping @samwyi  :)

ping @samwyi :)

I'll send out a PR soon.

ping @samwyi :)

I'll send out a PR soon.

Do we

ping @samwyi :)

I'll send out a PR soon. Just to confirm the procedure: (1) create own fork, (2) change in the main branch of my own fork, (3) push to remote and request pull, correct?

yes, that is the correct procedure

PR: https://github.com/apache/incubator-tvm/pull/5418

closed thanks to @samwyi !


caffe_converter issues with bvlc_googlenet.caffemodel

I am trying to convert bvlc_goglenet.caffemodel. params file is generated but its size is 28MB whereas original caffe model size is 53 MB. So something is wrong. Here is the output whey I ran convert_model.py script:
`Swapping BGR of caffe into RGB in mxnet
converting layer conv1_7x7_s2, wmat shape = (64, 3, 7, 7), bias shape = (64,)
converting layer conv2_3x3_reduce, wmat shape = (64, 64, 1, 1), bias shape = (64,)
converting layer conv2_3x3, wmat shape = (192, 64, 3, 3), bias shape = (192,)
converting layer inception_3a_1x1, wmat shape = (64, 192, 1, 1), bias shape = (64,)
converting layer inception_3a_3x3_reduce, wmat shape = (96, 192, 1, 1), bias shape = (96,)
converting layer inception_3a_3x3, wmat shape = (128, 96, 3, 3), bias shape = (128,)
converting layer inception_3a_5x5_reduce, wmat shape = (16, 192, 1, 1), bias shape = (16,)
converting layer inception_3a_5x5, wmat shape = (32, 16, 5, 5), bias shape = (32,)
converting layer inception_3a_pool_proj, wmat shape = (32, 192, 1, 1), bias shape = (32,)
converting layer inception_3b_1x1, wmat shape = (128, 256, 1, 1), bias shape = (128,)
converting layer inception_3b_3x3_reduce, wmat shape = (128, 256, 1, 1), bias shape = (128,)
converting layer inception_3b_3x3, wmat shape = (192, 128, 3, 3), bias shape = (192,)
converting layer inception_3b_5x5_reduce, wmat shape = (32, 256, 1, 1), bias shape = (32,)
converting layer inception_3b_5x5, wmat shape = (96, 32, 5, 5), bias shape = (96,)
converting layer inception_3b_pool_proj, wmat shape = (64, 256, 1, 1), bias shape = (64,)
converting layer inception_4a_1x1, wmat shape = (192, 480, 1, 1), bias shape = (192,)
converting layer inception_4a_3x3_reduce, wmat shape = (96, 480, 1, 1), bias shape = (96,)
converting layer inception_4a_3x3, wmat shape = (208, 96, 3, 3), bias shape = (208,)
converting layer inception_4a_5x5_reduce, wmat shape = (16, 480, 1, 1), bias shape = (16,)
converting layer inception_4a_5x5, wmat shape = (48, 16, 5, 5), bias shape = (48,)
converting layer inception_4a_pool_proj, wmat shape = (64, 480, 1, 1), bias shape = (64,)
converting layer loss1_conv, wmat shape = (128, 512, 1, 1), bias shape = (128,)
loss1_conv_weight not found in arg_shape_dic.
converting layer loss1_fc, wmat shape = (1, 1, 1024, 2048), bias shape = (1024,)
loss1_fc_weight not found in arg_shape_dic.
converting layer loss1_classifier, wmat shape = (1, 1, 1000, 1024), bias shape = (1000,)
loss1_classifier_weight not found in arg_shape_dic.
converting layer inception_4b_1x1, wmat shape = (160, 512, 1, 1), bias shape = (160,)
converting layer inception_4b_3x3_reduce, wmat shape = (112, 512, 1, 1), bias shape = (112,)
converting layer inception_4b_3x3, wmat shape = (224, 112, 3, 3), bias shape = (224,)
converting layer inception_4b_5x5_reduce, wmat shape = (24, 512, 1, 1), bias shape = (24,)
converting layer inception_4b_5x5, wmat shape = (64, 24, 5, 5), bias shape = (64,)
converting layer inception_4b_pool_proj, wmat shape = (64, 512, 1, 1), bias shape = (64,)
converting layer inception_4c_1x1, wmat shape = (128, 512, 1, 1), bias shape = (128,)
converting layer inception_4c_3x3_reduce, wmat shape = (128, 512, 1, 1), bias shape = (128,)
converting layer inception_4c_3x3, wmat shape = (256, 128, 3, 3), bias shape = (256,)
converting layer inception_4c_5x5_reduce, wmat shape = (24, 512, 1, 1), bias shape = (24,)
converting layer inception_4c_5x5, wmat shape = (64, 24, 5, 5), bias shape = (64,)
converting layer inception_4c_pool_proj, wmat shape = (64, 512, 1, 1), bias shape = (64,)
converting layer inception_4d_1x1, wmat shape = (112, 512, 1, 1), bias shape = (112,)
converting layer inception_4d_3x3_reduce, wmat shape = (144, 512, 1, 1), bias shape = (144,)
converting layer inception_4d_3x3, wmat shape = (288, 144, 3, 3), bias shape = (288,)
converting layer inception_4d_5x5_reduce, wmat shape = (32, 512, 1, 1), bias shape = (32,)
converting layer inception_4d_5x5, wmat shape = (64, 32, 5, 5), bias shape = (64,)
converting layer inception_4d_pool_proj, wmat shape = (64, 512, 1, 1), bias shape = (64,)
converting layer loss2_conv, wmat shape = (128, 528, 1, 1), bias shape = (128,)
loss2_conv_weight not found in arg_shape_dic.
converting layer loss2_fc, wmat shape = (1, 1, 1024, 2048), bias shape = (1024,)
loss2_fc_weight not found in arg_shape_dic.
converting layer loss2_classifier, wmat shape = (1, 1, 1000, 1024), bias shape = (1000,)
loss2_classifier_weight not found in arg_shape_dic.
converting layer inception_4e_1x1, wmat shape = (256, 528, 1, 1), bias shape = (256,)
converting layer inception_4e_3x3_reduce, wmat shape = (160, 528, 1, 1), bias shape = (160,)
converting layer inception_4e_3x3, wmat shape = (320, 160, 3, 3), bias shape = (320,)
converting layer inception_4e_5x5_reduce, wmat shape = (32, 528, 1, 1), bias shape = (32,)
converting layer inception_4e_5x5, wmat shape = (128, 32, 5, 5), bias shape = (128,)
converting layer inception_4e_pool_proj, wmat shape = (128, 528, 1, 1), bias shape = (128,)
converting layer inception_5a_1x1, wmat shape = (256, 832, 1, 1), bias shape = (256,)
converting layer inception_5a_3x3_reduce, wmat shape = (160, 832, 1, 1), bias shape = (160,)
converting layer inception_5a_3x3, wmat shape = (320, 160, 3, 3), bias shape = (320,)
converting layer inception_5a_5x5_reduce, wmat shape = (32, 832, 1, 1), bias shape = (32,)
converting layer inception_5a_5x5, wmat shape = (128, 32, 5, 5), bias shape = (128,)
converting layer inception_5a_pool_proj, wmat shape = (128, 832, 1, 1), bias shape = (128,)
converting layer inception_5b_1x1, wmat shape = (384, 832, 1, 1), bias shape = (384,)
converting layer inception_5b_3x3_reduce, wmat shape = (192, 832, 1, 1), bias shape = (192,)
converting layer inception_5b_3x3, wmat shape = (384, 192, 3, 3), bias shape = (384,)
converting layer inception_5b_5x5_reduce, wmat shape = (48, 832, 1, 1), bias shape = (48,)
converting layer inception_5b_5x5, wmat shape = (128, 48, 5, 5), bias shape = (128,)
converting layer inception_5b_pool_proj, wmat shape = (128, 832, 1, 1), bias shape = (128,)
converting layer loss3_classifier, wmat shape = (1, 1, 1000, 1024), bias shape = (1000,)

`
Can anyone explain the issue??

as you can see some info in the log is not converted, such as loss1_conv_weight not found in arg_shape_dic.... , the loss1 and loss2 layers does not generated in the new model, so you see it is small.
the convert_model.py cannot convert all the caffe model to mxnet, you should read the code and change it for your convert.


spawn ignoring provided env or cwd while searching for command path

It seems "cwd" and "env" kwargs completely ignored while "spawn" is searching for executable path.
env['PATH'] should be taken into account.

Indeed, I think that currently only the current process's environment is used. This option of running a command from command line is only provided for simple cases, for more complex uses I think Pyinotify should be used directly from its api.


Long Description Not Rendered as Markdown

I just updated cement with a long description in Markdown following the Packaging and distributing projects documentation... but the long description is still not rendered as Markdown:

https://pypi.org/project/cement/

I have the following in setup.py:
description="CLI Application Framework for Python",
long_description=LONG,
long_description_content_type='text/markdown',

Where LONG is the long description string. And I am uploading this way:
$ rm -rf dist/*

$ python setup.py sdist

$ python setup.py bdist_wheel

$ twine upload dist/*

Note, this is the stable/2.10.x branch in Github:

https://github.com/datafolklabs/cement/tree/stable/2.10.x

And here is my list of installed libraries and versions:
|> cement <| derks@macbook cement $ pip list
Package                  Version   Location
------------------------ --------- -------------------------------
alabaster                0.7.10
appdirs                  1.4.3
appnope                  0.1.0
argcomplete              1.9.4
argh                     0.26.2
attrs                    17.3.0
autopep8                 1.3.5
Babel                    2.5.3
blackwidow               0.1.6
cement                   2.10.10   /Users/derks/Development/cement
certifi                  2018.4.16
chardet                  3.0.4
click                    6.7
colorlog                 3.1.4
CommonMark               0.5.4
configobj                5.0.6
coverage                 4.5.1
decorator                4.0.10
docutils                 0.14
flake8                   3.5.0
Genshi                   0.7
guzzle-sphinx-theme      0.7.11
idna                     2.6
imagesize                1.0.0
ipython                  5.3.0
ipython-genutils         0.2.0
Jinja2                   2.10
livereload               2.5.1
Mako                     1.0.7
Markdown                 2.4.1
MarkupSafe               1.0
mccabe                   0.6.1
mkdocs                   0.17.1
mkdocs-bootstrap         0.1.1
mkdocs-bootswatch        0.4.0
mkdocs-material          0.2.2
mock                     2.0.0
networkx                 1.10
nose                     1.3.7
packaging                17.1
pathtools                0.1.2
pbr                      4.0.2
pdoc                     0.3.2
pep8                     1.7.1
pexpect                  4.2.1
pickleshare              0.7.4
pip                      10.0.1
pkginfo                  1.4.2
pluggy                   0.6.0
pockets                  0.5.1
prompt-toolkit           1.0.14
ptyprocess               0.5.1
py                       1.5.2
pybars3                  0.9.3
pycodestyle              2.4.0
pydoc-markdown           2.0.1
pyflakes                 1.6.0
Pygments                 2.2.0
PyInstaller              3.2.1
pylibmc                  1.5.2
PyMeta3                  0.5.1
pypandoc                 1.4
pyparsing                2.2.0
pystache                 0.5.4
pytest                   3.3.1
pytest-cov               2.5.1
pytz                     2018.4
PyYAML                   3.12
recommonmark             0.4.0
redis                    2.10.6
requests                 2.18.4
requests-toolbelt        0.8.0
setuptools               39.1.0
simplegeneric            0.8.1
six                      1.11.0
snowballstemmer          1.2.1
Sphinx                   1.7.4
sphinx-rtd-theme         0.3.0
sphinxcontrib-napoleon   0.6.1
sphinxcontrib-websupport 1.0.1
tabulate                 0.8.2
tornado                  4.5.2
tqdm                     4.22.0
traitlets                4.3.2
twine                    1.11.0
ujson                    1.35
urllib3                  1.22
watchdog                 0.8.3
wcwidth                  0.1.7
wheel                    0.30.0

Am I missing something? Any help would be appreciated.

@derks The long_description_content_type field hasn't made it to PyPI, so likely one of the tools you used is at a version before the field existed. You'll need:

setuptools>=38.6.0
wheel>=0.31.0
twine>=1.11.0

@di that did it! Wheel was the only one at a lower version... after upgrading and re-uploading the Markdown is good.  Thank you so much!

@derks Not problem! Can I ask what you were using as a guide for this new field? We probably need to add a note there to avoid similar confusion for users like yourself.

Sure... yeah I dropped it in the first comment but easily overlooked.  I was following the Packaging and distributing projects documentation (that was initially linked from PyPi on how to upload releases).  Specifically:

https://packaging.python.org/tutorials/distributing-packages/#description

Oops, sorry I missed that. I just made https://github.com/pypa/python-packaging-user-guide/issues/481, any interest in fixing it?


RT-5.2 fix for case-insensitive check for partnerId/systemId

Precedent for this case is: https://github.com/openconfig/featureprofiles/blob/main/feature/interface/staticarp/otg_tests/static_arp_test/static_arp_test.go#L286
"This code is a Contribution to the OpenConfig Feature Profiles project ("Work") made under the Google Software Grant and Corporate Contributor License Agreement ("CLA") and governed by the Apache License 2.0. No other rights or licenses in or to any of Nokia's intellectual property are granted for any other purpose. This code is provided on an "as is" basis without any warranties of any kind."

Pull Request Test Coverage Report for Build<PHONE_NUMBER>
Details

0 of 0   changed or added relevant lines in 0 files are covered.
No unchanged relevant lines lost coverage.
Overall coverage remained the same at 51.783%

Totals

Change from base Build<PHONE_NUMBER>:
0.0%

Covered Lines:
1641

Relevant Lines:
3169

💛  - Coveralls


Opaque Pre-Pass Problem with GLES3

Godot version: 3.2.1
OS/device including version: Windows 10 / AMD Radeon R9 380 (Driver 20.3.1)
Issue description:
When using GLES3, in the SpatialMaterial parameters, setting the Depth Draw Mode to "Opaque Pre-Pass" while using alpha scissors results in alpha transparency problems :

alpha cuts more than it should
that alpha cut is stronger when moving the camera away from the object
putting an object behind the alpha-cut surface sometimes helps, but not every time

Note : GLES2 gives normal results in Godot 3.2.1. I launched the scene with Godot 3.1 and all is normal both in GLES2 & 3
To illustrate that behaviour, left plane is "Opaque On" and right one is "Opaque Pre-Pass"

Here with an opaque background object

Steps to reproduce:

Get an albedo map with an alpha channel
Create a SpatialMaterial, in the parameters, use "Opaque Pre-Pass" and "Use Alpha Scissors"

Minimal reproduction project:
GodotOpaquePrePassProblem.zip

Duplicate of https://github.com/godotengine/godot/issues/36669
Please search existing issues before opening a new one! But thanks for the detailed report. It is still appreciated. :)

Oops, my bad !


spark-sql

I use spark-sql to complete an insert operation, it does not take effect in atlas, but no error

I create table in spark-sql , hive-table entities not created , also no eror.

I completed an insert operation in spark-sql, but it create a spark-process , not hive-process in atlas .


Allow copying the title & URL of only the current tab

Thank you for the great extension.
The one feature I find missing is the ability to copy the title & URL of only the current tab.  Would it be possible to add this feature?
The implementation could be as simple as adding an additional (optional) menuitem for just the current tab, but other implementations are possible as well.
Thank you!  👍🏾

Sorry.  Continuing its support is pointless. Closing the issue.


DS-195 remove the use of keystore apis on add a validator doc

Replaces Add a validator with API calls with Add a validator with AvalancheJS
Fixes a spelling error from a previous push

Commit ae4cc697a0bf47cb07e5e7731a0bccfa5cc67e08 addresses all comments as of 07JUNE2022 2200

commit a5f7c2512a86167f654b544bb4ebb0b9c2dfc8ef adds reference to correct api signature for buildaddvalidatortx


Allow the possibility to ignore errors

After some time using it I found the necessity of ignoring certain errors like:
ABundle/Command/GenerateReportCommand.php:14 PhanUnreferencedMethod Possibly zero references to method \ABundle\Command\GenerateReportCommand::configure

Which I know that is something that might be detected always but it is not a real issue.
As a solution I'd propose (and even develop myself) something like https://github.com/phpstan/phpstan#ignore-error-messages-with-regular-expresions

https://github.com/etsy/phan/wiki/Annotating-Your-Source-Code#suppress exists to suppress issues on the function/method/class/etc level. See

I see but as far as I know @supress is not an standard annotation so it
might mean that we couple the code with the analysis library. Does it make
sense to have something like phpstan were you can ignore error messages by
regex?
Den tir. 1. aug. 2017, 17.35 skrev Tyson Andre<EMAIL_ADDRESS>
https://github.com/etsy/phan/wiki/Annotating-Your-Source-Code#suppress
exists to suppress issues on the function/method/class/etc level. See
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/etsy/phan/issues/1047#issuecomment-319407936, or mute
the thread
https://github.com/notifications/unsubscribe-auth/AC7sAuk7yr44G7YLQRFuou8EDnsQR4CZks5sT0W7gaJpZM4OpcxQ
.

--
José Carlos Chávez
Spain: (+34) 672921339
Perú: (+51) 708-5422 Anexo 918
https://github.com/jcchavezs

If you want to ignore all PhanUnreferencedMethod errors, then just add it to the list of suppress_issue_types in your config.php. See https://github.com/etsy/phan/blob/master/.phan/config.php#L163-L165


Android-OpenGLES Demo

We should make a demo application (or two) showcasing Silk.NET on Android (and maybe Silk.NET working on an Android touch display).
What these demos actually produce is up to you, but they should be:

[ ] examples/OpenGL Demos/AndroidDemo
[ ] examples/OpenGL Demos/AndroidTouchDisplay

They should use .NET 6 Android as we are soon dropping support for legacy Xamarin.
Community contributions welcome.

@roeyskoe Can you put a comment here so I can assign this to you (so it's clear you've taken this one)?

@roeyskoe Can you put a comment here so I can assign this to you (so it's clear you've taken this one)?

Yes

Thanks.


Added photo of my dogs.

If I wanted to resize the picture, would you recommend I change the size of the file itself or do it through CSS?

Definitely CSS, it's much lighter weight.  The only time you'd want to resize the image if it was too big and causing performance issues, or was too small and the resolution is bad

ok, thank you. the size of the image wasn't necessarily causing problems, I was just curious.


Update new Kuma install to work properly with dev version

What happened?
Now link to cloudsmith for preview version and instruction on how to add Kuma binaries to path don't work with preview. We need to be able to use {% if_version eq:dev %} to properly render install page. This should be added soon.

@fabianrbz  Is this something that exists in singlePageGenerator yet?

@lahabana unfortunately, it doesn't.
We would need to add support for it

Ok the alternative is to use regular {% if page.version.label == 'dev' %}


Support for HMC5983, which can also be attached via SPI

@tridge FYI - this is the last missing bit for the next-gen sensor suite support.

This is largely untested. Testing welcome.

This is largely untested. Testing welcome.

@sjwilks A quick test with this would be great! Open questions for FMUv3:

Ensure that the SPI mag has the same orientation

The internal mag can be tested with:
hmc5883 -I test

@LorenzMeier I don't have a functional FMUv3 if that's what you want me to test with.

@sjwilks Actually I fear more having broken existing setups ;-). So if your quad still works / flies I would have actually succeeded.

Merged via rebase to master. Tested fine on internal and external compass. Flight testing of master still appreciated.

OK, I'll test master on Monday once the weather has improved.

Just flew latest master on a quad with a V1 board. All good.


Spec 3.1 schema

Based on draft
https://github.com/OAI/OpenAPI-Specification/pull/2474

Does this also apply to the release of OpenAPI spec 3.1.0 https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.1.0.md?

Work was done here https://github.com/p1c2u/openapi-spec-validator/pull/143
Hance closing


Laying down the Tracks - Project Surfliner

Jessica Hilt, Chrissy Rissmeyer, Tim Marconi, Tom Johnson
<EMAIL_ADDRESS>In November 2018, UC San Diego, and UC Santa Barbara, kicked off Project Surfliner, an experimental project to collaboratively define, create, and maintain digital library products. Project Surfliner is more than shared code, or even shared objectives. The project is the collaboration effort. It is building and leveraging the strengths, experiences, and resources of each campus partner to focus on shared concepts and products. Join us to learn about what we have accomplished and how the first eleven months of the journey have been.

PC-8/21 Is this a panel or a presentation - clarify and offer two end-to-end presentations as an alternative.

8/29  Confirmed panel format.

9/9 Chrissie regiestered


comfy chair can't be rotated

Description
Unsure if this applies to other chairs, but I noticed this just now, you technically CAN rotate it by smacking it against a wall, however. you cannot rotate it through the context menu.

Screenshots

Good first bug I think. Also related to #11165


Increase Unit Test Coverage for Monitoring Plan API (files w/40% to 50% Coverage)

Increase Unit Test Coverage for Monitoring Plan API for the following:
40% to 50% Coverage
src/unit-stack-configuration-workspace/unit-stack-configuration.service.ts
src/unit-capacity-workspace/unit-capacity.repository.ts
src/utils.ts
src/user-check-out/user-check-out.service.ts
src/county-code/county-code.service.ts
src/monitor-attribute/monitor-attribute.service.ts
src/component-workspace/component.service.ts
Additionally Worked: ⬇
src/analyzer-range-workspace/analyzer-range.repository.spec.ts
src/monitor-method-workspace/monitor-method.repository.ts
src/unit-stack-configuration-workspace/unit-stack-configuration.repository.ts
src/system-fuel-flow/system-fuel-flow.repository.ts
src/component-workspace/component.repository.ts
src/system-component/system-component.repository.ts

Unit test coverage increased


Logo design

It might be nice to have a logo for NiMARE. Any ideas are welcome, but there are a few possibilities already brought up:

A horse (as in The Nightmare)
A brain with tentacles and a face
A hydra (great idea from @62442katieb)

I love the project, but I have to say I'm a bit worried about the nagatie connotation regarding the name and how it will impact the logo. You don't want people to joke that this tool is a nightmare to use... Obviously it's up to you, but this is something to think of.

That's fair. The logo can definitely lean more toward Monster's, Inc. than a Cronenberg movie.

I think as long as we go cartoonish, something a bit sinister should be fine. Whatever the depicted object is, it would be cool if it could be composed entirely out of X/Y/Z coordinates. That might work well if we go with a Hydra--l'm picturing three necks, each labeled x, y, or z, and made up entirely out of numbers

What about something with a "nightmare-esque" color palette (I immediately think the ghost type pokemon) ? Then the actual design could then be simpler, maybe even just concentric or overlapping circles-— would loosely remind me of coordinate based analyses.


GlobalScope conditional where for Multi Tenants

Describe the bug
Hi, i use addGlobalScope for all query gets on my application, but  not change the cache when i changing $shopId = 1 to $shopId = 2.
Its possible?
Or what your opinion for this situation?
This is best way for a multi-tenant, or add a where in Model only its better?
Tks!
Eloquent Query
A number 1 is a my tenant 1. my application have a one DB mysql, for X shopId (tenants).
static::addGlobalScope('selectShopId', function (Builder $builder) {
   $tenant = 1;
   $builder->where('shop_id', $tenant);
});

Stack Trace
The full stack trace from your log file.
Environment

PHP: 7.2
OS: mac
Laravel: 5.7
Model Caching: latest

Additional context

Unfortunately global scopes are currently not supported for caching. :( This is something I plan to evaluate possible solutions for in the future, but so far have not found a solution for, yet.

@maicolbruski I believe global scopes are now working. If you're interested, I would love to hear if the package is working for you now. Please test with release 0.8.4 or newer, if you do. Thanks!

Hi @mikebronner, Perfect!!! I will do some tests and then let you know


Create custom bridges

It would be nice to be able to create custom networks (bridges), by passing it a hash that looks like this:
class { 'proxmox':
  bridges => {
    'vmbr1' => {
      'network' => '<IP_ADDRESS>/24',
      'nat' => true,
    },
  'vmbr2' => {
      'network' => '<IP_ADDRESS>/24',
      'nat' => false,
    }
  }
}

Nope, this can be done in the interface and we explicitely said we would not handle any of that.


Ignore specific LSPs?

Would you accept a PR to ignore specific LSPs?
I'm thinking of null-ls (and efm-langserver) which don't really have any progress to show.

Sure! That's a great suggestion.


Fix problems in creating decorators doc

This PR fixes some problems I encountered when trying to follow the documentation to create a custom decorator.
Fixes #1582

Good catch! Looks like the docs were written before the final design changes. Thanks for fixing this!