Sagas should rather be totally autonomous

Hello,
I've seen the real world where some sagas need to be stateful to know if the data needs to be fetched or not:
export default function* root(getState) {

  const getUser = login => getState().entities.users[login]
  const getRepo = fullName => getState().entities.repos[fullName]
  const getStarredByUser = login => getState().pagination.starredByUser[login]
  const getStargazersByRepo = fullName => getState().pagination.stargazersByRepo[fullName]

  yield fork(watchNavigate)
  yield fork(watchLoadUserPage, getUser, getStarredByUser)
  yield fork(watchLoadRepoPage, getRepo, getStargazersByRepo)
  yield fork(watchLoadMoreStarred, getStarredByUser)
  yield fork(watchLoadMoreStargazers, getStargazersByRepo)
}

// Fetches data for a User : user data + starred repos
function* watchLoadUserPage(getUser, getStarredByUser) {
  while(true) {
    const {login, requiredFields = []} = yield take(actions.LOAD_USER_PAGE)

    yield fork(loadUser, login, getUser(login), requiredFields)
    yield fork(loadStarred, login, getStarredByUser(login))
  }
}

// load user unless it is cached
function* loadUser(login, user, requiredFields) {
  if (!user || requiredFields.some(key => !user.hasOwnProperty(key))) {
    yield call(fetchUser, login)
  }
}

// load next page of repos starred by this user unless it is cached
function* loadStarred(login, starredByUser = {}, loadMore) {
  if (!starredByUser.pageCount || loadMore)
    yield call(
      fetchStarred,
      login,
      starredByUser.nextPageUrl || firstPageStarredUrl(login)
    )
}

I think we already discussed that but I think the Saga should be a totally autonomous process that listen for events and perform effects.
The problem here for me is that getState().entities.users[login] is actually a state that has the purpose of being displayed to the UI, as it is computed by Redux reducers. So basically you are coupling the way a Saga may perform effects to the UI state. Your saga is not really stateful, but it can use state provided by a dependency (the UI state).
I think the Saga should not know anything about the UI state at all. Refactoring the layout of the UI state should not need to perform any modification to the saga logic.
In backend systems, sagas can be distributed across a cluster of machines, and the saga can't really (or efficiently) query synchronously the state of the app as it may be stored on other machines. That's why Sagas are stateful and decoupled on the backend.
Maybe we should not force the user to use this decoupling as it introduces more complexity, but at least give the opportunity for the Saga to really be stateful, instead of reusing the UI state provided by getState. A simple possibility would be to register a reducer to the Saga for example.
See for example a saga implemented in Java here: http://www.axonframework.org/docs/2.0/sagas.html
public class OrderManagementSaga extends AbstractAnnotatedSaga {

    private boolean paid = false;
    private boolean delivered = false;
    private transient CommandGateway commandGateway;

    @StartSaga
    @SagaEventHandler(associationProperty = "orderId")
    public void handle(OrderCreatedEvent event) {
        // client generated identifiers (1)
        ShippingId shipmentId = createShipmentId();
        InvoiceId invoiceId = createInvoiceId();
        // associate the Saga with these values, before sending the commands (2)
        associateWith("shipmentId", shipmentId);
        associateWith("invoiceId", invoiceId);
        // send the commands
        commandGateway.send(new PrepareShippingCommand(...));
        commandGateway.send(new CreateInvoiceCommand(...));
    }

    @SagaEventHandler(associationProperty = "shipmentId")
    public void handle(ShippingArrivedEvent event) {
        delivered = true;
        if (paid) {
            end(); (3)
        }
    }

    @SagaEventHandler(associationProperty = "invoiceId")
    public void handle(InvoicePaidEvent event) {
        paid = true;
        if (delivered) {
            end(); (4)
        }
    }

    // ...

}

As you can see, the OrderManagementSaga is created after every OrderCreatedEvent (so many OrderManagementSaga can live at the same time in the system, but this probably does not apply to frontend sagas). These sagas are stateful and have the paid and delivered attributes.
This is just the Saga code, but you can guess that there's in the system another item called Shippement that stores an attribute delivred.
This may seem surprising but it is not a problem if the global system stores the same data in multiple places. Each place can pick the data it needs from the events. This permits to avoid introducing new dependencies. The only real shared dependency all the components have is the event log.
The current approach of using Redux' getState() in Sagas for me is a bit similar to using waitFor of Flux. It works but creates coupling that can be avoided.

Hello,
There are some problems I see here :

This breaks the redux principle of single source of truth
It could make devTools harder to implement (time travel)
Personally, I dont' see the Redux State as an UI state but more as the Application state, The UI state is extracted from the application state using selectors. I've found your approach of using the getState in the root Saga only quite nice, somehow equivalent to the "smart/dump React components" approach of using the redux State.
What about isomorphic support ?

Thanks

@youknowriad
Actually I don't know what is the claim of Redux, but for me Redux has never been the source of truth. The source of truth is the event log. Redux reducers permit to project that event log into a JS object usable by views but still the event log is the source of truth. You can see it because it's the event log used during devtools time travel, and not store state snapshots.
During time-travel, the Saga should not emit new events because it can't modify the history. This means that if you follow this reco then time-travel will continue to work like before.  For sagas hot reloading, the saga can be update, and recompute its state from the event log with new logic, but should rather fire new events only in the future.

Actually I don't know what is the claim of Redux, but for me Redux has never been the source of truth.

Well, then you're using it wrong :smile: It's the first of Redux's three core principles.

You can project this event log to 2 or * redux store instances.

There is only one view in your application. You don't need multiple stores. That just needlessly complicates your application. I think you might be influenced a bit too much by backend systems. Browsers and Javascript are a very different paradigm.
Your UI is simply a function on state, i.e. React(state) = view. Replaying an event log to compute that view doesn't make any sense. You should let your state container (Redux) handle that computation of final state so that React can render it.

It is really worth projecting everything in a Redux store and immutable data structures if they are not even rendered?

Absolutely! You may have non-visible state that needs to be managed. Take analytics data for instance. You might collect that into your state to occasionally ship back to your server.

@slorber May be It is because I have not the necessary backend knowledge you have to consider the event log as the source of truth for frontend application. I think I need to see an implementation of this to have a precise idea about this.
But what I'm certain of is that we need to have only one single source of truth for the entire frontend application. Redux suggest the state of the store is this source of truth and It works quite well for any frontend application.
If I understand what you suggest, It's storing a log of events (actions) that happened from the bootstrap of the application (or from the backend for isomorphism first loading), and generate the state (redux state and sagas state) by "playing" those events. While I understand that storing those events is helpfull when implementing TimeTravel (debug features), I think that It may overcomplicates things compared to juste using getState on root Components and root Sagas to achieve quite the same thing.

It's storing a log of events (actions) that happened from the bootstrap of the application (or from the backend for isomorphism first loading), and generate the state (redux state and sagas state) by "playing" those events.

Tangentially this is exactly how Redux DevTools works. It uses Redux to store the event log itself. Inception.

@timdorr it is not because it's written in the doc in a simple way to make it easy to understand for event-sourcing new-comers that is it an absolute truth :)
Browsers and backend systems are not so different: they manage state. The main difference is that the frontend receives the user intent synchronously so it generally handles that intent based on an up-to-date state. I'm pretty sure frontend and backend will be more and more similar in the future, and don't forget than @gaearon has also been influcend by the Turning the database inside out talk which is about backend primarily :)

Your UI is simply a function on state, i.e. React(state) = view. Replaying an event log to compute that view doesn't make any sense. You should let your state container (Redux) handle that computation of final state so that React can render it.

Absolutely not. It does make a lot of sense and it permits to implement features like time-travel. You know what, backend guys are doing time-travel for decades :) The saga concept itself is from the backend / eventsourcing world.
Instead of thinking React(state) = view, you should consider React(Redux(eventlog)) = view
If Redux is claimed to be the source of truth it is probably to be simpler to understand, but Redux treats itself the event-log as the source of truth. The beauty of this is that you can use this event log for many other usages:

You can sync 2 Redux stores that are on 2 different browser (for example imagine someone taking remote control of your local redux app for assistance...)
You can project that event log in other systems
You can send that event log to the backend and compute bigdata statistics based in UI usage
so many possibilities...

Absolutely! You may have non-visible state that needs to be managed. Take analytics data for instance. You might collect that into your state to occasionally ship back to your server.

If you ship the event log to the server directly instead of computing the analytics on the client, you are still able to implement reducers in the backend to compute these analytics (in the language of your choice btw!). You never loose any data.
If you have an app in production for 1 year, and you want to introduce a new analytics that count the TodoCreated actions for a given user. If you compute the analytics on the frontend, then you will start with a counter value = 0. If you ship the event log to the backend, and want to introduce that statistic, you have 1 year of historical event-log to compute a counter value: you don't start at 0 but you have your new stat instantatenously!
Redux is just a system to project an event-log (source of truth) into an easy-to-comsume state (projection of source of truth) for view applications like React. Nothing forces you to use a single projection at a time of your event log.

@youknowriad

@slorber May be It is because I have not the necessary backend knowledge you have to consider the event log as the source of truth for frontend application. I think I need to see an implementation of this to have a precise idea about this.

Just look at this and it will click: http://www.confluent.io/blog/turning-the-database-inside-out-with-apache-samza/

Redux suggest the state of the store is this source of truth and It works quite well for any frontend application.

The source of truth for React is the Redux store.
You can put the Redux state into React and it computes the same view.
The source of truth for Redux is the event log.
You can put the event log into Redux and it will computes the same state.
The source of truth for the event log is the dom events happening on a given UI.
You can trigger the dom events on the same UI and it will produce the same event log.

The thing is some source of truth seems to actually be derived from a former source of truth.
For a long time on the backend we considered the database (ie MySQL / MongoDB) as the source of truth (most of us still do actually). While even internally these databases are using event-logs as the source of truth for technical reasons like replication: isn't that funny?

You have to consider the source of truth according to what you will want to record / replay and how the derived source of truth should behave after code change.
The history of things you record should be immutable: you should rather not change the past, but you can eventually change your interpretation of the past: this is hot reloading.
state sourcing
If you consider state as a source of truth, then you can record state and replay them in the same React app.  If you record only state, you don't have the event log and then if you change a reducer the state history will remain the same: you can only hot-reload React views
event sourcing
If you record events (or actions) of what has happened, then you can replay these events into redux reducers to recompute the whole history of states, and replay this state history into React to show something. If you change a reducer, then you can compute a new history of state: this is how Redux hot reload works. However you can not modify the event log.
command sourcing
If you choose to record the commands (ie the user intent) then you can recompute an event log from the intent log, and then a state log from the event log. The intent is generally translated to events in actionCreators and jsx views where we transform low-level dom-events to Redux actions.
For example imagine a video game in React. When the user press left arrow, an event "WentLeft" is fired. If you hot-reload the JSX or actionCreator so that when left arrow is pressed it actually fires a "Jump", and you time-travel with Redux, you will see that in your history you still have "WentLeft" because Redux hot reload does not affect the past.
Command sourcing would permit to hot-reload the interpretation layer too and would replace the "WentLeft" by a"Jump" in the event log before computing the state log and before injection states in React. In practice it has not much interest and may be more complicated to do (not sure but maybe ELM is doing this no?)
See also
http://stackoverflow.com/questions/9448215/tools-to-support-live-coding-as-in-bret-victors-inventing-on-principle-talk/31388262#31388262

@slorber you were right, I took a look at the talk, and I got your point now.
What I think now is that your approach is nice, but It can't fit in Redux (at least for now) because Redux does not store the event log (It does in the dev tools), It stores the current state. Even If it has all the necessary logic to do the job (dispatch, subscribe and state that could be equal to array of actions). The main dispatcher (which dispatch all actions) needs to be separated from the projection using reducers of those actions. Somehting like that
// just a handy way to create a dispatcher
const createDispatcher = () => {
  let listeners = [];

  return {
    subscribe: (listener) => {
      listeners.push(listener);
      return () => {
        listeners = listeners.filter(l => l !== listener);
      }
    },
    emit: (state) => {
      listeners.forEach(listener => listener(state));
    }
  }
};

// create the log store
const createActionStore = (initialActions) => {
  let actions = initialActions;
  const actionDispatcher = createDispatcher();

  return {
    subscribe: (listener) => actionDispatcher(listener),
    dispatch: (action) => {
      actions.push(action);
      actionDispatcher.emit(action);
    }
  }
};

// Redux Store ?
const createUIStore = (actionStore, reducer) => {
  const uiDispatcher = createDispatcher();
  let state = reducer({ type: 'INIT' });
  actionStore.subscribe(action => {
    state = reducer(state, action);
    uiDispatcher.dispatch(state);
  });

  return {
    subscribe: (listener) => actionDispatcher(listener)
  }
}

// Sagas
const initSagas = (actionStore, sagas) => {
  let sagasEngine = {
    handle: () => {
      // use sagas
      // What's currently done in the redux-sagas middleware comes here
    }
  };
  actionStore.subscribe(action => {
    sagasEngine.handle(action);
  });
}

// Boostraping
const intialActions = [];
const reducer = (state, action) => state;
const sagas = [];
const actionStore = createActionStore(intialActions);
const uiStore = createUIStore(actionStore, reducer);
initSagas(actionStore, sagas);

Well, I dont know really what to think of this. I clearly see your point about decoupling the sagas logic from any store, but in the same time I find it really easy to reason about an application where all my state leaves in one place as in Redux.
Interesting discussion btw :+1:

@youknowriad I'm not really sure to understand what we are discussing here and what you try to do with this implementation :) Redux already provide the devtools to record and replay events so it's not really worth it to record them another time one step ahead (unless you want to be able to replay them in another system than Redux but you could easily write a store enhancer that record dispatched actions)
Initially I just wanted to be sure that the Saga would be able to manage its own state without having to query Redux's getState().

@yelouafi after thinking about it a bit it seems to be a non issue because in your examples you have shawn that a saga could be living the whole app lifetime with a while (true), and that it could use local variables outside of the loop as state so basically it seems to me that getState is not a requirement to implement stateful sagas
Like the authenticate example: you have to know when the user is connected or disconnected to perform the appropriate effects, however it did not require any use of getState at all.
However, the caching system in the "real world" example would probably be harder to write without getState: https://github.com/yelouafi/redux-saga/blob/master/examples/real-world/sagas/index.js
I would like to see how you could handle that without getState :)

@slorber What I was trying to say in my implementation is That if Redux is just a projection of the event log for UI, then It should not be able to record and play the events but instead subscribe to those events and update the UI store, and Sagas as well (I mean Redux and Sagas are totally decoupled).
I know we can achieve the same using Redux Store Enhancer, It is just not clear enough. It is not so important btw.

Imo Redux is a framework that handles already the publishing, record/replay and projection of events.
It could be splitted into 3 different decoupled parts but it would make it harder to understand for newcomers that already have to understand functional programming. A more complete and opiniated framework is easier to understand, and Redux can still allow you to add an event log on top of it or eventually plug another kind of devtool.

My canonical example of a JS application where multiple replicas might be kept in sync with streams of actions would be a browser extension with a background page and content scripts, or a web page with web workers.  In these cases, the way for these contexts to communicate is through actions, and sending "diffs" or copies of the state is less advantageous.  These all also have the additional benefit of only caring about certain subsets of actions - a content script, for example, only subscribes and and processes actions relating directly to it, whereas the redux context for the background page evaluates and manages the ones that it needs to (which in most cases is probably all of them).


Suggestion: Remember me (login)

Hi,
I've been frequently visiting Bento.io and logging in every time. Isn't there a remember me function? That would be great and useful if there were one.

Good question. Currently, it's not implemented because of the way that OAuth is done with Google and Facebook. This is a systemic issue and will look into it.

Thanks @JonHMChan!

This should be resolved. Try it out!


binding static route

Congratulations on your plug in, I implemented it and works very well.
Gerald, on his video, mentions about automatically registering the routes, I did an approach like this:
foreach (var item in Routes.AllRoutes)
{
    Routing.RegisterRoute(item, Type.GetType(item));
}

which registers all routes.
Only one small detail:
How do you xaml bind the route without using strings?
My shell content looks like this:
<ShellContent ContentTemplate="{DataTemplate pages:MainPage}" />

I tried datatemplate pages:{}
I tried to create static but i'm new at this.

Hi @mdelgadov ,
thank you for your feedback.
I don't think that your approach using reflection will work, because when registering a route, you need to register the type of the class that needs to be instantiated for the given route, which usually is of type ContentPage or similar. You would need to have a way to figure out what the page type is.
What do you mean by "bind the route without using strings"?
Cheers


Mark all publically published @inexorgame/xyz packages as deprecated

Mark all public published @inexorgame/xyz packages as deprecated (except @inexorgame/inexor-flex of course).
We don't need them any longer and it's a confusing mess.
Let's deprecate them now so that remaining users are getting warnings.
I suggest to remove them finally with our 0.10.0 release.

If packages are not actually used any longer we can also unpublish them, rather than marking them as deprecated. This probably depends on #580

I would like to have them deprecated for a while before removing. In theory I have marked them now as deprecated. However, with no feedback from the cli nor any visual hints on the website, I have no idea if it works...
For removage we need to contact the support, since they have a stupid policy, which only allows self-deletions within 24hours for every published version.

I contacted the support.

Support deleted all packages except inexor-flex https://www.npmjs.com/org/inexorgame


Update for Swift 5.0

On top of fixing up the podspec to include swift_version (#68) and fixing Xcode 10.2+ warnings (#73), this project should be updated to Swift 5.0.
I took a quick pass at this and it appears to only require a few minor changes. However, someone with access needs to fix the CI build (it currently points to an inaccessible CircleCI page).

@terenceyan which build link are you talking about? We renamed our GitHub org recently, so we may need to clean up a few broken links. Thanks for taking the time to write in!

@ZevEisenberg The readme has a link to https://circleci.com/gh/Raizlabs/Anchorage which isn't accessible.

Ah, good catch. That should be updated to https://circleci.com/gh/Rightpoint/Anchorage. Mind updating it in this PR?

Update: updated 😄


Can't have an empty string password for indbpass=

Describe the bug
When executing: bash ESQL="script to 'dump.sql'" && oafp in=db indbjdbc="jdbc:h2:./db" indbuser=sa indbpass='' file='' indbexec=true data="$ESQL" it will fail with "ERROR: File not found: 'indbpass'"
To Reproduce
Steps to reproduce the behavior:

Create an H2 sample database called 'db' with user 'sa' and password ''
Try executing bash ESQL="script to 'dump.sql'" && oafp in=db indbjdbc="jdbc:h2:./db" indbuser=sa indbpass='' file='' indbexec=true data="$ESQL" it will fail with "ERROR: File not found: 'indbpass'"
See error

Expected behavior
It should not try to guess if a filename has been provided, from empty parameters, if data= is already provided.
Screenshots
n/a
Additional context
This will occur with any empty parameter.

To test properly indbexec should be false. Here is the complete steps:
oafp in=ls data=. out=db dbjdbc="jdbc:h2:./db" dbuser="sa" dbpass=''
SQL="script to 'dump.sql'" && oafp in=db indbjdbc="jdbc:h2:./db" indbuser=sa indbpass='' indbexec=false data="$SQL"


(FACT-3119) RFC2863 operational state for network interfaces

This adds RFC2863 operational state information for Linux.
I confess I'll need help with the tests....

 Thank you for your submission! We really appreciate it. Like many open source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution.You have signed the CLA already but the status is still pending? Let us recheck it.

changes look good to me but i don't have any rights :)

@jcpunk can you rebase on upstream and resolve the test failures? This seemed to resolve the linux ones, but there may be others:
diff --git a/spec/facter/resolvers/linux/networking_spec.rb b/spec/facter/resolvers/linux/networking_spec.rb
index 21d9e6b43..4e42783d4 100644
--- a/spec/facter/resolvers/linux/networking_spec.rb
+++ b/spec/facter/resolvers/linux/networking_spec.rb
@@ -21,6 +21,8 @@ describe Facter::Resolvers::Linux::Networking do
       allow(File).to receive(:exist?).with('/proc/net/if_inet6').and_return(true)
       allow(Facter::Util::FileHelper).to receive(:safe_read)
         .with('/proc/net/if_inet6', nil).and_return(load_fixture('proc_net_if_inet6').read)
+      allow(Facter::Util::FileHelper).to receive(:safe_read).with('/sys/class/net/lo/operstate', nil).and_return('unknown')
+      allow(Facter::Util::FileHelper).to receive(:safe_read).with('/sys/class/net/ens160/operstate', nil).and_return('up')
     end

     after do
@@ -68,6 +70,7 @@ describe Facter::Resolvers::Linux::Networking do
           netmask6: 'ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff',
           network: '<IP_ADDRESS>',
           network6: '::1',
+          operational_state: 'unknown',
           scope6: 'host'
         },
         'ens160' => {
@@ -88,6 +91,7 @@ describe Facter::Resolvers::Linux::Networking do
           netmask6: 'ffff:ffff:ffff:ffff::',
           network: '<IP_ADDRESS>',
           network6: 'fe80::',
+          operational_state: 'up',
           scope6: 'link'
         }
       }
@@ -158,6 +162,7 @@ describe Facter::Resolvers::Linux::Networking do
           netmask6: 'ffff:ffff:ffff:ffff::',
           network: '<IP_ADDRESS>',
           network6: 'fe80::',
+          operational_state: 'up',
           scope6: 'link'
         }
       end
@@ -207,7 +212,8 @@ describe Facter::Resolvers::Linux::Networking do
           mac: '00:50:56:9a:61:46',
           mtu: 1500,
           netmask: '<IP_ADDRESS>',
-          network: '<IP_ADDRESS>'
+          network: '<IP_ADDRESS>',
+          operational_state: 'up',
         }

         expect(networking_linux.resolve(:interfaces)['ens160']).to eq(expected)
@@ -297,8 +303,6 @@ describe Facter::Resolvers::Linux::Networking do
         allow(File).to receive(:exist?).with('/proc/net/if_inet6').and_return(true)
         allow(Facter::Util::FileHelper).to receive(:safe_read)
           .with('/proc/net/if_inet6', nil).and_return(load_fixture('proc_net_if_inet6').read)
-        allow(Facter::Util::FileHelper).to receive(:safe_read).with('/sys/class/net/lo/operstate').and_return('unknown')
-        allow(Facter::Util::FileHelper).to receive(:safe_read).with('/sys/class/net/ens160/operstate').and_return('up')
       end

       it 'returns all the interfaces' do

I've rebased, hopefully that helps.

@jcpunk Could you rebase?

Rebased

Follow up PR https://github.com/puppetlabs/facter/pull/2607


SetStyle not binding properly

On these lines:
https://github.com/allenhwkim/angularjs-google-maps/blob/master/build/scripts/ng-map.js#L1488-L1492
The value of val is vm.setStyle, which should be the function on the view model, but it is being set as a string, 'vm.setStyle'. So the function doesn't ever get called.
Version
1.18.4
Test Case
https://plnkr.co/edit/P7yv0gkrbTFeYWbRbWs8?p=preview

I've worked out why. If you're using an attribute which has the dot-notation, e.g. using a view model object like vm.yourFunction, then line 1488 will evaluate as false, as it's effectively evaluating it as a string with a dot in it, i.e. scope["vm.yourFunction"] which will be undefined.
I've replaced lines lines 1477-1500 with the following:
                link: function (scope, element, attrs, mapController) {
                    mapController = mapController[0] || mapController[1];
                    var filtered = parser.filter(attrs);
                    var options = parser.getOptions(filtered, { scope: scope });
                    var events = parser.getEvents(scope, filtered, events);

                    void 0;
                    var fn = undefined;
                    NgMap.getMap(mapController.map.id).then(function (map) {
                        //options
                        for (var key in options) {
                            var val = options[key];
                            if (typeof (fn = (function (o, s) {
                                s = s.replace(/\[(\w+)\]/g, '.$1'); // convert indexes to properties
                                s = s.replace(/^\./, '');           // strip a leading dot
                                var a = s.split('.');
                                for (var i = 0, n = a.length; i < n; ++i) {
                                    var k = a[i];
                                    if (k in o) {
                                        o = o[k];
                                    } else {
                                        return;
                                    }
                                }
                                return o;
                            })(scope, val)) === "function") {
                                map.data[key](fn);
                            } else {
                                map.data[key](val);
                            }
                        }

                        //events
                        for (var eventName in events) {
                            map.data.addListener(eventName, events[eventName]);
                        }
                    });
                }

The inline function function (o, s) will navigate down through the dot-notation / nested objects to get the function/property required.
There's definitely a more elegant way to incorporate this, but here it is for anyone else looking for a quick fix.


German language  Support

If I play in german language with german Chat the pop up won’t work even the history doesn’t show anything.
If I switch game und chat to English the pop up shows.
Is there any keywords in the code for trade request that I can easy translate in German so the tool works with German chat?

Turns out that switching the game's language setting switches the @To and @From part of whispers to said language (IE @An and @Von in German), which isn't something I was aware of.
This should be a relatively easy fix, but since SlimTrade currently supports trade messages in 8 languages I'll take the time to fix this for all languages rather than just hot fixing for German.
Thanks for the report! Except this change in the next version, and sorry for the inconvenience in the mean time.

Hi zmilla93,
I had the same issue with the language. I managed to fix it for me at the moment unitl you release a new version, by changing hardcoded the to and from in ChatParser#getMessageType and in the References#REGEX_CLIENT_PREFIX. Of course this is not a fix to support multi languages.
Additionally I had to change the pattern in LangRegex for German. In my messages in the Client.txt I have no apostrophe around the (?<league>.+) and no points after (?<stashX>\d+) and (?<stashY>\d+) and no point at end after von oben\\).

Sorry about the delay, and thanks for the additional info. I just published a prerelease of the next version with the language changes only. It would be awesome if you could verify this is working correctly before I release the full version since I don't have an easy way to test.
Prerelease Download
If either of you want to help me out long term and you receive trade messages in German (based on preferred language on pathofexile.com), it would be awesome if you could tell me your account name (displayed on website, not a character name). This will then let me use the trade website to generate trade messages in German so I can do proper testing myself.

I have made some trades right now. Incoming and outgoing seams to work well with the new prerelease version. The history was loaded and updated correctly as far as I saw.
My prefered language in pathofexile.com is set to German and my account in poe is the name as it is here 'Xorjo'. You can use it to generate messages for testing.

Fixed in v0.2.9.


Router improvements

Almost ready. I just need to update the router for the DocumentationReader. @oliver---- can you review my Component-related changes. Just not sure I did everything idiomatically.


[Color Handle] Variable resolution

https://github.com/adobe/spectrum-css/blob/fd9f01c3179fa3f6cb17d3fc9b30d4837606fd24/components/colorhandle/skin.css#L31
This variable seems to be resolved differently than its usage earlier in the file?
https://unpkg.com/browse/<EMAIL_ADDRESS>  box-shadow: inset 0 0 0 var(--spectrum-colorhandle-outer-border-size, var(--spectrum-alias-border-size-thin)) var(--spectrum-colorhandle-inner-shadow-color, var(--spectrum-colorhandle-outer-shadow-color));

VS
https://unpkg.com/browse/<EMAIL_ADDRESS>  box-shadow: 0 0 var(--spectrum-colorhandle-outer-shadow-blur, 0) var(--spectrum-colorhandle-outer-shadow-spread, var(--spectrum-alias-border-size-thin)) var(--spectrum-colorhandle-outer-shadow-color, rgba(0, 0, 0, 0.42));

Seems to originate from https://github.com/adobe/spectrum-css/blob/main/components/vars/custom.css which is unexpected on our end. I can work around for now, but not sure if it should be normalized or not.

Hmm, a bunch of variables were renamed and repurposed in that latest updates. What is the actual issue on your end here?

I'll add this as a topic to one of syncs when Westbrook is back in office

For this, we use:
var(--spectrum-colorhandle-outer-shadow-color, rgba(0, 0, 0, 0.42))

When leveraging --spectrum-colorhandle-outer-shadow-color but then when falling back to it, we use:
var(
            --spectrum-colorhandle-inner-shadow-color,
            var(--spectrum-colorhandle-outer-shadow-color)
        )

So if we callback to --spectrum-colorhandle-outer-shadow-color and it’s not set we don’t get rgba(0, 0, 0, 0.42)

So it looks like this is set for both Express and Spectrum inside of custom.css, which gets rolled into dist/specturm-globals.css for the vars/expressvars package here: https://unpkg.com/browse/<EMAIL_ADDRESS>As such, it should never be unset? So I'm not sure what's happening here, it should be good to go.

Is the problem that the variables reference eachother>?
If we changed this:
.spectrum {
  --spectrum-colorhandle-inner-shadow-color: var(--spectrum-colorhandle-outer-shadow-color);
  --spectrum-colorhandle-outer-shadow-color: rgba(0, 0, 0, 0.42);
}

To:
.spectrum {
  --spectrum-colorhandle-shadow-color: rgba(0, 0, 0, 0.42);
  --spectrum-colorhandle-inner-shadow-color: var(--spectrum-colorhandle-shadow-color);
  --spectrum-colorhandle-outer-shadow-color: var(--spectrum-colorhandle-shadow-color);
}

Would that fix it?

Looks like we're good here, it was a parser issue on the SWC side.


托盘图标没有显示

Description
First of all, thanks for your attention to open an issue for this project.
Please notice that if you are requesting a feature, then you should give a brief description of your request.
If you are reporting a bug, please follow the template below.
A bug report without detailed information required will have a very low priority and even be ignored (closed directly)!
Specifications

Version of Electron (run $ electron --version): v0.0.0
OS: <OS>
Stack trace from the error message (if any)

<Stack trace here>

Version of Electron (run $ electron --version): v2.0.0
OS:
系统托盘图标显示错误

如上图，任务栏显示正常，但是托盘图标没有显示


Feature: adding undo functionality with ctrl + z keys

Purpose
Using the clear function works, but eliminates all the drawing, which isn't the best thing to do if the user just wants to eliminate an recent error/change. Undoing with ctrl+z solves this problem.
Changes:

An state will be storing every image data states of the canvas after every drawing action, so it's easy to just restore to the previous one when undoing.
Using an event listener to watch the combination key press (ctrl + z) and binding the undo function to it.
clear function now only executes if imageDataList isn't empty.

Great feature! Thanks for the contribution!


How can I adjust the load on CPU

I want to adjust the load on the CPU.  I am focusing on...

Publishing at QoS 0, packetId: 1

I think this causes a delay in my soft. I want to begin with shorten the time that it's occupied with it? It's not a big message but maybe I can do something to improve it?
esp32
Arduino IDE 1.8.16
Arduino ESP 2.0.4

What tool/code do you use to measure CPU load by espMqtt task? Did you try to change the task priority?

I am using my own sketch. Where can I specify it? I checked the Config.h, but it's not there.

https://github.com/bertmelis/espMqttClient/blob/1133c34d245350330b59d4af553570bc202cdc35/src/MqttClient.cpp#L17

You're using a microcontroller. Load on the CPU is Avery abstract thing here.
I did a test yesterday and sent 100 qos2 messages in less than a few seconds. Don't know how fast you want it to be but as @Pablo2048 said, on esp32 you can set a task priority (and core to run on).

I do. What's the difference with qos0, qos1, qo2? A few secondes is just to slow.  I am only publishing 3 characters. The priority on my task is 2.

https://github.com/bertmelis/espMqttClient/blob/1133c34d245350330b59d4af553570bc202cdc35/src/MqttClient.cpp#L17

On what priority is it initialized to?

QOS are specified in MQTT protocol specification - its easier if you find and read it on the internet. Where you get "few seconds" delay? The publish function just adds the message to the queue and quit - see https://github.com/bertmelis/espMqttClient/blob/1133c34d245350330b59d4af553570bc202cdc35/src/MqttClient.cpp#L163 . Default priority is 1 - see https://github.com/bertmelis/espMqttClient/blob/1133c34d245350330b59d4af553570bc202cdc35/src/espMqttClient.h#L22

Where you get "few seconds" delay?

Sorry, I miss understood. I will try to set the priority.

Still have it in the beginning, but it's getting beter.
Don't know how you do it, but I did it once for a keypad like this.
void Task (void* pvParameters) {

	TickType_t xLastWakeTime;
	const TickType_t xFrequency = 200;// Perform an action every 10 ticks.//10//1000=evry second
	xLastWakeTime = xTaskGetTickCount();// Initialise the xLastWakeTime variable with the current time.

	for (;;) {//infinit loop
		delay(5);
		vTaskDelayUntil(&xLastWakeTime, xFrequency);// Wait for the next cycle.
		//Serial.println("Do something");
	}
}

It just wait until it done some cycles to do something.

How do I know if I got enough memory on the task? It seems to adjust to value I set it to.

[  7469][I][MqttClient.cpp:263] loop(): Stack usage: 9444/10000

[  7534][I][MqttClient.cpp:263] loop(): Stack usage: 14448/15000

#ifndef EMC_TASK_STACK_SIZE
#define EMC_TASK_STACK_SIZE 15000
#endif

That log statement is a bit misleading. It shows the highwatermark for the MQTT task compared to the total amount of stack memory: https://github.com/bertmelis/espMqttClient/blob/main/src/MqttClient.cpp#L263
So you used 556 out of 10000 words. See https://www.freertos.org/uxTaskGetStackHighWaterMark.html
Meaning, you have plenty of headspace and it is safe to lower the value.

I see you are using xSemaphore, you can add vTaskDelayUntil to give main tasks more time to do things.
https://stackoverflow.com/questions/41652270/freertos-vtaskdelayuntil-finishes-immediately

It makes no sense - vTaskDelayUntil return immediately only if there is no time (or even "negative" time) to wait for. The used FreeRTOS is preemptive and espMqttClient task priority is just above task idle. Can you please explain more, what exactly you are trying to achieve and put here MCVE, which can be tested/worked on?

The MQTT task yields here: https://github.com/bertmelis/espMqttClient/blob/main/src/MqttClient.cpp#L258
Expands to taskYIELD() which is the efficient equivalent of vTaskDelay(0).
As @Pablo2048 said: please describe the problem you have, provide an example and not the desired solution.

What do you mean by "no time (or even "negative" time) to wait for"? The vTaskDelayUntil doesn't wait on timebase. It says delay, but it doesn't delay anything. It just count the ticks, and if the value has reached it will continue. Depending on the xFrequency of the CPU it runs over a the loop, with this you can adjust how many times it runs over the code in the same time frame.
I am running streams that need lots memory and cpu power. If I don't be there in time it bangs in my speaker and this is caused because the cpu is in use by an other task. I had this problem before with an I2C device.
In MqttClient::loop(), I see that it's doing all these things. _checkOutgoing(); , _checkIncoming(); , _checkPing(); and I when I starts to publishing it is just to much.

Raise the priority of the critical task, work with critical sections, change the core it runs on. FreeRTOS gives you many tools.
I'm still not convinced to change anything. Are you using the sync or the async version? Did you profile the code? What do you propose to do? An MCVE?

Priority has all ready been set and it improved but the problem is still there. Don't know if I can do something with the FreeRTOS tools because the semaphore gives and takes is there... Any suggestions?
I am using the encrypted example, I didn't change anything except set the priority of the mqtt client to 2 and added my task with priority 1. Don't know if it's sync or async. I had to #include <AsyncTCP.h> so I assume it is async...
I will look if I can show it to you in code. It's not an easy job you know.

If your task is time critical, why do you give it a lower priority? Higher = more CPU time.
This lib includes AsyncTCP.h so you shouldn't need to do it yourself. Maybe something else in your code needs it
Encryption eats a lot of cpu cycles. Maybe raise the cpu frequency?

I just checked and there is no other task running than these.
		xTaskCreatePinnedToCore(
			Task1,   /* Task function. */
			"URL1",     /* name of task. */
			STACK_SIZE,       /* Stack size of task */
			NULL,        /* parameter of the task */
			1,           /* priority of the task */
			&URL1,  /* Task handle. */
			1);
		delay(500);

espMqttClientSecure mqttClient(2, 1);
The CPU fequentie is set to full speed. I just tried to set it to core 0... Now it's waiting.
Why would you not add the possibility to set the xFrequency to run the loop? Just disable it and with define it can be customized

Best I can do is (optionally) disabling the automatic task creation (as done in the async version) so you can call loop() as you like.
Actually, the async version does exactly this by calling loop() every 500msec via async's onPoll.
I'm doing the same for the Linux version that I'm testing where I create a thread in the main program that calls loop(). (see Linux branch).
Let me think about this -how to implement- because I don't want to create too many different flavours which all bring in a bit bloat into the lib.

Now my program is finished and evryting is working fine. I did simplefied my other tasks and set the core and priority. For me you don't have to do something Additionly.

How do I use only the loop?

Haven't implemented this yet.

Don't mind. I don't think the problem is in here. But all my clients are disconnecting, for the mqtt it is stop_ssl_socket() and eventually the WiFi disconnects. I think it is because the want to read the buffer on the same time. I'm not sure...

I found it! I set the WiFi power management to maximum power WiFi.setSleep(false);. I don't have any failure anymore or a slow connection. It surely improved working behavior and I am glad that I finally found some improvement. I search a long time for this and don't understand this is a default setting in the SDK of ESP Arduino. A battery is optional... and it is not that I am overclocking.

The WiFi.setSleep(false); did improved it, but is was not over yet. So I search for it, what could be the problem and now I found it. The esp had some powering suffering issues, but just enough to work. I solved that issues and one by one all my problems disappear.

It can be quite power hungry when a lot of WiFi traffic is going on.


tweetdeck.twitter.com

Is it possible to add support for https://tweetdeck.twitter.com/

Well, that's somewhat difficult.
Currently, I have no plan to do it.


Implement IXmlRepository using IDistributedCache

Like Microsoft.AspNetCore.Session, use IDistributedCache in Microsoft.Extensions.Caching.Distributed to store data. It is an approach for reusing the RedisCache implementation in Microsoft.Extensions.Caching.Redis.

Hi @cnblogs-dudu, I'm your friendly neighborhood .NET Foundation Pull Request Bot (You can call me DNFBOT). Thanks for your contribution!
You've already signed the contribution license agreement. Thanks!
The agreement was validated by .NET Foundation and real humans are currently evaluating your PR.
TTYL, DNFBOT;

This is an interesting idea, but we want to use concrete caches where we can guarantee behaviour or throw warnings. IDistributedMemoryCache & IMemoryCache are really aimed at in app caching, rather than to be generic for asp.net components.
Thanks though.


Correct desktop window icon

I found the logo at dest/prod/logo.png, while there was no
dest/logo.png. Fixes juliandescottes/piskel#515

Nice catch! Thanks for fixing this.


MiuiPackageInstaller

You included Chinese strings in your translation files for MiuiPackageInstaller. If this isn't resolved, we'd have to remove French files for MiuiPackageInstaller for the next release.
Refer to our XML files for the correct English strings and don't include untranslated strings in your translated files at all:
https://github.com/ingbrzy/Xiaomi.eu-MIUIv11-XML-Compare/tree/master/cepheus/MiuiPackageInstaller.apk/res/values

Hello
Actually some channels were in Chinese, I had to recover the file when MiuiPackage and arrives on the GitHub.
I just reapplied a fix with the right lines in French.
However lines Chonois are integrated on your side so I do not understand why on MiuiPackage that raises a problem?


Add autofocus on tags input

Expected Behavior
Pocket tags input should be focused, when saving
Actual Behavior
Pocket tags input isn't focused
Steps to Reproduce the Problem

Open page
Click "Save to pocket"

Specifications

Version: <IP_ADDRESS>
Browser: Chrome 65
Operating System: Windows 10, MacOS High Sierra

👍 Thanks for pointing this out @avdieiev
I implemented this fix and tested it locally. This will be included in the next release.

#50 - We need to finalize copy and then update all locales.

Does this mean that the cursor would automatically move to the tags box when you either hit the pocket button or your keyboard shortcut? If so yes this would be a great addition, if not I would like to create a new issue and have a crack at it.

@feargswalsh92 Yes, that is the intent.   It will live behind a feature flag under options.
Love that you want to contribute!  Always open to suggestions and PR's
We're gonna try and lay out a road map of new features prior to releases and get a better release cadence worked out soon.  This should give a clearer picture of good places to jump in.

Awesome! In the meantime I'll trawl the code base for typos  😄 . I don't know for sure but I feel like even if the feature is turned on it should still require hitting the tab button to activate it to focus on the tabs box. I'm imagining a very particular use case where the user is already typing, wants to pocket the page they're typing on and doesn't in that instance want to add tags. Especially if it means that they need to move the cursor back to the text box they're typing on. As this recreates the problem that this feature is trying to solve in reverse.

Hey @nelsonomuto ! Is this feature implemented? If not, I am interested in taking up its development. Would love to have a chat today.

Hi, any updated on this feature? with the extension shortcut, this is the only feature missing in my workflow.


Hopcroft–Karp algorithm

Submission Title
Hopcroft–Karp algorithm
Submission Type
Algorithm
Submission Description
Check out this site for reference
Submission Directory
Algorithm=>Graph=>Hopcroft_Karp=>Hopcroft_Karp_algorithm
.extension
Contributors

[ ]  C++ -
[ ]  C -
[ ]  Python -
[ ] Java -
[ ] JavaScript -
[ ] TypeScript -
[ ] Golang -
[ ] Ruby -
[ ] php -
[ ] Swift -
[ ] C# -

@ahampriyanshu i want to give a c++ solution... pls assign me for this

Hi @ahampriyanshu i have generated a PR to add C++ solution for above mentioned issue...
Can you please review it..

thanks everyone :v:


API documentation

Do any of you have any thought about how we should document the API?
One alternative could be to use something like http://swagger.io/

I have been thinking that HAL would do the work. HAL is a simpler spec and have built in support for documentation:
https://github.com/mikekelly/hal_specification/blob/master/hal_specification.md


EXIF Preservation

Quick & dirty preservation of EXIF data.
👍

Closing this as the feature was merged into PR #6


support for pulling all dependent valusets from a measure bundle

Summary
Creates functionality for identifying all dependent valuesets in a measure bundle.
New behavior
Adds a function that takes a measure bundle and returns an array of dependent valuesets.
Code changes
Adds getAllDependentValuesets function to CalculatorHelper.ts. Adds unit test file CalculatorHelper.test.ts that uses a fixture EXM130 measure bundle that has all non-demographic codes replaces with fake placeholder codes.
Testing guidance
A test has been added which can be run with npm test

jest coverage report 🧪
Total coverage

Status
Category
Percentage
Covered / Total

🔴
Statements
29.71% (+1.27% 🔼)
374/1259

🔴
Branches
15.08% (+1.44% 🔼)
243/1611

🔴
Functions
27.62% (+2.84% 🔼)
66/239

🔴
Lines
29.76% (+1.3% 🔼)
347/1166

Status of coverage: 🟢 - ok, 🟡 - slightly more than threshold, 🔴 - under the threshold


[Feature]: (v51) Wallet balances fiat values

Describe the problem
Wallet Balances: Now displays both ₿ and fiat values for balances (utilizing the label element).
Describe the solution
New user: https://www.figma.com/proto/ltqvnKiejWj0JQiqtDf2JJ/Bitkit-Wallet?page-id=26618%3A121070&node-id=26618-121071&node-type=FRAME&viewport=252%2C96%2C0.13&t=3a2PIK7WZzp5LAls-8&scaling=scale-down&content-scaling=fixed&starting-point-node-id=26618%3A126150&show-proto-sidebar=1&hide-ui=1
Active user: https://www.figma.com/proto/ltqvnKiejWj0JQiqtDf2JJ/Bitkit-Wallet?page-id=26618%3A121070&node-id=26618-126158&node-type=FRAME&viewport=252%2C96%2C0.13&t=VzG6WKLC255EAc0M-8&scaling=scale-down&content-scaling=fixed&starting-point-node-id=26618%3A126154&show-proto-sidebar=1&hide-ui=1
See: https://synonymworkspace.slack.com/archives/C01H106JRQB/p1726065889623369
Additional context
No response

Duplicate of https://github.com/synonymdev/bitkit/issues/2317


Conflict with newer Numpy version

import numpy.prod instead numpy.product if numpy version is greater than 1.25.0. Resolves #79.

@yyplanton do you mind if I merge this and release a new version (as a interim before xcdat migration)?


dont set canonical tag for 404 page

This change is

Whoops. Looks like a previous PR caused a merge conflict on this one. Sorry about that.


[SIP][#2978] improve(server-common):allow enable multiple authenticator simultaneously

What changes were proposed in this pull request?

allow enable multiple authenticator simultaneously

Why are the changes needed?
Fix: #2978
Does this PR introduce any user-facing change?

yes

Gravitino Server

gravitino.authenticator can set multiple authenticators, Multiple authenticators must be separated by commas. Such as gravitino.authenticator=simple,OAuth,Kerberos

REST API header

add a new header Authorization-Type to indicate which authenticator the client uses. If this header is empty, it will be considered simple to ensure consistency with before.

How was this patch tested?

add uts

Maybe we can refer to other system implements. Federated authentication has been supported in the Spring security. I surveyed this to find some more common pattern  recently.

Maybe we can refer to other system implements. Federated authentication has been supported in the Spring security. I surveyed this to find some more common pattern recently.

Great. Hope a better method. We can talk about it offline. I'll stop the update for now.


Fix cargo-playdate error "No packages has been produced"

Fix #315 "No packages has been produced", caused because cargo changed artefact name format - now replaces dashes with underscores for libs too.
Related cargo PR is rust-lang/cargo#12783 which landed will land in Cargo 1.79 (2024-06-13) according to CHANGELOG.
It's definitely not a perfect solution, it's just a hot-fix. It should be refactored in the near future.

This appears to fix #315 for me. Thanks @boozook!

Thanks!
Then I merge it now.


Task: rename our templates db Mock_DB_V2

Name of our DB must accurately represent its intend and should not be confusing to our users.
We also have to ensure after update existing apps don't break.
One idea🤔 is to set up an alias and use that alias going forward.

Can be done alongside #33084

All templates and building blocks datasource names have been changes from Mock_DB_V2 to Sample Database


Fix configuration key in error messages

At some point during development of #3443 the configuration key was changed and these error messages were missed.
Microsoft Reviewers: Open in CodeFlow

@danmoseley would you consider this for 8.0? Seems very safe, and could cause confusion. Not sure it meets the bar though.


fix: arg list too long for slurm

Fixes #673

That didn't work for me. The sbatch command / temporary file is actually not very large:
#!/bin/sh

#SBATCH --cpus-per-task       8
#SBATCH --gres                gpu:3090:8
#SBATCH --job-name            slurm-worker-massive-garnet-bettong-of-support
#SBATCH --mem-per-cpu         4G
#SBATCH --ntasks              112
#SBATCH --output              slurm_massive-garnet-bettong-of-support.out
#SBATCH --partition           highpri
#SBATCH --time                1-00:10:04

module load anacondapy/2024.02; conda activate /scratch/nkemnitz/zetta_utils/venv
srun --gpus-per-task=1 zetta -vv -l try run -r massive-garnet-bettong-of-support --no-main-run-process -p -s '{"@type": "mazepa.run_worker"
task_queue: {"@type": "SQSQueue", "name": "zzz-massive-garnet-bettong-of-support-work"}
outcome_queue: {"@type": "SQSQueue", "name": "zzz-massive-garnet-bettong-of-support-outcome", "pull_wait_sec": 2.5}

        sleep_sec: 5
    }'

Interesting. For me it started working when i changed sbatch from shell=true to shell=false, which is why i had to restructure the call command. But i tested on a non-cluster machine


Support multiple provider instances with different URIs (#290)

Terraform supports this using
https://www.terraform.io/docs/configuration/providers.html#multiple-provider-instances
The current code had global connection and mutex instances that prevented this from
working correctly.
While the global objects and mutexes are gone with this PR, we still reuse the client per URI, in order to get the same mutex for the same hypervisor, and then close all opened connections at the end.
All global data is moved into the Client instance.
Fixes: https://github.com/dmacvicar/terraform-provider-libvirt/issues/290

@dmacvicar  should we disable the coverage tool? since we plan to disable travis-ci i don't see any advantage to have it

I increased the threshold to 5%

@kawaja let me know if you can give this a test

Related to #282


Users can modify their profiles and pretend they're someone else

Describe the bug
Any user can impersonate anyone else on the wiki.
A user (attacker) register using his own mail address, email confirmation is activated so he click on the link in a mail he received. He can then change his First Name, Last Name, profile picture to make it seems he's someone else... That far it's fine because we can still see his mail address.
But then... the user can change his mail and no mail confirmation is sent.
Because of that, an attacker can also use a mail that doesn't exist. My mail contains an "l" but the attacker can replace it by an "I" ("i" uppercase).
Moreover, the domain restriction doesn't apply when changing mail. I think this is expected behavior but this is still a problem in my opinion.
Which means the user can say he's the CEO...
Steps To Reproduce
Steps to reproduce the behavior:

Register using an real mail address
Confirm Registration by clinking the link in the received mail
Change the mail of the user (the mail doesn't have to really exist) - no confirmation mail is sent
User can pretend his someone else

Expected behavior
When changing mail, a mail confirmation should be sent no matter what.
Your Configuration (please complete the following information):

Exact BookStack Version (Found in settings): BookStack v0.26.2
PHP Version: v7.2.19
Hosting Method (Nginx/Apache/Docker): Nginx on Ubuntu 18.04

Thank you very much for raising @Irrational-NX. Sorry for my late reply, Have had limited time in the last few weeks.
I have just deployed v0.26.4 to update the behaviour so that only users with the "Manage Users" permission can update user email addresses. This keeps control with only those that are trusted.
We'll see in the future if self-managed & verified email changes are requested and look to implement if there's a call for it but I'd imagine it's probably an infrequent scenario in the real world.
I did think about taking this further to prevent impostering by updating user-names to show email address as a tooltip on hover but I quickly realised there are too many privacy concerns there, since we currently only show email address in very limited areas, so that would need extra controls therefore not a quick update to make.
Thanks again!

Thank you very much @ssddanbrown for fixing this!
I applied the new version this morning and can confirm this works as intended. :)


per-node config improvements: testing, null selector, cleanups

This PR includes lots of test coverage for per-node configs, both integration and unit tests.
It also fixes two minor nits:

a null NodeSelector is now allowed
Some log lines were broken

Fixes: #22507

/test-1.24-5.4

Hmm, it seems my test got skipped, hold please.

/test-1.24-5.4

The test ran and passed: https://jenkins.cilium.io/job/Cilium-PR-K8s-1.24-kernel-5.4/349/testReport/Suite-k8s-1/24/K8sAgentPerNodeConfigTest_Correctly_computes_config_overrides/
Ready for review.

The last rebase was just a manual docs fix; CI was green previously.

(Removing release-note/misc label since there's also the one for CI; these are for the release notes, and there's no need to have multiple entries there for this PR.)


Transclude + bindToController + This directive?

I have a project that makes use of a few "wrapper" directive that put various shell UI elements in place for all of the pages of my application.  These directives make use of controllerAs: 'directiveCtrl' + bindToController: true + transclude: true.  I've got a codepen here where I can't access the bound parent controllers from inside your directive.  Sorry, I know this is a complex use case, other data tables have also choked on it, but wanted to put it out there in case I'm just doing something wrong.  Assuming you're not trying to re-invent the wheel and the directive consists of many child directives and $scopes, it should be possible, though I'm not 100% sure where it's breaking.  The Change Val: button that appears in the table header and the Sodium column both attempt to access the scopes of these wrapping directives, but fail to do so:
http://codepen.io/brianfeister/pen/pJYrZq

The problem is you have scope: true on you inner and outer wrapper directives. This is going to create a new scope for each directive. From reading the $compile API it sounds like this new scope should still prototypically inherit from its parent scope so I'm not sure why this is an issue. Here is your plunker with the new scope commented out. It may be that you are creating a new scope purposefully, in that case this is not a solution to your problem.

Is this still an issue for you?


⚠ ClamAV has degraded performance

In 7ed2eea, ClamAV (https://spamassassin.apache.org/) experienced degraded performance:

HTTP code: 200
Response time: 79 ms

Resolved: ClamAV performance has improved in 08bd925 after 7 minutes.


Add Customer dialog is slow and utterly broken

Background: On Demo version the Add customer dialog used to be extremely slow. And even if you manage to enter customer details, adding the customer doesn't work:

Scope: Please first confirm whether this issue still exists and fix if it does.

@dmohns, could you provide more context? For me, creating a customer works without any errors

Ok, nice @munyanezaarmel This issue no longer applies.

Hey @munyanezaarmel
I think there are multiple issues here, sorry for not being more specific earlier.
Errors with user creation:
There were a couple of errors with user creation. However, I think we already identified all the underlying issues and track them seperately.
See

https://github.com/EnAccess/micropowermanager/issues/448
https://github.com/EnAccess/micropowermanager/issues/253

Performance Issues:
It seems like the performance issues are no longer there. It can best be demonstrated when using an old version of code (from around July).
In this old version the code the user creation is extremely laggy
Old version:

Current version:

I don't fully understand what resolved the performance issue. But maybe it's not as important to understand it in all details 😉


HTTP commands via wifi

Hi
This issue can be labeled as a feature request.
I'm controlling my garage doors via esp8266 modules with the tasmota firmware.
It's possible to control these tasmota devices via a http request. http:///cm?cmnd=Power%20On
Should it be possible to send out an http request when the wifi is connected and a hardware or software button is pressed?
kind regards
Tim

I honestly don't know myself and can't rly answer your question


Service discovery

reference
https://github.com/hyperhq/hyperstart/pull/6
https://github.com/hyperhq/hyper/pull/89

LGTM


Enhancement: Add support for REPL sessions

I don;t think this will be possible, at least not in a useful way. I could maybe make an implementation where the left-hand side of a 'pair' is left out, but what's the point of that? Then you can just use print().
But I'm open to better solutions, of course.

Inspired by @PFython 's remarks, I have made ycecream compatible with REPLs, be it with extremely limited functionality:

all arguments are just presented as such, i.e. no left-hand side, e.g. >>> hello = "world"
>>> y(hello, hello * 2)
y| 'hello', 'hellohello'
('hello', 'hellohello')

line numbers are never shown
use as a decorator is not supported
use as a context manager is not supported


update to mermaid v9.x to get rid of some vulnerabilities

mermaid v9.1+ fixes some vulnerabilities that we see with the v8 line:

https://access.redhat.com/security/cve/CVE-2021-23648
https://github.com/mermaid-js/mermaid/security/advisories/GHSA-x3vm-38hw-55wf

Do you have any plans to update to v9?

I'll do that now. Sorry I'm falling behind for the OS community.

@hakandilek it looks like v9 broke something with many to many relations. I'll need to figure out what that is before merging. I don't have time to look into it at this moment though.

You can install v1.3.0 and it is updated with mermaid v10.
npm i -D prisma-erd-generator@alpha or npm i -D<EMAIL_ADDRESS>

Great, thanks 😊


How do I get PID of exec'd process?

Looking though the code, docker doesn't seem to store and return the PID of an exec'd process anywhere.  Is my reading of the code right?
Would it be possible to add this to the exec.Config struct?  I'm happy to put together a PR.

Hi!
Please read this important information about creating issues.
If you are reporting a new issue, make sure that we do not have any duplicates already open. You can ensure this by searching the issue list for this repository. If there is a duplicate, please close your issue and add a comment to the existing issue instead.
If you suspect your issue is a bug, please edit your issue description to include the BUG REPORT INFORMATION shown below. If you fail to provide this information within 7 days, we cannot debug your issue and will close it. We will, however, reopen it if you later provide the information.
This is an automated, informational response.
Thank you.
For more information about reporting issues, see https://github.com/docker/docker/blob/master/CONTRIBUTING.md#reporting-other-issues

BUG REPORT INFORMATION
Use the commands below to provide key information from your environment:
docker version:
docker info:
uname -a:
Provide additional environment details (AWS, VirtualBox, physical, etc.):
List the steps to reproduce the issue:
1.
2.
3.
Describe the results you received:
Describe the results you expected:
Provide additional info you think is important:
----------END REPORT ---------
#ENEEDMOREINFO

Great idea, +1!

It would be very helpful!

ping @calavera any thoughts on this?

I don't really know why we decided to not expose those PIDs, so this is my guess:
docker exec is designed to work as a debugging tool. As such, it's not expected to be used to launch long running processes inside containers. As a debugging tool, the process PID is not necessary because you're supposed to discard those processes.
If you want to run several long running processes inside the same container, it's better if you design your container to run those processes with a supervisor.
I'm not really against adding the pid to the exec information, it actually sounds like useful, but we should understand the reasoning behind the need of having the PID of a process that's supposed to be ephemeral.

Even if you are considering exec as debug tool there are some situations when PID can be useful.
E.g. if you connected to the remote container via exec (shell session, etc) and you got network failure you don't know PID of started process to kill it and you can not connect to the exec session again because it is not implemented in docker. Yes you can workaround it by killing a process with the biggest PID, but it is not safe if your container periodically creates processes similar to process you started with exec. Maybe it is a contrived example.
About running processes in container via a supervisor. In my case I can't change design of container because it is not under my control. I need to start additional processes after container was started.

Hi @calavera

docker exec is designed to work as a debugging tool.
If you want to run several long running processes inside the same container, it's better if you design your container to run those processes with a supervisor.
we should understand the reasoning behind the need of having the PID of a process that's supposed to be ephemeral.

100% agree - I'll try and explain why we'd like to get the PID for an exec'd process.
We've got a project (call scope) which gather various information from your system and draws a graph (in the nodes and edges sense) of your containers.  We gather the edge information from periodically scraping proc and listening to conntrack.  Scraping proc will tall us a which PIDs are talking to each other, and talking to the Docker daemon will tell us the PID at the root of a container, so we can do a quasi join and calculate edges between containers.  This works well except for exec'd processes, where we have no information to make this join.  Hence the desire to get the PID of exec'd processes, so we can join it with information scraped from proc and have the rendered container graph more accurately reflect reality.

I'm not really against adding the pid to the exec information, it actually sounds like useful

I've got a very small patch which seems to work (just testing now) - shall I open a PR with it?

@tomwilkie feel free to open a PR, we can continue the discussion there, and decide if it will be accepted  (or not).

I'm closing this issue for inactivity. Feel free to open PR about PID again, I'm pretty sure it will be accepted.

I'm closing this issue for inactivity. Feel free to open PR about PID again, I'm pretty sure it will be accepted.

FWIW I'll be working on this.

@runcom do you want it reopened already?

oooh, don't open issue pls, just open PR

LOL

Haha right, I'm just going to open a PR directly


[4.0] [Type checker] Consistently mark used protocol conformances as "used".

Explanation: Make sure that the type checker completes all of the conformances that later phases (SILGen, SIL optimizers, IRGen) need to use.
Scope: We already ensure completeness of conformances along many code paths, so only a smallish number of projects would be affected by this.
Radar: rdar://problem/32111710
Risk: Low; in theory, trying to complete a conformance could break something, and if we were missing tons of conformances compile time could suffer. But this change is conservatively correct and projects would crash if they needed it.
Testing: Compiler regression tests, new reduced test, medium-size project that regressed from Swift 3.1 due to this

@swift-ci please test


Fix local-run-controller Makefile target

Prune obsolete aws-account-id command line argument from local-run-controller Makefile target
By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license.

/lgtm


Google Calendar breaks layout/content of a website, is that possible?

[x] I have searched through existing Issues and confirmed that this particular issue has not already been reported.
[x] I have read and performed all the steps listed under the Troubleshooting section.

Hello, I have run into a very strange issue where some parts of my website simply disappear and I'm still not sure how is it related to Google Calendar. However, the ONLY time the issue occurs is when Google Calendar extension is enabled. I was able to reproduce the issue on two different computers with same version of Chrome and Google Calendar extension installed. Unable to reproduce the issue using Chrome Canary (Version 69.0.3457.0) with Google Calendar extension enabled.
Can someone else test it?
What steps will reproduce the problem?

Make sure Google Calendar extension is enabled
Use this code

<!DOCTYPE html>

		<title>Page</title>

ABCD

ABCD

ABCD

Run this on a local server or an actual live website (note: I wasn't able to reproduce the issue simply opening the html file in the browser)
Scroll to the bottom of the page
Refresh the page
Scroll down
Select content at the bottom of the page

What is the expected result?
Content at the bottom of the page should not disappear

What happens instead?
Content at the bottom of the page partially disappear (screenshots v1, v2 and v3)
Screenshot(s):
v1 (after refreshing page and scrolling down)

v2 (after selecting content)

v3 (I do not know when this happened)

Two ways to temporarily fix this:
Delete

 from the source code
or
Disable Google Calendar extension
System Information:

Version: 2.14
Language: English (US)
Timezone Offset: UTC+01:00
User Agent: Chrome/Version 67.0.3396.87 (Official Build) (64-bit)
Computer 1: Windows 10 Pro version 1709, build 16299.461
Computer 2: Windows 10 Pro version 1803, build 17134.112

Opera Beta 54.0.2952.17 (Chrome Extensions Version 2.5.2) + Google Calendar - same issue

https://github.com/manastungare/google-calendar-crx/wiki/Supported-Browsers
This is a Chrome extension using Chrome APIs.
Some other browsers, e.g. Opera, Vivaldi, have chosen to implement a subset of the Chrome Extensions API, but they have not implemented the full API.
If you encounter any problems running this extension on browsers besides Chrome, please report the issue to your browser vendor.


Evaluation Metrics

Hi, thanks for the interesting work. We ran Dino's last embedding and compare similarity scores for the original AnimateDiff generated videos and found the similarities are in fact very high. Is it possible to share how to calculate the metric for visual consistency?

@XuweiyiChen Thanks for your attention. As stated in our paper, for each video sample, we extract the ViT-S/16 DINO features of each frame and compute the average cosine similarity between the normalized features of the first frame and all succeeding (N − 1) frames. The similarity score can be affected by the prompt and random seed (e.g., on UCF-101 prompts, the scores of original AnimateDiff samples range from 64.50 to 95.74, with an average of 85.24). For fare comparison, we use the same random seeds for each method. Also, different AnimateDiff versions and motion modules exhibit very different temporal consistency patterns. Our experiments are conducted on AnimateDiff v1 with mm-sd-v14 motion module. If you get much higher similarity scores, please check whether the evaluated model versions are aligned with our experiment, and also test with different prompts and random seeds.

Thanks for your swift answer. I am assuming that we only use the last embedding for similarity and there is no negative prompt?

@TianxingWu Is possible to provide the evaluation function when calculating the DINO similarity? Many thanks in advance.


Gradle files and Android Studio

Step 5 in the Android section 'Enable Firebase Cloud Messaging (FCM)' of this walk through could do with more explanation of how to open a Xamarin Forms project in Android Studio and gradle files.

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

ID: 6f503e37-b16e-c92c-8668-313428451053
Version Independent ID: edc66d3e-bf88-3c4d-a148-6288a7022f16
Content: Add push notifications to your Xamarin.Forms app
Content Source: articles/app-service-mobile/app-service-mobile-xamarin-forms-get-started-push.md
Service: app-service-mobile
GitHub Login: @elamalani
Microsoft Alias: emalani

This page https://docs.microsoft.com/en-us/xamarin/xamarin-forms/data-cloud/azure-services/azure-notification-hub explains how to do this for a Xamarin Forms project without using Android Studio or gradle files.

@SteveMaz  Thanks for the question! We are investigating and will update you shortly.

Thanks for sharing your feedback! You may checkout Visual Studio App Center for Push service. As mentioned in the ‘Note’ section in the same document (listed on top of the page) you’re referring to – “Visual Studio App Center is investing in new and integrated services central to mobile app development”, you could leverage this based on your scenario/requirement.

@SteveMaz, Since we have not heard back from you we will now proceed to close this thread. If there are further questions regarding this matter, please tag me in your reply and we will gladly continue the discussion.


CARDS-1830: Creating forms via API ignores the requiredSubjectTypes setting

CARDS-1830

One thing still not perfect: when trying to create extra forms through the UI, it fails (correctly) but the message is not the one displayed when the UI knows there are enough forms already, but a generic, cryptic 409 error.

One thing still not perfect: when trying to create extra forms through the UI, it fails (correctly) but the message is not the one displayed when the UI knows there are enough forms already, but a generic, cryptic 409 error.

This is not about there being enough forms already, but about assigning a form to the wrong subject. Regardless, they both generate the same error message New form request failed with error code 409: Conflict (although under some circumstances the latter just fails silently), so we can't really differentiate between them on the UI side to display an informative message. Is it possible to produce different responses on the backend?

One thing still not perfect: when trying to create extra forms through the UI, it fails (correctly) but the message is not the one displayed when the UI knows there are enough forms already, but a generic, cryptic 409 error.

This is not about there being enough forms already, but about assigning a form to the wrong subject. Regardless, they both generate the same error message New form request failed with error code 409: Conflict (although under some circumstances the latter just fails silently), so we can't really differentiate between them on the UI side to display an informative message. Is it possible to produce different responses on the backend? @sdumitriu


Does the store get dropped when a component dismounts?

I was looking at the implementation of use store and I saw it used a threadlocal to do the global state.
If a component is dismounted, and it’s the only component using a certain store, does the store get dropped?

I believe the store persists beyond the period when the component is dropped for two reasons. The first reason is found here in the second paragraph, when it says: ...

_"For types that do not need to be dropped, this can enable an even more efficient implementation that does not need to track any additional state."
The other reason I think it persists is because "Static items do not call [drop](https://doc.rust-lang.org/reference/destructors.html) at the end of the program.", but this isn't necessarily the end of the program, right?

If it looks like you'd be worried about losing a store without proper saving or cleanup, there's always ManuallyDrop provided a fork of the repo implements it on a newtype wrapping the thread local, or something.

This is correct, stores live for the entire application lifetime


Add support of maxRecordedDuration

Hi @brightsider, from what I understand, using maxRecordedDuration is not the proper way to stop recording after x seconds, that's because the delegate is always called with an error when that happens and it makes the verification of the recording status messy. I recommend you to use a DispatchWorkItem for that.
Something like this
cameraManager.startRecordingVideo()
let requestWorkItem = DispatchWorkItem {
            cameraManager.stopVideoRecording { // completion handler }
}
DispatchQueue.main.asyncAfter(deadline: .now() + .seconds(yourMaxRecordedDuration), execute: requestWorkItem)

Don't forget to call requestWorkItem.cancel() when the user stops the recording before yourMaxRecordedDuration(url)


Tectonic console container fails to start

Issue Report Template
Tectonic Version
1.5.1
Environment
What hardware/cloud provider/hypervisor is being used with Tectonic? Bare Metal
Expected Behavior
Tectonic console starts
Actual Behavior
The tectonic console container is failing to start with the following message printed in the docker logs
2017/01/18 07:13:09 http: Provider config sync still failing, retrying in 8s: invalid character 'd' looking for beginning of value
That repeats for a few minutes and then the container dies.
Reproduction Steps

Follow tectonic installation steps with 2 nodes

Other Information
I've had to reboot the controller multiple times due to #23 which may be a contributing factor. I also had to hand edit /etc/kubernetes/kubeconfig to change the api server hostname because of #24. Both items may be contributing here but as far as I can tell I got all of the services running on the worker node (ingress controllor, node-exporter, etc.) but the console fails to start.
Before the ingress controller was starting on the worker I was getting errors in the console logs saying it failed connecting to the $worker/identity endpoint which AFAIK was waiting for the ingress controller to start.

The assets.zip bundle includes an auth/kubeconfig file. If the Tectonic console doesn't come up, could you use that to give a quick peek at which pods are failing and logs? There is a new doc on this over here.

Yep, console has to talk to identity. If all pods are running successfully, except console, I suspect a naming or DNS issue using Ingress.

The ingress route is failing
curl -k -L https://three.lan/identity/healthz
default backend - 404

I checked the apiserver and it appears to be down (last night it was up) because it cannot connect to etcd2.
kubectl get po --kubeconfig auth/kubeconfig -owide
Unable to connect to the server: dial tcp <IP_ADDRESS>:443: getsockopt: no route to host

logs from the kube-apiserver container shows
I0118 16:41:26.340532       7 trace.go:61] Trace "Get /apis/oidc.coreos.com/v1/namespaces/tectonic-system/signingkeies/openid-connect-keys" (started 2017-01-18 16:41:24.386028396 +0000 UTC):
[1.954483795s] [1.954483795s] END
E0118 16:41:26.340547       7 errors.go:63] apiserver received an error that is not an unversioned.Status: client: etcd cluster is unavailable or misconfigured
E0118 16:41:56.357498       7 errors.go:63] apiserver received an error that is not an unversioned.Status: client: etcd cluster is unavailable or misconfigured

etcd2 shows it's running but in unhealthy which is probably where the problem lies
core@one ~ $ systemctl status etcd2
● etcd2.service - etcd2
   Loaded: loaded (/usr/lib/systemd/system/etcd2.service; enabled; vendor preset: enabled)
  Drop-In: /etc/systemd/system/etcd2.service.d
           └─40-etcd-cluster.conf
   Active: active (running) since Wed 2017-01-18 07:10:24 UTC; 9h ago
 Main PID: 1001 (etcd2)
    Tasks: 12
   Memory: 248.7M
      CPU: 3min 45.820s
   CGroup: /system.slice/etcd2.service
           └─1001 /usr/bin/etcd2

Jan 18 15:18:09 one.lan etcd2[1001]: compacted raft log at 135014
Jan 18 15:18:23 one.lan etcd2[1001]: purged file /var/lib/etcd2/member/snap/0000000000000009-0000000000015f99.snap successfully
Jan 18 15:56:00 one.lan etcd2[1001]: start to snapshot (applied: 150015, lastsnap: 140014)
Jan 18 15:56:00 one.lan etcd2[1001]: saved snapshot at index 150015
Jan 18 15:56:00 one.lan etcd2[1001]: compacted raft log at 145015
Jan 18 15:56:23 one.lan etcd2[1001]: purged file /var/lib/etcd2/member/snap/0000000000000009-00000000000186aa.snap successfully
Jan 18 16:33:50 one.lan etcd2[1001]: start to snapshot (applied: 160016, lastsnap: 150015)
Jan 18 16:33:50 one.lan etcd2[1001]: saved snapshot at index 160016
Jan 18 16:33:50 one.lan etcd2[1001]: compacted raft log at 155016
Jan 18 16:33:53 one.lan etcd2[1001]: purged file /var/lib/etcd2/member/snap/0000000000000009-000000000001adbb.snap successfully
core@one ~ $ etcdctl cluster-health
failed to check the health of member d483ac99c25d21dd on http://one.lan:2379: Get http://one.lan:2379/health: dial tcp <IP_ADDRESS>:2379: getsockopt: no route to host
member d483ac99c25d21dd is unreachable: [http://one.lan:2379] are all unreachable
cluster is unhealthy

cc @dghubble @kbrwn

@rothgar Do you still  require assistance with this issue or did you resolve it by bringing your etcd cluster to a healthy state?

I have not had time to retest my cluster but after conversations with multiple people it looks like the main failure (postgres supporting dex) is removed or being removed from the latest release.
I'll close this issue and open a new ticket on the newer version if I still have problems.

hi guys i have similar issue but not same. Tectonic console was not responding, so i deleted the PODs but after somepoint the PODS were not stated and i get gateway error.
502 Bad Gateway
nginx/1.13.1
any clue

is this resolved ? seeing the same issue ..

@rushins Got it working . Let me know if you need help.


Download Embeddings in Deployment

Write test for deployment as well

no need given that user can load embeddings in a csv file as input argument or extract them from the model itself


chore: pull docker version from docker hub

Signed-off-by: skodamarthi<EMAIL_ADDRESS>Pinned to the latest version which is Tag 4.2.5
Fix for https://github.com/reactioncommerce/cli/issues/130

@zenweasel Can you please review?

@skodamarthi No this is still incorrect. The steps to do this correctly would be to:

Get current version from hub.docker.com either via the api or the website
When creating an API project use that current version. aka the version that was live when the project was created. This just hardcodes the version that is current today.

Closing due to inactivity


integrate configuration to config package

Now we have some configurations to control command behavior -- cli options, .falcorc file, and environment variables.
Then this PR integrates these configurations into a struct of config.Config.
On the command has started, the process integrates configurations and we can use all options through the config struct.
This struct automatically cascades configurations following order:

find .falco.yaml and parse it (Note that the configuration filename has changed from .falcorc to .falco.yaml
parse command-line options
map environment variables

To integrate, we have new dependencies of https://github.com/ysugimoto/twist
For future improvement, the integrated config struct makes us useful for adding more options, configuration files, etc...

I will merge this PR. If you have any suggestion, let me know in another PR.


manual locks broken by AH

Addon Version
v0.1.5
World of Warcraft Version
Retail
Describe the bug
AuctionHouse does not respect BB's manually locked items
Multiple issues here:
Manually locked items can be added to the AH 'sell' window via right-click
Manually locked items are no longer locked when removed from the AH 'sell' window and are in a visually inconsistent state. (unlocked but appear locked with red padlock)
Locked items can be actually auctioned either directly via right-click method above or via addition by using a quantity > 1 after attempting to sell an unlocked version.
Steps to reproduce
Manually lock an item with middle-click
add item to AH 'create auction' via right click
remove item from sell window or by closing the AH. This locked item is now in an inconsistent state of showing the manual lock overlay, but is no longer locked.

The lock item API is not a BetterBags API -- it's actually a WoW client API. Blizzard controls what is locked, what isn't, and what actions you can take with a locked item. I do want to fix the visual aspects of it though, as that is a bug.


Fix Preview site

As an end user I would like the preview site's download scripts to work so that I can download the bundles associated with a project.
Definition of done:
(one possible solution)
leave the preview site in place
Change out the links to the download scripts (that no longer work) to be links to the prod browser, with the relevant project selected.
Add a link on the preview site to the download manifest instructions on the prod site
Leave links for the matrix data that exist on the preview site as they are still relevant.
(Note that we have had 2 users try to use the preview site and fail because the bundles had been deleted. )

@kozbo what shall we do with the link to the metadata spreadsheet? Shall we replace it with a link to the metadata CSV available on the browser?

yes, use the metadata CSV from the browser, thanks

@jessebrennan @kozbo are these instructions still accurate with the latest version of the CLI?
https://prod.data.humancellatlas.org/guides#downloading-a-data-manifest
What would be the command to run once the CLI is installed to download the set of files in a manifest?

@kozbo just checking that these are the 3 relevant projects:
Census of Immune Cells
https://prod.data.humancellatlas.org/explore/projects?filter=[{"facetName"%3A"projectTitle"%2C"terms"%3A["Census+of+Immune+Cells"]}]
Ischaemic Sensitivity of Human Tissue
https://prod.data.humancellatlas.org/explore/projects?filter=[{"facetName"%3A"projectTitle"%2C"terms"%3A["Ischaemic+sensitivity+of+human+tissue+by+single+cell+RNA+seq"]}]
Melanoma Infiltration of Stromal and Immune Cells
https://prod.data.humancellatlas.org/explore/projects?filter=[{"facetName"%3A"projectTitle"%2C"terms"%3A["Melanoma+infiltration+of+stromal+and+immune+cells"]}]

Yes, exactly. Thanks

@kozbo these changes are pushed to staging but we need to wait for a manual deploy as the deploy keys are expired (we have not deployed in over a year).
Will ping you for review once the site is deployed to staging.
Cheers,
D

@kozbo first pass of updates for this on are here: https://preview.staging.data.humancellatlas.org/
for your review.
Let me know if you see anything that needs to be updated before we deploy this to prod.
Cheers,
Dave

Looks good to me.
why not link to the metadata file in the project rather than have the link on the preview site?

Looks good to me - let's promote to the actual preview site.

@kozbo @theathorn this is deployed to prod. Cheers, D
https://preview.data.humancellatlas.org/


Publishing scala-2.13 artifacts to the maven S3 repo.

I've noticed that the 2.13 is missing in the S3 snapshot folder.

cc @hcho3

Thanks! I will merge this once the CI passes.

It's not yet available

Let's revert this pull request for now. I submitted #9224. We should find a way to build all JVM packages while excluding xgboost4j-spark-gpu target.

Oh, my bad, let me create a new PR as the integration tests do not use the GPU-enabled jars.


Add Fergus' PPP

Codecov Report

Merging #212 (d0eba27) into master (a2bc6d8) will not change coverage.
The diff coverage is n/a.

@@            Coverage Diff            @@
##             master     #212   +/-   ##
=========================================
  Coverage     51.67%   51.67%
  Complexity      624      624
=========================================
  Files           125      125
  Lines          2663     2663
  Branches        356      356
=========================================
  Hits           1376     1376
  Misses         1195     1195
  Partials         92       92

Continue to review full report at Codecov.

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


Move Link not working

🏷 WebCrate Version
v1.4.2
⚙ Environment
Chrome, Safari
🐞 Describe the bug
In a link detail 'box', selecting Move Link opens the window as expected, however clicking on the dropdown menu under the "Select a crate to move the link" button performs a quick animation, then returns to the main crate page without allowing for a selection to be made.
As far as i recall, this worked prior to the update applied today.
📚 To Reproduce

click a link to expand link details
click the disclosure icon (...) for more options
select Move Link
click the selection icon in the resulting window to pick a new destination crate.
enjoy the animation
view the crate contents

💡 Expected behavior
a list of available crates should appear, from which a selection can be made.
📋 Additional context
No response

Hey, thanks for reporting this bug!
I encountered the issue as well, will fix it asap.

As far as i recall, this worked prior to the update applied today.

This feature actually only came with that update, it didn't exist before. Previously you could only move links by dragging and dropping them to another crate :)

Cool. Glad it wasn't just me. I'd initially placed the blame on Safari until it was repeatable in Brave (Chromium based).
Interesting bit of bias confirmation there! I was sure I'd moved via option in the past. Guess I would have just moved the card, which is what I ended up doing as a workaround anyhow.

Interesting bit of bias confirmation there! I was sure I'd moved via menu option in the past. Guess I would have just moved the card, which is what I ended up doing as a workaround anyhow.

Yeah, funny how the brain works sometimes 😅 Had a similar thing happen to me a while ago with another piece of software. Swear I had used a feature in the past, but they insisted it had never existed 😂

This issue has been resolved in version 1.4.3 🎉
@craigz refer to the docs on how you can update to the latest version :)

@BetaHuhn i've just updated and can confirm it's working!

Great! Thanks for confirming :)
Sorry that it took so long to fix, got busy with other projects :/


Inconsistent json file from BaiduYun and Huggingface

Thanks for your impressive work and the effort on the dataset construction!
I have download the dataset from BaiduYun and the json file from huggingface.
The json from baidu shows 2,893 cases for Test, 32,891 cases for train. But the last case from train set has some error about unfinished strings.
However, the json from huggingface has 7,772 cases for test, 31,086 for train.
The total cases from the paper is 39,026, but the number from BaiduYun is '35,784' and '38,858' from huggingface.
This error makes reproducing work quite hardly.
So, if we want to reproduce this work based on 20 zip file from BaiduYun, which split file should we use?
Also, I found the subfolder1.zip and subfolder2.zip have some corrupted issue, even I fixed it with 'zip -F' command, I am not sure all files are restored. If authors could fix this issue, it will be really grateful.
After unzipping, it has multiple folders but not match the path from the json file.
I guess the number from json: ''/processed_images/2534/1/CT_0'', the '2534' is the correct path for the image?
The format from two different sources are also different:
the json from huggingface: "image_path": [                     "/remote-home/share/data200/<IP_ADDRESS>/zhengqiaoyu//processed_file/npys/32940/1/MRI_0.nii.gz",                     "/remote-home/share/data200/<IP_ADDRESS>/zhengqiaoyu//processed_file/npys/32940/1/MRI_1.nii.gz",
the json from baidu: "image_path": [             "/processed_images/1/1/CT_0",             "/processed_images/1/1/CT_1",             "/processed_images/1/1/CT_2",             "/processed_images/1/1/CT_3"         ]
Seems the huggingface json point to the original medical image, but the baidu json is for jpg only?
Looking forward to your response!

Additionally, in the huggingface json, the file provide 'icd10s' code, but the json from baiduyun does not have this term

I'm sorry the json file from baiduyun has some error, please follow the json file from huggingface. Because of the uploading problem, there may be some subtle matching issue in the total number, we will check it again later. However, the exisiting version is already enough for reproducing. If you meet the matching error in the dataloader, you can just simply remove these cases, this will not lead to a significant effect on the reproduction results. Again, we will fix this error later

Hello,
Thank you very much for your work！
I wanted to check if the relevant data and JSON corrections are now available.
I eagerly waiting for your response. Many thanks!


Use SPDX identifier in license field of META.info

Use the standardized identifier for the license field.
For more details see https://design.perl6.org/S22.html#license

Thank you.  I wondered why travis is failing but looks like it is travis that is broken so I merge.


integrations -> create-react-app

Learn how to set up the project here and how docs work here. For much of this you should be able to do everything without even cloning the project. You could just do it in the GitHub editor!

Existing docs: https://github.com/paypal/glamorous/tree/master/examples#with-create-react-app
Destination: https://github.com/kentcdodds/glamorous-website/blob/master/pages/integrations/content/create-react-app.js

Anyone can work on this Just comment here when you're going to start. Feel free to improve the existing docs if you're copying them over (it doesn't have to be a direct copy/paste if feel you can improve upon them).
Thanks!

Happy to help with this one.


Jnm/run tunnel in background then psql

Instead of requiring the user to copy/paste a long command, just run it immediately.

whoops!


Add option to delete personal data

Users should have an option to have their personal data purged from the database.
Concretely, this means:

deleting your search history
deleting your downloads
deleting your account (including search history and downloads)

[ ] search history
[ ] downloads
[ ] account

Re. downloads, I remember why said this may not be necessary.
In https://github.com/UUDigitalHumanitieslab/I-analyzer/issues/947, I suggest that downloads should have an "expiration date". It makes sense to me that we just delete downloads after, say, 90 days. You could still add an option to delete all your saved downloads right now, but it's less necessary in that case.

We recently added deleting accounts to lettercraft: https://github.com/CentreForDigitalHumanities/lettercraft/pull/157
Since lettercraft's user system is based on I-analyzer, it should be easy enough to take this PR and adapt it back to I-analyzer.


Version number is not up to date

The version number of the package is not up to date. On npm, it's at v0.4.0, while it's still 0.3 in the readme (I'd suggest simply removing the version number from the title) and more surprisingly in the package.json. Was it published on npm from a local machine without the repo being updated?

I had just forgot to push a rebase. Fixed https://github.com/jdalton/docdown/commit/63136a3c100060d8d1762fdfbc7a52bab3d7ac15.


Remove some feature attributes which got stable in Rust 1.26

I forgot to remove some other stable features in #915.

Thanks!!


Add newline to fix reST syntax

Just a small thing I noticed while reading the docs. The newline got deleted with 24bc2602d4034b3fb9302456261b7b2025cb426d and currently leads to badly rendered docs at https://praw.readthedocs.io/en/latest/code_overview/models/comment.html#praw.models.Comment.replies

Thanks for catching that!


[Feature Request]: support webpackChunkName

What problem does this feature solve?
support specify name for the chunk use webpackChunkName comment
What does the proposed API of configuration look like?
just like webpack: https://webpack.js.org/api/module-methods/#magic-comments

This is my favorite webpack feature. Can I take a grab on this? But please give me several days to investigate how it is implemented in webpack and how to integrate to Rspack.
I will give a summary after the initial investigation.

This is my favorite webpack feature. Can I take a grab on this? But please give me several days to investigate how it is implemented in webpack and how to integrate to Rspack.
I will give a summary after the initial investigation.

The feature is requested eagerly, I'm working on it and plan to finish it this Friday.

Note: I investigate the feature and there are some problems the team needs to discuss. Once we come up with some conclusions, I will remove the on hold tag.