Reboot Projection API Model

Medium to long term things here folks, so nobody get too upset or anxious about anything here yet. I'm just thinking out loud here.
Problems:

Code generation approach and the conventional Create() / Apply() is successful for simple workflows, but breaks down badly for any kind of remotely complicated workflow
Some people just don't like the conventional approach period, and now that C# has pattern matching (yes F# folks, I realize that was never an issue for y'all), there's maybe less advantage in the conventional approach
Explicit code via CustomProjection is a bit clumsy to use today. Doesn't work for live aggregations. Would help if this was an easier escape hatch from the conventional/codegen approach
"Slicing" API is less than obvious to use. That might be more of a documentation/example issue
Would like to do more to incorporate event/stream archiving soon, especially when the Event Store Partitioning is done
There's no easy way in the conventional approach to say "apply this logic on the last encountered event", and that's come up quite often lately

Possible Solutions

Consider using source generators for the conventional application of events instead of the JasperFx.CodeGeneration / JasperFx.Compiler model? Not sure if that's enough value to justify the effort, but it's also a way to dip the toes into it
Push through issues with CustomProjection so that it can be used for live aggregations
New "explicit aggregation projection" model where the user gets the current aggregate (or not if it's new) in a method, and returns a response object that's something like Store/Delete/UnDelete/Archive/Partials telling Marten what to do next. Vague hope here is to do something that's easy to test
Reevaluate the whole event slicing API. Ick, ick, ick.

Independently, I'd like to move this one up into a release soon: https://github.com/JasperFx/marten/issues/2533

I'm shutting this down for now. The "grouping/slicing" stuff probably gets re-evaluated as part of Marten 8.

Nope, client work today made me go into the guts of the projection code, and now's a decent time to re-think this for Marten 8

Current Thinking (September 21st, 2024)

For Marten 8, pull everything about the event store and even the async daemon that isn't specific to PostgreSQL or maybe even just for a database period into a separate library ("JasperFx.EventStore" is the most likely contender right now)
Somewhat deprecate the conventional method approach
Make it as easy and quick as possible to just write explicit code for the aggregation code

More details to come.

Notes on Nov. 10th
Current state of IProjectionSource:
public interface IProjectionSource: IReadOnlyProjectionData
{
    AsyncOptions Options { get; }

    /// <summary>
    ///     This is *only* a hint to Marten about what projected document types
    ///     are published by this projection to aid the "generate ahead" model
    /// </summary>
    /// <returns></returns>
    IEnumerable<Type> PublishedTypes();

    IReadOnlyList<AsyncProjectionShard> AsyncProjectionShards(DocumentStore store);

    ValueTask<EventRangeGroup> GroupEvents(DocumentStore store, IMartenDatabase daemonDatabase,
        EventRange range,
        CancellationToken cancellationToken);

    IProjection Build(DocumentStore store);

    ISubscriptionExecution BuildExecution(AsyncProjectionShard shard, DocumentStore store, IMartenDatabase database,
        ILogger logger);

    /// <summary>
    /// Specify that this projection is a non 1 version of the original projection definition to opt
    /// into Marten's parallel blue/green deployment of this projection.
    /// </summary>
    public uint ProjectionVersion { get; set; }

    bool TryBuildReplayExecutor(DocumentStore store, IMartenDatabase database, out IReplayExecutor executor);
}

Notes:

Rename IProjection to IInlineProjection. New IProjection that's just:

public interface IProjection
{
    ValueTask ApplyAsync(IDocumentOperations, IReadOnlyList<IEvent>, CancellationToken);
}

IProjection Build(DocumentStore store); should become IInlineProjection Build(DocumentStore)
Keep BuildExecution(), and this is for async projections
Merge in what's now ILiveAggregatorSource<T>? Or make that optional, and you have to find it to use it. Kinda the way it is today anyway
Kill off GroupEvents(). Should be buried in the details of BuildExecution()
Merge ISubscriptionSource in, kind of. Make ISubscriptionSource implement a subset of IProjectionSource and expose the BuildExecution() : ISubscriptionExecution method
Make AsyncProjectionShard an interface (IAsyncShard ?) and embed construction of the subscription agent
Above bullet implies that IProjectionSource / ISubscriptionSource will have a reference to DocumentStore and the relevant IMartenDatabase

I would suggest that if you want explicit projections to become the default, then the most common cases should be very easy.
So maybe have a plain and simple Projection class that you can inherit from, that has abstract methods create and apply.
public interface IProjection<T>
{
    ValueTask<T> ApplyAsync(IDocumentOperations ops, IReadOnlyList<IEvent> events, CancellationToken cancellationToken);
}

public class Projection<T>
{
    public virtual ValueTask<T> ApplyAsync(IDocumentOperations ops, IReadOnlyList<IEvent> events, CancellationToken cancellationToken)
    {
         // default implementation that you could override
         // first call create on all events until aggregate is not null
         // then call Apply on all events
    }

    public abstract ValueTask<T> Create(IDocumentOperations ops, IEvent @event);

    public abstract ValueTask<T> Apply(IDocumentOperations ops, T aggregate, IEvent @event);
}

Why split Create and Apply? Because of nullability. We and the compiler can now assume that in the Apply method the aggregate is never null.

Proposed API -- December 2nd Proposal
Entry Points
By "entry points", I mean the interfaces or base classes that users would implement or override in order to implement a projection of some sort.
Directly Implement ILiveAggregator
This is already in the guts of Marten, but for simple aggregations where you never delete anything, just implement this:
public interface ILiveAggregator<T>
{
    ValueTask<T> BuildAsync(
        IReadOnlyList<IEvent> events,
        IQuerySession session,
        T? snapshot,
        CancellationToken cancellation);
}

The general idea is that Marten (really JasperFx) would have adapters that let this run as either an inline projection, an async projection, or as is for live aggregations
Directly Implement IProjection
In this generation, IProjection is just another mechanism for simplistic, non-aggregation projections. It gets simplified a bit to:
/// <summary>
/// Main entry point for non-aggregation projections
/// </summary>
public interface IProjection
{
    /// <summary>
    ///     Apply inline projections during asynchronous operations
    /// </summary>
    /// <param name="operations"></param>
    /// <param name="events"></param>
    /// <param name="cancellation"></param>
    /// <returns></returns>
    Task ApplyAsync(IDocumentOperations operations, IReadOnlyList<IEvent> events, CancellationToken cancellation);
}

EventProjection ultimately builds an object instance that implements the interface above
Subclassing EventProjection
This has the previous role of "just let me do stuff with matched events", but done so with the understanding that it does
not have the performance optimizations (think parallelization) of the aggregation projections recipes. I want to recommend that the "new" EventProjection get used in one of two mutually exclusive ways. First, you can override this
method:
    public virtual ValueTask ApplyAsync(IDocumentOperations operations, IReadOnlyList<IEvent> events,
        CancellationToken token)
    {
        return new ValueTask();
    }

For optimized usage within async projections, we'd encourage folks to register event filters as well, but that's only meaningful for async projections
Or, you can use the previous named method conventions. In this version of the projections, I'd like to enforce that all methods have to be public to simplify the codegen guts
In this version, I'd like to completely eliminate the mix and matching of these:
    [MartenIgnore]
    public void Project<TEvent>(Action<TEvent, IDocumentOperations> project)
    {
        _projectMethods.AddLambda(project, typeof(TEvent));
    }

    [MartenIgnore]
    public void ProjectAsync<TEvent>(Func<TEvent, IDocumentOperations, Task> project)
    {
        _projectMethods.AddLambda(project, typeof(TEvent));
    }

Those puppies are a remnant of the ancient Marten 2/3 era ViewProjection. With the advent of easy pattern matching in C# (or people using F# in the first place), I'd rather push for explicit code. In a subsequent version of Marten 7.*, I'd like to mark the methods above as [Obsolete] and add the first version as a path for folks to get off of the now obsolete APIs.
Directly implement IInlineProjection
I don't think this will be common
This will be a new interface (it's a cut down version of the existing IProjection that's optimized for Inline execution):
public interface IInlineProjection<TOperations>
{
    /// <summary>
    ///     Apply inline projections during asynchronous operations
    /// </summary>
    /// <param name="operations"></param>
    /// <param name="streams"></param>
    /// <param name="cancellation"></param>
    /// <returns></returns>
    Task ApplyAsync(IDocumentOperations operations, IReadOnlyList<StreamAction> streams,
        CancellationToken cancellation);
}

Marten itself will use this interface at runtime during the IDocumentSession.SaveChangesAsync(). Most projection types
running Inline will end up exposing an adapter implementation of the interface above.
Aggregations
Alright, just to get this out there, I hated the Marten 6 API renames of AggregationProjection to SingleStreamProjection and MultiStreamProjection.
At a minimum, I'd like to collapse the various aggregation options down to:

SingleStreamProjection<T> (don't really want to bother changing the name)
AggregationProjection<TDoc, TId> -- takes the place of both the existing CustomProjection, MultiStreamProjection, and the ExperimentalMultiStreamProjection.

With both of the aggregation recipes, you can either directly override this method for complex workflows where you
might delete, un-delete, or even patch the document:
    public virtual async ValueTask ApplyChangesAsync(DocumentSessionBase session, EventSlice<TDoc, TId> slice,
        CancellationToken cancellation,
        ProjectionLifecycle lifecycle = ProjectionLifecycle.Inline)

or this for simpler workflows where you don't do anything but build or update the aggregate document from new events:
 public virtual ValueTask<TDoc> BuildAsync(IQuerySession session, TDoc? snapshot, IReadOnlyList<IEvent> events)

or this even simpler method:
public virtual TDoc Apply(TDoc? snapshot, IReadOnlyList<IEvent> events)

The projection validation would reject if you implement more than one of those methods.
Or you can use the existing Apply / Create / constructor function conventions and Marten will codegen the actual implementations of ILiveAggregator<T> and other innards
See the next section for "slicing"
Slicing APIs
The analysis on this is heavily in flight, but I think we can agree that:

There's room for improvement over the existing model
We should probably aim for more explicit code
The current class names in the API are dreadful

"Self Aggregates"
The old aggregation formula where users just stick Apply or Create methods directly on the aggregated document. This
will still create a SingleStreamProjection<T> where T is the aggregate type
Subclass FlatTableProjection
I don't see this model changing much for Marten 8 except to get a bug fix or two

Slicing APIs -- Dec 3rd
I originally thought that Marten 8 wouldn't have very much change in the public API, but the main goal is to get common stuff pulled out to use in Ermine or any other future event store critters, so maybe there's room to consider actual disruptive changes. And I will freely admit that I think the event slicing API is about the absolute least usable API in the entire Critter Stack and I've always been unhappy with it outside of easy multi-stream aggregations. I'm also aware that widespread API changes will lead to the need for a comprehensive migration guide that might be time consuming -- but also, the documentation on multi-stream projections isn't terribly good today anyway, so ¯_(ツ)_/¯.
Enough, let's get started...
classDiagram

EventSliceGroup ..|> IEventGrouping

Breaking Change
Eliminate the support for ShouldDelete() in the conventional method approach. Make it all easier. Keep the Delete events, but not anything conditional. Validate that you can no longer use this. Push users toward explicit logic instead with any workflow at all.

For the IReadOnlyList<IEvent> events parameter, naming or documentation can be improved by making the purpose and content of the parameter more explicit. Here are some suggestions:
Naming Suggestions

currentEventSlice: Indicates this is the current "slice" or batch of events being processed.
eventBatch: A common term for a collection of events processed together.
loadedEvents: Suggests that these are the events loaded into the session for processing.

Documentation Suggestions

Brief Description: Add XML documentation explaining what the events parameter represents:

/// <summary>
/// A read-only list of events that are part of the current slice being processed by the projection.
/// </summary>
/// <param name="events">The events included in the current processing context, possibly pre-filtered or grouped.</param>

Of course, I will help you write explicit documentation on this (even if you do not implement any of the above suggestions)

Proposed ILiveAggregator Design with Immutable Records
In this approach, the aggregate (ShoppingCart) is implemented as a C# record with init-only setters, ensuring immutability. The aggregate can only be created via a Create method, and state transitions are handled through Apply methods on the record. The ILiveAggregator.Build method orchestrates the application of events to the aggregate, ensuring a clean and functional approach to state management.
Example Implementation
public record ShoppingCart
{
    public Guid Id { get; init; }
    public List<string> Items { get; init; } = new();
    public bool IsCheckedOut { get; init; }

    public static ShoppingCart Create(Guid id) =>
        new ShoppingCart { Id = id };

    public ShoppingCart Apply(ItemAdded itemAdded) =>
        this with { Items = Items.Append(itemAdded.ItemName).ToList() };

    public ShoppingCart Apply(ItemRemoved itemRemoved) =>
        this with { Items = Items.Where(item => item != itemRemoved.ItemName).ToList() };

    public ShoppingCart Apply(CartCheckedOut _) =>
        this with { IsCheckedOut = true };
}

public class ShoppingCartAggregator : ILiveAggregator<ShoppingCart>
{
    public ShoppingCart Build(ShoppingCart? current, IReadOnlyList<IEvent> events)
    {
        var cart = current;

        foreach (var @event in events)
        {
            cart = @event switch
            {
                CartCreated created => ShoppingCart.Create(created.Id),
                ItemAdded itemAdded => cart?.Apply(itemAdded)
                    ?? throw new InvalidOperationException("Cannot add items to a non-existent cart."),
                ItemRemoved itemRemoved => cart?.Apply(itemRemoved)
                    ?? throw new InvalidOperationException("Cannot remove items from a non-existent cart."),
                CartCheckedOut checkedOut => cart?.Apply(checkedOut)
                    ?? throw new InvalidOperationException("Cannot check out a non-existent cart."),
                _ => throw new InvalidOperationException($"Unknown event type: {@event.GetType()}")
            };
        }

        return cart ?? throw new InvalidOperationException("Cart was not created during the event stream.");
    }
}

public record CartCreated(Guid Id) : IEvent;
public record ItemAdded(string ItemName) : IEvent;
public record ItemRemoved(string ItemName) : IEvent;
public record CartCheckedOut() : IEvent;

Pros of this Design

Immutable State: The use of records with init-only setters ensures that the state of the aggregate cannot be modified unintentionally after creation.
Clear Aggregate Lifecycle: The Create method makes it explicit when and how the aggregate is instantiated. This avoids implicit or accidental state creation.
Functional Design: The Apply methods combined with the with keyword offer a clean and functional way to handle state transitions.
Validation at Runtime: The Build method includes guards against applying events to a null aggregate, reducing the risk of invalid operations.
Separation of Concerns: The aggregate's state management is encapsulated within its Apply methods, simplifying the logic in the ILiveAggregator.

Cons of this Design

Null-Checking in Event Application: The cart?.Apply(event) pattern introduces uncertainty for the compiler about whether the aggregate is null or not. This can lead to repeated null-checks or the need for additional guard clauses, potentially cluttering the code.
Performance Considerations: The creation of new instances using the with keyword for every state transition may have a performance impact, particularly with large aggregates or high-frequency events.

One way to deal with the null checks is of course:
public class ShoppingCartAggregator : ILiveAggregator<ShoppingCart>
{
    public ShoppingCart Build(ShoppingCart? current, IReadOnlyList<IEvent> events)
    {
        ShoppingCart cart = current ?? events.OfType<IEvent<CartCreated>>().FirstOrDefault() switch
        {
            IEvent<CartCreated> created => ShoppingCart.Create(created.Data.Id),
            _ => throw new InvalidOperationException("Cart must be created before other events can be applied.")
        };

        foreach (var @event in events)
        {
            cart = @event.Data switch
            {
                ItemAdded itemAdded => cart.Apply(itemAdded),
                ItemRemoved itemRemoved => cart.Apply(itemRemoved),
                CartCheckedOut checkedOut => cart.Apply(checkedOut),
                _ => throw new InvalidOperationException($"Unknown event type: {@event.GetType()}")
            };
        }

        return cart;
    }
}

But there is the performance penalty for the initial event filtering on OfType.
Might not be a biggy, since it should be event zero. So with some documentation on that, this might work.

Suggested Improvement: Helper Methods for Null Handling and Initialization
To reduce boilerplate and improve readability in ILiveAggregator implementations, I propose introducing Helper Methods for common patterns such as:

Null Checking: Ensuring the aggregate is initialized before applying events.
Aggregate Initialization from Events: Creating an aggregate from a specific event in the event stream.

These helper methods would simplify event processing logic, making implementations more concise and less error-prone.

Proposed Helper Methods
public static class AggregatorHelpers
{
    /// <summary>
    /// Ensures that the aggregate is not null. Throws an exception if it is null.
    /// </summary>
    public static T EnsureExists<T>(T? aggregate, string errorMessage) where T : class
    {
        return aggregate ?? throw new InvalidOperationException(errorMessage);
    }

    /// <summary>
    /// Initializes the aggregate from an event, or throws if the event is not found.
    /// </summary>
    public static T InitializeFromEvent<T, TEvent>(T? current, IReadOnlyList<IEvent> events, Func<TEvent, T> create)
        where TEvent : class, IEvent
    {
        if (current is not null)
            return current;

        var createEvent = events.OfType<IEvent<TEvent>>().FirstOrDefault();
        return createEvent != null
            ? create(createEvent)
            : throw new InvalidOperationException($"Missing initialization event of type {typeof(TEvent).Name}");
    }
}

Example: Refactored ShoppingCartAggregator Using Helpers
public class ShoppingCartAggregator : ILiveAggregator<ShoppingCart>
{
    public ShoppingCart Build(ShoppingCart? current, IReadOnlyList<IEvent> events)
    {
        var cart = AggregatorHelpers.InitializeFromEvent(
            current,
            events,
            (IEvent<CartCreated> created) => ShoppingCart.Create(created.Data.Id)
        );

        foreach (var @event in events)
        {
            cart = @event.Data switch
            {
                ItemAdded itemAdded => cart.Apply(itemAdded),
                ItemRemoved itemRemoved => cart.Apply(itemRemoved),
                CartCheckedOut checkedOut => cart.Apply(checkedOut),
                _ => throw new InvalidOperationException($"Unknown event type: {@event.GetType()}")
            };
        }

        return cart;
    }
}

Why Use Helper Methods?
Pros:

Reduced Boilerplate: Reusable logic eliminates repetitive patterns across multiple aggregators.
Cleaner Code: Keeps Build methods focused on domain-specific logic.
Clearer Error Messages: Explicit exceptions improve runtime error diagnostics.
Improved Maintainability: Centralized methods simplify refactoring if validation rules change.

Cons:

Extra Indirection: May introduce slight complexity if the helpers are used inconsistently.
Customization Overhead: Custom exceptions would require method overrides or additional parameters.
Learning Curve: New developers might need time to grasp the added level of abstraction.

Additional Use Case: Null-Safe Apply
We can also use EnsureExists within the event application loop, further reducing the chance of null-related bugs:
foreach (var @event in events)
{
    cart = AggregatorHelpers.EnsureExists(cart, "Cart must be created before events can be applied.") switch
    {
        ItemAdded itemAdded => cart.Apply(itemAdded),
        ItemRemoved itemRemoved => cart.Apply(itemRemoved),
        CartCheckedOut checkedOut => cart.Apply(checkedOut),
        _ => throw new InvalidOperationException($"Unknown event type: {@event.GetType()}")
    };
}

By using these helper methods, ILiveAggregator implementations can become clearer, more maintainable, and less error-prone. Let me know if you’d like additional examples or expansions on this approach!

@erdtsieck The conventional approaches to the aggregation already make sure that the snapshot exists before calling into the Apply methods. Helpers for writing purely explicit projections sounds good to me though.


Collection option not showing up

Sorry, not sure how/where to figure this out.
I see YouTube videos where people use this list builder and are able to input your collection.
For me, there is no button (near the print and permalink buttons) to enter a collection.
I am logged in, tried with a Twitter account as well as with a Google account. Using Windows 10. Tried two different browsers (Chrome and Edge). I am accessing this on 3/27/2017 (I find no version number in the about).
Any ideas for me? Has this feature been removed?
Thanks!

The feature is still there; can you attach a screenshot?

Weird, must be something with me, but idunno. Screenshot attached. Thanks!

Found a problem with the backend; I think I have a fix.  Try it again and let me know if you're able to get the collection dialog and save your collection details.

Cool. Yep. I see it now and entered some sets and it seems to show up as expected when creating squads. Thanks!


Extending SmallRye Fault Tolerance support

Currently the Fault Tolerance support is limited to only supporting the CircuitBreaker annotation.  It would be useful if this support was extended to the other annotations such as Timeout, Retry and Fallback as support for only CircuitBreaker seems unnecessarily restrictive.
In theory the enable and configuration patterns for these annotations can follow the same as currently implemented to support CircuitBreaker.
The only slight complication would seem to be for the Fallback operation, where a fallback method stub needs to be generated; I'd assume this can mirror the 'normal' method name with a prefix or suffix attached, or the fallback method name could be fully specified in the configuration.

Sounds good. Are you willing to send a PR? If so, I recommend one PR for each annotation.

I think looking at the structure of the project under 'deployment', the first step really needs to be to relocate/refactor the 'circuitbreaker' elements within both the project and the tests so they're under 'faulttolerance' (or whatever seems suitable) instead, otherwise the structure is going to end up a bit messy if was replicated as-is with a stack of circuitbreaker/retry/timeout/fallback side by side instead of them being bundled together.
Once that's done it should be a lot easier to incrementally add the extra annotations.
I guess whoever originally included it was more interested in just the circuit breaker part than in how the other parts of the fault tolerance specification might be included too.

I agree. We can make this issue an epic and create one issue for each annotation and the initial refactoring.
Can you do it @nullptr0000?


Potentially only run on "released" code

Would be nice if the curl to install always used the latest release instead of the latest commit.  Development would be easier and allow for testing I think easier.  I tried to setup the testing branch but it isn't perfect.
To do this I think we'd need to first get the latest release:
curl -s https://api.github.com/repos/pivpn/pivpn/releases/latest
then get the hash of the install script to actually execute on that version.
once repo downloaded , checkout the tag so we are using that version of all the files.
High level thoughts here, just wanted to get it down before i forgot.

We could work with multiple branches (a develop and a stable branch, and merge if necessary. The owner of pivpn.io (@0-kaladin?) could even make a subdomain like dev.pivpn.io that points to the develop branch. This way we can eliminate the code used for downloading the test branch if a certain env variable is set.

well what you described I have working even without the other domain (yes I have pivpn.io).  just pass TESTING=1, I have it on the wiki
https://github.com/pivpn/pivpn/wiki
and you'll see the TESTING var in the install script.
The method above just allows us to ensure the curl is using a "release".  Just something to consider though we could always use the test branch and only merge to master on release.
6 for one, half dozen the other..   Just food for thought.

btw @redfast00 go here https://github.com/orgs/pivpn/teams and see if you can request to join the team.

@0-kaladin: sent a request to join the team.
I just read the wiki and noticed there is indeed a test domain. Maybe we should write a CONTRIBUTING.MD that tells potential devs which branch to push to.

Yea this whole work isn't worth it as testing from the test branch works fine.
Created contributing.md as you suggested, that will suffice.


Fix hardcoded CardDetails viewname in Kanban utils

2 places the viewname is hardcode.
https://github.com/pegasystems/constellation-ui-gallery/blob/b1a4790f3923556eb47b117c4a55120f3d1ba2fa/src/components/Pega_Extensions_KanbanBoard/utils.ts#L26
https://github.com/pegasystems/constellation-ui-gallery/blob/b1a4790f3923556eb47b117c4a55120f3d1ba2fa/src/components/Pega_Extensions_KanbanBoard/utils.ts#L34
the viewname is coming as a prop to the component: detailsViewName so this should be used accordingly.
PS: identified these while working on Gantt compnonent, fixed there as part of this comment

fixed https://github.com/pegasystems/constellation-ui-gallery/commit/abec916a9f1e4b91c59c342265a6312b43c7e363


Making it work with iterm2 3.3.9

After struggling to find a version of the applescript that works, I found one buried deep in the alfred forums, thought I'd share:
on alfred_script(q)
	if application "iTerm2" is running or application "iTerm" is running then
		run script "
			on run {q}
				tell application \"iTerm\"
					activate
					try
						select first window
						set nowindows to false
					on error
						create window with default profile
						select first window
						set nowindows to true
					end try
					tell the first window
						if nowindows is false then
							create tab with default profile
						end if
						tell current session to write text q
					end tell
				end tell
			end run
		" with parameters {q}
	else
		run script "
			on run {q}
				tell application \"iTerm\"
					activate
					try
						select first window
					on error
						create window with default profile
						select first window
					end try
					tell the first window
						tell current session to write text q
					end tell
				end tell
			end run
		" with parameters {q}
	end if
end alfred_script

Try the new script.
If the problem still occurs in the new version, please open a new issue.

I've tried new script, It didn't work and opened new issue.
See #42


Update setters docs

@mortent This PR is to update docs for setters with latest features. This should be merged after/with new kpt release.

/lgtm


Authorization

Hello! I can not log in to your application. What should I do?

Quiero que me funcione el instagaram direct por una vez yaaaa!!!

i caonnot login//

@gaverson what happens when you try to login?

@gaverson what happens when you try to login?

once app upgraded and after that i logined in the app, but o got a error with text "EPERM: operation not permitted, open 'C:\Users\Gaver\AppData\Roaming\IGdm\session-cookie\and.gaver.json'"

same here , need help


Fiber may not have the same meaning with Java Fiber(Project Loom)

Hi:
Correct me if I am wrong
We(me and latte-lang.org author) just  have a discussion about ETA Fiber
our discussion is about the ETA fiber is cooperative way or preemptive way
It seems like Java itself will have a fiber http://cr.openjdk.java.net/~rpressler/loom/Loom-Proposal.html
and according to the article, the Java/Project Loom will provide a preemptive way of Fiber
and for ETA, the Fiber is more like cooperative way right so it is similar to Kotlin coroutine right?
since if we uses eta-fiber and kotlin-coroutine we all need to use async/await similar apis
and Fibers in project loom is more like Green Thread
since according to the slides in this video: https://www.youtube.com/watch?v=ZuJg2cfmSmw
eta fibers need users to schedule
Hope it helps
Cheers

Hi @chengenzhao, interesting discussion.
Yes, you are correct that Eta Fibers are co-operative, just like Kotlin coroutines. It's unfortunate that the word "fiber" has different meanings in different places. I go with the definition on Wikipedia which explicitly states with that "fibers use co-operative multitasking".
Now we can extend the current Eta Fiber implementation to make it a true (pre-emptive) green thread, by modifying the monadic bind operation in the Fiber monad to check for a signal from the Eta runtime to context switch. We're not sure whether this is a good idea yet, so we have not yet implemented it and adds quite a bit of non-determinism.
Cc @agocorona who is currently working on an alternative implementation for Eta Fibers using the CPS.


Install importlib as dependency for python 2.6

After installing testinfra 1.5.0 in our python 2.6 (default centos 6 python) based test environment, we began to receive the following error:
Traceback (most recent call last):
   File "/usr/bin/testinfra", line 7, in <module>
     from testinfra.main import main
   File "/usr/lib/python2.6/site-packages/testinfra/__init__.py", line 16, in <module>
     from testinfra import backend
   File "/usr/lib/python2.6/site-packages/testinfra/backend/__init__.py", line 16, in <module>
     import importlib
 ImportError: No module named importlib

After installing importlib using pip, testinfra began working as expected. It would be nice to set importlib as a dependency so that pip install testinfra will automatically install importlib.

Although testinfra doesn't support python 2.6 (which is unmaintained), this has been fixed in 1.5.1.
Thanks for reporting.


FR: sink 'json' output to stdout

Feature Request 😄
Would be nice to either be able to set a parameter in the Terminal Source options to not get colored, line breaked (with that i mean the "..." cut) outputs so it can be used like a "real" tail output. Or an option to get a JSON output to stdout as a new sink
type.

I wanted to implement it into a flat file, but stdout will do I guess; always can just redirect, or maybe just add --output option.

Agreed. I think that conceptually, the sink for all of the above use-cases should be a single one named stdout (currently terminal) with different options for data formatting / output.

WIP for this issue in #77

But please also keep the current one if possible, i have tools built that depends on the current terminal output format.

yes, @gitmachtl, we'll adhere to semantic versioning. Every minor / patch release within v1 will be backward compatible.
In this particular scenario, the terminal sink will remain as it is. We'll add new sinks to fulfil the original request of the issue. I've added some more description to the PR to reflect that.

@gitmachtl this should be solved by #77. There's a new stdout sink that outputs raw json through stdout. The new dump command is shortcut similar to watch that default to the new stdout sink. It can be used for piping into a file or shell command. This will be shipped in 1.1, but you can already run it from master.


chore(build): enable arm64 build for wasmx

In #11215 we learned wasmx was disable in arm64 builds; enable it and add the wasmx module back to the package manifest file.

The issue here is that this chunk of code assumes host and target architectures coincide; since we are cross-compiling arm64, this is problematic. We need to download correct assets based on target arch.

This still needs a lot of work - KAG 2141 tracks it.


White screen when changing orientation during launch

Sometimes, if you change the orientation of the screen when the application is launched, a white box appears instead of the camera. On video this is the first time: https://drive.google.com/open?id=0BzGcjhUSu0r1MFpVUWdRMGN6Z1U. Log:

E/BufferQueueProducer: [SurfaceTexture-0-17724-8] dequeueBuffer: BufferQueue has been abandoned
E/ViewRootImpl: sendUserActionEvent() returned.

(It seems that these errors always appear when changing orientation.)

That is a normal behaviour. Camera is being opened and closed asynchronously, so it is normal  that there is some delay before you see the image.

Yes, but sometimes the camera just does not start. Look at the first launch of the application on the video - there is a white box.

Hm, right. Sorry, forgot to check the video. I will take a look at the issue.
It would be nice if you'll provide:

The log
Code which you use to start and stop Fotoapparat

@dmitry-zaitsev Sent email.

There was indeed a racing condition which is hard to reproduce on high-end devices (if you can still call S7 Edge high end). It is fixed now and will be a part of the 1.3.0 release.

I believe this may still be an issue, see #104 #89
You can reproduce it by deploying the fotoapparat example to a Nexus 5 with API 22 in Android studio. Hit the home button then open the app again. You are greeted with a white camera preview that does not reinit.
Relevant logcat:
D/Fotoapparat: setDisplaySurface
D/Camera: app passed NULL surface
D/Fotoapparat: startPreview

Sorry to double comment. I think this is happening because
'camera.setDisplaySurface(textureView);'
is being called before the runnable in updateLayout is finished. If I sleep the thread after running updateLayout but before calling that line then the issue does not occur.
TextureRendererView.java

    @Override
    public void attachCamera(CameraDevice camera) {
        try {
            awaitSurfaceTexture();
            updateLayout(camera);
            try{
                Thread.sleep(50);
            }catch (Exception e){
                // Do nothing
            }
            camera.setDisplaySurface(textureView);
        } catch (InterruptedException e) {
            // Do nothing
        }
    }

Obviously one wouldn't want to actually do that but it may help with debugging?


[TE7][TC-MF-1.19] Wrong Status Code when opening commissioning window when commissionee already has max number of fabrics

Problem

expected behavior: If a commissionee already has the max number of fabrics, if an admin tries to open a commission window for it, the response code should be TableFull (0x05)
actual behavior: The status code was Success (0x00), although any following pairing attempt will fail.

Commissioning should return helpful error codes in v1.
Removing tag v1_triage_split_4.

@du48s03 The spec absolutely allows opening a commissioning window when the max number of fabrics is already present.   The new commissioner can then choose whether it should remove an existing fabric before adding its fabric or do something else.
The only thing in the spec that returns TableFull is AddNOC.
So the behavior here is exactly following the spec.


Release the package?

This package does not seem to be addable using the Julia package manager (even though the README implies that it is).

True, it hasn't been released yet. Good idea, I'll do it asap.

Check list:

[ ] install Julia TagBot and JuliaTeam Registrator
[ ] resolve #24

the tagbot file seems to be there, is it fine

with a quick look, I don't see anything wrong at least

The release is officially triggered.


"Zemeș" and "Bolătău" are listed in the drop-down menu as villages in "Zemeș" commune, "BACĂU" county

Description:
"Zemeș" and "Bolătău" are  listed in the drop-down menu alongside its corresponding county and commune, according to the law
Preconditions : the website (https://peviitor-ro.github.io/ui.orase/) is up and runing. After every step delete the text you typed from the search bar.

Step 1
Type "Zemeș" in the search bar.

Expected results
The location is listed in the drop-down menu as "Zemeș, BACĂU (Zemeș)".

Step 2
Type "Bolătău" in the search bar.

Expected results
The location is listed in the drop-down menu as "Bolătău, BACĂU (Zemeș)".


A language test involving timezones potentially needs an update to account for daylight saving time changes

I discovered the issue while working on https://dart-review.googlesource.com/c/sdk/+/356760, which doesn't involve timezones in any ways. Test corelib/date_time7_test was failing in configuration vm-win-release-x64-try.
The reported error is as follows:
Unhandled exception:
Expect.equals(expected: <-7>, actual: <-8>) fails.
#0      Expect._fail (package:expect/expect.dart:721:5)
#1      Expect.equals (package:expect/expect.dart:145:5)
#2      testLocal.checkOffset (file:///C:/b/s/w/ir/tests/corelib/date_time7_test.dart:36:16)
#3      testLocal (file:///C:/b/s/w/ir/tests/corelib/date_time7_test.dart:46:3)
#4      main (file:///C:/b/s/w/ir/tests/corelib/date_time7_test.dart:55:3)
#5      _delayEntrypointInvocation.<anonymous closure> (dart:isolate-patch/isolate_patch.dart:297:19)
#6      _RawReceivePort._handleMessage (dart:isolate-patch/isolate_patch.dart:184:12)

It seems unrelated to the change I was working on, so I believe it's an issue with the test.
It's strange that the error manifests only in one configuration.

/cc @lrhn @mkustermann I'm not sure how to categorise the issue and what labels to apply, so I'm tagging you guys :)

Maybe this is somehow related to US switching to summer time?

Have you rebased after https://github.com/dart-lang/sdk/commit/b0236fdde5eec3adb60db672d82c089bae6af780 landed?

Have you rebased after b0236fd landed?

I think so: whenever I try to use the rebase button in Gerrit, it says the CL is already up to date. Yet, it shows the failure on the bot. Maybe the build system haven't picked up https://github.com/dart-lang/sdk/commit/b0236fdde5eec3adb60db672d82c089bae6af780 yet.

It's possible that Gerrit doesn't see https://github.com/dart-lang/sdk/commit/b0236fdde5eec3adb60db672d82c089bae6af780 in my case due to my CL using stable in the upstream, and https://github.com/dart-lang/sdk/commit/b0236fdde5eec3adb60db672d82c089bae6af780 is merged into main.

Stable does not have the fix - so we should just approve the failure.

Stable does not have the fix - so we should just approve the failure.

Ok, I'm closing the issue then.


UICollectionViewFlowLayout is not defined when embed in navigation controller

Get below message when the controller is embed in navigation controller, please check it:
"The behavior of the UICollectionViewFlowLayout is not defined because: the item height must be less than the height of the UICollectionView minus the section insets top and bottom values."

the behavior of the UICollectionViewFlowLayout is not defined because:
the item height must be less than the height of the UICollectionView minus the section insets top and bottom values.


Add ALTLIST

ALTLIST representations were recently added to base R.
This PR adds functionality to create an ALTREP for List objects.

I think I may have messed up my fork sync. If that's the case let me know and I will blow it all up and make a new branch :P

The CI errors are due to not finding the ALTLIST functions in libRsys which should be available for R 4.1 onwards. They're present in 0.6.0 as well. https://docs.rs/libR-sys/latest/libR_sys/?search=altlist

Yes, one small correction is the version with ALTLIST support is R 4.3.

@JosiahParry I hope it is okay: But I added the feature-gate. Let's see if it passes tests.

I only just finished eating breakfast! Y'all are fast. Thank you both for the comments. @CGMossa i see you pushed some commits to address them. Thank you!

@yutannihilation pushed!

As a final step, it would be nice to also jump into {extendrtests} and write an integration test for ALTLIST there. It will ensure that it is handled correctly from R perspective & also provide an example implementation to which we can refer people.

@Ilia-Kosenkov Done! I think there needs to be a series of follow up issues to make the ALTREP experience better. There is not any way (that I am aware of) of capturing the Altrep and converting back to the original struct type.

Sorry, I forgot that the CI run needs an approval. I just approved it, but it seems tests you added fail. I think

Probably you forget to add the altlist module to lib.rs
The compilation and test won't work on oldrel.

@yutannihilation thanks for catching that! I've committed the change to lib.rs. Is there a way to ensure that function won't get compiled for oldrel? Would adding a feature gate work?

Yes, I think you need these feature gate and build.rs like below. I forgot DEP_R_R_VERSION_* is available without directly adding libR-sys to the dependencies, but it should be possible.
https://github.com/extendr/extendr/blob/master/extendr-api/build.rs
I hope there's some simpler solution, but I don't come up with a nice one yet.

Thank you @Ilia-Kosenkov and @yutannihilation for suggesting the tests. The ALTLIST integration test failed with a panic from extendr-api/wrapper/altrep.rs line 522. To investigate further, I have added additional integrations tests for ALTINTEGER and ALTSTRING. The same failure exists for ALTINTEGER. ALTSTRING results in a segfault in the memory leak integration tests.
I have pushed these integration tests but have commented them out. This is because it will cause CI to always fail.
In an effort to avoid scope creep, I suggest that this PR be merged as it mimics other ALTREP implementations and works similarly to the others. In addition, it passes the rust tests. This would be an incremental improvement to extendr. The PRs scope is limited but has revealed a place where extendr can be further improved.
I also suggest that there be an immediate follow up issue / PR to identify the source of the issue and rectify. I believe that making ALTREP work for extendr can open up doors for the project.

Judging by the error message, the issue should be 'fun' -- pointer misalignment might be a bug in our implementation or in R. I will try to take a look when I get an opportunity.

As the CI passes, can we merge this for now?

Thanks. I'll address the test failures.


Update to ffmpeg 6.0

Removed and renamed constants with entry from API changes https://git.ffmpeg.org/gitweb/ffmpeg.git/blob/HEAD:/doc/APIchanges
Remove use of AVCodecContext.sub_text_format
2021-09-20 - 176b8d785bf - lavc 59.9.100 - avcodec.h
Deprecate AVCodecContext.sub_text_format and the corresponding
AVOptions. It is unused since the last major bump.
AV_CODEC_CAP_TRUNCATED removed:
2021-09-20 - dd846bc4a91 - lavc 59.8.100 - avcodec.h codec.h
Deprecate AV_CODEC_FLAG_TRUNCATED and AV_CODEC_CAP_TRUNCATED,
as they are redundant with parsers.
AV_CODEC_CAP_AUTO_THREADS renamed to AV_CODEC_CAP_AUTO_THREADS
2021-03-16 - 7d09579190 - lavc 58.132.100 - codec.h
Add AV_CODEC_CAP_OTHER_THREADS as a new name for
AV_CODEC_CAP_AUTO_THREADS. AV_CODEC_CAP_AUTO_THREADS
is now deprecated.
AV_CODEC_CAP_INTRA_ONLY removed (use AV_CODEC_PROP_INTRA_ONLY instead): AV_CODEC_CAP_LOSSLESS removed (use AV_CODEC_PROP_LOESSNES instead):
2020-05-21 - 13b1bbff0b - lavc 58.86.101 - avcodec.h
Deprecated AV_CODEC_CAP_INTRA_ONLY and AV_CODEC_CAP_LOSSLESS.
AV_CODEC_FLAG_TRUNCATED removed:
AV_CODEC_CAP_TRUNCATED removed:
2021-09-20 - dd846bc4a91 - lavc 59.8.100 - avcodec.h codec.h
Deprecate AV_CODEC_FLAG_TRUNCATED and AV_CODEC_CAP_TRUNCATED,
as they are redundant with parsers.
AV_CODEC_FLAG2_DROP_FRAME_TIMECODE removed:
Not API changelog but was removed in f843460eb790d37e444e5946628f228421916537:
avcodec/avcodec: Remove AV_CODEC_FLAG2_DROP_FRAME_TIMECODE
It has been deprecated in 94d68a4
and can't be set via AVOptions. The only codecs that use it
(the MPEG-1/2 encoders) have private options for this.
So remove it.
AVFMT_FLAG_PRIV_OPT removed:
2021-03-03 - 2ff40b98ec - lavf 58.70.100 - avformat.h
Deprecate AVFMT_FLAG_PRIV_OPT. It will do nothing
as soon as av_demuxer_open() is removed.
Related to #1106

Also haven't yet looked close at API things that have been added since 5.x

Coming here looking for a similar patch.
Is there a way to conditionally apply the changes based on the detected version of libav at compile time? That way compatibility with FFMPEG 5 and 6 could both be maintained for some transition period.

@hmaarrfk I would guess it's possible somehow but i'm a cython beginner so this PR was mostly based on what was already there. Also not sure if pyav has some policy about what verisons to support?

Remind me to look at how h5py does it.

Me? 😄 I here by remind you to look how h5py does it 😬
Jokes aside, feel free to continue on my PR in a new PR etc

h5py uses the setup.py to create a file called config.pxi which defines a few constants related to the build time library:
https://github.com/h5py/h5py/blob/master/setup_build.py#L156
it then uses these constants in IF statements
https://cython.readthedocs.io/en/latest/src/userguide/language_basics.html#compile-time-definitions

hmm, im' having trouble with the Cython defined constants. I'm not sure how much I care given everything as a whole.
I'm going to try to see if you patch is still valid over at conda-forge to see if we can get the process moving.

@hmaarrfk 👍 let me know if i can assist with something

Sorry a bit confused, haven't used conda-forge before. So the new builds at https://anaconda.org/conda-forge/av/files are based on this branch? was manually triggered somehow?

Sorry a bit confused, haven't used conda-forge before. So the new builds at https://anaconda.org/conda-forge/av/files are based on this branch? was manually triggered somehow?

Lets discuss conda(-forge) usage and any related questions in https://github.com/conda-forge/av-feedstock/issues/68

Is there any policy etc on which ffmpeg versions pyav supports? if ffmpeg 5 support need to be kept i might be able to spend some time on it next week at work, but i'm quite new to python bindings so any guidelines how to do would be great.

I can't press merge, currently just an other open source contributor eager to see this "officially in". lets wait until somebody with "merge authority" can chime in. they might just be busy...

@hmaarrfk aha ok! same as me then :) yeap let's see

This fixed pyav for me on ffmpeg 6.0 macOS 10.9 MacPorts

OK this is a start, thanks for this. However it is only a start, we also need to update our binary wheels to use FFmpeg 6.0, so I would suggest heading over to https://github.com/pyav-org/pyav-ffmpeg and submitting a PR there to build FFmpeg binaries for all our platforms.

@jlaine Hey, ok! hopefully i can get some time to look at that. Should we also update versions of all the libraries at the same time?

@jlaine I noticed you already started doing some CI fixes. Guess best to wait with ffmpeg 6 update until other CI things are done?

There's a fork with this up and running. I'd recommend those changes be merged into this repo

Let's just merge this, then try to fix tests.

I'm not too happy with this, we need to get pyav-ffmpeg built with Ffmpeg 6 and used in our CI to claim we're compatible with FFmpeg 6!


Implement a dispatch_forever method for PostgreSqlSnapshot

 Issue by garciparedes
Thursday Oct 21, 2021 at 07:43 GMT
Originally opened as https://github.com/Clariteia/minos_microservice_aggregate/issues/8

This issue is intended to implement a dispatch_forever method for the PostgreSqlSnaphot class, with a similar behaviour to the one implemented on minos.networks.Producer or minos.networks.Handler, such that the snapshot updates become reactive respect to the PostgreSqlRepository.
https://github.com/Clariteia/minos_microservice_networks/blob/642a769955f9978965599027ba1b55efdb68cd2d/minos/networks/brokers/producers.py#L92-L105

This issue does not apply anymore as the SnapshotRepository class already has a synchronize method and the SnapshotService is calls it periodically.


Query: always return a string in the lastError field

While testing out the new React UI, I have found out that some errors
return empty dicts when marshalled into the JSON format. The response
looks like this:
{..., "lastError": {}}

And then, obviously, the UI fails to parse that. Add a
stringifiedError type with tests which ensures that we always get a
string.
Signed-off-by: Giedrius Statkevičius<EMAIL_ADDRESS>
[x] I added CHANGELOG entry for this change.
[ ] Change is not relevant to the end user.

Changes
Add a small, new type which ensures that we always get strings in the lastError field of /api/v1/stores.
Verification
Unit tests.

cc @prmsrswt


Set Alarm

Can set only one alarm at each execution. Plays the entire music. Uses default system music player to play the music.

Updated the program


Feature/change logging structure

This is the first version of the code, for now it is single-threaded, still I think we should merge it.

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


Add dependabot config

See https://dependabot.com/docs/config-file/

This change is

see https://github.com/karen-irc/option-t/issues/371


Edits deployment.md

Fixes an inaccuracy: template: metadata: labels: labels the Pod template rather than the containers
Elaborates some more on the explanation of the manifest

This change is

@ryanmcginnis, Even though the template field is a PodTemplateSpec, we don't say that the Pod template is labeled app: nginx. Instead, we would say the Pod is labeled app: nginx. Or the Pod has a label app: nginx.
Check spelling of labelled. American custom seems to be labeled.
Other than that, lgtm.


Android Chrome: Layout issues in portrait view mode

Tested browser: Chrome 40.0.2214.89
Tested device: One Plus One with Android 4.4.4
Several layout issues in portrait view mode:

Texts and logo are overlapped
"Wash" button is cut off
Text format is not in correct

Please see attached screenshot for reference

The mobile formatting has been improved throughout (in release 1.1.0), including numerous fixes to this page in particular.

Appears resolved.
Tested on:

Version 1.0.0 (18), 12 Mar 2015, 12:31
LG Nexus 5 (xxhdpi), Android 4.4
Samsung Galaxy Nexus (xhdpi), Android 4.2.1
Motorola RAZR VXT885 (hdpi), Android 4.0.4
Samsung Galaxy Ace (mdpi), Android 2.3.6


sunxi-next branch is gone

clone-repos.sh:
clone_branch git://github.com/jwrdegoede u-boot-sunxi sunxi-next
Looks like the main "sunxi" branch is the right one. That fork is also even with the upstream. Thus:
git clone git://github.com/linux-sunxi/u-boot-sunxi.git
I haven't tried building and running it yet, but I will when I can.

I don't see those commits on linux-sunxi/sunxi. However, it looks like they did get applied to the linux-sunxi/mirror/master, which looks like an old copy of the mainline U-Boot master, so we should probably switch to that.

I've updated my master branch to use the latest upstream U-Boot release:
https://github.com/talex5/xen-arm-builder
However, I had to edit the cubieboard2 boot script to move Linux to a different memory location. I guess U-Boot is now using that area for something else (possibly its stack). I couldn't find what was using it, or anything suggesting that the new address is free. Xen requires a contiguous block of memory for dom0, so either we have to put everything at the top of RAM, or everything at the bottom, and U-Boot is already using the bottom addresses.
The Cubieboard 3 might need similar updates, but I haven't tested it.
Let me know if it works for you!

It isn't convenient for me build the whole image right now, but building that version of U-Boot works, and I ran just the commands to write the .bin and .scr to the card, and it booted fine...

With the new U-Boot:
sunxi# bdinfo
arch_number = 0x100010BB
boot_params = 0x40000100
DRAM bank   = 0x00000000
-> start    = 0x40000000
-> size     = 0x40000000
eth0name    = dwmac.1c50000
ethaddr     = 02:12:0a:42:bb:28
current eth = dwmac.1c50000
ip_addr     = <NULL>
baudrate    = 115200 bps
TLB addr    = 0x7F6F0000
relocaddr   = 0x7F657000
reloc off   = 0x35657000
irq_sp      = 0x7F236EF0
sp start    = 0x7F236EE0
FB base     = 0x00000000

With the old one:
sun7i# bdinfo
arch_number = 0x000010BB
boot_params = 0x40000100
DRAM bank   = 0x00000000
-> start    = 0x40000000
-> size     = 0x40000000
eth0name    = dwmac.1c50000
ethaddr     = 02:12:0a:42:bb:28
current eth = dwmac.1c50000
ip_addr     = <NULL>
baudrate    = 115200 bps
TLB addr    = 0x7FFF0000
relocaddr   = 0x7FF86000
reloc off   = 0x35F86000
irq_sp      = 0x7FB65EF0
sp start    = 0x7FB65EE0

So the old script was overwriting the TLB and relocated U-Boot code I guess. I'm not sure why the address is different though.

I had to make changes to get this working on the cubietruck. I used the following addresses
setenv kernel_addr_r  0xaf600000 # 8M
setenv ramdisk_addr_r 0xaee00000 # 8M
setenv fdt_addr       0xaec00000 # 2M
setenv xen_addr_r     0xaea00000 # 2M

Thanks @infidel - I didn't know about that command! For future reference, here is the output on the CubieTruck:
arch_number = 0x100010BB
boot_params = 0x40000100
DRAM bank   = 0x00000000
-> start    = 0x40000000
-> size     = 0x80000000
eth0name    = dwmac.1c50000
ethaddr     = 02:0d:07:81:13:60
current eth = dwmac.1c50000
ip_addr     = <NULL>
baudrate    = 115200 bps
TLB addr    = 0xBF6F0000
relocaddr   = 0xBF656000
reloc off   = 0x75656000
irq_sp      = 0xBF235EF0
sp start    = 0xBF235EE0
FB base     = 0xBFD00000

I've updated the patch to include @Furao's settings and made a PR (#58).


[Bug]: Improve widget logic

Contact Details
No response
What happened?

[ ] Make widgets check if position from local storage is inside window. if window is smaller than last time it will be located outside window 😞
[ ] make widgets resizable in both directions.

What did you expect?
No response
Host
Applies to All
Host Details
.
Swate version
.

make widgets resizable in both directions.

I remember now. I did not enable this, as it creates issues with overlays such as the term search dropdown. The widget card itself has overflow: visible, which makes a set height impossible, but wihout the visible overflow term search results might require scrolling.


[hjson] Add explicit commas to top_earlgrey.hjson

Summary
This PR:

Adds explicit commas where Hjson implicitly takes a newline to be a comma.
Fixes a couple of minor typos in comments.

This PR only covers top_earlgrey.hjson.

I'm not sure when the unauthorized changes check will be lifted. Maybe it's worth waiting for the freeze to be over before merging this particular commit?

https://github.com/lowRISC/opentitan/pull/19163

#19163

I'll rebase to fix the current conflicts when that merges.


Added Peppermint in the list of tested distributions.

Peppermint, is an Ubuntu-based distribution, tailored to netbooks, with a certain mix of LXDE, Xfce & Cinnamon composing the main desktop environment. Oh, and it has an SSB manager too.
Since it doesn't change anything from a base Ubuntu that cause a case of packages incompatibility, this pull request can be safely refused.

Sorry for not seeing this sooner. Please see requested change.

I don't see any reviews notes of your part, and hence, know which changes are requested. If you want, you are free to modify my pull requests, in any way.

this has literally been there lol

i forgor i can do that lol


No function stft() in mix_signals.m

In mix_signals.m 66 lines, seems the "stft" function doesn't exist in my matlab?
And in mix_signals.m 88 lines, "istft" function also doesn't exist
Would you mind helping me how to find them?

The function "stft" was introduced in MATLAB 2019a (see: https://de.mathworks.com/help/signal/ref/stft.html). If you are unable to upgrade to a newer MATLAB version, you can instead use an open source implementation (e.g., https://israelcohen.com/software/).


x16-emulator: 44 -> 46

Automatic update generated by nixpkgs-update tools. This update was made based on information from https://repology.org/project/x16-emulator/versions.
meta.description for x16-emulator is: The official emulator of CommanderX16 8-bit computer
meta.homepage for x16-emulator is: https://cx16forum.com/
meta.changelog for x16-emulator is: https://github.com/X16Community/x16-emulator/blob/r46/RELEASES.md
Updates performed

Version update

To inspect upstream changes

Release on GitHub

Compare changes on GitHub

Impact
Checks done

built on NixOS
The tests defined in passthru.tests, if any, passed
found 46 with grep in /nix/store/x5yfk4cgz4dz9sy5382c9x9v63869jcf-x16-emulator-46
found 46 in filename of file in /nix/store/x5yfk4cgz4dz9sy5382c9x9v63869jcf-x16-emulator-46

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

2 total rebuild path(s)

2 package rebuild(s)

First fifty rebuilds by attrpath
x16-emulator
x16-run

Instructions to test this update (click to expand)

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

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

Or:
nix build github:r-ryantm/nixpkgs/999fcf3851f141faab94567bd80347197711cdd8#x16-emulator

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

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

1 package built:

x16-emulator

Maintainer pings
cc @AndersonTorres for testing.

Closing in behalf of https://github.com/NixOS/nixpkgs/pull/273409

??


Added Dutch translation

Thanks. But please be aware there may be many changes to come, as the skin is still in the very early stages.

No worries, I'll keep my fork in sync and I'll try to keep up with the translations :-)


feat(server): add 'listening' event with port number

Sometimes, when you want to use karma port programatically (e.g. to send manually browser to karma localhost: address), you face problem with not knowing exact port number.
Port number might be different from one set in config as sometimes you run more than one instances of karma. Below image show such situation:

This PR adds 'listening' event to karma. After this event you are sure that you have correct karma port number.
You may use it like this:
let server = new Server(karmaConfig, done);
server.once('listening', function (e, port) {
    console.log(port); //port number from event
    console.log(server.get('config').port); // also correct value
});

@googlebot I signed it!

Thanks, could you please

add docs about this in https://github.com/karma-runner/karma/blob/master/docs/dev/04-public-api.md
add a test to make sure this actually works as expected

@dignifiedquire done :)

I've changed test to pass when mockWebServer.listen callback is executed - so when server starts listening.

Thanks :) looks good now, if you could squash your commits into one then I can merge it.

Done :)

Thanks :octocat: Just waiting for travis to get green now

@dignifiedquire It's green

@karol-f thanks :)

@karol-f thanks for the change


License

Very cool! Any way you could add a license to this? MIT works great :)

Hi, I can add the MIT Licence to the repo and add a note to the readme if wanted.

Yeah that would be awesome!

PR #4 created

Thank you guys


Local video not showing and not visible in other end in Iphone X and iphone 6s

please help me

solved

how?

@bhoomesh950 how you fixed? any code of line you could provide. It will be helpful.

@bhoomesh950 Can you please tell us how you solved this problem?


Make graphql-persisted-document-loader work with react-app-rewired

I'm newbie.
Is there a way to make this package (https://github.com/leoasis/graphql-persisted-document-loader) work with react-app-rewired?
How to do?

Looking at the instructions on that page, it looks like you should be able to do this:
// Reusable JSON.stringify replacer function that turns RegExp values into strings for
// debugging (Otherwise a RegExp is output as "{}" - this outputs it as "/*.jsx?/")
const stringifyConfig = (key, value) => {
  if (value instanceof RegExp) {
    return value.toString();
  }
  return value;
};

module.exports = function(config) {
  /**
   * Find the "oneOf" rule in the list of default rules created by react-scripts so that
   * we can add the graphql-persisted-document-loader to the list.
   */
  const oneOfRuleIndex = config.module.rules.findIndex(
    (rule) => rule.oneOf !== undefined && Array.isArray(rule.oneOf)
  );

  /**
   * Rule wasn't found - exit with an error message that lets us know what is in the list
   * of rules...
   */
  if (oneOfRuleIndex === -1) {
    throw new Error(
      `Cannot find the main build oneOf rule, rules: ${JSON.stringify(
        config.module.rules,
        stringifyConfig,
        2
      )}`
    );
  }

  /**
   * Found the oneOf rule, add the new loader to the beginning of it.
   */
  config.module.rules[oneOfRuleIndex].splice(0,0,{
    test: /\.graphql$/,
    use: [
      { loader: 'graphql-persisted-document-loader' }, // <= Before graphql-tag/loader!
      { loader: 'graphql-tag/loader' }
    ]
  });

  return config;
}

If the above fails to find a rule with a 'oneOf' condition, it'll stop building react and print out what rules were in the config (including their regexp tests). If it does find it properly (and it should unless you're using a custom version of react-scripts) it will add a new rule to the beginning of the list of oneOf rules that tests for a file with the 'graphql' extension.
Note: the last rule in the oneOf rules is a catch-all file-loader rule that would also match files with a 'graphql' extension. This is why the above is not simply pushing the new rule to the oneOf array - if we did, the catch-all would be used instead of the new rule. Adding it to the beginning of the array won't affect anything for javascript/css/etc, but will ensure that the new rule is used for graphql files rather than the existing catch-all file-loader rule.


Update documentation for TimeSeriesPredictor

Description of changes:
This PR fixes several factually incorrect statements & improves wording in the documentation of the TimeSeriesPredictor API.
By submitting this pull request, I confirm that you can use, modify, copy, and redistribute this contribution, under the terms of your choice.

Ready to be merged once the tests pass


Problems running ur script

I try to run ur script on command prompt and double clicking it but its not working, can u make a video or a instructions please?
When i double click it, automatically close its and i cant see the error

Im Using python 2.7

I'm not sure what you are clicking on so I'm not exactly sure where to start.
Open your terminal (Linux or Mac) or cmd (Windows) and navigate to where you want to install the program.  (If you wish to use a virtualenv so as to globally install the dependencies, do that now, but its not required to install.)  Follow the installation instructions in the README, specifically run:
pip install<EMAIL_ADDRESS>
This installation will create the "ptc" command.  Run the program by just typing:
ptc

I didn't create any entry point by running a specific file, so there currently isn't a way of just running it by double clicking on any file.
After running ptc, if you still have errors (not unlikely, as this isn't tested as thoroughly as it should be), could you please copy the Traceback message from the terminal and paste it here, and include what version of Python you're using (2.7 in this case) and what operating system you're using?  This will help me figure out any issues.

⋊> ptc                                                                                18:04:00 Traceback (most recent call last):   File "/usr/local/bin/ptc", line 9, in <module>     load_entry_point('PTCAccount==1.2.0', 'console_scripts', 'ptc')()   File "/usr/local/lib/python2.7/site-packages/pkg_resources/__init__.py", line 542, in load_entry_point     return get_distribution(dist).load_entry_point(group, name)   File "/usr/local/lib/python2.7/site-packages/pkg_resources/__init__.py", line 2575, in load_entry_point     return ep.load()   File "/usr/local/lib/python2.7/site-packages/pkg_resources/__init__.py", line 2235, in load     return self.resolve()   File "/usr/local/lib/python2.7/site-packages/pkg_resources/__init__.py", line 2241, in resolve     module = __import__(self.module_name, fromlist=['__name__'], level=0)   File "/usr/local/lib/python2.7/site-packages/ptcaccount/__init__.py", line 1, in <module>     from ptcaccount.accountcreator import *   File "/usr/local/lib/python2.7/site-packages/ptcaccount/accountcreator.py", line 14, in <module>     from ptcaccount.exceptions import * ImportError: No module named exceptions

@jepayne1138
code in accountcreator.py imports ptcaccount.exceptions, while the file is named ptcexceptions.py
I changed the import in accountcreator.py to reflect the different name.  It looks like it's actually correct in an old version. I'm not the most experienced and have been working on like four branches on two machines.  I'll take a look and see if I can't straighten it out.

Alright, I think I sorted it out and fixed the import with release v1.2.1.  Hopefully I didn't break anything else this time.


Wrapping text and shrinking mirador viewer for mobile view

Resolves #380

Coverage increased (+0.02%) to 45.653% when pulling 82f8caac398a4e23d6f986ebffcb613f2f0957f9 on DAME-Aug-Sept-sprint-380-text-wrapping into 7da28c9815dc3049aa8ea727125c767ec64460c3 on DAME-Aug-Sept-sprint-staging.


TypeScript types of Seq.Indexed.reduce

What happened
Given this TypeScript code
interface Item {
     payload: {};
}

mylist.valueSeq().reduce((result: Item[], item) => {
    if (item && item.payload) {
      result.push(item.payload);
    }

    return result;
}, []);

the TypeScript compiler tells me that everything is fine because it assumes that the item passed into the reduce function is of type Item. But actually it isn't, it is ArrayMapNode which means it is of type Indexed and I can only access payload by calling get('payload') on it, which I can't because get() doesn't exist on Item for the TS compiler.

Sorry, could you please include a test case that I can reproduce? I'm not sure what mylist is, and without that I'm unable to reproduce your issue.
Please feel free to re-open if you have more information.
If possible, please submit in the form of a PR with a new failing test case.


HTML5 Export: html file looks for files by different names from what exporter gives them

Godot version:
3.1.1.stable.official
OS/device including version:
Intel NUCi5 running Debian GNU/Linux Testing (Buster).
Issue description:
Downloaded the sample file Godot3_dodge-1.3.zip from here on GitHub. Unpacked it and imported it. Downloaded the export templates from within the Godot editor. Selected the HTML5 template and exported, then copied the resulting files to /var/www/html/creep and changed the permissions. I am running Apache 2.4.28-2 here on my system.
When I try to open the game from a browser I'm told, "Failed loading file 'dodge_3.wasm': Not Found". That's correct, it is not found, because Export actually named the file "dodge_3.0.wasm". That extra ".0" is not helping and I have no idea why there is a discrepancy.
I am attaching the whole Creeps file, since it's small. Thanks.
Steps to reproduce:
As above.

Install the stable Godot
Download and import the "Dodge the Creeps" example project
Download the export templates
Export as HTML5

Minimal reproduction project:

Creeps_hate_html5.zip

More info: I tried exporting for a Linux target, and got what I suspect is the same error. Console output quoted below:
OpenGL ES 3.0 Renderer: Mesa DRI Intel(R) HD Graphics (Coffeelake 3x8 GT3)  SCRIPT ERROR: GDScript::load_byte_code: Parse Error: Unexpected token: Identifier:sextends    At: res://Player.gdc:1. ERROR: load_byte_code: Method/Function Failed, returning: ERR_PARSE_ERROR    At: modules/gdscript/gdscript.cpp:785. ERROR: load: Condition ' err != OK ' is true. returned: RES()    At: modules/gdscript/gdscript.cpp:2168. ERROR: _load: Failed loading resource: res://Player.gdc    At: core/io/resource_loader.cpp:285. ERROR: poll: res://Player.tscn:3 - Parse Error: [ext_resource] referenced nonexistent resource at: res://Player.gd    At: scene/resources/resource_format_text.cpp:440. ERROR: load: Condition ' err != OK ' is true. returned: RES()    At: core/io/resource_loader.cpp:208. ERROR: _load: Failed loading resource: res://Player.tscn    At: core/io/resource_loader.cpp:285. ERROR: poll: res://Main.tscn:5 - Parse Error: [ext_resource] referenced nonexistent resource at: res://Player.tscn    At: scene/resources/resource_format_text.cpp:440. ERROR: load: Condition ' err != OK ' is true. returned: RES()    At: core/io/resource_loader.cpp:208. ERROR: _load: Failed loading resource: res://Main.tscn    At: core/io/resource_loader.cpp:285. ERROR: start: Failed loading scene: res://Main.tscn    At: main/main.cpp:1739. WARNING: cleanup: ObjectDB Instances still exist!    At: core/object.cpp:2095. ERROR: clear: Resources Still in use at Exit!    At: core/resource.cpp:425.
I tried exporting to Windows, and got what looks like the same thing:

Does the Export function just hate periods?

This is a duplicate of #28103
(except the Windows part)

So, looking at the bug @KoBeWi linked to, I saw that both happened under Linux. I fired up my Windows VM to try there, figuring to see if that was the problem. Except the 64-bit Windows executable fails to start up. The unavoidable Windows console that opens when I execute it (?) has these errors:

ERROR: _display_error_with_code: CanvasShaderGLES2: Vertex shader compilation failed:

0:1(13): error: syntax error, unexpected $end
ERROR: get_current_version: Method/Function Failed, returning: __null
ERROR: bind: Condition ' !version ' is true. returned: false
ERROR: _display_error_with_code: SceneShaderGLES2: Vertex shader compilation failed:
0:1(13): error: syntax error, unexpected $end
ERROR: get_current_version: Method/Function Failed, returning: __null
ERROR: bind: Condition ' !version ' is true. returned: false
ERROR: _display_error_with_code: SceneShaderGLES2: Vertex shader compilation failed:
0:1(13): error: syntax error, unexpected $end
ERROR: get_current_version: Method/Function Failed, returning: __null
ERROR: bind: Condition ' !version ' is true. returned: false
ERROR: _display_error_with_code: SceneShaderGLES2: Vertex shader compilation failed:
0:1(13): error: syntax error, unexpected $end
ERROR: get_current_version: Method/Function Failed, returning: __null
ERROR: bind: Condition ' !version ' is true. returned: false
ERROR: _display_error_with_code: SceneShaderGLES2: Vertex shader compilation failed:
0:1(13): error: syntax error, unexpected $end
ERROR: get_current_version: Method/Function Failed, returning: __null
ERROR: bind: Condition ' !version ' is true. returned: false
ERROR: _display_error_with_code: SceneShaderGLES2: Vertex shader compilation failed:
0:1(13): error: syntax error, unexpected $end
ERROR: get_current_version: Method/Function Failed, returning: __null
ERROR: bind: Condition ' !version ' is true. returned: false
ERROR: _display_error_with_code: CanvasShaderGLES2: Vertex shader compilation failed:
0:1(13): error: syntax error, unexpected $end
ERROR: get_current_version: Method/Function Failed, returning: __null
ERROR: bind: Condition ' !version ' is true. returned: false
ERROR: _get_uniform: Condition ' !version ' is true. returned: -1

I speculate based on some of those errors that Godot Engine doesn't like running in a VirtualBox VM, in particular because it doesn't like the VB video driver? I also tried the 32-bit version with the same result.
This is rather frustrating, since I do not currently own a native Windows or Mac box. Now I'm wondering about running the Windows version of Godot under Wine to do a successful export ....

VirtualBox drivers do not support OpenGL versions required IIRC, or the support is incomplete.

VirtualBox drivers do not support OpenGL versions required IIRC, or the support is incomplete.

Thanks, that was my guess.

Wow, I'm being verbose in the last 24 hours, but this might be useful: if I change the project to GLES2 (it came from the download as GLES3), export works.
OK, the game breaks (game-end code is never triggered by a collision, so it runs forever), but it exports without the above error.
I hope that's useful to the devs.

Does the Export function just hate periods?

Presumably you can test this out by changing the filename. But yes, in general it's usually dodgy territory to try and use periods in a filename that is also using them as a separator for the extension, as there may well be code that searches from the left for the first period instead of from the right.
Consider also I have a feeling some of the exporters may use multiple extensions (e.g. blah.png2342343.etc.stex) so searching from the left may not be a bug, but the most sensible behaviour. If periods in the filename is a problem ideally the exporter would put an error message box or something warning the user of this.

I tested a Windows export on Windows and it works no matter how many periods I put in the name. So this might only affect Linux or exporting from Linux.
HTML5 is broken on Windows too, but that's #28103 as mentioned

Can anyone still reproduce this bug in Godot 3.2.3 or any later release?

Tested 3.2.3 on Linux, works fine. The issue was likely fixed in 3.2, like #28103.


Use type aliases for Query item types in Query and QueryState methods

Objective

The Query and QueryState methods have a large number of <<Q as WorldQuery>::ReadOnlyFetch as Fetch<'w, 's>>::Item  return types
The unaliased types are mysterious and hard to read, especially for beginners
This code exposes a large number of tricky lifetimes, which are prone to soundness problems

Solution

Use the QueryItem type alias and a parallel ReadOnlyQueryItem alias to make this code easier to read and write.

Future Work
I think we should consider refactoring QueryIter to have an Item associated type and use these aliases there too. I'd prefer to keep this minimal though, so we can merge it ASAP and make #3333 easier.

This was a serious barrier to productivity and correctness in #3333.

Does rustdoc show the type aliases or do they get normalized?

Normalized, unfortunately.

Closing this out; not very useful until the rust bug is fixed.


JS Map function does not work with curly braces

Please help me. I don't know why, but I have some problems with Js Array Map function in my code.
If i use smth like this:

                    <YMaps ymapsParams...>
                        <Map mapParams..>
                            {routes.map((route, i) =>
                                <Polygon polygonParams.../>
                            )}
                        </Map>
                    </YMaps>

Everything is okay.
But in case I use curly braces

                    <YMaps ymapsParams...>
                        <Map mapParams..>
                            {routes.map((route, i) => {
                                <Polygon polygonParams.../>
                            })}
                        </Map>
                    </YMaps>

There are no Polygon elements on my map and no errors provided in console.
Thank you in advance

I'm JS newby.
Sorry, it was my fault

@ranetkaSt no worries! I was about to answer anyway 😉


add outbound workload traffic to eBPF engine

Description
This is all traffic except DNS that is coming out of the network.
The behaviour should be similar to iptables

Not happening because of merbridge