Can we discuss a better way to specify data context for component à la partials :)

I've yet to have a ractive project where I don't end up creating a loop of components like this:
 {{#each stuff}}
    <thing ../>
 {{/each}}

Where the  the <thing/> component needs to have several to dozens of properties set. It's asinine to map all of them as html attribute="value" pairs, especially when they can change quite frequently when rapidly prototyping.
 You get all sorts of oddities with two way binding and you have to be super careful not to overwrite properties, or even return new computed objects via slice or something—as any of that will break two way binding. It gets even more hairy when you realize that some primitives are always passed by value whereas objects aren't, so you have to wrap things in {value: "foo"} or instead revert to
{{model.foo}}
 in your template.
What makes me most sad is that partials sort of already have this figured out and it makes components look second-class:
{{#stuff}}
    {{> thing someData}}
{{/}}

Would it be hard to do something like?
{{#stuff}}
    <thing someData/>
{{/}}

Perhaps a reserved default attribute that acts like Ractive.defaults.data for the component instance.
{{#stuff}}
  <thing default="{{ someData }}" />
{{/}}

Why not just reference the data implicitly and not pass anything? You can always pin down the parameters later...

Also, see this conversation

What @martypdx said. I forgot to mention the implicit data part

@martypdx @Madgvox By 'implicit' do you mean accessing the parent's/roots properties directly as if they were on the component's viewmodel?

@JonDum yep, if you have isolated:false on the component, you can access the parent context.

I see. What if you have components within components within components? What about naming conflicts? What about third party components via npm or web component? Implicitness makes it unclear what is part of the component and what is part of the parent chain, and tracking that down later leads to sloppier, more bug prone code.
To me, sharing parent contexts is a feature of a partial. When I need data encapsulation I go to a component, but currently this issue makes it very hard (I would even go as far as saying components should be isolated by default once we have some sort of mechanism to pass a data context).
I don't think it'd be that complicated of a feature to add, no? All I'm thinking is the data: {} object on the prototype would be defaults and merged with whatever is passed to the <component data/> call. Like a set() before the component is initialized.
I wouldn't mind tackling it myself either if there's no resistance to that effort.

I tend to rely on implicit mappings a lot as well, but I can get away with that because my day job is to write code that doesn't require long term maintenance (as long as you can hammer it roughly into shape by the deadline, it doesn't really matter that it's covered in hammer dents). For larger projects, I agree that it's not ideal.
So I've occasionally done <Thing model='{{this}}'/> as well, but instead of this.set(model) (which causes all the problems you identified) I just have to remember to use {{model.prop}} and so forth. Also not ideal, but preferable out of those two options I think (you can always just wrap the entire component template in a {{#with model}}...{{/with}} if it's an issue).
Anyway: I quite like @Madgvox's suggestion of a reserved word, though I'd pick a different one:
<Thing this='{{this}}' other='{{other}}'/>

this is already used in templates to mean 'the current thing', so that would make sense I think. Implementation-wise, I'd see this as working like so, if you found e.g. {{foo}} in the component template:

Does foo exist in the current context? If so use that
Does foo exist at the root of Thing's viewmodel, as data, a computed property or an explicit mapping? If so use that
Does the this object have a foo property? If so use that
Is Thing isolated? If so stop
Does foo exist in a parent context? If so use that
foo is unresolved

In other words, 3) is the only new step. It wouldn't be 'mixed in' with Thing's data, it would be another form of mapping (this is more efficient, preserves SSOT and all that).

So I've occasionally done  as well, but instead of this.set(model) (which causes all the problems you identified) I just have to remember to use {{model.prop}} and so forth.

This is what I've been doing in components and has worked pretty well so far.

<time-widget time="{{ timeObject }}" />

  {{time.hours}}:
  {{time.minutes}}:
  {{time.seconds}}

The only hurdle I face is to remember that time is an object. And being an object, the default value must be wrapped in a data function. Other than that, everything Ractive has already covers this.

Anyway: I quite like @Madgvox's suggestion of a reserved word, though I'd pick a different one:

data would be a good property name to be consistent with data in the config. This would auto-spread the object into the top-level properties. For instance, if <time-widget> accepted hours, minutes and seconds, the following would be equivalent:

<time-widget data="{{ timeObject }}" />

<time-widget hours="{{ timeObject.hours}}" minutes="{{ timeObject.minutes }}" seconds="{{ timeObject.seconds }}" />

If this spread is done, and a property is explicitly defined as well, I'd vote that the explicit one override the one from the object.
my 2c.

I'm a little nervous about data because it's not wildly uncommon for an object to have a property by that name, in my experience. Whereas this is much less likely, partly because it's a keyword but also because e.g. user.this doesn't really make any sense whereas user.data totally does. Also, in a template you can do {{this.foo}} (you wouldn't, because you'd just use {{foo}}, but it basically means the same thing), so the semantics dovetail nicely.
A separate point to consider though: with <Thing this='{{myObj}}'/>, if inside Thing we set data that wasn't on myObj (e.g. this.set('foo', 'bar'), when there's no myObj.foo), does that mutate myObj? My feeling is that it shouldn't, but we should probably think it through.

+1 on keyword this. I use <Thing d="{{.}}" /> a lot. having <Thing this="{{.}}" /> would be totally awesome
+1 +1 :)

+1 for this, much clearer intent.

I like the this='{{this}}' syntax as well and the extra step 3 would totally solve my problem! If I'm to play devil's advocate though, I'd say that it looks like a normal and valid html attribute so the new user might not think it does anything special until they read a small paragraph in the Components docs. <Thing {{this}} other="{{other}}"/>, on the other hand, is clear that something special is going on and if the user has any familiarity with partials will recognize the similar syntax, no?

A separate point to consider though: with , if inside Thing we set data that wasn't on myObj (e.g. this.set('foo', 'bar'), when there's no myObj.foo), does that mutate myObj?

Definitely yes, which is why I suggested just set()ing the data passed in instead of maintaining another "ghost" this object that needs to be tracked and updated.
I've made two major SPAs with Ractive now and I use components to encapsulate everything from entire pages of the site to autosizing text inputs, to complex "blocks" in a block programming application. Most of the time I would not only want myObj to be updated, but every new, non-computed property on the data viewmodel of the component should be synced to the backing parent context (myObj, in your scenario). This is actually how I thought isolated worked at first!
I assumed that was the case because of the way partials worked. The docs talk heavily about how partials share context but can also be passed a specific context, Yet, if you need data encapsulation you should use a component. At the time, I thought that it would be silly for components to be able to access parent references like that because that's what partials did so surely isolated did something akin to not updating the backing context myObj instead of just blocking parent references (which isn't that useful of a thing imo).

While I understand the desire, I suspect the dichotomy between data as registry of data (which it currently is) versus data as an meaningful domain object (which this would make it) means it will not end by the time all the upwards updating cases are considered.
As a alternative suggestion, what if ractive options included a defaultContext that accepted a keypath and essentially used that as the starting context for the template?
const Time = Ractive.extend({
    defaultContext: 'time',
    ...
});

<time-widget time="{{ timeObject }}" />

  {{hours}}:
  {{minutes}}:
  {{seconds}}

That's what made partial context work, would be more broadly useful, and tons simpler to implement.

@JonDum my suggestion to use implicit data was directed at your "especially when they can change quite frequently when rapidly prototyping." comment, not that you should or shouldn't use isolated one way or the other.

my suggestion to use implicit data was directed at your "especially when they can change quite frequently when rapidly prototyping." comment, not that you should or shouldn't use isolated one way or the other.

@martypdx Ah for sure. I think it's a good suggestion but I hadn't correctly communicated my real reasoning at that point (it was also like 3am :P).

As a alternative suggestion, what if ractive options included a defaultContext that accepted a keypath and essentially used that as the starting context for the template?

That's an interesting idea actually. I presume it would be like wrapping the template in a {{#with}} statement for you?

Most of the time I would not only want myObj to be updated, but every new, non-computed property on the data viewmodel of the component should be synced to the backing parent context

I had a bit of a think about this, and it occurred to me that there's a very good reason you wouldn't want that behaviour – a component could never have private properties! It would be like destroying the distinction between this.props and this.state in a React component. For example if a component had a highlight effect on hover, you probably wouldn't want that reflected higher up – it would be a private highlighted property or something. Whereas going the other way, you could always force a link between foo (in the component) and myObj.foo by ensuring that myObj had a foo property (null, if necessary) to start with.

what if ractive options included a defaultContext that accepted a keypath

Would that just apply to the template? Or would this.get('minutes') with a defaultContext of time be the same as this.get('time.minutes') without one?

a component could never have private properties

Yea this is tricky. I personally don't mind if a var gets reflected higher up, because it'll be encapsulated within the object that it was passed anyways — it doesn't leak to the parent, just an object on the parent.
I can't say the same for everyone else, though.

Oh, I finally got what @Rich-Harris meant: instead of trying to set the data, set the context. The implicit reference lookup functionality works correctly, it's just overly broad in what it allows.
Yeah, that makes a lot of sense. Avoids the messy redefining of root and would even support both isolated settings. Would totally work, we should do that :)
Would it be more clear if we used @context? Or is the not strictly legal attribute an issue?
{{#each stuff}}
    <thing @context='{{this}}' foo='{{bar + 2}}' index='{{@index}}' on-qux='something()'/>
{{/each}}

It should also override event.context for component events.

Throwing in my 2¢:
For context, I use ractive to build a multi-page app, and I set Ractive.defaults.isolated = true for maintainability reasons.
Adding a new step in the resolution algorithm (as proposed by @Rich-Harris) seems like heaping complexity on top of what is already a pretty tricky concept. data, computed properties, explicit mappings, AND a this mapping all contributing to a "load path" for template variables seems like too many things IMO. Merging multiple sources of data (with the potential for name conflicts & undefined behavior) gets more dangerous as the number of sources goes up. Perhaps it's growing pains with using Ractive in a larger app, but if anything, I would prefer to explicitly separate these sources of data somehow, similar to props vs state.
I'm not a big fan of the JSX syntax, but I do appreciate how <Component {...this.props} plus="extra"> leans on ES6 rest parameters / destructuring paradigms. In Ractive, maybe it could look like: <thing {{...this}} plus="more">. To me, this reads as setting up individual explicit links for each own property of this, which is more grok-able than a new resolution step.

@thomsbg I'm glad I'm not the only one who prefers that syntax.
Also, the current solution rich/chris has proposed doesn't merge anything like I suggested. It's more like a couple series of checks. Is it defined on the component's data? No? Ok, now check the alternate context. Still not defined? Ok check it's parent if it's not isolated... etc.

Maybe "merge" was the wrong word. After dwelling on it, the main thing I worry with adding those extra checks is ambiguity about what to do for set(), or what would happen when keys are added or removed from the provided context. For example:
// inside outer-component, myObj is { foo: 'bar' }
<inner-component this="{{ myObj }}">

What happens when outer-component does set('myObj.newKey', 'something')?
What happens when outer-component does set('myObj', 1234)?
What happens when outer-component does set('myObj', { totallyDifferentKey: 'value' })?
What happens when inner-component does reset({ something: 'else' })?
What happens when inner-component does `set('newKey', 'something')?

Having a component's data context act dynamically like this makes me sweat. What if instead of dynamically passing along each key/value pair from an object, there was a shorthand for sending along named keys from an object, a la ES6 shorthand { foo, bar } = myObj? Something like:
<inner-component foo,bar,baz="{{myObj}}">

// or perhaps
{{#myObj}}
  <inner-component {{foo,bar,baz}}>
{{/myObj}}

// simply having a shorthand for foo="{{foo}}" would be helpful
<inner-component {{=foo}}>

Not married to any of these ideas, just brainstorming here.

@thomsbg:

What happens when outer-component does set('myObj.newKey', 'something')?

Totally depends on whether or not inner-component uses {{newKey}}. If not, nothing would happen (inside inner-component).

What happens when outer-component does set('myObj', 1234)?

In your example assuming {{foo}} existed in inner-component template, it would now be undefined.

What happens when outer-component does set('myObj', { totallyDifferentKey: 'value' })?

Again, {{foo}} would be undefined. If the inner-component references {{totallyDifferentKey}}, it would now have a value of value.

What happens when inner-component does reset({ something: 'else' })?

Good edge case, we'll have to see. I suspect what your doing is resetting the default component data.

What happens when inner-component does set('newKey', 'something')?

If the inner-component does not have data defined as newKey, then it would be set on myObj as myObj.newKey.
This makes sense when you think about components as not having control over the context being set, but having complete control what properties will be utilized from the context and what default data should be.
Consider <user this='{{user}}'/> with component template: First: <input value='{{first}}'>, Last: <input value='{{last}}'>.
It doesn't matter if it gets passed { first: 'Marty', last: 'Nelson' }, { last: 'Nelson' }, {}, or even undefined - all work correctly.
Now if I want to define component behavior (state) versus data, I can add to the component definition data: { readonly: false } and change template to  <input value='{{first}}' readonly='{{readonly}}'>, etc. and now this property will never be added to or read from the context. But it can be provided as an additional parameter: <user this='{{user}}' readonly='true'/>. (IMO will still could benefit from separate state bucket from data bucket, but that's for another day)

Closing since this="{{this}} " is implemented in edge :+1:

Is it?

Yes? http://jsfiddle.net/n1u0cf85/

Ah! Unfortunately no. If you turn on isolation, you lose your ability to resolve from template context and the fiddle stops working: http://jsfiddle.net/n1u0cf85/1/
For a minute there, I thought I spaced on how that would have had to have been implemented. :smile:

Oh yea, doh! I always have isolation turned on, so I forgot that it's off by default.

You can achieve a mapping spread with a partial now, which isn't exactly setting the context, but I think between that sort of thing and components where a context name falls out naturally, this is covered to close enough. If not, feel free to reopen 😄.


Test phrase comments on PRs not triggering build

Jenkins 2.19.4, ghprb 1.33.4
Seems that leaving

@BrewTestBot test this please

isn't triggering the build.
Configuration:

Check the system (jenkins) logs, it's mostly because you are not specifying a secret on github.

Is that a change since 1.33.1?

@AudriusButkevicius to be explicit: this is a new bug that does not occur with 1.33.1. My underlying configuration has not changed, and downgrading fixes it.

I think some specific version started enforcing secrets, so not much of a bug but a security feature. Regardless, you should look at the logs and you'll know if thats the problem or not.

@AudriusButkevicius yup that fixed. You're my hero :)

Looks like there still may be a bug here. I had to one of them twice for it to register and sure enough the log reflects that:
Pull request #2,105 was updated on repo Homebrew/homebrew-science but there aren't any new comments nor commits; that may mean that commit status was updated.

Dec 06, 2016 3:28:06 PM INFO org.jenkinsci.plugins.ghprb.GhprbPullRequest updatePR

Pull request #2,034 was updated on repo Homebrew/homebrew-science but there aren't any new comments nor commits; that may mean that commit status was updated.

Dec 06, 2016 3:28:09 PM INFO org.jenkinsci.plugins.ghprb.GhprbRootAction handleAction

Checking issue comment '@BrewTestBot test this please' for repo Homebrew/homebrew-core

Dec 06, 2016 3:28:09 PM INFO org.jenkinsci.plugins.ghprb.GhprbGitHubAuth checkSignature

Signatures checking OK

Dec 06, 2016 3:28:09 PM INFO org.jenkinsci.plugins.ghprb.GhprbTrigger handleComment

Checking comment on PR #7,564 for job Homebrew Core

Dec 06, 2016 3:28:09 PM INFO org.jenkinsci.plugins.ghprb.GhprbPullRequest updatePR

Pull request #7,564 was updated/initialized on Homebrew/homebrew-core at 06/12/16 15:28 by null (comment)

Dec 06, 2016 3:28:09 PM INFO org.jenkinsci.plugins.ghprb.GhprbRootAction handleAction

Checking issue comment '@BrewTestBot test this please' for repo Homebrew/homebrew-core

Dec 06, 2016 3:28:09 PM SEVERE org.jenkinsci.plugins.ghprb.GhprbGitHubAuth checkSignature

Request doesn't contain a signature. Check that github has a secret that should be attached to the hook

Dec 06, 2016 3:28:12 PM INFO hudson.model.Run execute

Homebrew Bottles #65543 main build action completed: SUCCESS

Dec 06, 2016 3:29:07 PM INFO org.jenkinsci.plugins.ghprb.GhprbPullRequest updatePR

Pull request #134 was updated on repo Homebrew/homebrew-apache but there aren't any new comments nor commits; that may mean that commit status was updated.

Dec 06, 2016 3:29:07 PM INFO org.jenkinsci.plugins.ghprb.GhprbPullRequest updatePR

Pull request #117 was updated on repo Homebrew/homebrew-apache but there aren't any new comments nor commits; that may mean that commit status was updated.

Well the log still talks about signature mismatches which implies there is still a secret missing somewhere

https://github.com/Homebrew/homebrew-core/pull/7564
Seems like it's just randomly dropping some of them.

OK I just fired off
5301, 6566, 5986, 5950, 6750, 6764, 5490, 5756, 5828, 5881, 6620, 6936, 6451, 6982
in quick succession. It likes like only 5301 and 6566 actually triggered the build.
So looks like I'm going to have to downgrade again :(

Well this is weird: https://bot.brew.sh/job/Homebrew Core/12736/version=any_sierra/console
Um, wow ... :)
Started by upstream project "Homebrew Core" build number 12736
originally caused by:
 GitHub pull request #6566 of commit 437f42c8f4a6d15c31e6fdafaf04e6df24b2c612, no merge conflicts.
 GitHub pull request #5986 of commit b095a7dbd76bf1f895c59183adf9eedb361890ac, no merge conflicts.
 GitHub pull request #5950 of commit<PHONE_NUMBER>8d41a7c8c0fc3dd525eb28ec513c0a, has merge conflicts.
 GitHub pull request #6750 of commit 076d4c66ac84e3562f688eb27a47cbdc2286fcf5, no merge conflicts.
 GitHub pull request #6764 of commit 04aea8802603cb149ce0465508f7c4079ba766d3, no merge conflicts.
 GitHub pull request #5490 of commit 390c31eb4bb5f0ff62e9fc9909d77adf1f380c5b, no merge conflicts.
 GitHub pull request #5756 of commit 4035beec3404908eb37bfe19c1216e9a6a216101, has merge conflicts.
 GitHub pull request #5828 of commit eefd630c607ab59236bdc04c81dce39d4234cc03, no merge conflicts.
 GitHub pull request #5881 of commit 08166fd22c728e11cc89d2cc9755e90c2c0364e9, no merge conflicts.
 GitHub pull request #6620 of commit c30bd8e1effee167ba050bab9704c6f889d59ac9, no merge conflicts.
 GitHub pull request #7595 of commit 96d851f98f96e9f6c49fb40095cbdfa569f3581a, no merge conflicts.
 GitHub pull request #6936 of commit 2f2433244383985263fd10765c6825786fb66052, no merge conflicts.
 GitHub pull request #6451 of commit cc66169fb756d2ac55971ee11be2c6c1aff0e27d, no merge conflicts.
 GitHub pull request #6982 of commit 3011fe0d69cf44f46aad5a0e396754d0279adf90, no merge conflicts.
[EnvInject] - Loading node environment variables.

OK, I downgraded and now all builds triggered as expected. So I'm going to need to leave it on the older version for now since this has to work or the other Homebrew maintainers will probably do something unpleasant to me :)

@ilovezfs Interesting. And, just from a high-level, when upgrading to the latest, did you restart services?
Did you happen to look at your logs with the FINE setting to see more detail from ghprb?

Yeah, I unloaded the plist and then reloaded it.

Did you happen to look at your logs with the FINE setting to see more detail from ghprb?

Nope.
You'll have to tell me a bit more about how to do that and where the log files are that you want because I'm quite Jenkins-ignorant.

@ilovezfs Sorry I'm not sure what you mean by plist
In terms of logging, you can peek in on more fine-grained logging in particular plugin classes. Here's a screenshot of a logger we set up.
To set up a logger, go to Manage Jenkins > System Log, then use the "Add new log recorder" button.

Hi - I've been looking at this issue this morning, and have not been able to reproduce it. I wonder if you could provide more details?

Hi all, found this while debugging a very similar issue. We just upgraded to the latest, this was working fine before (unfortunately I didn't write down which version we had previously but it was >1 year old).
I enabled the custom logs as suggested above, and our logs mention "Use webHooks is set, so not running trigger".
I created the webhooks manually as I don't want our CI to have admin privileges, but I'm fairly confident that these are correct as we used this setup w/o problems for some years.
We have the "Test phrase" setting set in the global settings ({serverurl}/configure) which is set to the default regex ".test\W+this\W+please."
The specific jobs did not override this setting (the field left empty) but we noticed now that actually stating it explicitly in the job fixes the missing build trigger. Possibly a problem with how the blank setting is interpreted?
We are also seeing new PRs not being triggered, but couldn't identify a pattern yet.
Our CI is publicly accessible, in case that helps this is one of the jobs triggered by github PRs: http://ci.hibernate.org/view/Search/job/hibernate-search-PR/

I believe I am starting to see the same problem. I recently enabled "Only use trigger phrase for build triggering" on a project that was overwhelming our job queue. We decided to establish a process to require the trigger phrase from an admin when a PR was ready to be build, but the result is that none of the PR's are built with this option enabled.
I have tried statically setting "test this please" as the global test phrase, and "ok to test" as the trigger phrase globally and on the specific project, with no effect.
If I disable/uncheck "Only use trigger phrase for build triggering", test phrase triggering works properly.
It is behaving like a regression of: https://github.com/janinko/ghprb/issues/153

Here's a logging example of the behavior with the option enabled, and without the option enabled:
`
=== With “Only use trigger phrase for build triggering" enabled ===
Mar 02, 2017 6:18:01 PM INFO org.jenkinsci.plugins.ghprb.GhprbPullRequest updatePR
Pull request #1,708 was updated/initialized on codice/ddf at 3/2/17 6:17 PM by null (PR update)
Mar 02, 2017 6:18:01 PM FINEST org.jenkinsci.plugins.ghprb.GhprbPullRequest checkComments
Checking for comments after: 3/2/17 5:17 PM
Mar 02, 2017 6:18:02 PM FINEST org.jenkinsci.plugins.ghprb.GhprbPullRequest checkComments
Comment was made at: 2/20/17 11:06 AM
Mar 02, 2017 6:18:02 PM FINEST org.jenkinsci.plugins.ghprb.GhprbPullRequest checkComments
Comment was made at: 2/21/17 10:59 AM
Mar 02, 2017 6:18:02 PM FINEST org.jenkinsci.plugins.ghprb.GhprbPullRequest checkComments
Comment was made at: 2/21/17 4:40 PM
Mar 02, 2017 6:18:02 PM FINEST org.jenkinsci.plugins.ghprb.GhprbPullRequest checkComments
Comment was made at: 2/23/17 2:58 PM
Mar 02, 2017 6:18:02 PM FINEST org.jenkinsci.plugins.ghprb.GhprbPullRequest checkComments
Comment was made at: 2/27/17 6:32 PM
Mar 02, 2017 6:18:02 PM FINEST org.jenkinsci.plugins.ghprb.GhprbPullRequest checkComments
Comment was made at: 2/28/17 11:47 AM
Mar 02, 2017 6:18:02 PM FINEST org.jenkinsci.plugins.ghprb.GhprbPullRequest checkComments
Comment was made at: 3/2/17 12:30 PM
Mar 02, 2017 6:18:02 PM FINEST org.jenkinsci.plugins.ghprb.GhprbPullRequest checkComments
Comment was made at: 3/2/17 6:17 PM
Mar 02, 2017 6:18:02 PM FINEST org.jenkinsci.plugins.ghprb.GhprbPullRequest checkComments
Comment was made after last update time, ok to test
Mar 02, 2017 6:18:02 PM FINEST org.jenkinsci.plugins.ghprb.GhprbPullRequest checkComment
[Matthew Bates] Added comment: ok to test
Mar 02, 2017 6:18:02 PM FINEST org.jenkinsci.plugins.ghprb.GhprbPullRequest checkComment
Admin GHUser@1e9a64db[login=LinkMJB,location=Phoenix, AZ,blog=https://github.com/connexta,email=,name=Matthew Bates,company=Connexta,followers=0,following=0,url=https://api.github.com/users/LinkMJB,id=8824103] gave OK to test
=== Without “Only use trigger phrase for build triggering" enabled ===
Mar 02, 2017 6:24:02 PM INFO org.jenkinsci.plugins.ghprb.GhprbPullRequest updatePR
Pull request #1,708 was updated/initialized on codice/ddf at 3/2/17 6:17 PM by null (PR update)
Mar 02, 2017 6:24:02 PM FINEST org.jenkinsci.plugins.ghprb.GhprbPullRequest checkComments
Checking for comments after: 3/2/17 5:17 PM
Mar 02, 2017 6:24:02 PM FINEST org.jenkinsci.plugins.ghprb.GhprbPullRequest checkComments
Comment was made at: 2/20/17 11:06 AM
Mar 02, 2017 6:24:02 PM FINEST org.jenkinsci.plugins.ghprb.GhprbPullRequest checkComments
Comment was made at: 2/21/17 10:59 AM
Mar 02, 2017 6:24:02 PM FINEST org.jenkinsci.plugins.ghprb.GhprbPullRequest checkComments
Comment was made at: 2/21/17 4:40 PM
Mar 02, 2017 6:24:02 PM FINEST org.jenkinsci.plugins.ghprb.GhprbPullRequest checkComments
Comment was made at: 2/23/17 2:58 PM
Mar 02, 2017 6:24:02 PM FINEST org.jenkinsci.plugins.ghprb.GhprbPullRequest checkComments
Comment was made at: 2/27/17 6:32 PM
Mar 02, 2017 6:24:02 PM FINEST org.jenkinsci.plugins.ghprb.GhprbPullRequest checkComments
Comment was made at: 2/28/17 11:47 AM
Mar 02, 2017 6:24:02 PM FINEST org.jenkinsci.plugins.ghprb.GhprbPullRequest checkComments
Comment was made at: 3/2/17 12:30 PM
Mar 02, 2017 6:24:02 PM FINEST org.jenkinsci.plugins.ghprb.GhprbPullRequest checkComments
Comment was made at: 3/2/17 6:17 PM
Mar 02, 2017 6:24:02 PM FINEST org.jenkinsci.plugins.ghprb.GhprbPullRequest checkComments
Comment was made after last update time, ok to test
Mar 02, 2017 6:24:02 PM FINEST org.jenkinsci.plugins.ghprb.GhprbPullRequest checkComment
[Matthew Bates] Added comment: ok to test
Mar 02, 2017 6:24:02 PM FINEST org.jenkinsci.plugins.ghprb.GhprbPullRequest checkComment
Admin GHUser@14508904[login=LinkMJB,location=Phoenix, AZ,blog=https://github.com/connexta,email=,name=Matthew Bates,company=Connexta,followers=0,following=0,url=https://api.github.com/users/LinkMJB,id=8824103] gave OK to test
Mar 02, 2017 6:24:02 PM FINEST org.jenkinsci.plugins.ghprb.GhprbPullRequest tryBuild
Running the build
Mar 02, 2017 6:24:02 PM FINEST org.jenkinsci.plugins.ghprb.GhprbPullRequest tryBuild
PR is not null, checking if mergable
Mar 02, 2017 6:24:03 PM FINEST org.jenkinsci.plugins.ghprb.GhprbPullRequest tryBuild
Running build...
`

Some more details -- when trying to use the retest phrase it claims that the target branch is either not listed in the whitelist, even though it is -- or that it is not triggered. I haven't been able to figure out the context of the logs in regard to which job/branch the PR poll is performed for/by.
Is this plugin only supported to be used as a single Jenkins project for PR builds against an entire github repo? We have separate jobs created for each branch, in our configuration.
From the master branch PR builder job's config.xml:
       <whiteListTargetBranches>
  <org.jenkinsci.plugins.ghprb.GhprbBranch>
          <branch>master</branch>
        </org.jenkinsci.plugins.ghprb.GhprbBranch>
      </whiteListTargetBranches>
From the org.jenkinsci.plugins.ghprb.GhprbPullRequest logger:

Pull request #1,708 was updated/initialized on codice/ddf at 3/3/17 9:07 AM by null (PR update)
Mar 03, 2017 9:08:02 AM FINEST org.jenkinsci.plugins.ghprb.GhprbPullRequest checkComments
Checking for comments after: 3/3/17 8:38 AM
Mar 03, 2017 9:08:02 AM FINEST org.jenkinsci.plugins.ghprb.GhprbPullRequest checkComments
Comment was made at: 2/20/17 11:06 AM
Mar 03, 2017 9:08:02 AM FINEST org.jenkinsci.plugins.ghprb.GhprbPullRequest checkComments
Comment was made at: 2/21/17 10:59 AM
Mar 03, 2017 9:08:02 AM FINEST org.jenkinsci.plugins.ghprb.GhprbPullRequest checkComments
Comment was made at: 2/21/17 4:40 PM
Mar 03, 2017 9:08:02 AM FINEST org.jenkinsci.plugins.ghprb.GhprbPullRequest checkComments
Comment was made at: 2/23/17 2:58 PM
Mar 03, 2017 9:08:02 AM FINEST org.jenkinsci.plugins.ghprb.GhprbPullRequest checkComments
Comment was made at: 2/27/17 6:32 PM
Mar 03, 2017 9:08:02 AM FINEST org.jenkinsci.plugins.ghprb.GhprbPullRequest checkComments
Comment was made at: 2/28/17 11:47 AM
Mar 03, 2017 9:08:02 AM FINEST org.jenkinsci.plugins.ghprb.GhprbPullRequest checkComments
Comment was made at: 3/2/17 12:30 PM
Mar 03, 2017 9:08:02 AM FINEST org.jenkinsci.plugins.ghprb.GhprbPullRequest checkComments
Comment was made at: 3/2/17 6:17 PM
Mar 03, 2017 9:08:02 AM FINEST org.jenkinsci.plugins.ghprb.GhprbPullRequest checkComments
Comment was made at: 3/3/17 12:41 AM
Mar 03, 2017 9:08:02 AM FINEST org.jenkinsci.plugins.ghprb.GhprbPullRequest checkComments
Comment was made at: 3/3/17 9:07 AM
Mar 03, 2017 9:08:02 AM FINEST org.jenkinsci.plugins.ghprb.GhprbPullRequest checkComments
Comment was made after last update time, test this please
Mar 03, 2017 9:08:02 AM FINEST org.jenkinsci.plugins.ghprb.GhprbPullRequest checkComment
[Matthew Bates] Added comment: test this please
Mar 03, 2017 9:08:02 AM FINEST org.jenkinsci.plugins.ghprb.GhprbPullRequest checkComment
Retest phrase
Mar 03, 2017 9:08:02 AM FINEST org.jenkinsci.plugins.ghprb.GhprbPullRequest checkComment
Admin GHUser@1e9a64db[login=LinkMJB,location=Phoenix, AZ,blog=https://github.com/connexta,email=,name=Matthew Bates,company=Connexta,followers=0,following=0,url=https://api.github.com/users/LinkMJB,id=8824103] gave retest phrase
Mar 03, 2017 9:08:02 AM FINEST org.jenkinsci.plugins.ghprb.GhprbPullRequest isAllowedTargetBranch
PR #1,708 target branch: master isn't in our whitelist of target branches: org.jenkinsci.plugins.ghprb.GhprbBranch@7fa99c02
Mar 03, 2017 9:08:02 AM FINEST org.jenkinsci.plugins.ghprb.GhprbPullRequest tryBuild
Branch is not whitelisted or is blacklisted, skipping the build

Another run

Pull request #1,708 was updated/initialized on codice/ddf at 3/3/17 9:07 AM by null (PR update)
Mar 03, 2017 9:14:02 AM FINEST org.jenkinsci.plugins.ghprb.GhprbPullRequest checkComments
Checking for comments after: 3/3/17 8:38 AM
Mar 03, 2017 9:14:02 AM FINEST org.jenkinsci.plugins.ghprb.GhprbPullRequest checkComments
Comment was made at: 2/20/17 11:06 AM
Mar 03, 2017 9:14:02 AM FINEST org.jenkinsci.plugins.ghprb.GhprbPullRequest checkComments
Comment was made at: 2/21/17 10:59 AM
Mar 03, 2017 9:14:02 AM FINEST org.jenkinsci.plugins.ghprb.GhprbPullRequest checkComments
Comment was made at: 2/21/17 4:40 PM
Mar 03, 2017 9:14:02 AM FINEST org.jenkinsci.plugins.ghprb.GhprbPullRequest checkComments
Comment was made at: 2/23/17 2:58 PM
Mar 03, 2017 9:14:02 AM FINEST org.jenkinsci.plugins.ghprb.GhprbPullRequest checkComments
Comment was made at: 2/27/17 6:32 PM
Mar 03, 2017 9:14:02 AM FINEST org.jenkinsci.plugins.ghprb.GhprbPullRequest checkComments
Comment was made at: 2/28/17 11:47 AM
Mar 03, 2017 9:14:02 AM FINEST org.jenkinsci.plugins.ghprb.GhprbPullRequest checkComments
Comment was made at: 3/2/17 12:30 PM
Mar 03, 2017 9:14:02 AM FINEST org.jenkinsci.plugins.ghprb.GhprbPullRequest checkComments
Comment was made at: 3/2/17 6:17 PM
Mar 03, 2017 9:14:02 AM FINEST org.jenkinsci.plugins.ghprb.GhprbPullRequest checkComments
Comment was made at: 3/3/17 12:41 AM
Mar 03, 2017 9:14:02 AM FINEST org.jenkinsci.plugins.ghprb.GhprbPullRequest checkComments
Comment was made at: 3/3/17 9:07 AM
Mar 03, 2017 9:14:02 AM FINEST org.jenkinsci.plugins.ghprb.GhprbPullRequest checkComments
Comment was made after last update time, test this please
Mar 03, 2017 9:14:02 AM FINEST org.jenkinsci.plugins.ghprb.GhprbPullRequest checkComment
[Matthew Bates] Added comment: test this please
Mar 03, 2017 9:14:02 AM FINEST org.jenkinsci.plugins.ghprb.GhprbPullRequest checkComment
Retest phrase
Mar 03, 2017 9:14:02 AM FINEST org.jenkinsci.plugins.ghprb.GhprbPullRequest checkComment
Admin GHUser@14508904[login=LinkMJB,location=Phoenix, AZ,blog=https://github.com/connexta,email=,name=Matthew Bates,company=Connexta,followers=0,following=0,url=https://api.github.com/users/LinkMJB,id=8824103] gave retest phrase
Mar 03, 2017 9:14:02 AM FINEST org.jenkinsci.plugins.ghprb.GhprbPullRequest tryBuild
Trigger only phrase but we are not triggered

In my configuration, I forgot to mention that the trigger phrase works fine when <onlyTriggerPhrase>true</onlyTriggerPhrase> is set to false. As soon as the trigger phrase is required, the PR's are not built.

Just an update for the issue I was seeing, that I side-tracked this issue with -- it appears that the conditionals for triggering the build trigger are mutually exclusive, which has the potential consequence of short-circuiting if any trigger/whitelist/test phrases match one another (through regex or exact match). Maybe this is similarly impacting what other users are seeing here?
I opened a separate issue here: https://github.com/jenkinsci/ghprb-plugin/issues/499

I am having the same problem. I don't have a "trigger only" choice in the configuration, only "auto-manage webhooks" which i have enabled.
I don't want to break the current operation of the PR builder, which is great, and automatically creates PR builds when new commits are made. I want to add the ability to rebuild a PR  with a magic phrase. (and branches too, idk if this is the forum for that.)
When i enter "retest this please", the build is not triggered, and I can see this in the log:
Dec 01, 2020 11:14:00 AM FINE org.jenkinsci.plugins.ghprb.GhprbTrigger
Use webHooks is set, so not running trigger

Another observation is that there appear to be entries in the log, each one minute apart, for one comment. The following is for four comments:
Dec 01, 2020 11:14:00 AM FINE org.jenkinsci.plugins.ghprb.GhprbTrigger
Use webHooks is set, so not running trigger
Dec 01, 2020 11:15:00 AM FINE org.jenkinsci.plugins.ghprb.GhprbTrigger
Use webHooks is set, so not running trigger
Dec 01, 2020 11:16:00 AM FINE org.jenkinsci.plugins.ghprb.GhprbTrigger
Use webHooks is set, so not running trigger
Dec 01, 2020 11:17:00 AM FINE org.jenkinsci.plugins.ghprb.GhprbTrigger
Use webHooks is set, so not running trigger
Dec 01, 2020 11:19:00 AM FINE org.jenkinsci.plugins.ghprb.GhprbTrigger
Use webHooks is set, so not running trigger
Dec 01, 2020 11:20:00 AM FINE org.jenkinsci.plugins.ghprb.GhprbTrigger
Use webHooks is set, so not running trigger
Dec 01, 2020 11:21:00 AM FINE org.jenkinsci.plugins.ghprb.GhprbTrigger
Use webHooks is set, so not running trigger
Dec 01, 2020 11:22:00 AM FINE org.jenkinsci.plugins.ghprb.GhprbTrigger
Use webHooks is set, so not running trigger
Dec 01, 2020 11:24:00 AM FINE org.jenkinsci.plugins.ghprb.GhprbTrigger
Use webHooks is set, so not running trigger
Dec 01, 2020 11:25:00 AM FINE org.jenkinsci.plugins.ghprb.GhprbTrigger
Use webHooks is set, so not running trigger
Dec 01, 2020 11:26:00 AM FINE org.jenkinsci.plugins.ghprb.GhprbTrigger
Use webHooks is set, so not running trigger
Dec 01, 2020 11:27:00 AM FINE org.jenkinsci.plugins.ghprb.GhprbTrigger
Use webHooks is set, so not running trigger
Dec 01, 2020 11:29:00 AM FINE org.jenkinsci.plugins.ghprb.GhprbTrigger
Use webHooks is set, so not running trigger
Dec 01, 2020 11:30:00 AM FINE org.jenkinsci.plugins.ghprb.GhprbTrigger
Use webHooks is set, so not running trigger
Dec 01, 2020 11:31:00 AM FINE org.jenkinsci.plugins.ghprb.GhprbTrigger
Use webHooks is set, so not running trigger
Dec 01, 2020 11:32:00 AM FINE org.jenkinsci.plugins.ghprb.GhprbTrigger
Use webHooks is set, so not running trigger


error: class "GlobalSettings" has no member "getInstance"

I have no idea why this would be, but when I pulled the most recent version and tried to compile it I got this compilation error:
.../alien/source/EngineGpuKernels/DataAccessKernelsLauncher.cu(65): error: class "GlobalSettings" has no member "getInstance"

So yeah... Basically the problem was in the Macros.cuh file. The actual method name is simply get()

This issue is caused by commit: use singleton macro wherever possible. I think it is a tiny oversight, you can fix it by changing all GlobalSettings::getInstance()(line 76, line 86, line 95) in source/EngineGpuKernels/Macros.cuh into GlobalSettings::get().

I forgot to commit some changes. It's corrected now.


External data when no External card

Fantastic App.  Thank you!
It lists "External" data (and states that apps are using "External" data) even when phone has no External storage Card.
Is "External" the best term for the UI?  What does "External" mean?

Hi, thanks.
An Android phone bas storage for apps, where you cannot write, and a
storage for user where you can put your songs for example and where your
apps are moved when you click move in settings. In addition to that there
is ext sd card. So in fact external storage just means user storage not
relally "external", but external to the system. there is a confusion
because in old android version (<2.3) the only user was an sd card, now
phones have an embedded user storage so sd card is not needed like before.
Le mercredi 29 avril 2015, Gitoffthelawn<EMAIL_ADDRESS>a
écrit :

Fantastic App. Thank you!
It lists "External" data (and states that apps are using "External" data)
even when phone has no External storage Card.
Is "External" the best term for the UI? What does "External" mean?
—
Reply to this email directly or view it on GitHub.<
https://ci3.googleusercontent.com/proxy/ejvDDIuHww6D97sgyM-GXd1Aq9XntVH7JYB06psHoDmjET1Jdt9u6W2kwdteDqFlzF8XSB_8k_GdtPTzttKM5JmAm0i1AqtcbC_9NXzCg1hs_Xn2kpQOTwxN-ybZ6U0edictl-emnVWqFAgPJiKI4IfegwVPhw=s0-d-e1-ft#https://github.com/notifications/beacon/AKz7CBjODtMyhl5xdoasDa7RZd__WcbAks5oETx4gaJpZM4EL-Ub.gif

Thanks!  Are the values listed under "External" in Applications Info inclusive of both types of external storage (external to the system and sd card)?  Does Applications Info differentiate between External (meaning "external to the system") and External (meaning "sd card")?

External include both external storages

Thanks.  What are your thoughts of separating those two types of storage for devices that have both?

It's not possible, retrieve application detailed size isn't possible officially in android SDK. Here I use AIDL interface and java reflection to retrieve it but it is not officially supported by android SDK.
This result in java object that contains only size that you can see in applications info app, I can't do better.


You should not need to click “Add unit” multiple times to drop multiple things, it should be on “adding mode”

This is a larger issue that involves more UI changes/thinking so we are tabling it for a later launch


Update vpn-gateway-config-openvpn-linux.md

Added a point that says how to disconnect openvpn from the command line.

@cherylmc
Can you review the proposed changes?
When the changes are ready for publication, add a #sign-off comment to signal that the PR is ready for the review team to merge.
#label:"aq-pr-triaged"
@MicrosoftDocs/public-repo-pr-review-team

Hi Guys, any update on this?
@cherylmc @Court72

#sign-off

@microsoft-github-policy-service agree
On Wed, Jul 19, 2023 at 9:31 PM microsoft-github-policy-service[bot] <
@.***> wrote:

@dineshpathapati https://github.com/dineshpathapati please read the
following Contributor License Agreement(CLA). If you agree with the CLA,
please reply with the following information.
@microsoft-github-policy-service agree [company="{your company}"]
Options:

(default - no company specified) I have sole ownership of
intellectual property rights to my Submissions and I am not making
Submissions in the course of work for my employer.

@microsoft-github-policy-service agree

(when company given) I am making Submissions in the course of work
for my employer (or my employer has intellectual property rights in my
Submissions by contract or applicable law). I have permission from my
employer to make Submissions and enter into this Agreement on behalf of my
employer. By signing below, the defined term “You” includes me and my
employer.

@microsoft-github-policy-service agree company="Microsoft"
Contributor License Agreement Contribution License Agreement
This Contribution License Agreement (“Agreement”) is agreed to by the
party signing below (“You”),
and conveys certain license rights to Microsoft Corporation and its
affiliates (“Microsoft”) for Your
contributions to Microsoft open source projects. This Agreement is
effective as of the latest signature
date below.

Definitions.
“Code” means the computer software code, whether in human-readable
or machine-executable form,
that is delivered by You to Microsoft under this Agreement.
“Project” means any of the projects owned or managed by Microsoft
and offered under a license
approved by the Open Source Initiative (www.opensource.org).
“Submit” is the act of uploading, submitting, transmitting, or
distributing code or other content to any
Project, including but not limited to communication on electronic
mailing lists, source code control
systems, and issue tracking systems that are managed by, or on behalf
of, the Project for the purpose of
discussing and improving that Project, but excluding communication
that is conspicuously marked or
otherwise designated in writing by You as “Not a Submission.”
“Submission” means the Code and any other copyrightable material
Submitted by You, including any
associated comments and documentation.
Your Submission. You must agree to the terms of this Agreement
before making a Submission to any
Project. This Agreement covers any and all Submissions that You, now
or in the future (except as
described in Section 4 below), Submit to any Project.
Originality of Work. You represent that each of Your Submissions
is entirely Your original work.
Should You wish to Submit materials that are not Your original work,
You may Submit them separately
to the Project if You (a) retain all copyright and license information
that was in the materials as You
received them, (b) in the description accompanying Your Submission,
include the phrase “Submission
containing materials of a third party:” followed by the names of the
third party and any licenses or other
restrictions of which You are aware, and (c) follow any other
instructions in the Project’s written
guidelines concerning Submissions.
Your Employer. References to “employer” in this Agreement include
Your employer or anyone else
for whom You are acting in making Your Submission, e.g. as a
contractor, vendor, or agent. If Your
Submission is made in the course of Your work for an employer or Your
employer has intellectual
property rights in Your Submission by contract or applicable law, You
must secure permission from Your
employer to make the Submission before signing this Agreement. In that
case, the term “You” in this
Agreement will refer to You and the employer collectively. If You
change employers in the future and
desire to Submit additional Submissions for the new employer, then You
agree to sign a new Agreement
and secure permission from the new employer before Submitting those
Submissions.
Licenses.

Copyright License. You grant Microsoft, and those who receive the
Submission directly or
indirectly from Microsoft, a perpetual, worldwide, non-exclusive,
royalty-free, irrevocable license in the
Submission to reproduce, prepare derivative works of, publicly
display, publicly perform, and distribute
the Submission and such derivative works, and to sublicense any or all
of the foregoing rights to third
parties.
Patent License. You grant Microsoft, and those who receive the
Submission directly or
indirectly from Microsoft, a perpetual, worldwide, non-exclusive,
royalty-free, irrevocable license under
Your patent claims that are necessarily infringed by the Submission or
the combination of the
Submission with the Project to which it was Submitted to make, have
made, use, offer to sell, sell and
import or otherwise dispose of the Submission alone or with the
Project.
Other Rights Reserved. Each party reserves all rights not
expressly granted in this Agreement.
No additional licenses or rights whatsoever (including, without
limitation, any implied licenses) are
granted by implication, exhaustion, estoppel or otherwise.

Representations and Warranties. You represent that You are
legally entitled to grant the above
licenses. You represent that each of Your Submissions is entirely Your
original work (except as You may
have disclosed under Section 3). You represent that You have secured
permission from Your employer to
make the Submission in cases where Your Submission is made in the
course of Your work for Your
employer or Your employer has intellectual property rights in Your
Submission by contract or applicable
law. If You are signing this Agreement on behalf of Your employer, You
represent and warrant that You
have the necessary authority to bind the listed employer to the
obligations contained in this Agreement.
You are not expected to provide support for Your Submission, unless
You choose to do so. UNLESS
REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING, AND EXCEPT FOR THE
WARRANTIES
EXPRESSLY STATED IN SECTIONS 3, 4, AND 6, THE SUBMISSION PROVIDED
UNDER THIS AGREEMENT IS
PROVIDED WITHOUT WARRANTY OF ANY KIND, INCLUDING, BUT NOT LIMITED TO,
ANY WARRANTY OF
NONINFRINGEMENT, MERCHANTABILITY, OR FITNESS FOR A PARTICULAR PURPOSE.
Notice to Microsoft. You agree to notify Microsoft in writing of
any facts or circumstances of which
You later become aware that would make Your representations in this
Agreement inaccurate in any
respect.
Information about Submissions. You agree that contributions to
Projects and information about
contributions may be maintained indefinitely and disclosed publicly,
including Your name and other
information that You submit with Your Submission.
Governing Law/Jurisdiction. This Agreement is governed by the
laws of the State of Washington, and
the parties consent to exclusive jurisdiction and venue in the federal
courts sitting in King County,
Washington, unless no federal subject matter jurisdiction exists, in
which case the parties consent to
exclusive jurisdiction and venue in the Superior Court of King County,
Washington. The parties waive all
defenses of lack of personal jurisdiction and forum non-conveniens.
Entire Agreement/Assignment. This Agreement is the entire
agreement between the parties, and
supersedes any and all prior agreements, understandings or
communications, written or oral, between
the parties relating to the subject matter hereof. This Agreement may
be assigned by Microsoft.

—
Reply to this email directly, view it on GitHub
https://github.com/MicrosoftDocs/azure-docs/pull/112058#issuecomment-1642784864,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/APA5I5XCUAIDB5M26XW7E3LXRBG4FANCNFSM6AAAAAA2G6T5JA
.
You are receiving this because you were mentioned.Message ID:
@.***>

Hi Guys, Thanks for merging the pull request. Still not sure why my name is not showing under contributors for the same documentation. Just curious to have my name there. Thanks.
Also, I want to contribute more to this documentation as I came across a lot of problems during this setup. Refer to support Ticket #2306280060002870 and let's connect to discuss more in detail.
Regards

@microsoft-github-policy-service agree


Long URLs prevent "going back" to flow list

Hi,
I was running mitmproxy and ran into a very long "GET" line (Facebook causes that quite often). When I pressed "Enter" to view the flow, I was unable to "Go back" to the flow list by pressing "q". Instead - I was displayed with the "Quit?" Dialog and had to restart mitmproxy.
Here is an example (I removed some of the data in the GET request)

Thanks!
Yoav

Hi @mhils
This bug seems to be resolved via 32ba6021b3c07efaa45a9223479151cd7e74ccbd
Regards.
Marcelo

Excellent, thanks for noticing! :)


popovers: Add bot icon to user profile popovers for bots.

Fixes #7176.

Am I just seeing things, or is the bot icon a bit below the bot's name?  Also, I'm wondering whether we should just eliminate the presence circle (since bots don't have presence) and then put the bot icon where the presence circle is; it seems like that'd look nicer.
@brockwhittaker what do you think?

Also, thanks for working on this!  I think it'll be a nice touch.  :)

@timabbott Yeah you were right, there was positioning images with the bot image. Instead of spending time to reposition it, I went ahead and turned the bot image into a custom icon (similar to the Font Awesome ones) for easier use (while cleaning up the SVG image metadata a bit).
Now it looks like this:

If you want to discuss the changes I made to implement custom icons, I'd be happy to talk in a stream/PM.

Cool!  This direction seems great.  I think the main question I'm left with here is what procedure we should plan to use for updating the icons?  It might make sense to have a directory static/assets/icons/ where we keep the original SVG images for things like bot.svg as well as instructions for how to update the font files given the assets (maybe including a sample config file or whatever we need?); that'd make life a lot better in a future where we are adding additional icons to this font...
@brockwhittaker FYI, do we have have other SVGs we should move into this system?

@timabbott Sounds reasonable. I'll look into documenting the new icons approach, but the first 2 commits should be okay for merging, and maybe the bot icon replacements after I add back bot.svg to the new icon assets folder.

Merged the first two commits.
One question on the rest: I think we may not want aria-hidden, so that users will still see it's a bot user; what do you think?

@timabbott Okay, now first 4 commits should be ready for merging once Travis pass, and I'll add in documentation for custom icons later.

Hey @synicalsyntax, I think this is a cool idea – creating a custom icon font for our commonly used SVGs, however I think we should probably add it to our project rather than using an external source and pasting the results into our codebase, since we don't want to have to rely on that service staying free or accessible.
I think one possible option is this npm library: https://www.npmjs.com/package/webfonts-generator

@brockwhittaker Took your suggestions and updated!

Some of the SVG optimizations seems likely problematic (from git show --stat on the relevant commit):
 static/third/fontawesome/fontawesome-webfont.svg       | Bin 444379 -> 6 bytes
 static/third/zocial/zocial.svg                         | Bin 228346 -> 41 bytes

This PR is getting too many changes tangled together.  Can we pull the SVG optimization changes out into another PR?  I think it might be better to start with just adding static/images/integrations/logos to the list of directories.
The other thing we should think about on the SVG front is that for several of these files, the image we're serving is the actual source SVG used when creating that file.  It's possible we want to store the originals somewhere under static/assets/.  @vaidap understands the process through which we modify e.g. the hotspots better and might be able to provide some thoughts on whether this is a good idea.
While optimizing third-party SVGs should always be a good idea, it can be less clear for things that are our own images.
For the main webfont generating stuff, I think we'll eventually want to move the files under static/generated, but it's probably OK to leave that for a follow-up project, given how small the files are.

@timabbott Thanks for reviewing! I removed the SVG optimization from this PR and will open one for the changes later; anything else worth fixing now?

Merged, after bumping PROVISION_VERSION and restructuring commits a bit (previously, the first commit broken the messages until the 3rd commit showed up).  So now the first commit is gone, we add the new copy of bot.svg in the font generation commit, and we delete the original location in the message commit.  Also moved the directory to static/assets/icons/ not static/icons/assets for better clustering.
I've determined that tools/generate-custom-webfont-icon never produces the same output twice (probably there's a timestamp in there).  Given that it only takes 300ms to run, I think we want to move this to the update-prod-static / static/generated system.  I'll open a follow-up issue.
Thanks @synicalsyntax!


Integrated Mayhem fuzzing

I accidentally submitted the repository under the wrong email, could you please send any future communications to<EMAIL_ADDRESS>


editing template issues

when entering label name cannot use arrow keys on keyboard
when changing validation rule - label wiped out
cannot zoom in editing document to adjust input area rect
field alignment would be appreciated. mostly centered text over the field

Heya @yurii-zhukow -
These aren't related to the PHP SDK per se, but are some valid UX feedback for the editor.
I'll pass these along to Product here and have them consider for the embedded editor page.


python3Packages.scikit-fmm: fix build on Python 3.12+

Description of changes

Applies work-in-progress patches from a development branch to fix the build on Python 3.12+ by switching the build system to Meson.
Fixes:

https://hydra.nixos.org/build/260955687

ZHF: #309482
Things done

Built on platform(s)

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

For non-Linux: Is sandboxing enabled in nix.conf? (See Nix manual)

[ ] sandbox = relaxed
[ ] sandbox = true

[ ] Tested, as applicable:

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

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

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

[ ] Fits CONTRIBUTING.md.

Add a :+1: reaction to pull requests you find important.

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

4 packages failed to build:

python311Packages.fipy
python311Packages.fipy.dist
python312Packages.fipy
python312Packages.fipy.dist

4 packages built:

python311Packages.scikit-fmm
python311Packages.scikit-fmm.dist
python312Packages.scikit-fmm
python312Packages.scikit-fmm.dist

Result of nixpkgs-review pr 314704 run on x86_64-darwin 1

4 packages failed to build:

python311Packages.fipy
python311Packages.fipy.dist
python312Packages.fipy
python312Packages.fipy.dist

4 packages built:

python311Packages.scikit-fmm
python311Packages.scikit-fmm.dist
python312Packages.scikit-fmm
python312Packages.scikit-fmm.dist

Result of nixpkgs-review pr 314704 run on aarch64-darwin 1

4 packages failed to build:

python311Packages.fipy
python311Packages.fipy.dist
python312Packages.fipy
python312Packages.fipy.dist

4 packages built:

python311Packages.scikit-fmm
python311Packages.scikit-fmm.dist
python312Packages.scikit-fmm
python312Packages.scikit-fmm.dist

4 packages failed to build:

python311Packages.fipy
python311Packages.fipy.dist
python312Packages.fipy
python312Packages.fipy.dist

4 packages built:

python311Packages.scikit-fmm
python311Packages.scikit-fmm.dist
python312Packages.scikit-fmm
python312Packages.scikit-fmm.dist

The fipy failures appear unrelated:
error: builder for '/nix/store/kwxjkl0851p161y9h5i6v89n7kaivhc5-python3.12-fipy-3.4.4.drv' failed with exit code 1;
       last 10 log lines:
       >     return get_versions()["version"]
       >            ^^^^^^^^^^^^^^
       >   File "/build/source/versioneer.py", line 1412, in get_versions
       >     cfg = get_config_from_root(root)
       >           ^^^^^^^^^^^^^^^^^^^^^^^^^^
       >   File "/build/source/versioneer.py", line 342, in get_config_from_root
       >     parser = configparser.SafeConfigParser()
       >              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
       > AttributeError: module 'configparser' has no attribute 'SafeConfigParser'. Did you mean: 'RawConfigParser'?
       > /nix/store/awyrbj9n0di7b7dx1w7w98iyk4i3k9pn-stdenv-linux/setup: line 1579: pop_var_context: head of shell_variables not a function context
       For full logs, run 'nix log /nix/store/kwxjkl0851p161y9h5i6v89n7kaivhc5-python3.12-fipy-3.4.4.drv'.
error: builder for '/nix/store/c3pgkryarhdxg4lvrxc9g3wb604dhjbr-python3.11-fipy-3.4.4.drv' failed with exit code 1;
       last 10 log lines:
       >        2.2          2.5       ]
       >
       >
       > ----------------------------------------------------------------------
       > Ran 361 tests in 12.245s
       >
       > FAILED (failures=1)
       > !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
       > Skipped 83 doctest examples because the `tvtk` package cannot be imported
       > !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
       For full logs, run 'nix log /nix/store/c3pgkryarhdxg4lvrxc9g3wb604dhjbr-python3.11-fipy-3.4.4.drv'.

Otherwise WFM macos 12 x86_64 & nixos x86_64

fipy still fails to build but this PR is a step in the right direction never the less.


Pin version of alabaster

Recent version of alabaster (0.7.13) requires sphinx>=1.6.

Codecov Report
Base: 93.54% // Head: 93.54% // No change to project coverage :thumbsup:

Coverage data is based on head (ffb64b5) compared to base (ba17c47).
 Consider uploading reports for the commit c952687 to get more accurate results

Additional details and impacted files
@@           Coverage Diff            @@
##           develop    #2849   +/-   ##
========================================
  Coverage    93.54%   93.54%
========================================
  Files           63       63
  Lines        13398    13398
========================================
  Hits         12533    12533
  Misses         865      865

Help us with your feedback. Take ten seconds to tell us how you rate us. Have a feature suggestion? Share it here.

:umbrella: View full report at Codecov.
:loudspeaker: Do you have feedback about the report comment? Let us know in this issue.


Support for finding commands via additional keywords

Hello:
I was looking for a command palette to add to my roundup issue tracker tracker template. It looks like command-pal and ninja-keys are the only two implementations that work with vanilla JS.
Fuzzy search works well for typos, but suppose I want a search for email to find the "Contact" command in my palette?
Obviously fuzzy search won't handle that. Is there an alias/keyword array property that fuzzy search will look at to select the Contact field? I envision something like:
  commands: [
    {
      name: "Contact author",
      shortcut: "ctrl+E",
      handler: () => alert("Send Message"),
      aliases: [ "email", "reply", "send", "to author"],
    },

I suppose I could create child commands:
  function SendEmail () { ... }
  commands: [
    {
      name: "Contact author",
      shortcut: "ctrl+E",
      handler: () => SendEmail(),
      children: [
        {
            name: "Email author",
            shortcut: "Hmm, why no shortcut?"
            handler: SendEmail(),
        },
        {
            name: "Reply to author",
            handler: SendEmail(),
        },
        {
            name: "Send message to author",
            handler: SendEmail(),
        },
       ...,
    },

but that seems suboptimal for a few reasons:

More code is required to implement.
The UI requires navigating into the "Contact Author" command submenu. This requires retyping the search rather than just selecting the primary menu item.

Also by navigating into the submenu, you loose context. Only the submenu items are shown, there is no breadcrumb. For example: in your  advanced language example, you can search for German, and it shows "Change Language". But once you change to the submenu, there is no hint that you are under the "Change Language" submenu. The prompt doesn't change to indicate where you are in the hierarchy.
Ideally your language example should show "Change Language > German" displayed as selection when you type "Ger" in the search box from the top level.

It's not obvious that all these synonyms use the same command and shortcut since they are displayed as different menu items.
It doesn't guide the user to understand the canonical term (and the ability to use a shortcut) for the command.

Thoughts?

Thanks for the details, here's some thoughts of mine

I was looking for a command palette to add to my roundup issue tracker tracker template. It looks like command-pal and ninja-keys are the only two implementations that work with vanilla JS.

I had no idea about ninja-keys, looks like a good implementation 👌

Fuzzy search works well for typos, but suppose I want a search for email to find the "Contact" command in my palette? Obviously fuzzy search won't handle that. Is there an alias/keyword array property that fuzzy search will look at to select the Contact field?

That was the idea behind the description field, as you discovered in #9

  children: [
    {
        name: "Email author",
        shortcut: "Hmm, why no shortcut?"
        handler: SendEmail(),
    },

Child commands cannot have shortcuts by design, as shortcuts are global and thus belong in the top level command array. This is inspired by VScode which in my opinion has one of the most ergonomic and easy to use Command Palettes.
The alternative would be to allow any command in the tree to have a shortcut which creates several annoying problems for the user:

Finding the "keyboard shortcuts" becomes annoying, since they're scattered in the tree, you have to know the parents to discover them
Accidentally pressing them can lead to confusion, if you press ctrl + space + j and it takes you to a nested command, it's confusing

The UI requires navigating into the "Contact Author" command submenu. This requires retyping the search rather than just selecting the primary menu item.

Also by navigating into the submenu, you loose context. Only the submenu items are shown, there is no breadcrumb. For example: in your  advanced language example, you can search for German, and it shows "Change Language". But once you change to the submenu, there is no hint that you are under the "Change Language" submenu. The prompt doesn't change to indicate where you are in the hierarchy.

These are great points, I think 'breadcrumbs' or something to denote where you are is a good idea, especially for the "Change Language" example.

Ideally your language example should show "Change Language > German" displayed as selection when you type "Ger" in the search box from the top level.

I don't agree that the command should match any child command from the top level. This would mean you get possibly hundreds of results which aren't specific to the current level you're on. Example: if I type Sav to find the Save command I could be shown "Change Language > Savant Icelandic" or something, which to me is confusing and unintuitive.
I guess I see the "Command Palette" as a filter, rather than a search. You only filter what's in the list you can scroll.

It's not obvious that all these synonyms use the same command and shortcut since they are displayed as different menu items.
It doesn't guide the user to understand the canonical term (and the ability to use a shortcut) for the command.

Not exactly sure what you mean here ^ the command matches according to the description - which isn't shown to the user - but the "canonical term" is displayed to the user.
In my experience, the best systems have a single top-level command layer which have keyboard shortcuts and all child commands are accessible from that top level. This is important for many reasons:

User's Perspective

Shows the user all possible "keyboard shortcuts" in the first level
Makes the API simpler to use

Developer's Perspective

Easier to track all possible "keyboard shortcuts"
Encourages only important shortcuts, not ones hidden in nested levels
Encourages a simpler experience

Sorry for the rant 😅

Sorry for the rant 😅

No problem at all. It was less rant and more background perspective. Now you can read my rant 8-).

suppose I want a search for email to find the "Contact" command
[...] Is there an alias/keyword array property that fuzzy search
will look at to select the Contact field?
That was the idea behind the description field, as you discovered in #9

The problem I see/have had is lack of search result context for the match. I might not be thinking "Contact" in terms of email, but say Contact in terms of paper[1]. This is why people do card sorting exercises to understand a term's context.
[1]:  shelf liner or whatever it's called in your neck of the woods.
If I see Contact without a hint that it should be interpreted as in the context of email I'll be confused. Especially when fuzzy search is added in. You get some wacky matches returned that will have nothing to do with what you are looking for. Search for engl and get Kongo? Really? I'm not a great typist but I would have to be really bad to want to match Kongo by typing engl 8-). It's the nature of the search but...
Being able to view the description would add context in situations like this.
This is why in #30 the user gets feedback on the "most likely" fuzzy alias match.
To deal with the Kongo result, there could be another parameter, a user/developer defined cutoff so terms like Kongo that score higher (0 perfect match 1, bad match) are filtered from the result set.

Child commands cannot have shortcuts by design, as shortcuts are
global and thus belong in the top level command array. This is
inspired by VScode which in my opinion has one of the most
ergonomic and easy to use Command Palettes.
The alternative would be to allow any command in the tree to have a
shortcut which creates several annoying problems for the user:

Finding the "keyboard shortcuts" becomes annoying, since they're
scattered in the tree, you have to know the parents to discover them

Fair enough. The discovery issue is real. I don't use VScode, you can pry emacs out of my cold dead hands 8-).
Just as a counterpoint, menus have shortcut keys at the lower levels. Granted menus rarely exceed three levels. E.g.

Accidentally pressing them can lead to confusion, if you press
ctrl + space + j and it takes you to a nested command, it's confusing

Well it should just execute a nested command. Which actually brings up another point. Why does command-pal display itself when activating a hotkey? Is that another vscode thing? If I use a hotkey for example in
chrome the menu system doesn't display, the action just happens.
[warning random aside ahead]
Regarding ctrl + space + j jumping to a random command. Does it make sense to provide some way to search for command by hotkey? So you could type: ~ctrl+space+j and find random command. I know some command palettes can do what I will term faceted search by prepending a character. For example GitHub uses a search starting with # to search issues, pull requests etc. If the search starts with ! it searches the project namespace.
I doubt this would be useful for hotkey discovery though 8-).
[back to main trail]
If the hotkey opens the command-pal nested menu, then displaying the top level command palette and moving to the submenu makes sense.

The UI requires navigating into the "Contact Author" command
submenu. This requires retyping the search rather than just
selecting the primary menu item.

Also by navigating into the submenu, you loose context. Only
the submenu items are shown, there is no breadcrumb. [...]
The prompt doesn't change to indicate where you are in the hierarchy.
These are great points, I think 'breadcrumbs' or something to denote
where you are is a good idea, especially for the "Change Language" example.

It could add a small breadcrumb in the header above the search box Change Language >.

Ideally your language example should show "Change Language > German"
displayed as selection when you type "Ger" in the search box
from the top level.

I don't agree that the command should match any child command from
the top level. This would mean you get possibly hundreds of results
which aren't specific to the current level you're on. Example: if I
type Sav to find the Save command I could be shown "Change
Language > Savant Icelandic" or something, which to me is confusing
and unintuitive.
I guess I see the "Command Palette" as a filter, rather than a
search. You only filter what's in the list you can scroll.

Another way to look at command palette is a searchable omnipotent menu.
Also wouldn't this depend on usage. For example take a top level menu with Save and a nested Formatting menu.
If I type: suv wouldn't it be nice to get:
   Save                             (ctrl+s)
   Formatting > Subscript
   Formatting > Superscript

I could create top level commands named Formatting > Subscript or probably better [^2] Subscript < Formatting  etc. But I may want to make discovery of other formatting commands easier by arranging them in a nested menu. To your point about getting hits from outside of your expected realm, typing "form" may not show only formatting commands but fill out form a  and fill out form b commands. With a nested menu, the user can type format and see the (probably only) matching menu item and its hotkey. Then choose the nested menu that only has formatting commands.
[^2]: matches at the start of a command string rank higher.
Also regarding the nested menu, how do I go up a level? Ninja-Keys uses backspace when invoked in an
empty search box at a child menu level IIRC.

It's not obvious that all these synonyms use the same
command and shortcut since they are displayed as different menu items.
It doesn't guide the user to understand the canonical term (and
the ability to use a shortcut) for the command.

Not exactly sure what you mean here ^ the command matches according
to the description - which isn't shown to the user - but the
"canonical term" is displayed to the user.

Given my explanation of search result context above, does 4 make more sense? Not displaying the description leaves the user wondering why the result is shown.
In any case using a nested list is not right for my use case.

In my experience, the best systems have a single top-level command
layer which have keyboard shortcuts and all child commands are
accessible from that top level. This is important for many reasons:

User's Perspective

Shows the user all possible "keyboard shortcuts" in the first level
Makes the API simpler to use

Developer's Perspective

Easier to track all possible "keyboard shortcuts"
Encourages only important shortcuts, not ones hidden in nested levels
Encourages a simpler experience

All laudable goals.


type error on new validation

Hi, thanks for ccamouflage as an awsome mocking tool.
from 25 october 2022 I got this error, when using camouflage through docker-compose.

backup:
cron: 0 * * * *
enable: false
cache:
enable: false
ttl_seconds: 300
cpus: 1
ext_helpers: ./custom_handlebar.json
injection:
enable: false
loglevel: debug
monitoring:
port: 5555
origins:

http://<IP_ADDRESS>:3000
http://localhost:3000
protocols:
grpc:
enable: true
host: <IP_ADDRESS>
mocks_dir: ./grpc/mocks
port: 4312
protos_dir: ./grpc/protos
http:
enable: true
mocks_dir: ./http/mocks
port: 8080
http2:
enable: false
port: 8081
https:
enable: false
port: 8443
thrift:
enable: false
mocks_dir: ./thrift/mocks
services:

handlers:

add
substract
ping
port: 9999
service: /opt/gen-nodejs/Calculator
ws:
enable: false
mocks_dir: ./ws/mocks
port: 8082
ssl:
cert: ./certs/server.cert
key: ./certs/server.key

fixed in da23c41

Unfortunately, it still is not working and is unhealthy...

it's working now with:
validation:
enable: false
thanks a lot

Please continue to use version @0.9.0 in your dockerfile for now. Fix is in place, It'll be resolved where the change is merged to main and a new version is released.


[Feature request] Let admin to access the website as a normal user

Could it be possible for you to implement a feature that an admin can pretend as a normal user to test whether his access control settings works as expected?
Maybe something like this (a plugin for redmine)
redmine_pretend

When you admin and solving user problems often hear: "It is not working". And the best way to check: login as user. But you didn't know password. In this case, need to use this plugin: If you has admin role you may go to user account page and press "Pretend" button. Now you pretended selected user. When you tired you can always back to your account pressed "stop pretending" in the top of page.

I guess there are several levels here:

Become User - a power for a site admin to act as if they are the user. It really needs proper logging so that it is clear what the site admin has done.
Pretend As User/Team/Role - in which a repository owner could see what a particular user/team could do in that repository - with an extension to organisation.

Both would require substantial work to make possible.


Improve accessibility with pa11y

pa11y is an automated accessibility testing pal.
Using pa11y will help us make sure our web app is accessible.

Here's are pa11y tips for our homepage:
Welcome to Pa11y
Results for https://somerville-teacher-tool.herokuapp.com/:

Notice: Check that the title element describes the document.
WCAG2AA.Principle2.Guideline2_4.2_4_2.H25.2
html > head > title
Error: The html element should have a lang or xml:lang attribute which describes the language of the document.
WCAG2AA.Principle3.Guideline3_1.3_1_1.H57.2
html
Error: Heading tag found with no content. Text that is not intended as a heading should not be marked up with heading tags.
WCAG2AA.Principle1.Guideline1_3.1_3_1.H42.2
#title
Error: This element has insufficient contrast at this conformance level. Expected a contrast ratio of at least 4.5:1, but text in this element has a contrast ratio of 3.29:1. Recommendation: change text colour to #3177c9.
WCAG2AA.Principle1.Guideline1_4.1_4_3.G18.Fail
html > body > div:nth-child(1) > div > nav > a:nth-child(1)
Notice: Check that the link text combined with programmatically determined link context identifies the purpose of the link.
WCAG2AA.Principle2.Guideline2_4.2_4_4.H77,H78,H79,H80,H81
html > body > div:nth-child(1) > div > nav > a:nth-child(1)
Error: This element has insufficient contrast at this conformance level. Expected a contrast ratio of at least 4.5:1, but text in this element has a contrast ratio of 3.29:1. Recommendation: change text colour to #3177c9.
WCAG2AA.Principle1.Guideline1_4.1_4_3.G18.Fail
html > body > div:nth-child(1) > div > nav > a:nth-child(2)
Notice: Check that the link text combined with programmatically determined link context identifies the purpose of the link.
WCAG2AA.Principle2.Guideline2_4.2_4_4.H77,H78,H79,H80,H81
html > body > div:nth-child(1) > div > nav > a:nth-child(2)
Warning: The heading structure is not logically nested. This h5 element should be an h2 to be properly nested.
WCAG2AA.Principle1.Guideline1_3.1_3_1_A.G141
html > body > div:nth-child(2) > div > div:nth-child(1) > h5
Error: This element has insufficient contrast at this conformance level. Expected a contrast ratio of at least 4.5:1, but text in this element has a contrast ratio of 3.29:1. Recommendation: change text colour to #3177c9.
WCAG2AA.Principle1.Guideline1_4.1_4_3.G18.Fail
html > body > div:nth-child(2) > div > div:nth-child(1) > p > a
Notice: Check that the link text combined with programmatically determined link context identifies the purpose of the link.
WCAG2AA.Principle2.Guideline2_4.2_4_4.H77,H78,H79,H80,H81
html > body > div:nth-child(2) > div > div:nth-child(1) > p > a
Error: This element has insufficient contrast at this conformance level. Expected a contrast ratio of at least 4.5:1, but text in this element has a contrast ratio of 3.29:1. Recommendation: change text colour to #3177c9.
WCAG2AA.Principle1.Guideline1_4.1_4_3.G18.Fail
html > body > div:nth-child(2) > div > div:nth-child(3) > p:nth-child(4) > a
Notice: Check that the link text combined with programmatically determined link context identifies the purpose of the link.
WCAG2AA.Principle2.Guideline2_4.2_4_4.H77,H78,H79,H80,H81
html > body > div:nth-child(2) > div > div:nth-child(3) > p:nth-child(4) > a
Warning: If this element contains a navigation section, it is recommended that it be marked up as a list.
WCAG2AA.Principle1.Guideline1_3.1_3_1.H48
html > body > div:nth-child(2) > div > div:nth-child(4)
Notice: Check that the link text combined with programmatically determined link context identifies the purpose of the link.
WCAG2AA.Principle2.Guideline2_4.2_4_4.H77,H78,H79,H80,H81
html > body > div:nth-child(2) > div > div:nth-child(4) > a:nth-child(1)
Notice: Ensure that the img element's alt text serves the same purpose and presents the same information as the image.
WCAG2AA.Principle1.Guideline1_1.1_1_1.G94.Image
html > body > div:nth-child(2) > div > div:nth-child(4) > a:nth-child(1) > img
Notice: If this image cannot be fully described in a short text alternative, ensure a long text alternative is also available, such as in the body text or through a link.
WCAG2AA.Principle1.Guideline1_1.1_1_1.G73,G74
html > body > div:nth-child(2) > div > div:nth-child(4) > a:nth-child(1) > img
Notice: Check that the link text combined with programmatically determined link context identifies the purpose of the link.
WCAG2AA.Principle2.Guideline2_4.2_4_4.H77,H78,H79,H80,H81
html > body > div:nth-child(2) > div > div:nth-child(4) > a:nth-child(2)
Notice: Ensure that the img element's alt text serves the same purpose and presents the same information as the image.
WCAG2AA.Principle1.Guideline1_1.1_1_1.G94.Image
html > body > div:nth-child(2) > div > div:nth-child(4) > a:nth-child(2) > img
Notice: If this image cannot be fully described in a short text alternative, ensure a long text alternative is also available, such as in the body text or through a link.
WCAG2AA.Principle1.Guideline1_1.1_1_1.G73,G74
html > body > div:nth-child(2) > div > div:nth-child(4) > a:nth-child(2) > img

Summary:

6 Errors
2 Warnings
11 Notices

New report with more detail and one less error:
Welcome to Pa11y
Results for https://somerville-teacher-tool.herokuapp.com/:

Notice: Check that the title element describes the document.

WCAG2AA.Principle2.Guideline2_4.2_4_2.H25.2

html > head > title

<title>Student Insights</title>

Error: Heading tag found with no content. Text that is not intended as a heading should not be marked up with heading tags.

WCAG2AA.Principle1.Guideline1_3.1_3_1.H42.2

#title

Error: This element has insufficient contrast at this conformance level. Expected a contrast ratio of at least 4.5:1, but text in this element has a contrast ratio of 3.29:1. Recommendation: change text colour to #3177c9.

WCAG2AA.Principle1.Guideline1_4.1_4_3.G18.Fail

html > body > div:nth-child(1) > div > nav > a:nth-child(1)

About

Notice: Check that the link text combined with programmatically determined link context identifies the purpose of the link.

WCAG2AA.Principle2.Guideline2_4.2_4_4.H77,H78,H79,H80,H81

html > body > div:nth-child(1) > div > nav > a:nth-child(1)

About

Error: This element has insufficient contrast at this conformance level. Expected a contrast ratio of at least 4.5:1, but text in this element has a contrast ratio of 3.29:1. Recommendation: change text colour to #3177c9.

WCAG2AA.Principle1.Guideline1_4.1_4_3.G18.Fail

html > body > div:nth-child(1) > div > nav > a:nth-child(2)

Sign In

Notice: Check that the link text combined with programmatically determined link context identifies the purpose of the link.

WCAG2AA.Principle2.Guideline2_4.2_4_4.H77,H78,H79,H80,H81

html > body > div:nth-child(1) > div > nav > a:nth-child(2)

Sign In

Warning: The heading structure is not logically nested. This h5 element should be an h2 to be properly nested.

WCAG2AA.Principle1.Guideline1_3.1_3_1_A.G141

html > body > div:nth-child(2) > div > div:nth-child(1) > h5

Who is it for

Error: This element has insufficient contrast at this conformance level. Expected a contrast ratio of at least 4.5:1, but text in this element has a contrast ratio of 3.29:1. Recommendation: change text colour to #3177c9.

WCAG2AA.Principle1.Guideline1_4.1_4_3.G18.Fail

html > body > div:nth-child(2) > div > div:nth-child(1) > p > a

Team Somerville

Notice: Check that the link text combined with programmatically determined link context identifies the purpose of the link.

WCAG2AA.Principle2.Guideline2_4.2_4_4.H77,H78,H79,H80,H81

html > body > div:nth-child(2) > div > div:nth-child(1) > p > a

Team Somerville

Error: This element has insufficient contrast at this conformance level. Expected a contrast ratio of at least 4.5:1, but text in this element has a contrast ratio of 3.29:1. Recommendation: change text colour to #3177c9.

WCAG2AA.Principle1.Guideline1_4.1_4_3.G18.Fail

html > body > div:nth-child(2) > div > div:nth-child(3) > p:nth-child(4) > a

GitHub.

Notice: Check that the link text combined with programmatically determined link context identifies the purpose of the link.

WCAG2AA.Principle2.Guideline2_4.2_4_4.H77,H78,H79,H80,H81

html > body > div:nth-child(2) > div > div:nth-child(3) > p:nth-child(4) > a

GitHub.

Warning: If this element contains a navigation section, it is recommended that it be marked up as a list.

WCAG2AA.Principle1.Guideline1_3.1_3_1.H48

html > body > div:nth-child(2) > div > div:nth-child(4)

  body > div:nth-child(2) > div > div:nth-child(4) > a:nth-child(1)

<img alt="Somerville logo" src=...

Notice: Ensure that the img element's alt text serves the same purpose and presents the same information as the image.

WCAG2AA.Principle1.Guideline1_1.1_1_1.G94.Image

html > body > div:nth-child(2) > div > div:nth-child(4) > a:nth-child(1) > img

Notice: If this image cannot be fully described in a short text alternative, ensure a long text alternative is also available, such as in the body text or through a link.

WCAG2AA.Principle1.Guideline1_1.1_1_1.G73,G74

html > body > div:nth-child(2) > div > div:nth-child(4) > a:nth-child(1) > img

Notice: Check that the link text combined with programmatically determined link context identifies the purpose of the link.

WCAG2AA.Principle2.Guideline2_4.2_4_4.H77,H78,H79,H80,H81

html > body > div:nth-child(2) > div > div:nth-child(4) > a:nth-child(2)

<img alt="Cfa logo" src="/asset...

Notice: Ensure that the img element's alt text serves the same purpose and presents the same information as the image.

WCAG2AA.Principle1.Guideline1_1.1_1_1.G94.Image

html > body > div:nth-child(2) > div > div:nth-child(4) > a:nth-child(2) > img

Notice: If this image cannot be fully described in a short text alternative, ensure a long text alternative is also available, such as in the body text or through a link.

WCAG2AA.Principle1.Guideline1_1.1_1_1.G73,G74

html > body > div:nth-child(2) > div > div:nth-child(4) > a:nth-child(2) > img

Summary:

5 Errors
2 Warnings
11 Notices

We've taken initial steps in this direction with pa11y above, open to contributions.

We're not going to work on this in the next project milestones.


Support for drawing Bitmaps on the oled.

Hi Richard, I'm trying to draw a Bitmap on the OLED with this wallet. From the code, it looks like you have developed a custom display driver to account for performance of the oled.
}
Should I be using display_chunks or display_bigChars to draw the Bitmap? Any pointers from you would be useful.

Hey Richard, any insights on this?

Heya! Sorry for the delay in responding...
We are working on an animatable bitmap format for the upcoming release and scripts to generate these bitmaps. It's a tight fit, but we think we can squeeze it into the final kilobyte of program space.
This will allow for better co-branding, for people who want their logo, with maybe a small spin or glimmer.
If you want to hack something in the meantime, you will want to use display_chunk, which writes a single column of a single page to the screen. Since there is not enough memory to store a back-buffer, we compute each page (16 columns, with 17 bytes, the first byte is 0x40 to indicate "draw the next page") on-the-fly.
It's a bit complicated, but I will try to give a quick overview of the drawing order. The screen is broken into pages, each page is 16 bytes, and each call to display_chunk will add the byte to the 17 byte buffer (includes a command byte of 0x40), and after 16 calls to display_chunk, will flush the page to the display.
There are 8 pages across, and 8 pages down for a total of 64 pages. Pages are drawn, left-to-right, top-to-bottom. Each page represents a 16x8 pixel portion of the screen, where each byte is one of the 16 columns. So, for example, to draw a vertical line from (3, 0) to (3, 64) you would need something like:
for pageRow in (0, 8):
    for pageColumn in (0, 8):
        for column in (0, 16):
            if pageColumn == 1 && column == 3:
                display_chunk(0xff);
            else:
                display_chunk(0x00);

It's quite complicated, which is why we are working on making the API easier to deal with, and also compact, so that a fully animated bitmap can be sent over the BLECast payload, so it has to fit in about 700 bytes.
We have code right now for displaying images, but it is not ready for humans yet, but basically, we use a loop similar to the above and compute the virtual pixel for real pixel for each page and flush it at once. So, we draw 64 viewports, rendering the relevant portion of the image in each page.
Make sense? No worries if not... ;)

Thanks for explaining that, Richard. That's exactly what I was looking for :) Just a small correction. I think you probably meant (pageColumn == 0 && column == 3). Here's how I got it working. Not the cleanest solution but works smoothly.
static void display_bitmap(uint8_t address, const uint8_t *bitmap) {
    DisplayContext context;
    display_begin(&context, address, 0);

    for (int8_t pageRow = 0; pageRow < 8; pageRow++) {
        for (int8_t pageCol = 0; pageCol < 8; pageCol++) {
            display_bitmapSection(&context, bitmap, pageRow, pageCol);
        }
    }
}

void display_bitmapSection(DisplayContext *context, const uint8_t *bitmap, int8_t pageRow, int8_t pageColumn) {
    // Image matrix width and height.
    int8_t w = 16; int8_t h = 64;

    // 8-bit chunk that will be flushed to the display.
    uint8_t chunk = 0x0;

    // Draw the 16x8 pixel page at pageRow and pageColumn
    // Calculate the starting position based on pageColumn and pageRow variables.
    int8_t startColumn = pageColumn * 2;
    int8_t startRow = pageRow * 8;
    for (int8_t col = startColumn; col < startColumn + 2; col++) {
         for (int8_t bit = 0; bit <= 7; bit++) { // 8 columns in each column (2 HEX characters)
            for (int8_t row = startRow + 7; row >= startRow; row--) { // Start creating a chunk from the last bit in this column. That's how the OLED likes it.
                int32_t idx = w * row + col;
                chunk = (chunk << 1) | (pgm_read_byte(&bitmap[idx]) >> (7 - bit)) & 0x01; // Bitwise operation to get the bit I need in the current column.
            }
            // Flush the 8 bit chunk.
            display_chunks(context, chunk, 1);
            // Reset chunk
            chunk = 0x0;
       }
    }
}

Oh yes! I did. :)
Glad it worked for you, that’s awesome. :)


schemes file

Alacritty supports a schemes which contains any arbitrary amount of themes that users can select  from in colors:
Example:
scheme:
  afterglow: &afterglow
    primary:
      background: ....
      foreground: ...
    ...

  argonaut: &argonaut
    ...

  ayu_dark: &ayu_dark
    ...

colors: *ayu_dark

Would you be willing to accept a PR that merges all the themes into a schemes.yaml file?

Seems like a good idea. But would like to keep the separate theme files intact.


Refactor post_card and post_cards into a single function

I'm not sure this is so much better than the current state of affairs but it does allow me to pass search results to the function without having to worry about how many there are. That's the second occurrence of that as we currently have a check for 1 or more than 1 in respond_to_card_names.


Custom objectives in AI scenarios

Currently, the AI scenarios are just a skirmish with custom starting conditions. It would be really cool for map designers like me, if normal scenario events were possible in an AI Scenario.

i am very much on board with this. Iwould love to have the scenario events possible in skirmish made AI-Scenarios, which are currently only available via save-to-map trick.

What do you mean by this? Like invasion or economy events? I have done some research regarding random events and it is easy to do so. Invasion events are much harder, as the entry points get removed in skirmish. Good thing there is gamemode flag which can be set away from skirmish, but then the AI stops working as the main AI update function is not present in the other game modes. Could be addede though...

Both invasions and economy events would be cool, but economy events only would be sufficient for now.

just give me custom citadel for lord and i will be happy :)


MistralAI AI API tryout returns 401 error

Description
When following the tutorial in [1] to create an AI API with MistralAI, the tryout doesn't work and returns 401 Unauthenticated errors with a 'Bearer token not found' error message.

The same issue occurs with the OpenAI API as well. Maybe some steps are missing in the documentation.
[1] https://apim.docs.wso2.com/en/4.4.0/design/create-api/create-ai-api/create-an-ai-api/
Steps to Reproduce
follow the above mentioned tutorial and tryout any of the endpoints.
Affected Component
APIM
Version
4.4.0
Environment Details (with versions)
MacOS
Chrome
Relevant Log Output
No response
Related Issues
No response
Suggested Labels
No response

You need to add the Bearer keyword as well when adding endpoint security for AI APIs


Implement check for alphanumericals for findTag (resolve bug)

Codecov Report

Merging #227 (c32e725) into master (d4c856d) will increase coverage by 0.06%.
The diff coverage is 81.25%.

@@             Coverage Diff              @@
##             master     #227      +/-   ##
============================================
+ Coverage     68.79%   68.86%   +0.06%
- Complexity      614      618       +4
============================================
  Files            95       95
  Lines          2051     2065      +14
  Branches        254      257       +3
============================================
+ Hits           1411     1422      +11
- Misses          545      547       +2
- Partials         95       96       +1

Impacted Files
Coverage Δ
Complexity Δ

...eedu/module/logic/parser/FindTagCommandParser.java
70.00% <0.00%> (-30.00%)
3.00 <0.00> (ø)

...va/seedu/module/logic/commands/FindTagCommand.java
100.00% <100.00%> (ø)
13.00 <4.00> (+4.00)

src/main/java/seedu/module/model/tag/Tag.java
90.90% <100.00%> (+0.90%)
7.00 <1.00> (ø)

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 d4c856d...c32e725. Read the comment docs.


tech :: Convert vue components to TypeScript

So we can benefit from type checking inside vue components.
Docs to learn how to use these decorators and class syntax:

https://vuejs.org/v2/guide/typescript.html
https://github.com/vuejs/vue-class-component
https://github.com/kaorun343/vue-property-decorator

Note: storybook now uses a specific bundle, also built with the same rollup configuration.
It's therefore needed to export any component to showcase in .storybook/bundle.ts.

@adimascio Thanks for the feedback, I've made the changes and rebased for clarity


Enforce strict reference:# in Entry

Better enforces references in fhir bundle:

all .fullUrl & .reference use the form referenece:#
.fullUrl must be unique within the bundle
.reference must refer to existing .fullUrl within the bundle
tests updated

Now will result in warnings when the wrong format and when the .reference does not match an existing Entry.fullUrl
FhirBundle
   │
   └─ Warning
        · fhirBundle.entry[2].resourceImmunization.patient = "Patient/resource:0" (Reference) should be short resource-scheme URIs (e.g., {“patient”: {“reference”: “reference”:0”}})
        · fhirBundle.entry[2].resourceImmunization.patient = "Patient/resource:0" (Reference) is not one of the defined .fullUrls [resource:0,resource:1,resource:2]

closes #174

Excellent -- I think Patient/resource:0 should be an error rather than a warning (and I suppose also relative URLs like Patient/0, because while it is a syntactically valid relative reference to a FHIR Patient, it's not valid in a Health Cards context since there's no RESTful server base in Bundle.entry.fullUrl).

Changed the warnings to errors


register udf with scala closure

fix Not InMemory Relation

pretty cool: http://ci.adatao.com/view/Component-Unit-Test/job/pAnalytics-UT/com.adatao.ddf$ddf_spark_adatao_2.10/170/testReport/com.adatao.ddf.spark.etl/UDFTest/

quick question do we know why it failed. And if I need to write new UDF, do I have to write it in scala ?

I don't know the reason it failed, so yes, if you want to write UDF, pls
write it in scala
On Thu, Aug 13, 2015 at 7:59 PM khangich<EMAIL_ADDRESS>wrote:

quick question do we know why it failed. And if I need to write new UDF,
do I have to write it in scala ?
—
Reply to this email directly or view it on GitHub
https://github.com/ddf-project/DDF/pull/169#issuecomment-130936192.


Functions for combining gnss and weather model delays

Description

Adding in functions for combining GNSS ZTD and weather model delay estimates
Motivation and Context

How Has This Been Tested?

Has not been tested

Screenshots (if appropriate):
Type of change

[ ] Bug fix (non-breaking change which fixes an issue)
[ ] New feature (non-breaking change which adds functionality)
[ ] Breaking change (fix or feature that would cause existing functionality to not work as expected)

Checklist:

[ ] I have added an explanation of what your changes do and why you'd like us to include them.
[ ] I have written new tests for your core changes, as applicable.
[ ] I have successfully ran tests with your changes locally.
[ ] My change requires a change to the documentation.
[ ] I have updated the documentation accordingly.

Ipython example to get started:
from processDelayFiles import *

loc = '.'
raider_file = 'raider_delays.csv'
ztd_file = 'UNRcombined_gnss.csv'

combineDelayFiles(raider_file, loc=loc)

 mergeDelayFiles(raider_file, ztd_file, 'Combines_delays.csv')