Draft of Timepoints USDM

This will be based on Dave's documentation, both the design image and the slide document he has shared.
This first version will be the untested version, as it will undergo several different tests subsequently.

This will be based on Dave's documentation, both the design image and the slide document he has shared.
This first version will be the untested version, as it will undergo several different tests subsequently.

Timeline
General
The Timeline class is used to compose all of the sequence elements related to the SoA.
We will use this class to collect the entries, exits and sequenced timepoints that will be pointed to by objects such as encounters and activities.
The idea here is to provide a seqencing perspective of the activities, events and subject encounters along with the rules used to define the schedule and its progression.
private final String timelineId;
Usual id for the instance
private String timelineDescription;
A textual description of the timeline.  There will likely be numerous timelines in a study and this field provides the context for the particular timeline.
private Entry timelineEntry;
It makes sense to have object references to SoA structure objects (timepoint, entry, exit). This should be the highest level in the JSON payload to attach the object details.  Below this level (such as pointers between timepoints) references will be ID references to avoid duplication. The timeline entry and exit don't seem to be as important in the composition of a timeline, if we reference "timelines" from higher in the class hierarchy. If every timeline has a discrete entry and exit point, then why do we really need seperate, referenceable Entry and Exit classes.  This could simply be just some useful attribution in a timeline.
Example, if I'm grabbing timeline named "base timeline for this study", and I grab the timeline, why do I need to deferefeence the entry?  It seems as if I would just ask for the first timepoint, ordinally. Maybe entry is an attribute of a timepoint?  Just my thoughts.
private Exit timelineExit;
Ditto from above for exit.
private List timelineTimepoints;
At this point, this is an unordered list of timepoints.  We might consider more encapsulation by creating a timepointSequence wrapper.
General
Are cycles really discrete timelines that provide some type of iteration mechanism?
Do we force the design to break cyclic seqences off from strictly linear sequences?  Or, do we add complexity to the definition of a timeline
Maybe a cycle is just attached to an existing timeline defines a time loop?  Remember, these aren't your typical "timeines"...they are more of a seqencical structuring of activities, conditions and encounters.  So, it's quite logical to want to repeat a portion of a longer sequence to meet a particular condition.  I must noodle on this...
Ok, my initial thoughts lead to a sentinel that observes a timeline and has a cycle start and end maybe... and there must be an iteration condition (iterate?  Yes, No).
A timepoint of type Cycle with a relationship that points to a cycle start (another timepoint) and
with a condition attached that determines progression?  This could muddy the timepoint and it's truly polymorphic while currently the Branch vs Node types don't really have anly overloaded behaviors (yet).
However, I'm still for it because how is a cycle that much different than a branch except it points to something upstream as opposed to downstream?
It seems plausible to encapsulate starts, ends and loops in the actual timeline class itself.

Timepoint
General
The Timepoint class is used to link activities and encounters to a schedule timeline.
public class Timepoint {
private final String timepointId
private String timepointDescription
The textual representation of the timepoint.
private Code timepointType
Denotes the type timepoint object added to the timeline.  The value can be either a node or a branch.
A branch being used to link alternate or sub-timelines to an existing timeline.
private Condition timepointCondition
The condition that may be associated with the timepoint, if the timepoint is of type branch (according to the presentation material).
Even though a condition could or should be re-used across multiple timepoints and/or entries this reference should be an object reference as there would be no other object reference available to ensure inclusion in the JSON payload (to my understanding)
private String timepointExitId
Unsure of the nescessity of this id reference to an actual Exit class.
It seems to make sense to associate an exit condition and maybe an exit flag to a timepoint.
What attributes are required to be associated with an Exit that should be solely contained in an Exit class?  Maybe just saying a timepoint is a final timepoint is just as intuitive?
private Timing timepointScheduledAt
Must assume this is an object reference as no other references exist in the model except for Encounter and that would not necessarily be the same timepoint being referenced, so no duplication will likely exist.
This could be considered an attribute of the timepoint because I'm not sure that the timing has any value outside of its inclusion in the timepoint data (except for maybe...reuse?)
private List previousTimepointIds
private List nextTimepointIds
when referencing objects from the timeline, it's important to use id references because the API JSON payload would result in duplicate expressions of objects pointing to the timeline.  This assumption should be asserted.
All of these fields below should be defined as relationships in the CT.
In particular for pointers between timepoints, it seems to me that there should be some clear understanding that only a Branch type timepoint is capable of pointing to more than one previous or next timepoint.  Am I misunderstanding the the use of the type attribute?
private String timepointEncounterId
I'm somewhat confused as to why an encounter has multiple touchpoints in the timeline, but I haven't heard of a broad set of use cases for traversal of the timeline.
You can get to a timepoint from an encounter via a timing.  You then have a circular reference from the timing via the timepoint.  There is potential for these to be out of sync as well, correct?
private List timepointActivityIds
This is the only way to associate activities with timepoints, as we've decided that the cardinality from timepoint to activities is one to many, correct?
private String timepointEntryId
I'm still waffling on this entry concept.  We know the first timepoint in any sequence simply because it has no pointer to a predecessor. If a timepoint can be a node or a branch, why can't it also be an entry timepoint or an exit timepoint.  Polymorphism has been problematic, however, much like BC data, it is more elegant that trying to provide solid semantics to differentiate things that are ideally seen as similar yet unique among themselves.  Like managing anything as a category without actually referencing the category (i.e. StudyData).

Timing
General
The Timing class is used to relate timepoints. In graph, this information would likely sit on relationship that exists between timepoints. Timepoints can have relationship context more sophisitcated the previous and next. This is where that information is captured.
private final String timingId
private Code timingType
Code values that describe the type of timing.  Valid values include Before, After and Absolute.
private String timingValue
According to the presentation, the value will be provide further context based on the type of the timing.
For example, if the timing type is absolute then maybe something like "first dose, day 0" and if the type is Before it could be "1 day before x".
private Code timingRelativeToFrom
Code values that describe the timing relative to the associated timepoint, I believe.  Somewhat unsure here.
Values are typical of gant task relationship dependencies.  They are:  StartToStart, StartToEnd, EndToEnd and EndToStart.
private String timingWindow
Defines window of time associated with the timing.  This seems like slack in a project timeline.
Example value could be 2 hour window.  In a standard task sequence that sounds like "2 hours of slack" in the schedule to accomplish associated activities, etc... Is this correct?

Timing
General
A guide that governs the allocation of subjects to operational options at a discrete decision point or branch (e.g., assignment to a particular arm, discontinuation) within a clinical trial plan.
The above sentencee was associated with the TransitionRule class. We have deprecated the TransitionRule class and replaced it with condition. Now...the question is...is the above description appropriate for a condition?
If not, I believe that deprecating the TransitionRule was a mistake and that we will likely need to
change the design to provide for both Condition and TransitionRule classes and their assoiated logic.
private final String conditionId;
Usual instance id
private String conditionDescription;
The textual representation of the transition rule.  'Nuff said.
Notes
Not much to this class.  Doesn't seem like enough information to reside in its own class definition.
Are we defining this class strictly for reuse in timelines, like codes?
Still is hard to argue that it's way better as a class reference than a string field, since the conditionId is the only thing we're associating with the class except for description.
The answer must be that we are not done defining the class.

Condition
General
"A guide that governs the allocation of subjects to operational options at a discrete decision point or branch (e.g., assignment to a particular arm, discontinuation) within a clinical trial plan." <<< from the existing TransitionRule class.
We have deprecated the TransitionRule class and replaced it with condition. Now...the question is...is the above description appropriate for a condition?
If not, I believe that deprecating the TransitionRule was a mistake and that we will likely need to change the design to provide for both Condition and TransitionRule classes and their assoiated logic.
private final String conditionId;
Usual instance id
private String conditionDescription;
The textual representation of the transition rule. 'Nuff said.
Notes
Not much to this class. Doesn't seem like enough information to reside in its own class definition.
Are we defining this class strictly for reuse in timelines, like codes?
Still is hard to argue that it's way better as a class reference than a string field, since the conditionId is the only thing we're associating with the class except for description.
The answer must be that we are not done defining the class.

I have pondered whether or not TransitionRule and Condition are one class or two. Happy to have both. I can see condition becoming more "machine readable" before transition rule because transition rule is a human readable form. So for now, I think the best is to keep separate

Cycles

Extracted from above

Are cycles really discrete timelines that provide some type of iteration mechanism?
Do we force the design to break cyclic seqences off from strictly linear sequences? Or, do we add complexity to the definition of a timeline
Maybe a cycle is just attached to an existing timeline defines a time loop? Remember, these aren't your typical "timeines"...they are more of a seqencical structuring of activities, conditions and encounters. So, it's quite logical to want to repeat a portion of a longer sequence to meet a particular condition. I must noodle on this...
Ok, my initial thoughts lead to a sentinel that observes a timeline and has a cycle start and end maybe... and there must be an iteration condition (iterate? Yes, No).
A timepoint of type Cycle with a relationship that points to a cycle start (another timepoint) and
with a condition attached that determines progression? This could muddy the timepoint and it's truly polymorphic while currently the Branch vs Node types don't really have anly overloaded behaviors (yet).
However, I'm still for it because how is a cycle that much different than a branch except it points to something upstream as opposed to downstream?
It seems plausible to encapsulate starts, ends and loops in the actual timeline class itself.

Cycles

Extracted from above

Are cycles really discrete timelines that provide some type of iteration mechanism?
Do we force the design to break cyclic seqences off from strictly linear sequences? Or, do we add complexity to the definition of a timeline
Maybe a cycle is just attached to an existing timeline defines a time loop? Remember, these aren't your typical "timeines"...they are more of a seqencical structuring of activities, conditions and encounters. So, it's quite logical to want to repeat a portion of a longer sequence to meet a particular condition. I must noodle on this...
Ok, my initial thoughts lead to a sentinel that observes a timeline and has a cycle start and end maybe... and there must be an iteration condition (iterate? Yes, No).
A timepoint of type Cycle with a relationship that points to a cycle start (another timepoint) and with a condition attached that determines progression? This could muddy the timepoint and it's truly polymorphic while currently the Branch vs Node types don't really have anly overloaded behaviors (yet).
However, I'm still for it because how is a cycle that much different than a branch except it points to something upstream as opposed to downstream?
It seems plausible to encapsulate starts, ends and loops in the actual timeline class itself.

Tried to keep the building blocks simple and build "patterns" to build the logic. So we have a start, end, timepoint and decision (cycle/branch) nodes types. Leave start and end out of it for the moment, more connected with timelines.
We have timepoint and "branch". Leaning towards keeping them distinct node types or class / sub-class, dont really mind. A branch will never connect to an activity, another timeline or an encounter. Timepoint will.
Updates this sketch to highlight the "cycle" pattern

Timeline
General
The Timeline class is used to compose all of the sequence elements related to the SoA.
We will use this class to collect the entries, exits and sequenced timepoints that will be pointed to by objects such as encounters and activities.
The idea here is to provide a seqencing perspective of the activities, events and subject encounters along with the rules used to define the schedule and its progression.
private final String timelineId;
Usual id for the instance
private String timelineDescription;
A textual description of the timeline. There will likely be numerous timelines in a study and this field provides the context for the particular timeline.
private Entry timelineEntry;
It makes sense to have object references to SoA structure objects (timepoint, entry, exit). This should be the highest level in the JSON payload to attach the object details. Below this level (such as pointers between timepoints) references will be ID references to avoid duplication. The timeline entry and exit don't seem to be as important in the composition of a timeline, if we reference "timelines" from higher in the class hierarchy. If every timeline has a discrete entry and exit point, then why do we really need seperate, referenceable Entry and Exit classes. This could simply be just some useful attribution in a timeline.
Example, if I'm grabbing timeline named "base timeline for this study", and I grab the timeline, why do I need to deferefeence the entry? It seems as if I would just ask for the first timepoint, ordinally. Maybe entry is an attribute of a timepoint? Just my thoughts.
private Exit timelineExit;
Ditto from above for exit.
private List timelineTimepoints;
At this point, this is an unordered list of timepoints. We might consider more encapsulation by creating a timepointSequence wrapper.
General
Are cycles really discrete timelines that provide some type of iteration mechanism?
Do we force the design to break cyclic seqences off from strictly linear sequences? Or, do we add complexity to the definition of a timeline
Maybe a cycle is just attached to an existing timeline defines a time loop? Remember, these aren't your typical "timeines"...they are more of a seqencical structuring of activities, conditions and encounters. So, it's quite logical to want to repeat a portion of a longer sequence to meet a particular condition. I must noodle on this...
Ok, my initial thoughts lead to a sentinel that observes a timeline and has a cycle start and end maybe... and there must be an iteration condition (iterate? Yes, No).
A timepoint of type Cycle with a relationship that points to a cycle start (another timepoint) and with a condition attached that determines progression? This could muddy the timepoint and it's truly polymorphic while currently the Branch vs Node types don't really have anly overloaded behaviors (yet).
However, I'm still for it because how is a cycle that much different than a branch except it points to something upstream as opposed to downstream?
It seems plausible to encapsulate starts, ends and loops in the actual timeline class itself.

With respect to Entry, Exit, Timepoiint and Timeline. Originally I did not have timeline in the model. Only when you look at the JSON packaging do you sense it is useful. So I think we can promote Entry and Exit to timeline and have an array / list of timepoints.
Entry as a notion is needed, we need an entry condition for the timeline. We will generally have a "main" timeline for the study with a condition for entry such as "individual identified as potential subject". They go through informed consent, screening etc etc and pass into the study should everything go ok. This is where the bulk of what we think of as the SoA today sits. We then have other timelines for unscheduled events (e.g. Adverse Events). So timelines are akin to event driven programming, event, resulting processing. We always need one timeline, the main study logic. How we display these, separately, together etc is not a model issue, presentation / tooling problem.
Exit is not so much needed now. However, HL7 FHIR SoA has exit "logic" and I sense, in the future, we will need such. Does a subject continue or is this subject leaves the study type stuff. So I am tempted to have a placeholder at least for the exit

Timepoint Questions & Comments
For @cupkes

private Code timepointType
Denotes the type timepoint object added to the timeline.  The value can be either a node or a branch.
A branch being used to link alternate or sub-timelines to an existing timeline.

We can use a type or class / sub class mechanism

private Condition timepointCondition
Even though a condition could or should be re-used across multiple timepoints and/or entries this reference should be an object reference as there would be no other object reference available to ensure inclusion in the JSON payload (to my > understanding)

Agree

private String timepointExitId
Unsure of the nescessity of this id reference to an actual Exit class.
It seems to make sense to associate an exit condition and maybe an exit flag to a timepoint.
What attributes are required to be associated with an Exit that should be solely contained in an Exit class?  Maybe just saying a timepoint is a final timepoint is just as intuitive?

Just thinking longer term, may have different types of exit, subject exits study, subject stays on study. Placeholder for the future
private Timing timepointScheduledAt
Must assume this is an object reference as no other references exist in the model except for Encounter and that would not necessarily be the same timepoint being referenced, so no duplication will likely exist.
This could be considered an attribute of the timepoint because I'm not sure that the timing has any value outside of its inclusion in the timepoint data (except for maybe...reuse?)

private List nextTimepointIds
when referencing objects from the timeline, it's important to use id references because the API JSON payload would result in duplicate expressions of objects pointing to the timeline.  This assumption should be asserted.
All of these fields below should be defined as relationships in the CT.
In particular for pointers between timepoints, it seems to me that there should be some clear understanding that only a Branch type timepoint is capable of pointing to more than one previous or next timepoint.  Am I misunderstanding the the use of the type attribute?

I was in two minds about a "next" pointer, an array would do the job. Mikkel made the point they maiintain it so left in for the moment. More of an aid to displaying the timeline

private String timepointEncounterId
I'm somewhat confused as to why an encounter has multiple touchpoints in the timeline, but I haven't heard of a broad set of use cases for traversal of the timeline.
You can get to a timepoint from an encounter via a timing.  You then have a circular reference from the timing via the timepoint.  There is potential for these to be out of sync as well, correct?

The Encounter -> timing is for an encounter window. I would like to see if we can keep all the timing within one place, namely timing. Now, if we had a weird visit, do something, wait 4 hours then do something else. Designers of the study consider this a single visit / encounter. We create two timepoints for the two distinct bits of logic and a nice precise timing node handling the four hours (in the past this was a textual footnote in a PDF). We associate both timepoints with the encounter. OK cool. But we also want a window on the encounter, This relationship allows the encounter to refer to the timing node with its window, probably the timing associated with the first of the two timepoints. Make sense?

private List timepointActivityIds
This is the only way to associate activities with timepoints, as we've decided that the cardinality from timepoint to activities is one to many, correct?

Yes, unless we find a good reason not to!

private String timepointEntryId
I'm still waffling on this entry concept.  We know the first timepoint in any sequence simply because it has no pointer to a predecessor. If a timepoint can be a node or a branch, why can't it also be an entry timepoint or an exit timepoint.  Polymorphism has been problematic, however, much like BC data, it is more elegant that trying to provide solid semantics to differentiate things that are ideally seen as similar yet unique among themselves.  Like managing anything as a category without actually referencing the category (i.e. StudyData).

See other comments

Timing Questions and Coments

private String timingValue
According to the presentation, the value will be provide further context based on the type of the timing.

For example, if the timing type is absolute then maybe something like "first dose, day 0" and if the type is Before it could be "1 day before x".
The 1 day before X is 1 day and point to X. Also want to allow for text but also ISO 8601 encoded values

private Code timingRelativeToFrom
Code values that describe the timing relative to the associated timepoint, I believe. Somewhat unsure here.
Values are typical of gant task relationship dependencies. They are: StartToStart, StartToEnd, EndToEnd and EndToStart.

Most of the time it would be end to start (from the end of previous to start). But sometimes we need precision, 5 mins after end of previous do this (end to start)

private String timingWindow
Defines window of time associated with the timing. This seems like slack in a project timeline.
Example value could be 2 hour window. In a standard task sequence that sounds like "2 hours of slack" in the schedule to accomplish associated activities, etc... Is this correct?

We see the subject every 4 weeks, plus or minus 3 days. Encounter window is -3 .. +3 days. We need to be careful of units, i.e. -1 hour .. +2 days. Some windows are minutes, some are days. Sometimes windows not permitted, dose drug, take BP for next hour every 5 mins (but that is more of a profile). We need windows for encounters but also for other reasons. so want to keep flexible.

UML from @cupkes from old thread/ticket

Latest sketch taking into account about questions, comment and last week's discussion
fyi @cupkes @ggasg

Here's the new diagram, but I am not finished.  I have a couple of things that I think need to be changed.

Notes on timeline
Regarding TimeLine Entry as a new class name.  I feel that TimelineEntry is confusing.  If there is a timeline entry, then there must be a timeline.  Yet, in the diagram, the two concepts are conflated into the TimelineEntry.  I suggest keeping Timeline and adding entry attribution as condition and timepoint references.

There is an ongoing concept of entry because of a need for a condition. I propose that the entry itself is not an actual object, or independent concept.  Instead I believe that every timeline has an entry condition and that the timepoints associated with the timeline are all post "condition met" timepoints.
Do we ever have timepoints that aren't collected in a timeline?
I argue that all timepoints exist in timelines, and therefore, for the first timeline, there can't be any previous "timepoints" that could point to conditions.  "which came first, the timepoint or the timeline?"  kind of thing.  So, to solve this, I add a pointer to a condition in the timeline.
This condition is simply used to record the "why" of the timeline, from what I can glean so far.
private Condition entryCondition;

If the timeline was due to a condition that was met for traversal from a previous timepoint, then we should have a handle to that timepoint.
private String entryTimepointId;

    // In the diagram, this is timelineEntryId but I'm worried that will me misinterpreted since it's just a string.
    // I propose entryTimelineId because it points to the entry to a new timeline.
    // if this is the case, then we don't have to have this timepoint branch to another timepoint, but
    // to another timeline.  Thoughts?

    private String entryTimelineId;

Final thoughts on timelines, timing and timepoints.
Firstly, why aren't we referring to these things as plans or schedules?  I'm assuming you've already mulled this over, however the current naming is becoming somewhat problematic as I'm sort of divining an object hierarchy for the polymorphic nature of the timepoints in a timeline.
If I was working with a schedule or a plan than I would have generic Event objects that could either be Activities, Procedures or Decisions.  If the timepoints are truly polymorphic then they could be any of these themselves.
We could also refer to them as specific events (ActivityEvents, EncounterEvents or DecisionEvents).
If this doesn't work for whatever reason, then I'm left with something like...Timepoint as the superclass with subclasses or EventTimepoint and DecisionTimepoint.  Would this work?
Regarding the diagram and your conversation tomorrow @daveih , I think it's important to stress that we haven't nailed down the hierarchy of things that will be attached to the timeline and that right now, there's just a single Timepoint class with a simple type attribute that defines it as a general node or a decision or branch.  This won't be good enough to ensure that the different types are misused or mislabeled.
Thoughts anybody?

TransitionRule vs. Condition.
The TransitionRule will not be deprecated, and the Condition class will be introduced.   I believe that Condition class is too simple at the moment and that it should be used to encapsulate some kind of logic.  Maybe returning a boolean or possibly returning some array of values.  Thinking out loud here.

TransitionRule vs. Condition.
The TransitionRule will not be deprecated, and the Condition class will be introduced. I believe that Condition class is too simple at the moment and that it should be used to encapsulate some kind of logic. Maybe returning a boolean or possibly returning some array of values. Thinking out loud here.

Both Conditon and TransitionRule are pretty simple, both contain "string logic" statement. Lets keep them separate. I suspect longer term they will merge into some more complex machine readable entity

    // In the diagram, this is timelineEntryId but I'm worried that will me misinterpreted since it's just a string.
    // I propose entryTimelineId because it points to the entry to a new timeline.
    // if this is the case, then we don't have to have this timepoint branch to another timepoint, but
    // to another timeline.  Thoughts?

    private String entryTimelineId;

@cupkes Rename as you see fit (liaise with @EMuhlbradt and @czwickl  as well). The names I used were "first cut" and naming is always tricky

There is an ongoing concept of entry because of a need for a condition. I propose that the entry itself is not an actual object, or independent concept. Instead I believe that every timeline has an entry condition and that the timepoints associated with the timeline are all post "condition met" timepoints. Do we ever have timepoints that aren't collected in a timeline? I argue that all timepoints exist in timelines, and therefore, for the first timeline, there can't be any previous "timepoints" that could point to conditions. "which came first, the timepoint or the timeline?" kind of thing. So, to solve this, I add a pointer to a condition in the timeline. This condition is simply used to record the "why" of the timeline, from what I can glean so far.
private Condition entryCondition;

If the timeline was due to a condition that was met for traversal from a previous timepoint, then we should have a handle to that timepoint.
private String entryTimepointId;

@cupkes happy with that

Final thoughts on timelines, timing and timepoints.
Firstly, why aren't we referring to these things as plans or schedules? I'm assuming you've already mulled this over, however the current naming is becoming somewhat problematic as I'm sort of divining an object hierarchy for the polymorphic nature of the timepoints in a timeline.
If I was working with a schedule or a plan than I would have generic Event objects that could either be Activities, Procedures or Decisions. If the timepoints are truly polymorphic then they could be any of these themselves.
We could also refer to them as specific events (ActivityEvents, EncounterEvents or DecisionEvents).
If this doesn't work for whatever reason, then I'm left with something like...Timepoint as the superclass with subclasses or EventTimepoint and DecisionTimepoint. Would this work?
Regarding the diagram and your conversation tomorrow @daveih , I think it's important to stress that we haven't nailed down the hierarchy of things that will be attached to the timeline and that right now, there's just a single Timepoint class with a simple type attribute that defines it as a general node or a decision or branch. This won't be good enough to ensure that the different types are misused or mislabeled.
Thoughts anybody?

This bit worried me

We could also refer to them as specific events (ActivityEvents, EncounterEvents or DecisionEvents).

Activity and Encounter are part of the timeline as such, they map into the tmeline (Same with Epoch), I see them as overlays on the timeline.  Given that I am much happier with the following suggestion. I was guessing this is the direction we would go

If this doesn't work for whatever reason, then I'm left with something like...Timepoint as the superclass with subclasses or EventTimepoint and DecisionTimepoint. Would this work?

So, yes, this would work


Signal must be masked when it is delivered to a signal handler

Summary
Signal must be masked when it is delivered to a signal handler per:

https://pubs.opengroup.org/onlinepubs/007904875/functions/sigaction.html:
When a signal is caught by a signal-catching function installed by sigaction(), a new signal mask is calculated and installed for the duration of the signal-catching function (or until a call to either sigprocmask() or sigsuspend() is made). This mask is formed by taking the union of the current signal mask and the value of the sa_mask for the signal being delivered [XSI] [Option Start] unless SA_NODEFER or SA_RESETHAND is set, [Option End] and then including the signal being delivered. If and when the user's signal handler returns normally, the original signal mask is restored.

Any action queued for that signal while the signal is masked should be deferred. It should go into the group pending signal list and should not be processed until until the signal is unmasked (which should occur when the signal handler returns).
See Issue #9298
Impact

Follows POSIX more closely
Probably has little effect because sa_mask typically does mask the signal explicitly
Probably does not effect re-entrancy of the signal handler because that is protected by other means.

Testing
sim:ostest

I believe that this is a correct and complete change as submitted.  However, there are other unrelated issues that could make this unreliable.  See #9300


Feature: Minimap Interaction

Currently, the MiniMap in the 02 Custom Context Example is moved around when dragging on it. A useful behaviour would be if clicking/dragging on the minimap actually changes the view of the graph.
Seems currently clicks on the Minimap are indeed selecting "through" to the right node, but it would be cool if "panning" on the minimap was a thing.

It's the built-in implementation from GraphView and I'm not sure I can do something about it, there is not much in the API of the MiniMap: https://docs.unity3d.com/ScriptReference/Experimental.GraphView.MiniMap.html


Further work for the Gibbs PR

Discussion

[ ] we need a consistent output of model (i.e. return) and storage of predicts
[ ] we need to discuss the consistent way of using task.storage

Enhancement

[ ] the naming issue of x[i,j,k] and x[i,j][k]
[ ] allow user to step how many steps each sampler in Gibbs sampling is run
[ ] the current implementation has a bad performance (speed)

It seems the HMC sampler constructor is broken. Running the following code would throw an error
HMC(1000, 0.2, 5)

Which version (commit) do you meet this error?

Do you think it's better to keep both VarInfo and Sample and convert between them when necessary or use one data structure only?

Which version (commit) do you meet this error?

It is working now with the most recent new-interface. I might be using some intermediate commit.

Do you think it's better to keep both VarInfo and Sample and convert between them when necessary or use one data structure only?

It makes sense to unify these data structures. However, let's focus on bug fixing and make it a TODO item for the next release.


Change Link To Track Bugs On Your Backlog

The section here says:

Track bugs on your backlog
You can choose how you want to manage bugs. Some teams like to track bugs along with requirements on the backlog. Other teams like to track bugs as tasks performed in support of a requirement. The bugs then appear on their taskboard.
Before deciding, review Configure and customize, Treat bugs as requirements or tasks for guidance.

Half way down that page you reach the section you are interested in
https://docs.microsoft.com/en-us/azure/devops/boards/configure-customize?view=azure-devops&tabs=agile-process#treat-bugs-as-requirements-or-tasks
This then links to another page.
You should just link directly to that page instead.
https://docs.microsoft.com/en-us/azure/devops/organizations/settings/show-bugs-on-backlog?view=azure-devops

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

ID: 8753a98e-77ca-265d-d5e3-91a4b1319e5e
Version Independent ID: bed9697d-3bea-3202-0bf1-80f37aea0286
Content: Plan product backlog of stories, issues, & more - Azure Boards
Content Source: docs/boards/backlogs/create-your-backlog.md
Product: devops
Technology: devops-agile
GitHub Login: @KathrynEE
Microsoft Alias: kaelli

@opticyclic - Thank you for the feedback. I'll add links to both articles. If you are new to customizing Azure Boards, it's useful to be aware of all the options.


timePrecision support added

It would be great :)

Coverage remained the same at 100.0% when pulling 380ffc7a8fdff046a8cd0a3b136c8fe8dfdc6957 on ria-com:master into 93221a5d5afc762549f5820f2984eaece3f01a9b on bencevans:master.

That's great. Please could you add a test to cover this though?

Coverage remained the same at 100.0% when pulling 08aa1ba18d217b697f9557187e6969128b8ae49d on ria-com:master into 93221a5d5afc762549f5820f2984eaece3f01a9b on bencevans:master.

Coverage remained the same at 100.0% when pulling 578d60f586d5461963e713d4e242e66805276426 on ria-com:master into 93221a5d5afc762549f5820f2984eaece3f01a9b on bencevans:master.

That's great. Thank you very much :+1:


Create /run/install to restore grub2-mkconfig behaviour

Older versions of grub2-mkconfig will update the kernel arguments in BLS
files, but this now only happens when the --update-bls-cmdline argument
is passed, see [1]. Rather than pass --update-bls-cmdline, this change
creates the directory /run/install which restores the old behaviour for
new installs, see [2].
Issue: OSPCIX-200
[1] https://pkgs.devel.redhat.com/cgit/rpms/grub2/tree/0327-grub-mkconfig-dont-overwrite-BLS-cmdline-if-BLSCFG.patch?h=rhel-9.3.0
[2] https://pkgs.devel.redhat.com/cgit/rpms/grub2/tree/0328-grub2-mkconfig-Pass-all-boot-params-when-used-by-ana.patch?h=rhel-9.3.0

recheck

recheck

recheck

recheck


Simplify and Refactor constructChartDataPoints method

This was inspired by the following comment; https://github.com/opencollective/opencollective-frontend/pull/6918#pullrequestreview-806166418
We need to revisit constructChartDataPoints method and simplify it as @Betree pointed out in the above comment. This method takes care determining the correct data points for each category year, month or week.

This is already done as per, https://github.com/opencollective/opencollective-frontend/pull/7193


layers: Add checks for Image/ImageView usage

Added validation checks and updated error database.  The tests for these checks will require extended functionality from the LVL/tests device profile layer which is currently unavailable.

Test have now been added.

LGTM.


⚠ Bofrost.es has degraded performance

In b484b86, Bofrost.es (https://www.bofrost.es) experienced degraded performance:

HTTP code: 200
Response time: 1866 ms

Resolved: Bofrost.es performance has improved in d31d762 after 8 minutes.


Video buffers on seeking when AmbiLight is on

Bug description
Video buffers for a while when I press forward or backward button, or when I press J and L.
Steps to reproduce the behavior

Open any video
Press forward
Video takes a little buffering (My internet is very stable)
Turn off ambilight
Press forward
Video forwards instantly
Turn on ambilight and press forward
Forwards instantly with ambilight on too

I mean yes this is my workaround for now but it happens on every video which makes it tiresome to repeat the process.
If you want I can attach a screen recording replicating the issue if this does not happen with you.
Browser
Chrome
Operating system
Windows
Extension version
2.38.0
The bug still happens in these conditions

[X] The bug still persist when I disable all other extensions (ex. in incognito mode with only this extension enabled)
[X] When I logged out of my YouTube account (ex. in incognito mode)
[X] In incognito mode

Additional context and/or screenshots
No response

I'm unable reproduce this.
Could you attach a screenrecording and tell me which CPU and GPU you have?

I am sorry but even I am not able to reproduce the issue. It was happening last night a lot.
It can be because background processes I guess.
Next time if it happens, I will first screen record then open an issue.
Thank you and apologies for the inconvenience.

Haha, no worries


Remove Key Vault test secrets for .NET repo

Once these changes go through can you please file a follow-up item to remove these secrets in keyvault and clean-up the associated resources in our test sub.
Originally posted by @weshaggard in https://github.com/Azure/azure-sdk-for-net/pull/9127

I removed the key vault and the test secrets from the variable group. If nothing fails over the next 24-48 hours I'll remove the secrets themselves.

Resources all cleaned up.


message position from time_sent, not hardcoded.

This just means there will be one less thing to track and worry about. Time sent provides more meaningful information.

This is already implemented...


Start item tree

Looks like this can subsume our AstIdMap and HasChildSource as well, using a nice ECS approach
https://github.com/rust-analyzer/rust-analyzer/pull/3720/commits/2745a45aa185d192a8eba0ffef3735ab75179598

Data-driven design)

One thing I am unsure about is how to add handle children. The first way is
struct Tree {
  structs: Arena<Struct>,
}
struct Struct {
  fields: Arena<Field>
}

The second way is
struct Tree {
  structs: Arena<Struct>,
  fields: Arena<Field>,
}

struct Struct {
  fields: Range<Idx<Field>>
}

The advantage of the first approach is that the id of field is local to struct. Adding a new field does not shift other structs. The second scheme is the opposite.
However, the second scheme seems to be simpler and more efficient (if we discount potential incrementality benefits). In particular, handling sources would be easier. 9cbae00 implements the first version, but I think I'll switch it to the second one.

@flodiebold do you have any thoughts on https://github.com/rust-analyzer/rust-analyzer/pull/3720#issuecomment-605020271 ?

Hmm I'd have thought the incrementality benefits are kind of important... But I guess it really only makes a difference in the moment where one adds a new field somewhere, so it probably doesn't matter that much. And I like the uniformity of the second approach.

Hmm I'd have thought the incrementality benefits are kind of important...

Yeah, that's why I've started with a nested approach... OTOH, I think incrementality should not really matter in this case: for crate def map, we'll need projection query anyway, for individual items the recompute should not be too bad.
Also, super-long term I actually want to see only single global vector for all entities, and using interning to achieve stable indexes ... somehow.

Status update: got sidetracked :(

Closing due to inactivity, although this is something we absolutely have to do eventually ;-(
My current plan is to nerd-snipe @jonas-schievink into taking over this :-)


Add CPU usage for every core

This MR adds usage and icon for every CPU core. Use in format like {usage0}, {usage1} and etc. You can build nice graph for CPU with it:

P.S.
Sorry, I haven't write in C++ for years, so code can very bad.
UPD:
Found that there is relevant feature request: https://github.com/Alexays/Waybar/issues/746

Very nice!
Can you update man? :)

Very nice!
Can you update man? :)

Done.

Also, I have found eerie comment: https://github.com/Alexays/Waybar/blob/8da940f929bd8c06a30fd3d02de53e6fac2ac5f8/src/modules/cpu/common.cpp#L12
@Alexays, do you know what was it about?

Also, I have found eerie comment:
https://github.com/Alexays/Waybar/blob/8da940f929bd8c06a30fd3d02de53e6fac2ac5f8/src/modules/cpu/common.cpp#L12
@Alexays, do you know what it was about?

It was for an older version of fmt I think.
It should be ok now.

Thanks!

Rollbacked as CI failed :/

Rollbacked as CI failed :/

It didn't build on Fedora. I've checked tests of fmt lib and including fmt/args.h seems legit (https://github.com/fmtlib/fmt/blob/master/test/args-test.cc#L8). The problem seems to be, that waybar uses system's version of fmt.
I can try to create PR that will add fmt as dependency. Will you merge such PR, @Alexays?

It didn't built as Fedora (and a few more distributions according to repology) ships fmt 7.x in the stable releases. I'm pretty sure that if CI had reached Debian it would fail in the same way.
As a Fedora maintainer of waybar package, I'd prefer if we can keep compatibility with older fmt. There are policies that discourage us from having third party libraries bundled in the package source, so I'll have to deal with reverting the change downstream in Fedora.
As far as I can see, 7.x has required classes in the <fmt/core.h>. Maybe conditionally checking the fmt version and including the correct file for the installed fmt version would work for you (same way as it's already done around a few breaking fmt changes)?


Not sure what is wrong with this application.

As of right now when I click on the elements, nothing shows up whereas it is supposed to show the detailed element information.

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

ID: afaed3d8-02a0-f846-2d63-02f981a1b141
Version Independent ID: 00bb249c-2c9e-6f4a-ff0d-6a50dd3c008e
Content: Periodic Table of the Elements - Mixed Reality
Content Source: mixed-reality-docs/periodic-table-of-the-elements.md
Product: mixed-reality
Technology: mr-dev
GitHub Login: @cre8ivepark
Microsoft Alias: dongpark

@ronak1997 Closing this issue since it is about the application itself, not this documentation.
I'll follow up with the issue on Periodic Table app GitHub. Thanks!
https://github.com/microsoft/MRDL_Unity_PeriodicTable/issues/6


Plaintext output

For terminals with ANSI escape issues, plaintext output should be an option

What was I thinking? This tool is not designed for primitive terminals and the plaintext can be retrieved from the outfile.


After clicking in the "Go back" button, the user should be moved to previously selected tab [Subscriptions page]

Describe the bug
After clicking the "Go back" button, the user is always moved to the first tab, i.e. "Current subscription"
To Reproduce
Steps to reproduce the behavior:

Go to the Subscriptions page
Select i.e. "Transaction history" tab
Click on the "View transaction history" button
Click on the "Go back" button - the user is moved to the "Current subscription" tab

Expected behavior
The user should be moved again to the "Transaction history" tab.
Screenshots

The Back button correctly goes back to "/subscriptions", but there are tabs on the "/subscriptions" route that have an independent state from the route, and every time you return to "/subscriptions" the default tab will be displayed.
To display the correct tab, we could use the history package from react router and check if the previous path matches the selected bookmark

Better solution would be to bind each tab to the url route


Lift the restriction on cython

Let us see whether the restriction in cython (#21) is still required

Checklist

[x] Used a personal fork of the feedstock to propose changes
[x] Bumped the build number (if the version is unchanged)
[ ] Reset the build number to 0 (if the version changed)
[ ] Re-rendered with the latest conda-smithy (Use the phrase @conda-forge-admin, please rerender in a comment in this PR for automated rerendering)
[x] Ensured the license file is being packaged.

@matthewfeickert I can lift the restriction for cython in linux and mac, but it will be kept in the cross-compiled systems. Would that be ok? (I believe you needed to remove this restriction)

Thanks @scarlehoff but I think it would be better for the time being to keep the requirements the same across all builds (as much as possible). So I think I'd suggest keeping this in draft and then seeing if we can find a way to patch things upstream to get modern cython working.
cc @agbuckley just as a heads up that this might be showing up as a MR in the future.

Hi both. What do you think might show up as an MR in future? I've read the parallel thread, and the upper version-cap (which we don't have in the upstream package) looks like it was just related to conda-forge build details? I would definitely steer away from pushing anything like that into the official releases.

What do you think might show up as an MR in future?

Possibly fixes for aarch64 macOS (Apple silicon) builds, as these fail both on conda-forge and on local installs built from source unless DYLD_LIBRARY_PATH is explicitly set (which should always be avoided). c.f. PR #27 for more on that.

I would definitely steer away from pushing anything like that into the official releases.

Placing upper bounds should be avoided everywhere when dealing with libraries. I want to verify that there's a lower bound of cython >=3.0.0 that works across all OS. That exists now in PR #27, but there's issues with the mentioned DYLD_LIBRARY_PATH that is macOS specific (LD_LIBRARY_PATH isn't needed on Linux builds).

If it is necessary to move to cython 3, unless a bug is found, it should be fixed/patched in this package rather than upstream.

I would say it should be fixed everywhere (that want to officially support macOS builds — people might (reasonably) not be up for taking on that support). cython v0.29.x should no longer be used moving forward across any new project (to be clear I'm talking about new projects and in libraries like lhapdf — though I'm not saying that you need to take all your old research projects and refactor them to use cython v3.x). cython v0.29.x will now only get major bug fixes (https://cython.readthedocs.io/en/latest/src/changes.html#unified-release-notes), but should be migrated off of.

#27


chore: new pallet

This functionality already exists and is great for devs to kickstart the development. It creates a pallets folder with a fresh pallet folder ready to build.
Showing that it exists can also get early user feedback.

I like the idea! I would add a phrase before that to download/install Pop CLI (with a link)
Also, the running your parachain link in the README should be:

https://learn.onpop.io/v/appchains/guides/running-your-parachain

The link for "Learn about how to build using this template" was the best tutorial I could find for someone that needs info about how to start building their first pallet. I think we want something like that on the pop website, maybe trying to find the kitties example and update it.

I'd prefer to point a link to our documentation instead of: https://subdaily.io/dev/learn-to-build-substrate-pallets-from-scratch-dissecting-the-frame-pallet/  This way, we can maintain it.
The line: 👷 Start with building a new pallet is a great idea. However, as with the previous point, can we create a tutorial in our documentation and link to it instead of adding basic code? This approach will be more consistent with the rest of the points.
pop new pallet <pallet_name>

Okay. We need to define exactly what we want to add to the Pop Docs. Do we want a section called "Add a pallet to a parachain" that highlights the pop new pallet <pallet_name> command? Or do we want something more comprehensive?

@bruno can you decide whether to use this or otherwise close this draft please


Logs with console.error too large row erros

@lbosque please, could you review this one? :smile:

+1


Fixes to JS-interop code.

Basically the changes were:

Do not use the incompatible types in external definitions.
Ensure that the methods that expose Dart types do the translation .toJS as required.

Some other minor tweaks.
(Verified by running the demo app in my desktop, but please, do test on your end as well!)
((/cc @srujzs))

This looks great... merging and finalizing the update to js_interlop in the target branch.


Add confirmation fields to registrations

Adds the conditions for taking part check boxes.

Just realised that "invisible" text is being shown. Sorting.


Integrate Phaser with Webpack

Need to change webpack.config.js to work with phaser

It works, I opened a pull request


Build wouldn't start after this PR

PR
Not really sure what was happening, but i reverted the pr and worked afterwards

Prob bc of all the package.json changes

Can't really solve this without any error logs.

Lets start by making a PR of code and not changing node versions and DJS versions at the same time so we can isolate the problem

Lets start by making a PR of code and not changing node versions and DJS versions at the same time so we can isolate the problem

I didn't change the node version 🤔

@suneettipirneni you have the dockerfile. Can you try running in docker and see what happens?
@tanndlin you can share the logs yeah?

There werent logs for some reason, get it gets stuck deploying, it just restarts over and over and nothing in Papertrail
plus the build passed which is where the logs normally come from when versions are an issue

Ok let’s try docker container locally and see how it goes

We'll circle back to this once lion has proper error handling.


Calling glow api too frequently

We (glowmarkt) have been seeing a huge number of calls to the resource system since your last release - can you contact me directly so I can work with you on this - thanks clive @ hildebrand . co . uk
Thank you

Oh no...
Email sent!


Not able to play rtmp from AWS Cloudfront RTMP distribution

I can reproduce with no problem here on the their debug player: http://d1k5ny0m6d4zlj.cloudfront.net/diag/CFStreamingDiag.html
My setup is ok, cause it works fine when playing rtmp from nginx server.
I also can play the RTMP vod file from wowza flash player:
https://www.wowza.com/testplayers
host: rtmp://rtmp.conanewborn.com.br:1935/cfx/st
file/stream: entrada
My player setup:

Does anybody knows if that is a limitation or bug? Any tip?
Thanks

@daniel2surf
I tried to reproduce this stream URL
rtmp://rtmp.conanewborn.com.br:1935/cfx/st/entrada But I'm getting StreamNotFound.
Can you provide me with another valid URL?

@gfronza I just tried again... And it is playing...
Can you try again here: http://d1k5ny0m6d4zlj.cloudfront.net/diag/CFStreamingDiag.html
Streaming distribuition: rtmp.conanewborn.com.br
Video filename: entrada
Thanks

Ok now it's working! Thanks!

@daniel2surf I added some logging and noticed a security error when loading the URL. The streaming is not playing because of that. I'll add more debugging lines to help identify those cases.

@gfronza If the other rtmp players are able to play it, Clappr RTMP should play as well... Don't you think?
Any idea how to solve it?

@daniel2surf Yes, but so far I couldn't identify the reason for this MediaErrorEvent Connection Failed. I'll have to rebuild Adobe OSMF with logging directive enabled to have a more detailed view of the problem.

@daniel2surf I found the issue. OSMF (a very old Adobe project) is ruling out the application instance in the path (in your case the app instance is st. Then, when trying to connect to app /cfx without specifying the instance name, the result is Connection failed.. I never noticed this because all streaming servers I worked with used the default instance (_definst_) and OSFM has a special treatment for it (rsrs).
I have a "fork" of the OSMF project and will make the fix.

@gfronza Haha...
AWS Cloudfront RTMP is the first one behaving this way for me as well...
Good Job! Thanks

@daniel2surf I found out the the fix is that as simple as I first thought :(
As a temporary solution, is it possible for you to use the default instance? (definst)? I'm still thinking on how I'm going to solve this without breaking anything.

@gfronza Thanks for your effort. I cannot use default instance as it is all setup by aws cloudfront distribuition... The "/cfx/st/" is their standard path...
I'm using a nginx-rtmp for now...
What do you think about using as parameters: host and filename. So it would be passed to the rtmp plugin and the swf player...

@daniel2surf Adding host and filename/streamname as arguments wouldn't be a clappr-like solution. So I decided to add a boolean parameter called useAppInstance. In your case you just have to set it to true.
https://github.com/flavioribeiro/clappr-rtmp-plugin/releases/tag/0.0.14
Let me know if I can close this issue (after your validation).

@gfronza Still not able to play... Using your rtmp.min.js release...
Here is the code i'm using:

@daniel2surf the CDN (jsdelivr) is outdated due to the repo ownership change. We already asked them to update, but nothing so far. You'll have to host the SWF file yourself for now.

@gfronza Working perfect now... Thanks a lot!


Alter test case for dispatching in componentWillMount

Test case for issue https://github.com/rackt/react-redux/issues/210.
I chose to edit the existing test rather than create a new test. The original test case in question looks like it tests dispatching in componentWillMount, but it doesn't actually check if the props make it into the component the first time it is rendered. So rather than keep it as it was, I changed it so it now properly tests (and fails).

Closing as wontfix because https://github.com/rackt/react-redux/issues/210#issuecomment-166055644.


Use github.com/prometheus/common/log

github.com/prometheus/log is an old package, migrate to use "log" within
common.

Thanks!


Update all dependencies.

lib/utils.ts has a type error that can be fixed wit the following code (I didn't have the permissions to commit to this PR)
import { ReadonlyURLSearchParams } from 'next/navigation';

export const createUrl = (pathname: string, params: URLSearchParams | ReadonlyURLSearchParams) => {
  const paramsString = params.toString();
  const queryString = `${paramsString.length ? '?' : ''}${paramsString}`;

  return `${pathname}${queryString}`;
};


fix: include the given maximum amount in tier generation

Practically, that's likely not that relevant as larger values are given.
Though, intuitively I'd expect that the given amount should be part of the tiers if an exact value is given.
@jkitman thoughts?

I guess I would expect inclusive so :+1:

Sure, that makes sense.  In practice, I think you'd want to set the max based on how much you'd expect the avg user to hold to keep the anonymity sets vs. speed trade-off good.


collapsible-panel: Support heading level 5 and 6

Within CE we are working on making our headings more easily navigable for screen readers. Due to the d2l-rubrics component using the collapsible-panel component and our need to make its heading an h5, it is necessary to support this.

Looking at the component's code, this shouldn't be too hard. I don't mind getting a PR up for this

Unless there are other reasons this is not supported.

I guess core only defines up to heading4Styles so that was probably the reasoning... We only need the defined level, not the style so we could just implement the levels up to 6 and only support styles up to 4... but that's a little weird. Unsure!

Started a thread in Slack so Jeff and Abbie can weigh in if necessary.


split out HeaderString for common usage

Title: split out HeaderString for common usage
Description:
The HeaderString is heavily optimized for performance and unified the string reference and owned string.
It would be great to split it out from http for common usage.

Please provide more details on how you'd like to split it.

Now, the HeaderString is part of Http::HeaderMap (and in the http code tree), I think we could just move it to the envoy/common for common usage.

It's pretty simple update, and I can create a minor PR to achieve it.
The community can decide to accept it or not after a very quick review.

#23341


Convert web_sys Events to html Data

Convert web_sys Events to html data with From trait can improve reuse rate and readability.

My main purpose is to reuse this part of the logic when working with third-party libraries like web_sys, gloo, etc.
https://github.com/oovm/dioxus-hooks/blob/dev/projects/dioxus-use-cursor/src/hooks/use_cursor/mod.rs#L30-L48
If From is used, it must be implemented in html due to orphan rules

I've finally decided to merge this, though we might change some of the behavior in the future with some sort of compat crate that implements Into rather than From

It's been a long time, I don't have time to rebase, just squash it


customize menu

apologies, this is not an issue but a question but I couldn't find any forum for this:
Is it possible to add menu items which trigger a JS function and add a keyboard combination to it?
I've seen this comment but I cannot find any [app_folder]/resources/app/lib/main.js folder after firing the nativefier command

after some more digging I assume that nativefier is just for wrapping websites 1:1, for more customizing you need to start a electron app yourself. If anyone is interested: this is a minimal setup with keybindings some DOM mutations and a custom logo: https://github.com/philippkeller/goodbudget-electron

@philippkeller well.... yes. By definition, that's what nativefier is for. But ofc, because this project is open source, you can read the code and change what you want.
If you want all the basic functionality to act the same (url's open in default browser, badge on dock, etc), you can start with nativefier and improve on it or start with electron and just use similar solutions for some of those stuffs.
have fun! 😄

what was not clear to me: how do you make nativefier to leave the electron project lying around?

what do you mean? I'm not sure I understood the question

when I call nativefier all I get as an output is the actual os X app, but I'd want to have the electron project so I could customize things further

in order to change nativefier to your own needs, you need to:

Fork the nativefier project
Clone it to your own computer:

$ git clone <YOUR_FORK_URL>
$ cd nativefier

and then, just do what is written in the development guidelines (mimus the First clone the project section)

thanks!

You could use nativefier to build the app, right click on the packaged app > show package contents and change the generated javascript files from there as well. (Though they are compiled and bundled together)


Keyboard issue

Hi guys,
So I just ran into this. Not sure if this is the bug in development process or test process
But have a couple of fields where I will input the text for those
The first couple of line successfully type in but one line popup
 "Description" : "Failed to type string 'Curve Parent', because key [K] could not be found on the keyboard.",
Which is really weird because in the text there is no [K], so why it look for [K] on the keyboard, and how come the K can be found? it is on the keyboard anyway?
Thanks you all.

As stated in the issue template, which you ignored, we are moving support questions to Stack Overflow. Please ask a question there with the detox tag. This section is only meant for Detox issues and enhancement requests.
This issue specifically has been answered many, many times. Please use the search functionality.


GH-37648: [Packaging][Linux] Fix libarrow-glib-dev/arrow-glib-devel dependencies

Rationale for this change
Apache Arrow C GLib depends on Acero. So libarrow-glib-dev/arrow-glib-devel should depend on libarrow-acero-dev/arrow-acero-devel.
What changes are included in this PR?
Fix dependencies.
Are these changes tested?
Yes.
Are there any user-facing changes?
Yes.

@github-actions crossbow submit -g linux

+1


Fix completions broken since click>=8

Quoting click changelog for 8.0.0

The env var values used to start completion have changed order. The shell now comes first, such as {shell}source rather than > source{shell}, and is always required.

I think this fix warrants a 2.1.1 release, since missing completions are kind of a big deal for a lot of people. (Shamelessly generalizing from my experience)

Having some other issues with completion:
    from watson.__main__ import cli
  File "/nix/store/0qj8zhf7pklvwcq3ix60pa3cb9vcdcly-watson-2.1.0/lib/python3.9/site-packages/watson/__main__.py", line 3, in <module>
    cli.cli()
  File "/nix/store/ali8g6rx2lj3kb15lwxkp0d2ny0dihmz-python3.9-click-8.1.3/lib/python3.9/site-packages/click/core.py", line 1130, in __call__
    return self.main(*args, **kwargs)
  File "/nix/store/ali8g6rx2lj3kb15lwxkp0d2ny0dihmz-python3.9-click-8.1.3/lib/python3.9/site-packages/click/core.py", line 1050, in main
    self._main_shell_completion(extra, prog_name, complete_var)
  File "/nix/store/ali8g6rx2lj3kb15lwxkp0d2ny0dihmz-python3.9-click-8.1.3/lib/python3.9/site-packages/click/core.py", line 1125, in _main_shell_completion
    rv = shell_complete(self, ctx_args, prog_name, complete_var, instruction)
  File "/nix/store/ali8g6rx2lj3kb15lwxkp0d2ny0dihmz-python3.9-click-8.1.3/lib/python3.9/site-packages/click/shell_completion.py", line 49, in shell_complete
    echo(comp.complete())
  File "/nix/store/ali8g6rx2lj3kb15lwxkp0d2ny0dihmz-python3.9-click-8.1.3/lib/python3.9/site-packages/click/shell_completion.py", line 291, in complete
    completions = self.get_completions(args, incomplete)
  File "/nix/store/ali8g6rx2lj3kb15lwxkp0d2ny0dihmz-python3.9-click-8.1.3/lib/python3.9/site-packages/click/shell_completion.py", line 273, in get_completions
    return obj.shell_complete(ctx, incomplete)
  File "/nix/store/ali8g6rx2lj3kb15lwxkp0d2ny0dihmz-python3.9-click-8.1.3/lib/python3.9/site-packages/click/core.py", line 2397, in shell_complete
    results = self._custom_shell_complete(ctx, self, incomplete)
  File "/nix/store/0qj8zhf7pklvwcq3ix60pa3cb9vcdcly-watson-2.1.0/lib/python3.9/site-packages/watson/autocompletion.py", line 51, in get_project_or_task_completion
    tok.startswith("+") for tok in args + [incomplete]
TypeError: unsupported operand type(s) for +: 'Argument' and 'list'

so I'll mark this WIP for now

Thanks you for this @voidus :pray: Keep it up :muscle:

squashed the two commits

@jmaupetit could you  have a look please?

@voidus @jmaupetit any chance to get this in?

I also added this patch to https://github.com/nixos/nixpkgs so I have it installed cleanly, so I'm not in a personal rush but I'm very much up to working in any requested changes.

Rebased on main, no change was needed

I've just downloaded this locally and it looks like it's fixing the problems described in #477.

Works fine (and finally again) for me.  Completions are hard, but very useful to me.  Please include in upstream!

I will add myself to the list of affected people who would like to see this merged. Happy New Year!

@voidus Thank you very much! Used your version of watson.zsh-completion and the completion is working again!
Please finish the PR.

FYI, I've stopped using watson. I'd still be happy to tweak this PR if it needs additional work but I won't push for it to be merged.


Installer fails on last step of installation on both Kubuntu and KDE Neon

Describe the bug
As the installation nears completion, the KIO Client will launch a pop-up telling the user that a script cannot be executed "for security reasons" in that "context". This has the apparent effect of cancelling the installation. I used a fresh install of both systems. All they had newly installed was Discord.
To Reproduce
Steps to reproduce the behavior:

Use either Kubuntu or KDE Neon
Download the BetterDiscord Installer app image.
Execute the app image.
Follow all normal steps for installation (accept liscence terms, click install, choose first install method, next and wait for it to be done)

Expected behavior
A successful installation.
System Information:

Discord Version: Latest stable as of yesterday.

How are you executing the AppImage?

How are you executing the AppImage? What version of KDE are you on?

Yes. I don't know which version of KDE I was using, I think Kubuntu uses 5.21 but I'm not sure. The Neon site doesn't say which version of KDE they ship the distro with.

sorry I accidentally closed this

Run plasmashell --version and answer my other question too.

Oh sorry, I misread, I thought you typed "did you run the app image", sorry if I seemed rude! I ran the app image by double clicking it after making use it was executable in both cases.
I have since deleted KDE Neon because I was running out of space to test other distros (I was also having other problems with it, like discord stopped working and graphical glitches galore, which may or may not be related to this bug in that case), but results for Kubuntu of the above command is: 5.21.4 (do note that I have since ran multiple updates, so I don't know if the version has changed)

Does it work if you launch the AppImage from a terminal instead?

I did try at the time. I found out I need to include the option --no-sandbox, which should definitely be documented somewhere. It had the same effect. Running from terminal with sudo also doesn't work.

This might be related to rauenzi/BetterDiscordApp#694 but that shouldn't occur at the last step.
P.S. You shouldn't run random software with sudo.

The issues don't look the same to me. Also betterdiscord is something I trust, I wouldn't consider it random software. Do you?

It's almost always a bad idea to use sudo while troubleshooting, not only because it might grant root access to potentially malicious software, but also because it's more likely to break things further rather than fix them (which often happens with betterdiscordctl). The general rule of thumb is: if you don't know why you might need sudo to run a command, you shouldn't do it.
Anyway, if this installer doesn't work, you can use betterdiscordctl now that it has been updated.

Ok so, just to clarify a few things. I don't need your advice on that, those were test installations that were temporary and I knew what I was getting into and what I was doing. It feels like I'm being attacked and it's not cool, back off. Also I'm not trying the fix the issue. I'm testing several distros a day and yes it's a weird hobby, I'll understand why you're confused, but the point is, there is nothing I can do now because I've already made some space to experiment with other toys. All I wanted to do is report my findings so that the dev may become aware of the issue and what unfolded so he can recreate the conditions and fix the bug if he wants to. That is all.
I will now no longer reply unless if it's for further questions on the issue itself.

using the --no-sandbox option worked for me! I kept getting an error saying the gpu process wasn't usable in the terminal.  Im using plasma version 5.24.5

This issue also exists on Ubuntu 22.04 and Pop 22.04. It works on my Laptop which uses AMD graphics. This has probably something to do with Nvidia graphics drivers

My desktop uses AMD graphics as well, so it's not related to Nvidia. At least not in my case. Though, it's been a while since it happened and I think something changed that fixed the issue because my main is KDE Neon and before that it was Kubuntu for a while and the error never happened again.


Realsense D435 and Aero Compute Board

Required Info

Camera Model
D435

Firmware Version
<IP_ADDRESS>

Operating System & Version
Ubuntu 16.04

Kernel Version (Linux Only)
4.4.76-aero-1.2

Platform
Intel Aero Compute

SDK Version
2.0

Issue Description
I followed these instructions https://github.com/intel-aero/meta-intel-aero/wiki/90-(References)-OS-user-Installation to install ubuntu on the compute board. I installed 16.04 with kernel version 4.4.
I then proceeded to try to install the Realsense 2.0 SDK.  I tried installing via these instructions https://github.com/IntelRealSense/librealsense/blob/master/doc/distribution_linux.md.  The installation completes but with errors related to the uvcvideo kernal patch. When I run the realsense-viewer I get dropped frame errors and no depth images.  The stereo stream is the only one available.  I am plugging in the realsense through a powered USB 3.0 Hub capable of 900ma per port.
I followed up trying to build from source.  After uninstalling the previous packages, I proceeded to follow these instructions https://github.com/IntelRealSense/librealsense/blob/master/doc/installation.md.  That completes but does not show an updates to uvcvideo when running sudo dmesg | tail -n.  Same errors when I try to run realsense-viewer.
I am thinking the issue might be kernel patching issue since the aero-system package modifies the kernel as well. uname -r reports the modified 4.4 intel aero kernel.
At this time, is it possible to use the D400 series realsense modules with the aero compute board?

[Realsense Customer Engineering Team Comment]
Hi @mglidner,
Do you connect D435 in the USB3.0 OTG port?
Can you run "lsusb -t" and "rs-enumerate-devices" to show the log?
When you run 'realsense-viewer', can you also run "dmesg -wT" to show the log for the error you mentioned?

I did connect D435 to the USB3 OTG port through a USB3 OTG Cable (this one | Firmware Version | <IP_ADDRESS> |) and a USB 3.0 hub (tried both of these https://www.amazon.com/gp/product/B005AS337Y/ref=oh_aui_detailpage_o00_s00?ie=UTF8&psc=1, https://www.amazon.com/gp/product/B0725Z7PJT/ref=oh_aui_detailpage_o00_s00?ie=UTF8&psc=1).
D435 works on both hubs work successfully on a windows machine.
This is what I get on "lsusb -t"
/:  Bus 02.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/6p, 5000M /:  Bus 01.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/7p, 480M     |__ Port 1: Dev 2, If 0, Class=Hub, Driver=hub/4p, 480M         |__ Port 4: Dev 3, If 0, Class=Human Interface Device, Driver=usbhid, 12M         |__ Port 4: Dev 3, If 1, Class=Human Interface Device, Driver=usbhid, 12M         |__ Port 4: Dev 3, If 2, Class=Human Interface Device, Driver=usbhid, 12M
As you can see the realsense will not even show up despite being plugged in.  On some hubs it shows up, but always on Bus 01 as a high speed device.

[Realsense Customer Engineering Team Comment]
Hi @mgildner
Still like the USB signal quality issue which causes D435 can't be showed or recognized a USB3 device. You can try to provide the external power to your USB3 hub and use a USB3 qualified/short cable.

Hi, can you confirm that the USB C issue mentioned here might be the same problem.
The intel compute board also has a ASCI that switches the MUX from what I understand.
Is this going to require a hardware revision of the D435?
https://github.com/IntelRealSense/librealsense/issues/1391

Try to replace the uvcvideo patch script with the one (you need to replace the file extension and make it executbale in order to run it.) attached to see if it helps.
patch-realsense-ubuntu-xenial.txt
I boot the Ubuntu in Aero kernel, and here are the step-by-step instructions to make D435 work on Aero Compute Board. You might need to disconnect and reconnect DS435 several times if it's not recognized.

Install aero- system on the Ubuntu customer already installed:
echo 'deb https://download.01.org/aero/deb xenial main' | sudo tee /etc/apt/sources.list.d/intel-aero.list
wget -qO - https://download.01.org/aero/deb/intel-aero-deb.key | sudo apt-key add -
sudo apt-get update
sudo apt-get upgrade
sudo apt-get -y install gstreamer-1.0 libgstreamer-plugins-base1.0-dev libgstrtspserver-1.0-dev gstreamer1.0-vaapi gstreamer1.0-plugins-base gstreamer1.0-plugins-good gstreamer1.0-plugins-bad gstreamer1.0-libav ffmpeg v4l-utils
sudo apt-get -y install aero-system
sudo reboot
Get aero version and update BIOS
sudo aero-get-version.py
sudo aero-bios-update
sudo reboot (Use advanced option is necessary to boot to aero kernel. ‘uname -r’ should show “4.4.76-Aero-1.2” after reboot.)
Update FPGA
sudo jam -aprogram /etc/fpga/aero-compute-board.jam
Update system
sudo apt-get update && sudo apt-get upgrade && sudo apt-get dist-upgrade
sudo apt-get install --install-recommends linux-generic-lts-xenial xserver-xorg-core-lts-xenial xserver-xorg-lts-xenial xserver-xorg-video-all-lts-xenial xserver-xorg-input-all-lts-xenial libwayland-egl1-mesa-lts-xenial
sudo update-grub && sudo reboot
Install packages needed for librealsense
sudo apt-get install git cmake
sudo apt-get install libusb-1.0-0-dev pkg-config libgtk-3-dev
sudo apt-get install libglfw3-dev
Get librealsense source code and build it:
git clone https://github.com/IntelRealSense/librealsense.git (Pick a folder for the code).
Navigate to librealsense root directory and run mkdir build && cd build
cmake ../ -DBUILD_EXAMPLES=true
sudo make uninstall && make clean && make && sudo make install
Replace the “patch-realsense-ubuntu-xenial.sh” with the modified version (attached) in the librealsense root directory:
./scripts/patch-realsense-ubuntu-xenial.sh
Connect the camera and Reboot
Try if DS5 is recognized by Aero Compute Board:
ls /dev/video* should show /dev/video0, /dev/video1, …,  /dev/video12
rs_enumerate-devices should show DS5 device
rsrealsense-viewer should see depth map
Here are the web sites for reference:
a.	https://github.com/intel-aero/meta-intel-aero/wiki/90-(References)-OS-user-Installation
b.	https://github.com/IntelRealSense/librealsense/blob/master/doc/installation.md
c.	https://github.com/IntelRealSense/librealsense

Thank you for this information.  After working through the steps, the patch update script is having some issues.  First, the script uses a blank string for the kernel branch when booting with the aero kernel.  To get around this I just manual updated this string as 'master'.  This allows the patch script to find the right patch files.  However once it gets to try and patch the uvnvideo module it hangs.

Also I received an update on the Intel Aero side.  See this thread here.  It sounds like the it is not likely that we can get SuperSpeed USB3 working on the compute board without a yet to be made available cable from intel.
Were you able to find a compatible cable?  Or were you just using the D435 at highspeed USB speeds?

You might need to find a right USB-OTG3 cable.
It sounds like there is still a problem with the UVC Video patch script. The script can be run line-by-line, and it can help you to isolate the problem.

We have a similar problem on the UP Board. I ordered an OTG patch cable from their site that might fix this. Will post results on the similar UP Board thread #1391.

[Realsense Customer Engineering Team Comment]
Hi @mgildner,
Is everything going well to have a right cable?

Just a heads up, we are deploying 3 Aero compute boards and have resolved the cable issue by removing the aero board's heat sink to expose access to the USB 3.0 micro type AB header, and putting a blob of solder on the 'sense pin' bridging it with ground, so connecting pins 4 and 5. We then can connect the camera via a USB 3.0 hub with a 3.0 micro B connector using this cable https://www.digikey.com/product-detail/en/qualtek/3023007-01M/Q551-ND/2356457.
Very few cables come with this pin connected, even the qualtek one linked above did not have that internal connection on the A type plug.
See https://gct.co/images/products/usb-connector/USB-3-A-AB.jpg for details of this standard.

[Realsense Customer Engineering Team Comment]
Hi@mgildner,
If no other issue, will close this.

 Pins 4 and 5 need to be connected on the aero board - this grounds the OTG ID line.

@ChrisHughes Thank you very much :D


Trying to access settings pulls up the 'Open with' popup dialog

Environment
Windows build number: Win32NT             10.0.21322.0 Microsoft Windows NT 10.0.21322.0
Windows Terminal version (if applicable): 1.6.10571.0
Any other software?

Steps to reproduce

Press "Ctrl+,' in order to open terminal settings.

Expected behavior

Can access terminal settings -  would expect to be able to change font size/color there.
Actual behavior

A popup dialog comes up prompting me to choose the app with which to open some file - 'how do you want to open this file?'

You didn't mention a version for the Terminal, but I'm presuming you're running <1.7.*.
That's exactly by design - the settings for the Terminal are in a json file - when you click on "Settings", it'll try and open the settings.json file in whatever your default .json editor is. If there isn't one configured, then you'll get that dialog.

I'd say it should default to at least Notepad, and/or inform that settings are stored in a JSON file.

Unfortunately, when we ask the OS to open the "default json editor", I'm not sure there's a way for us to know that it couldn't find an app and let us fall back to notepad gracefully.
In 1.7 (in preview now), the terminal actually defaults to the new Settings UI, so this won't really be an issue in one release ☺.

Thanks for getting back to me.

the terminal actually defaults to the new Settings UI

do you mean that the 'default apps' page in the Windows Settings app will be opened when the terminal can't find a default JSON editor?

Thanks for getting back to me.

the terminal actually defaults to the new Settings UI

do you mean that the 'default apps' page in the Windows Settings app will be opened when the terminal can't find a default JSON editor?

Nope! This is what you'll get:


feat: truncate SHA hashes inside circuits

Will close #2019
This PR converts SHA hashing inside noir circuits from outputting 2 128-bit fields to outputting 1 248-bit field. To fit inside the field, we truncate one byte.

Noir Changes
The constant NUM_FIELDS_PER_SHA256 is now 1, so any hardcoded test values and function returns have been changed to use an array of one. I've kept it as an array rather than a single Fr to minimise changes across the repo and ensure if we want to revert NUM_FIELDS_PER_SHA256 in future, it won't be so painful. However, we can also just use a single Fr if that's preferable.
TX_EFFECTS_HASH_LOG_FIELDS
Methods:

field_from_bytes_32_trunc: Converts a 32 byte array to a 31 byte field element (useful for comparisons with new sha256_to_field), tests in types/src/utils/field.nr.
sha256_to_field: Uses the same method as the previous version to convert the sha result (BE) bytes array to field, but leaves out the final byte.
accumulate_sha256: Used almost exclusively for enc/unenc logs hashing - takes in 2 31 byte field elements, assumed to be outputs of a previous sha hash, and hashes them with sha256_to_field as a 62 byte array. Note that as before, other circuits that use sha (like tx effects hash and messages hash) do not use this method and instead create a flat byte array, then call sha256_to_field.

L1 Contract Changes
To match the Noir method, the sha256ToField function now truncates a byte and prepends a blank byte. Not prepending the blank byte means changing many struct fields from bytes32 to bytes31. This (IIRC) is the same gas cost and creates more awkward encoding, so I kept the length with a blank byte. This also changes the slither file, as I removed some of the old encoding which flagged with new encoding... which also flags.
Only the 'leaves' used in computing the txsHash in TxsDecoder and logs hashes have been changed to 31 bytes to match the Noir SHA accumulation (since we are repeating hashes of hashes).
The TS code (see below) does pack the Header struct with 31 bytes per SHA, so we must shift the decoding in HeaderLib` by 3 bytes.

TS Changes
All .hash() methods which are also computed in the circuit have been changed to match the Noir code. In most places this just means truncating a byte with .subarray(0, 31) on the buffer.
The ContentCommitment serialise/deserialise methods have been modified, as keeping NUM_BYTES_PER_SHA256 = 32 caused a lot of issues in the background. Changing it to 31 to match Noir does mean slightly different encoding, but many fewer changes across the repo (and hopefully less confusion).
Since I've kept the hash output as an array of one in Noir, there are many tuples of one in ts (for the above reasoning) - this can be changed if preferable.
Methods:

toTruncField: Mirrors Noir's field_from_bytes_32_trunc to convert to a field element - used in place of old method to2Fields (tested in free_funcs.test.ts).
fromTruncField: Converts the above back to a 31 byte buffer (tested as above).

Benchmark results
Metrics with a significant change:

note_successful_decrypting_time_in_ms (8): 219 (+54%)

Detailed results
All benchmarks are run on txs on the Benchmarking contract on the repository. Each tx consists of a batch call  to create_note and increment_balance, which guarantees that each tx has a private call, a nested private call, a public call, and a nested public call, as well as an emitted private note, an unencrypted log, and public storage read and write.
This benchmark source data is available in JSON format on S3 here.
Values are compared against data from master at commit 94922fc2 and shown if the difference exceeds 1%.
L2 block published to L1
Each column represents the number of txs on an L2 block published to L1.

Metric
8 txs
32 txs
64 txs

l1_rollup_calldata_size_in_bytes
5,668
18,820
36,356

l1_rollup_calldata_gas
65,992
238,672
468,464

l1_rollup_execution_gas
668,287
955,205
1,337,456

l2_block_processing_time_in_ms
1,273 (-1%)
4,839 (+2%)
8,927

note_successful_decrypting_time_in_ms
:warning: 219 (+54%)
560 (-1%)
926 (-2%)

note_trial_decrypting_time_in_ms
28.1 (-39%)
74.8 (-7%)
58.1 (-24%)

l2_block_building_time_in_ms
16,508 (-2%)
65,582 (-2%)
130,718 (-3%)

l2_block_rollup_simulation_time_in_ms
6,938
27,640 (-1%)
55,074 (-1%)

l2_block_public_tx_process_time_in_ms
9,544 (-4%)
37,879 (-4%)
75,539 (-4%)

L2 chain processing
Each column represents the number of blocks on the L2 chain where each block has 16 txs.

Metric
5 blocks
10 blocks

node_history_sync_time_in_ms
13,491 (-4%)
26,285 (-2%)

note_history_successful_decrypting_time_in_ms
1,248 (-3%)
2,377 (-4%)

note_history_trial_decrypting_time_in_ms
103 (-2%)
116 (-26%)

node_database_size_in_bytes
19,017,808
35,573,840

pxe_database_size_in_bytes
29,859
59,414

Circuits stats
Stats on running time and I/O sizes collected for every circuit run across all benchmarks.

Circuit
circuit_simulation_time_in_ms
circuit_input_size_in_bytes
circuit_output_size_in_bytes

private-kernel-init
235 (-15%)
44,271
27,633

private-kernel-ordering
213 (-1%)
52,257
14,259

base-rollup
614 (-3%)
177,016
861 (-7%)

root-rollup
66.0 (-3%)
4,048 (-3%)
754 (-4%)

private-kernel-inner
578 (-8%)
73,063
27,633

public-kernel-app-logic
410 (-7%)
35,096
28,148

public-kernel-tail
175 (-1%)
40,859
28,148

merge-rollup
6.90 (-16%)
2,568 (-5%)
861 (-7%)

Tree insertion stats
The duration to insert a fixed batch of leaves into each tree type.

Metric
1 leaves
16 leaves
64 leaves
128 leaves
512 leaves
1024 leaves
2048 leaves
4096 leaves
32 leaves

batch_insert_into_append_only_tree_16_depth_ms
9.77 (-1%)
15.6 (-2%)
N/A
N/A
N/A
N/A
N/A
N/A
N/A

batch_insert_into_append_only_tree_16_depth_hash_count
16.8
31.6
N/A
N/A
N/A
N/A
N/A
N/A
N/A

batch_insert_into_append_only_tree_16_depth_hash_ms
0.572 (-1%)
0.485 (-2%)
N/A
N/A
N/A
N/A
N/A
N/A
N/A

batch_insert_into_append_only_tree_32_depth_ms
N/A
N/A
44.7 (-3%)
70.9 (-1%)
229
429 (-3%)
862
1,716
N/A

batch_insert_into_append_only_tree_32_depth_hash_count
N/A
N/A
96.0
159
543
1,055
2,079
4,127
N/A

batch_insert_into_append_only_tree_32_depth_hash_ms
N/A
N/A
0.459 (-3%)
0.439 (-1%)
0.419
0.403 (-3%)
0.411
0.412
N/A

batch_insert_into_indexed_tree_20_depth_ms
N/A
N/A
53.6 (-1%)
105 (-1%)
335 (+1%)
638 (-3%)
1,309
2,595
N/A

batch_insert_into_indexed_tree_20_depth_hash_count
N/A
N/A
104
207
691
1,363
2,707
5,395
N/A

batch_insert_into_indexed_tree_20_depth_hash_ms
N/A
N/A
0.479
0.473 (-1%)
0.456
0.440 (-2%)
0.453
0.452
N/A

batch_insert_into_indexed_tree_40_depth_ms
N/A
N/A
N/A
N/A
N/A
N/A
N/A
N/A
59.5 (-2%)

batch_insert_into_indexed_tree_40_depth_hash_count
N/A
N/A
N/A
N/A
N/A
N/A
N/A
N/A
109

batch_insert_into_indexed_tree_40_depth_hash_ms
N/A
N/A
N/A
N/A
N/A
N/A
N/A
N/A
0.522 (-2%)

Miscellaneous
Transaction sizes based on how many contract classes are registered in the tx.

Metric
0 registered classes

tx_size_in_bytes
21,947

Transaction processing duration by data writes.

Metric
0 new note hashes
1 new note hashes

tx_pxe_processing_time_ms
3,828 (-3%)
1,607 (-7%)

Metric
0 public data writes
1 public data writes

tx_sequencer_processing_time_ms
10.7 (-13%)
1,162 (-6%)


figure out how to feature an image for tumblr/twitter

Right now, if someone (me) uses the tumblr bookmarklet, they get only the option to use the "default" light bulb image. Sometimes I'd like to use an image on the page.

Ran into this today. Would like to get this working by the end of the year.

This is dependent on the og:image meta tag that is set to the "featured" (ie header) image on the page, or to the default "flash bulb" image. I need to figure out how to set a "featured" image without using the built-into-Minimal-Mistakes YAML tags because that makes a large header image. Maybe a YAML header like og-image:?


rbenv fails to install any ruby version on Mac OSX Big Sur - 11.4

I am trying to use rbenv to install Ruby on my mac OSX Big Sur - 11.4.
The command fails with the following errors:
Installing ruby-2.6.7...
mkdir: /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/lib: Permission denied

BUILD FAILED (macOS 11.4 using ruby-build 20210526)

Inspect or clean up the working tree at /var/folders/40/c8b3smrj5fz8cv1zqqlc863wh1j1cg/T/ruby-build.20210609173805.99725.DVy03b
Results logged to /var/folders/40/c8b3smrj5fz8cv1zqqlc863wh1j1cg/T/ruby-build.20210609173805.99725.log

Last 10 log lines:
/Users/rohitus/.rbenv/versions/2.6.7/openssl/share/doc/openssl/html/man7/scrypt.html
/Users/rohitus/.rbenv/versions/2.6.7/openssl/share/doc/openssl/html/man7/SM2.html
/Users/rohitus/.rbenv/versions/2.6.7/openssl/share/doc/openssl/html/man7/ssl.html
/Users/rohitus/.rbenv/versions/2.6.7/openssl/share/doc/openssl/html/man7/X25519.html
/Users/rohitus/.rbenv/versions/2.6.7/openssl/share/doc/openssl/html/man7/X448.html -> /Users/rohitus/.rbenv/versions/2.6.7/openssl/share/doc/openssl/html/man7/X25519.html
/Users/rohitus/.rbenv/versions/2.6.7/openssl/share/doc/openssl/html/man7/x509.html
/var/folders/40/c8b3smrj5fz8cv1zqqlc863wh1j1cg/T/ruby-build.20210609173805.99725.DVy03b ~
~
/var/folders/40/c8b3smrj5fz8cv1zqqlc863wh1j1cg/T/ruby-build.20210609173805.99725.DVy03b ~
/var/folders/40/c8b3smrj5fz8cv1zqqlc863wh1j1cg/T/ruby-build.20210609173805.99725.DVy03b/ruby-2.6.7 /var/folders/40/c8b3smrj5fz8cv1zqqlc863wh1j1cg/T/ruby-build.20210609173805.99725.DVy03b ~

Triage details
Further debugging of the issue shows that the reason the installation fails for any version of Ruby is because on MacOS X Big Sur 11.4,  /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk is not a valid directory location.
This can be seen in the below output:
(⎈ |docker-desktop:default)➜  ~ ls -la /Library/Developer/CommandLineTools/SDKs/
  rwxr-xr-x  4  root  wheel   128 B    Thu Jun  3 18:47:42 2021    ./
  rwxr-xr-x  4  root  wheel   128 B    Thu Jun  3 18:30:07 2021    ../
  rwxr-xr-x  7  root  wheel   224 B    Tue Mar 16 22:03:17 2021    MacOSX11.3.sdk/
  rwxr-xr-x  1  root  wheel    14 B    Sat May  1 12:15:33 2021    MacOSX11.sdk  ⇒ MacOSX11.3.sdk

I had to manually create a symlink to bypass the error and continue.
Expected behaviour: Installation of Ruby should be successful. Ideally, rbenv and ruby-build plugin should be able to identify that if it is being installed on MacOS 11 then the directory locations need to be different as compared to versions of MacOS X prior to Big Sur.

+1

@Th3G4mbl3r m1?

@Th3G4mbl3r m1?

No, Intel based Mac...

I could install 2.6.7 with macOS 11.4
$ sudo rm -rf (xcode-select -print-path)
Password:
$ xcode-select --install
xcode-select: note: install requested for command line developer tools
$ ls -lA /Library/Developer/CommandLineTools/SDKs/
lrwxr-xr-x root wheel  14 B Thu Jun 17 10:58:36 2021 MacOSX.sdk ⇒ MacOSX11.3.sdk
drwxr-xr-x root wheel 256 B Thu Jun 17 10:58:35 2021 MacOSX10.15.sdk
drwxr-xr-x root wheel 224 B Mon Nov 30 21:33:49 2020 MacOSX11.1.sdk
drwxr-xr-x root wheel 224 B Tue Mar 16 23:03:17 2021 MacOSX11.3.sdk
lrwxr-xr-x root wheel  14 B Thu Jun 17 10:56:07 2021 MacOSX11.sdk ⇒ MacOSX11.3.sdk
$ CFLAGS="-Wno-error=implicit-function-declaration" rbenv install 2.6.7
Installing openssl-1.1.1k...
Installed openssl-1.1.1k to /Users/hsbt/.local/share/rbenv/versions/2.6.7

Installing ruby-2.6.7...
ruby-build: using readline from homebrew
Installed ruby-2.6.7 to /Users/hsbt/.local/share/rbenv/versions/2.6.7