feat(dialog-service): add .closeAll()

Add a convenience method to close all open dialogs, see #214.

For me a .closeAll() convenience method should cover the following points:

just close all current dialogs - the caller is not interested in awaiting completion
close all and await them to close

@PWKad @EisenbergEffect @don-bluelinegrid I'd like input on the following: what should be the behavior when awaiting all to close?

Promise.all and if there is any error the caller should handle it - but this will settle on first error
.catch() on all .cancel() calls and just log the errors
.catch() on all .cancel() calls and return the errors as results - the caller can inspect the results array for the errors if interested - currently submitted impl
add an optional ignoreErrors parameter - .closeAll(ignoreErrors = false). When false it will behave like 1., if true 2.
...

So the developer has set up each view-model currently with a .then and .catch to watch for the result and when you call closeAll each of those modal's are cancelled.  I think in that situation it would have been up to the original caller to watch for those changes, right?

@PWKad The promise returned from DialogController#cancel() is not the same as the one returned from DialogService#open().
I thought some more on this and .cancel() can be rejected:

bug in Renderer#hideDialog() - I don't see what can be done in that case except logging.
bug in the DialogController#close() - ☝
the VMs .canDeactivate() and .deactivate() are rejected - user code
...

So now I don't think DialogService#closeAll() should do anything special in case of rejection. But what to do when .canDeactivate() returns false? The dialog will not close. Do we want to force it to close - if yes, how? Or we just return the controllers that didn't manage to close and leave it to the caller of .closeAll() to decide.

@StrahilKazlachev I'd say force close it and if the developer wants to do it without regard to canDeactivate they can do so.  Keep it simple and if anyone wants to open an issue on making it behave differently we can evaluate then.  Thoughts?

@PWKad Currently the simplest way is to just call .cancel(), but it will take into consideration the result of .canDeactivate() and there is no force close API. I'll ponder on this some more.

@StrahilKazlachev anything you want to review before merging this?

@PWKad Actually I'm currently thinking of closing this PR or just leave it hang till some other issues/questions get cleared. The initial idea from #214 was to add a convenience method that closes all open dialogs. dialogService.controllers.forEach(ctrl => ctrl.cancel()); is it that much code? Also you can decide whether to await all promises to settle or not(ignoring rejections or not). Also what if .canDeactivate() returns false? The dialog will not close and I can't think of a way to force close such dialog. Is an API addition needed?

@StrahilKazlachev
I was the original reporter of https://github.com/aurelia/dialog/issues/214, the motivator for this work item issue.
As noted in the report, this is a core piece of functionality that is absent from the aurelia-dialog implementation.  I currently have an application using a number of dialogs based on aurelia-dialog, and if a dialog opens and then the view changes (session expires so redirects to login; user clicks back button; users clicks other navigation element; etc.) we see the dialog persisting over the view.  This is clearly not correct or what's desired, is just not good.  This is a common case/use case.  Putting the iteration code referenced above into an application defeats the purpose of the module/library, since it puts the burden of boilerplate code to solve a common case, onto the application developer; not to mention the burden of dealing with the other issues for edge cases that have been commented about in this thread.  Rather than every developer-user of the module having to solve these, shouldn't the module solve these for us?  @EisenbergEffect seemed to be in favor of resolving this, for these reasons.  So, why backtrack now?  To bring the module to a level of completeness, there should be a straightforward mechanism for handling this case.  As @EisenbergEffect  mentioned, a closeAll() method would be a first step towards this.  A more elegant solution would be some sort of configuration that allowed for specifying an event (like RouteChange) to automatically close all dialog instances.
Don

@don-bluelinegrid If I didn't want to do this I wouldn't have created the PR in the first place. The number one concern for me is the inability to force close a dialog(.canDeactivate() returning false). I don't want to extend the API with somewhat working method that covers a specific scenario. Also it will be very nice to give your input on:

do you want to await all dialogs to close before continuing or you just want to call .close and that's it
if you want to await all to close do you want to ignore rejections or not - something like Promise.all() vs Promise.all().finally()

@StrahilKazlachev
Thanks for the response.
Regarding the questions -

do you want to await all dialogs to close before continuing or you just want to call .close and that's it

It would be most flexible to have both options.  Providing an await/Promise implementation would give the developer-user the choice of using the Promise to await, or just making the call without waiting.

if you want to await all to close do you want to ignore rejections or not - something like Promise.all() vs Promise.all().finally()

From the consumer's perspective, it would be expected to make a single call like DialogService.closeAll() that returns a single Promise (without the need for a developer-user to be concerned with the inner workings and needing to use Promise.all).  And, for most flexibility, and to meet generally expectations of use of Promises, it would make sense to reject if something failed - if an open dialog did not actually close.  Again, the developer-user would have the option of if or how to handle such a rejection.  And, they should be able to use .finally() of the single Promise return by .closeAll().
Thanks,
Don

@PWKad @EisenbergEffect I'm trying to work on this one, but there is something bothering me. The DialogService has an instance property .controllers(isn't very descriptive) and .hasActiveDialog(hasActiveDialog = !!controllers.length). What does active mean? Just CompositionEngine.compose has succeeded? Or DialogRenderer.showDialog has also succeeded? Currently a controller is added to .controllers after .compose succeeds and before .showDialog() is called. I'm asking this because currently you could take a controller from .controllers and try to close it before .showDialog has completed.

Some of these properties have hung on over time if you have any recommendations for cleaning up,  renaming,  or otherwise removing unused complexity I'm game provided it doesn't break the public api.   Even if it does if we target it for a v1 release I think that is acceptable.

@PWKad I was thinking we are more interested if there are open dialogs. If a dialog succeeds compositionEngine.compose but fails dialogRenderer.showDialog it should not be added to .controllers(as currently implemented .showDialog should fail only if it throws - so it will be a bug) . I'll update the PR.
It won't be completed before #225 because of the new setting - rejectOnCancel, since we will have to filter out rejections from cancellation(when the setting is on).

@PWKad Where are we at with this?

@StrahilKazlachev Since this depends on #225 I'll wait until this can be rebased on top of that when it is merged in tomorrow (pending no issues) and we can review then.

How to manage the controllers that did not manage to close?

canDeactivate returns false?
a. Current behavior - returns a promise that never resolves.
b. Future behavior - return a closeResult with property to indicate the cancellation.

let promise = this.dialogController.close('true').then(result => {
  if (result.wasCancelled) {
    // was not closed
  }
});

Has error thrown on close (could be because deactivate threw Error or canDeactivate threw Error)?
a. Return in the array of close dialog results that did not deactivate properly
a. return a closeResult with property to indicate the cancellation.

 Thank you for your submission, we really appreciate it. Like many open source projects, we ask that you all sign our Contributor License Agreement before we can accept your contribution.4 out of 5 committers have signed the CLA.:white_check_mark: hadrienl:white_check_mark: PWKad:white_check_mark: StrahilKazlachev:white_check_mark: EisenbergEffect:x: Patrick WaltersPatrick Walters seems not to be a GitHub user. You need a GitHub account to be able to sign the CLA. If you have already a GitHub account, please add the email address used for this commit to your account.

@PWKad ready for review.

DialogController.prototype.close refactored as discussed.

always returns {wasCancelled: boolean}
if rejectOnCancel is true the promise will be rejected with CancelDialogError
it is a breaking change since when the close was a success it was returning the dialog result - given that the result is constructed with the data passed by the caller I don't think this is a big problem.

DialogService.prototype.closeAll

returns an array with all controllers whose closing was cancelled
fails if any of the calls to "dialogController.cancel" fails.

open to discussion whether .closeAll should not fail at all and just return the controller, as not closed, when the call to .cancel fails and log and error

DialogService - changed adding to controllers to happen after .showDialog succeeds, if it fails just call .deactivate on the controller to do its clean-up. This way you get access to a controller only if it's open. And that's why I aliased .hasActiveDialog with .hasOpenDialog. If we keep this changes .hasActiveDialog should be removed for v1.
@don-bluelinegrid Any comments on 2?

@StrahilKazlachev if you don't mind can you re-commit without changes to dist folder?  We usually only add the changes to those files during release.

@PWKad it's time to get the hang of it when to use push -f 😞

@StrahilKazlachev did you lose some work?

@PWKad No, this should be all the intended changes. If you see something strange do tell.

No it's all good you just mentioned using force push

@StrahilKazlachev
RE: https://github.com/aurelia/dialog/pull/218#issuecomment-267788039

@don-bluelinegrid Any comments on 2?

I've been following the entire thread of discussion on this, and there had been a large amount of discussion around failure/rejection, and how this relates to closing more than one dialog.  With that, I have a few high-level questions regarding the overall approach -

Under what circumstances would the be more than one dialog rendered in a given moment?  Is this allowed by the framework?

Much of the discussion was around handling failures/rejections from multiple controllers.  It seemed to me that this should be conceptually the same as handling a failure/rejection from a single controller.  When I look at the source code for DialogController.close(), I see that there is an error/rejection handler, however, it's not clear what would possibly cause such an error.  The actual close() method does not do very much, and the error handler is fairly vague in terms of what exception it is catching.  So, I'm wondering what case could cause such a rejection, and whether a complicated failure/rejection-handling strategy is necessary in the solution to the closeAll() case.

In terms of the semantics, I would expect that a caller of closeAll() basically expects any rendered dialogs to be closed, and if for some reason that doesn't happen, some informative error data structure should be returned.  However, I'm not clear on the value of returning the complex structure of an array of DialogController - the question is, if for some reason closeAll() is called, and not all dialogs do close, then what is the recovery strategy at that point?  Can the caller do something useful to recover from this?  If not, then I'm not clear what the usefulness would be of the returned data structure vs. some exception message or enum/key.

Thanks,
Don

@don-bluelinegrid

There is no restriction how many dialogs are open at the same time. The last one opened is the visible one, when closed the previous one becomes visible - stack.pop.
The rejection handler in DialogController.prototype.close only does some clean-up, then passes on the rejection. A rejection can come from the renderer .hideDialog() method, or in the view model .canDeactivate() or .deactivate(), in those cases the source of the rejection will most likely be a bug. Also if .canDeactivate() returns false and the new option rejectOnCancel is true, the promise will be rejected. I want to emphasize that the promises returned by DialogService.prototype.open and DialogController.prototype.close are different.
There is no recovery strategy if not all dialogs get closed or if any of the calls to .close is rejected. The caller of .closeAll() should handle it, that is why the controllers get returned. I'm against the idea to blindly hide those whose call to .close() got rejected or cancelled. And if the renderer .hideDialog() got rejected there isn't a way to hide it.
There could be a forceHide that when set to true will call controller.renderer.hideDialog() for every that failed to close, skipping .canDeactivate() and .deactivate(). Now if .hideDialog() is rejected I don't see what to do. @PWKad what do you think about such option or any other comments as a whole.

Whoever opened the dialog would have the error returned to them still though, correct?  Or did I miss that point.

@PWKad The who opened the dialog will get an error only in the following cases:

a promise got rejected somewhere along the chain from calling DialogService.prototype.open() till .showDialog() - .showDialog() is the last in the chain that can cause rejection.
explicitly by calling .error() on the DialogController
when calling .close(false) on the DialogController and rejectOnError is true - this is the only new one

The DialogController resolves or rejects the promise returned from .open() only after the chain from canDeactivate, deactivate and hideDialog succeeds. .error skips calling canDeactivate.

@StrahilKazlachev Ready to merge?

@PWKad I'm ready. We can always revisit any comments before we hit v1. Should I merge it?

Sure.  This is the process, typically -

Pull down branch locally.
Run tests
Run linter
If everything looks good you can use the big green button on GitHub just use the rebase option instead of the merge if possible (just keeps history a bit cleaner)

Master has an issue right now with lint so I'm going to fix that up real fast and push up.

Woops realized you had fixed the lint issues so only removed the ones I created and pushed up, should be good to go now :)

@EisenbergEffect @PWKad @StrahilKazlachev
A couple of questions about this -

It looks like the addition of the closeAll() method was merged to master 18 days ago, in dialog-service.  However, there is no new tag/release that includes this, so it is effectively not available for use via npm.  What is the plan here to get this released to a tagged version?

When I look at dialog-service in master, I see that indeed there is a new closeAll() method.  However, I'm also noticing that the openAndYieldController() method is removed.  What's the background on this?  We are relying on this in our application.

Thanks,
Don

About .openAndYieldController() see #224 and related issues/PR's - you can still get the controller.
We are working towards v1 and trying to make the API simpler and easier to use.
Also the dialog is being migrated to TS(more accurate typing), so it should be easier to migrate.
I'll see if we can put some kind of a roadmap.

@don-bluelinegrid The next release will include a series of breaking changes and will be the last beta prior to v1.  We will compile a list of those changes to include in the release and try to get the release out in the next week or so.
Once released this should stabilize all APIs and we'd love to have your feedback on the upgrade process before v1 to make sure nothing is missing and working as expected for all of your use cases.  Does that seem reasonable?

@PWKad
Patrick,
I'm checking again, and I see that the release tag is up to 1.0.0-beta-3.0.1.  Yet, I don't see the inclusion of the closeAll() method in this tag or in master.
What's the status?  I would have expected a near-release beta to include all of the code planned for the release.  I'm eagerly waiting for this to be released in order to fix glaring UX problems when using dialogs.
Thanks,
Don

We have breaking changes queued up right now for the final beta release - as a note the beta 3.0.1 tag is from late October, I'll try to get a better exact date for final release and post it here.

Status?

@PWKad
Patrick,
on Jan 29 you mentioned preparing for a final beta release.  Do you have status on this?  We have bugs in our product backlog related to the inability to close arbitrary dialogs on view change, which depends on this fix, and our next release is approaching - so we are trying to determine if these will be resolvable.
Thanks,
Don

@don-bluelinegrid sorry for the radio silence - we are wrapping up refactoring the final bits to TypeScript which is mostly complete save for a few tooling changes.  We are planning a meeting for Monday morning to finalize the tooling bits and then push up a release candidate.  I'll be sure to ping you as soon as it is ready.  Again, apologies for the delay.


SCP-3566 Conformance test suite skeleton

This is the first of a series of PRs that will set up the Plutus conformance test suite. The conformance test suite aims to provide an official and comprehensive test suite that checks that the behaviour of Plutus conforms with the specified behaviour. This PR contains:

a skeleton set up for UPLC and TPLC evaluation tests, TPLC typechecking tests. No tests are running yet. They will only run after a generic test function is set up in another PR.
the first batch of UPLC evaluation tests taken from RV (https://github.com/runtimeverification/plutus-core-semantics/tree/master/tests).

In the next few PRs:

Set up a generic test function that users can input an implementation to test against for all tests.
Set up tests for UPLC evaluation tests.
More tests will be added. With more output formats possibly.
More README content.
Set the tests up to run against the Agda implementation.

Pre-submit checklist:

Branch

[ ] Tests are provided (if possible)
[x] Commit sequence broadly makes sense
[x] Key commits have useful messages
[x] Relevant tickets are mentioned in commit messages
[x] Formatting, materialized Nix files, PNG optimization, etc. are updated

PR

[ ] (For external contributions) Corresponding issue exists and is linked in the description
[x] Self-reviewed the diff
[x] Useful pull request description
[x] Reviewer requested

Because of the large number of files, this may be easier to review if you checkout the branch and look at the plutus-conformance directory.

Oh yeah, did you want to do the organization of the test cases into subdirectories in this PR? I think it's probably a good time to do it?

I think (3) is fine. We could also have an expected file which prints the parse error!

I think the things in constant should just be in builtin: they're mostly testing builtins. I think builtin can include builtin types too, in which case it's all consistent.
Some of the tests which don't have .expected files look like they should parse...

Some of the tests which don't have .expected files look like they should parse...

You're right. I'm gonna take your suggestion and add .expected files to everything that doesn't have one.

I would like to merge this and add a separate golden test suite for adding missing output files. It would be tidier that way.

JIRA ticket added for the golden test suite.


Document preview doesn't work for F# documents

In latest master, Arrow up/down in Solution Explorer. Note that moving to a C# file opens it in the editor, in preview mode. This doesn't happen for F# files.

Expected behavior
Preview should open
Actual behavior
Nothing happens

Closing as duplicate of #1763.


update-gitops-repository 1.1.8

https://github.com/bitrise-io/bitrise-step-update-gitops-repository/releases/1.1.8
What to do if the build fails?
At the moment contributors do not have access to the CI workflow triggered by StepLib PRs. In case of a failed build, we ask for your patience. Maintainers of Bitrise Steplib will sort it out for you or inform you if any further action is needed.
New Pull Request Checklist
Please mark the points which you did / accept.

[x] I will not move an already shared step version's tag to another commit
[x] I read the Step Development Guideline
[x] I have a test for my Step, which can be run with bitrise run test (in the step's repository)
[ ] I did run bitrise run audit-this-step (in the step's repository - note, if you don't have this workflow in your bitrise.yml, you can copy it from the step template.)
[x] I read and accept the Abandoned Step policy

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


Added SDL_CaptureMouse binding.

https://wiki.libsdl.org/SDL_CaptureMouse

This change is

Thanks for the patch! Merged.

This change appears to break Golang builds with the error could not determine kind of name for C.SDL_CaptureMouse

Hmm... what build is that? It looks like it passes CI.
(If there is a problem with it it should be reverted...)
What SDL version do you use?

How I noticed was that our own build started failing: https://travis-ci.org/hybridgroup/gobot/jobs/165784906#L753
This is how we're getting SDL for our builds: https://github.com/hybridgroup/gobot/blob/dev/.travis.yml#L17-L20
Thanks!

I think your libsdl2 is to old. (Latest is 2.0.4)
Not sure what requirements the go-sdl2 authors have for the libsdl2 dependencies?
(Again if this is a problem we should revert the patch.)
You can apply this to your build process instead of apt-get them.
Exclude SDL2_mixer and the "--prefix=$SDL_PREFIX" part if you do not need them.

I added a placeholder SDL_CaptureMouse() and prints a warning message if it's not supported by the native SDL2 library (should do that for other stubs as well..). Hopefully this solves the problem.

That fixed it for us. Thank you!


Filetype dropdown menu disappearing from save dialog in Microsoft Word

Issue

This is with chunkwm running, note how the file format dropdown at the bottom is shown briefly during the animation but disappears after the it's finished.
Intended Behavior

This is with chunkwm not running. The file format dropdown persists after the initial animation.
Reproduction
I'm running macOS 10.14.3, chunkwm 0.4.8, and Microsoft Word 16.16.8. But this issue has been happening for as long as I've been using chunkwm, through the last OS upgrade and a few windows updates.
Additional Notes

The issue persists when the window is floating
The issue persists when there are any rules forcing all windows owned by Microsoft Word to float
If I want to export my Word Documents to PDF I have to disable chunkwm first

Here is the output for the query for all windows:
➜  ~ chunkc tiling::query --desktop windows
226, iTerm2, zsh
4192, Microsoft Word, <unknown> (invalid)
3286, Microsoft Word, Doc2

I can not reproduce this with Office 16.17 and latest chunkwm and latest mojave

I have exactly the same issue:

macOS 10.14.3
Microsoft Word 16.23 (Insider Build Slow)

$ chunkwm  --version
chunkwm 0.4.8 (aecb)

I have the following tiling rules in my ~/.chunkwmrc:
# -------------------------------------------------------------------------------------
# NOTE: rules for the tiling plugin

# -- Terminal (alt + cmd - enter)
chunkc tiling::rule --owner 'kitty' --name '[[:space:]]+Terminal[[:space:]]+' --state sticky --grid-layout 4:4:1:1:2:2 &

# -- System Preferences
chunkc tiling::rule --owner 'System[[:space:]]+Preferences' --subrole AXStandardWindow --state float --grid-layout 4:4:1:1:2:2 &

# -- TextMate (float various windows)
chunkc tiling::rule --owner 'TextMate' --name "Find|Files|Projects|Bundles|Variables|Software*|Terminal|Bundle*" --state float --grid-layout 4:4:1:1:2:2 &

# -- Outlook (float Reminder Window)
chunkc tiling::rule --owner 'Microsoft[[:space:]]+Outlook' --name "*Reminder*" --state float --grid-layout 4:4:1:1:2:2 &

# -- TILING:RULE:FLOATING -------------------------------------------------------------

# -- Finder
chunkc tiling::rule --owner 'Finder' --name 'Copy|Move|Info|Connect' --state float &
# -- Calculator|Dictionary|App Store
chunkc tiling::rule --owner 'Calculator|Dictionary|App[[:space:]]+Store' --state float &

# -- TILING:RULE:STICKY ---------------------------------------------------------------

# -- Messages|ChatMate WhatsApp|Activity Monitor
chunkc tiling::rule --owner 'Messages|ChatMate[[:space:]]+for[[:space:]]+WhatsApp|Activity[[:space:]]+Monitor*' --state sticky --grid-layout 4:4:1:1:2:2 &

# -- TILING:RULE:DESKTOP --------------------------------------------------------------
# -- Tiling Rules for various Desktops
# -- Desktop 2
chunkc tiling::rule --owner 'Code' --desktop 2 --follow-desktop &
# -- Desktop 3
chunkc tiling::rule --owner 'Calendar|Microsoft[[:space:]]+Outlook|Mail' --desktop 3 --follow-desktop &
# -- Desktop 4
chunkc tiling::rule --owner 'Agenda|iA[[:space:]]+Writer' --desktop 4 --follow-desktop &
# -- Desktop 5
chunkc tiling::rule --owner 'Safari|qutebrowser' --desktop 5 --follow-desktop &
# -- Desktop 6
chunkc tiling::rule --owner 'Microsoft[[:space:]]+Word|Microsoft[[:space:]]+Excel|Microsoft[[:space:]]+PowerPoint' --desktop 6 --follow-desktop &
# -- Desktop 7
chunkc tiling::rule --owner 'Tower*|P4V' --desktop 7 --follow-desktop &
# -- Desktop 8
chunkc tiling::rule --owner 'Screen[[:space:]]+Sharing' --desktop 8 --follow-desktop &
# -- Desktop 9
chunkc tiling::rule --owner 'Jabber' --desktop 9 --follow-desktop &

Does anyone spot the problem on my end? What other information would you need to further track this down?

This is a bug with window_float_topmost I think. If you disable it you should be unable to reproduce the issue.

This is just to confirm that @dominiklohmann is right. After setting:
chunkc set window_float_topmost          0

in ~/.chunkwmrc and restarting chunkwm the problem goes away.

I can confirm that the bug is with window_float_topmost. The issue goes away after setting it to 0.

I wonder if we can iterate through all child elements of the window that we make topmost, and set their level to topmost as well. That does seem quite farfetched, and I don't think it will work, but it's worth a shot.


Auto state entry doesn't appear under the preview features

Hi,
I installed auto state extension from the market place.
I'm admin of My azure organization. It's a free version for testing purpose and training.
I did find the preview features' menu. But I can't locate the auto state line to activate it.
Any idea why ?
For your information, New boards hubs is off.
Regards
Steeve.

Hi Steeve!
The only thing I can think of is the feature scope. Auto State is scoped at a project level which means you need to be inside a project for the feature flag to appear. (The url should look something like https://dev.azure.com/ORGANIZATION/PROJECT)
When you open the modal with all the feature flags the dropdown should have three options

for me [Your name]
for this project [Project Name] (This is the one you should select)
for this organization [Organization Name]

Could you please check this and see if the toggle appear? I'll also clarify this in the documentation.

Hi Joachim,
Thank you for your very quick answer.
It's exactly the point.
I was able to activate auto state.
And the Extensions Entry appeared in my project settings.
It was disturbing because this entry was only visible at the organization level before I activated auto state. So It was at this level I was looking, and not at the project level.
Thank you for your time.
Have a nice weekend.
Regards
Steeve


docs: fix 1.23 new feature list

Avoids using a definition list for the new 1.23 features, as the website does not have proper formatting in place for definition lists.
Closes #186

I'd rather use a header at that point (semantically more correct).

Switched to headers. H4's as the H3's are too near in size and emphasis to the H2's used for the section headings.


chore(instrumentation-mysql2): drop unneed @types/mysql2 dep

Types are included in 'mysql2' now (as of some 2.x release).
The github:types/mysql2 dependency is problematic for dependabot version updates.
See: https://github.com/open-telemetry/opentelemetry-js-contrib/issues/1806#issuecomment-1816889209

Waiting for one TAV run before merging. 👀


Add reserved IPs to ipcache in XDS

These IPs were not being properly propagated to XDS, because they sidestep the kvstore sync logic. Fix this in a fairly minimal way (Create a function from the existing code that can be called, then call it).

test-me-please

test-me-please

This also fixes #3087 .

I messed up the refactoring, if an Identity mapping for an IP changes, this isn't updating the old identity currently. I'll fix it up.

test-me-please

test-me-please

test-me-please

test-me-please

test-me-please

@rlenglet Do you think this needs backporting for 1.0?

test-me-please

Do you think this needs backporting for 1.0?

I don’t think so. This is not fixing any bug, right?

@rlenglet We're not currently forwarding the host's IP into ipcache, so presumably we don't know the proper identity in envoy to be able to apply policy for it. That's the main motivation behind this PR. If this isn't a major issue, that's fine, we can just release-note this for 1.1.

@joestringer Ah, good point. We can backporting it then.

@joestringer weren't the host IPs being added to the IP cache by https://github.com/cilium/cilium/pull/3436 ?

@ianvernon to the BPF ipcache, yes, but not to the XDS cache. See daemon: Push reserved IP->Identity mappings to XDS.

@joestringer ah, OK, just making sure :)


feat: Add documentation for minutely timeline

Adds documentation for the minutely timeline (https://github.com/rustic-rs/rustic_core/pull/374) in ./config/full.toml and ./config/README.md

Something happened to the formatting I think?

I forgot to do dprint fmt, apologies!


Openshift install with VMware NSX-T

Version details
Openshift version - 3.11
NSX-T version - 2.4
Vsphere version - 6.5
Issue
After installing Openshift with NSX-T , applications deployed in the cluster are not able to connect outside NSX-T
Description
We installed openshift , integrated with the T0 router , initially the T0 router was active-active , so we changed it to active standby. But whenever we create a namespace in openshift, the associated T1 router , switches and ports are created but applications deployed in the namespaces cannot access anything outside NSX-T
We have associated the SNAT pool and passed in the T0 details to the T1 router
We find that when when we explicitly associate the T1 with the edge nodes , we have egress . But the association should happen implicitly because they are being created by the NCP application.
There is no explicit association with the edge cluster from the variables we pass in to NCP. Is this association hinged on the T0 router's association ?
Is there anything that you can point to that we may be missing ? we have followed the documentation.
Kindly let me know if what additional information you need and I will be happy to provide it.

@kratos81 Do the OCP nodes have 2 interfaces?
Can you post your inventory here?

Hi @dav1x
This is our inventory file
[OSEv3:children]
ansible
masters
infras
apps
etcd
nodes
lb

[OSEv3:vars]
## Ansible Vars
become=yes
ansible_become=yes
ansible_ssh_user=root

## Additional General
osm_use_cockpit=true
oreg_url=xxxxxx
default_subdomain=xxxx

## Openshift General
openshift_deployment_type=openshift-enterprise
openshift_disable_check=memory_availability,disk_availability,docker_storage
openshift_docker_insecure_registries=xxxx
openshift_node_local_quota_per_fsgroup=512Mi

## OpenShift Master General
openshift_master_cluster_method=native
openshift_master_cluster_public_hostname=xxxxxx
openshift_master_default_subdomain=xxxxx

## Image Stream Mods
openshift_examples_modify_imagestreams=true
registry_host=xxxx

## Identity
<redacted>

## Network Settings
openshift_use_nsx=true
os_sdn_network_plugin_name=cni
openshift_use_openshift_sdn=false
openshift_node_sdn_mtu=1500
os_firewall_use_firewalld=true

## vSphere Cloud provider
openshift_cloudprovider_kind=vsphere
openshift_cloudprovider_vsphere_username="foo"
openshift_cloudprovider_vsphere_password="bar"
openshift_cloudprovider_vsphere_host="xxxx"
openshift_cloudprovider_vsphere_datacenter="xxxx"
openshift_cloudprovider_vsphere_cluster="xxxx"
#openshift_cloudprovider_vsphere_resource_pool=ResourcePool
openshift_cloudprovider_vsphere_datastore="xxxxx"
openshift_cloudprovider_vsphere_folder="Managment VMs"

# NSX specific configuration
#nsx_use_loadbalancer=false
nsx_insecure_ssl=true
nsx_api_managers='<IP_ADDRESS>'
nsx_api_user='admin'
nsx_api_password='xxxxx'
nsx_openshift_cluster_name='xxxxx'
nsx_tier0_router='ub-ocp-t0-1'
nsx_overlay_transport_zone='ub01-ocp-c01-w-overlay'
nsx_container_ip_block='ocp-cluster-block'
nsx_no_snat_ip_block='OCP_DEV_NO_NAT'
nsx_external_ip_pool='OCP_DEV_NAT'
#nsx_top_fw_section='containers-top'
#nsx_bottom_fw_section='containers-bottom'
nsx_ovs_uplink_port='eth1'
#nsx_edge_cluster_name='Edge Cluster Transport'
nsx_ncp_image=xxxxx
nsx_ovs_url='xxxxx'
nsx_cni_url='xxxx'
nsx_kmod_ovs_url='xxxx'

## Hosted ETCD
openshift_hosted_etcd_storage_kind=dynamic
openshift_hosted_etcd_storage_volume_name=etcd-vol
openshift_hosted_etcd_storage_access_modes=["ReadWriteOnce"]
openshift_hosted_etcd_storage_volume_size=1G
openshift_hosted_etcd_storage_labels={'storage': 'etcd'}

## Identity Providers
#openshift_master_ldap_ca_file=/home/cloud-user/mycert.crt

# OpenShift Registry
openshift_hosted_registry_storage_kind=vsphere
openshift_hosted_registry_storage_access_modes=['ReadWriteOnce']
openshift_hosted_registry_storage_annotations=['volume.beta.kubernetes.io/storage-provisioner: kubernetes.io/vsphere-volume']
openshift_hosted_registry_replicas=1

## OpenShift Routers
openshift_hosted_router_replicas=3

## Metrics
openshift_cluster_monitoring_operator_install=false
#openshift_metrics_install_metrics=true
#openshift_metrics_storage_kind=dynamic
#openshift_metrics_storage_volume_size=25Gi

## Logging
#openshift_logging_install_logging=true
#openshift_logging_es_pvc_dynamic=true
#openshift_logging_es_pvc_size=30Gi
#openshift_logging_elasticsearch_storage_type=pvc
#openshift_logging_es_cluster_size=1
#openshift_logging_es_nodeselector={"node-role.kubernetes.io/infra": "true"}
#openshift_logging_kibana_nodeselector={"node-role.kubernetes.io/infra": "true"}
#openshift_logging_curator_nodeselector={"node-role.kubernetes.io/infra": "true"}
#openshift_logging_fluentd_nodeselector={"node-role.kubernetes.io/infra": "true"}
#openshift_logging_storage_kind=dynamic

## Hosts Section ##
[ansible]
localhost

[masters]
<master nodes>

[infras]
<infra nodes>

[apps]
<app nodes>
[etcd]
<references masters>
[lb]

[nodes]
<all nodes>

Thanks , I have provided a hosts file (redacted )
So for background , we tagged both NICs  , based on the the documentation , So the entire worklflow works , only that when we create a project , we found out that the T1 routers are not associated with the edge cluster.  Previous versions of NSX passed it in as a variable as "nsx_edge_cluster_name='" but this is not available in 2.4 as an option.
Do we need to explicitly associate this ? can we pass it in as a variable ? how does NCP associate the t1 router it creates with the edge cluster ?
Let me know if you need more clarification on this or more information

Let me engage an NSX wizard @kratos81 .

Ok thanks !

@kratos81 this issue was just brought to my attention! I believe we have fixed it yesterday on webex, right?
We had to re-configure T0 and Segments thru the advanced UI in NSX as simplified UI will be supported with next release.
If yes, we can close this issue.

Yes , it can be closed

Awesome! Thanks all


fixing docs.rs build and adding docs.rs badge

Should fix https://github.com/microsoft/com-rs/issues/91 and add the docs.rs badge
Does it worth publishing a new crate to fix docs.rs?

Merge https://github.com/microsoft/com-rs/pull/94 before this one because cargo fmt check on the repo is not passing .


post-install-cvmfs-fix dosent-work when CVMFS is deployed as external dependency

Hi,
It seems that the post-install-cvmfs-fix is not able to terminate / run when cvmfs is deployed in another namespace.
I think this is because the namespace is retrieved from the .Release. in configmap-cvmfs-fix example.
I don't have the history of the reason for this workaround, and I don't know if it's necessary even when cvmfs is deployed cluster-wide (I think it is).
If the fix is necessary, could we set the "cvmfs" namespace as a value?  This would probably require a dedicated SA with permissions on the "cvmfs" namespace.
If not, should the fix be conditional on cvmfs.deploy ?
If you could point me in the right direction here, I'd be happy to do this PR!
Pod Logs :
 kubectl logs -n galaxy-dev dev01-post-install-cvmfs-fix-job-mqr62
---
Waiting on nodeplugin pod to enter 'Running' status. Currently ''.
Waiting on nodeplugin pod to enter 'Running' status. Currently ''.
Waiting on nodeplugin pod to enter 'Running' status. Currently ''.
Waiting on nodeplugin pod to enter 'Running' status. Currently ''.
Waiting on nodeplugin pod to enter 'Running' status. Currently ''.
Waiting on nodeplugin pod to enter 'Running' status. Currently ''.
Waiting on nodeplugin pod to enter 'Running' status. Currently ''.
Waiting on nodeplugin pod to enter 'Running' status. Currently ''.
Waiting on nodeplugin pod to enter 'Running' status. Currently ''.
Waiting on nodeplugin pod to enter 'Running' status. Currently ''.
Waiting on nodeplugin pod to enter 'Running' status. Currently ''.
Waiting on nodeplugin pod to enter 'Running' status. Currently ''.
Waiting on nodeplugin pod to enter 'Running' status. Currently ''.

Yeah, it looks like the fix assumes CVMFS will be in the .Release.Namespace. We could do with better logic when it comes to locating the CVMFS nodeplugin.  It might also be a good idea to make the fix conditional on a flag set in the values.yaml file; something like cvmfs.enable-fix=false.
The fix is conditional on CVMFS being the refdata source and we do have an open PR to remove it. We just haven't felt confident enough to apply it yet.
The fix is a result of older versions of the nodeplugin hanging after installation. Restarting the pod resolved that problem.
Any and all PR's are always welcome!


background notifications "content-available" flag

Hi,
I noticed the event listeners are not called when the App is in background mode. The notification banner is displayed but the event handler is not called.
I have the "contentAvailable" flag set on the Notification object but it makes no difference. The listeners are only called when the app is in foreground mode.
According to the Phonegap-Plugin-Push documentation, setting 'content-available:1' should invoke the listeners if the App is in the background. I believe Morten has added the code for this in the Raix/Push plugin and you have to specify 'contentAvailable:1' in your Notification object.
Am I missing something ?   I am trying this on IOS.
Best regards and Many Thanks,
Beemer
## Server
Push.send({
title : 'MyApp',  //no effect. IOS sets this automatically to the name of the App
text : formattedMsg,
from: 'server',
badge: badgeCount,
sound: 'default',
payload : jsonObjectHere,
contentAvailable: 1,
query: {
userId: alert.toUserId
}
});
## Client
Push.addListener('message', (msg)=>({
// do something with the notification
});
Push.Configure({
ios: {
alert: true,
badge: true,
sound: true,
clearBadge: true
}
});
## Server Config
Push.Configure({
apn: {
certData: Assets.getText(certPath),
keyData: Assets.getText(keyPath),
passphrase: certPassword,   // passphrase you created when exporting your keys
production: true,
gateway: 'gateway.push.apple.com'
},
sendBatchSize: 5
});
ref: Push message arrives with app in background

Found a fix for this. You need an event-handler to listen for the 'startup' message.
In other words, you need 2 event-listeners ::
(1) This one listens for messages that arrive when the App is in foreground mode.
Push.addListener('message', (msg)=>({
// do something with the notification
});
(2) This one to process messages that arrive when the App is in the background. The listener will be called when the User opens up the App again. IOS will invoke the listener for every notification it received while the App was in the background.
Push.addListener('startup', (msg)=>({
// do something with the notification
});
Hope this helps.
Best regards,
Beemer


Force-wrap source code

Source code today can be scrolled out of bounds. This presents readability issues with introducing horizontal scrolling. We should force-wrap the source code.
On first load:

During horizontal scrolling:

On second thought it needs a smarter treatment to not break code like this:

Closing for now.


Look at alternative ways of implementing the OpenGL backend

Currently I'm using the gl crate and writing the unsafe wrapper myself, which scares me a bit...
Long term, we might want to move to something like gfx-hal, but we might be able clean things up a bit short-term by using the gleam wrapper library that Servo uses. It's basically just the code I've been having to write anyway, but much better tested and written by people who know what they're doing 😅
EDIT: Okay I'm going to use this as a general purpose tracking issue for 'what do we use for getting pixels on the screen':

gleam - Would probably be the simplest change, as it's basically as thin a GL wrapper as you can possibly write. This would probably be a nice short term step,
gfx-hal - I like the idea of using this (and if I do, it'll probably be via contributing to whatever Icefoxen is working on) - that said, it doesn't currently look simple to get it working with SDL, and I'm categorically not dropping SDL until the Rust alternatives are more developed.
glium - Probably the nicest/easiest to use GL wrapper, although I have some concerns about bugs/maintainance based on discussions I've seen on Discord.
luminance - Looks quite 'Glium`-ish, might also be worth considering (especially as it seems a little less opinionated).

I had a go at this on a seperate branch - it worked well for the most part! The main pain point would be that Gleam represents OpenGL as an Rc wrapped struct, which would require some rework on the Drop implementations for our GL handles. That said, I think that would go a long way towards resolving #1, so might be worth it...
Another alternative to this would be to just use gl_generator ourselves, but I don't know whether that would ramp up the build times.

Another alternative would be glow once that stabilizes more - it looks extremely cool, and could function as a pathway to getting Tetra running on the web/mobile?

Rendy is out now:
https://www.reddit.com/r/rust/comments/apeq8v/rendy_is_released/
gilrs is still being actively developed. Have you created issues for whatever is blocking you?

I'd like to take more of a look at Rendy soon, but I feel like I'd need to learn Vulkan first, which is slightly intimidating 😅
There's not one thing in particular blocking me (and I think any specific concerns I have already have issues raised)! I'm just not particularly in any rush to move away from SDL - it works, and it does everything I need right now.
That's generally the issue I have with the idea of switching to pure Rust dependencies - it'd add a lot more complexity (especially if I went for something gfx-hal based) without really giving me any tangible benefits, as far as I can tell.

Now that glow is reasonably stable (or at least stable enough that they're using it in gfx-hal's OpenGL backend), I'm pretty tempted to switch to that, at least as a first step.

Closing this, as we've switched to glow for now. I'm working on a larger refactor of the graphics backend to make it a little more stateless/bindless, which should open the door to using other libraries eventually, but this is a good first step.


Themeing for editor squiggles

I would like to have custom highlight for errors:

for example such an aggressive  one:

Started discussion on stackoverflow and found that for now VSCode does not have such option.

Please.

Green squiggles used for warning messages are hardly visible with dark color themes.

I posted a workaround (hack) on the stackoverflow thread here - it works, but I am having to reapply this on every update, and it makes VS Code report itself as corrupted, both of which are pretty inconvenient.
This is a significant accessibility hurdle for colorblind people using VS code. I think any solution to making this configurable should be as low-friction as possible.
For example, please consider just allowing raw css to be specified for the error style, on top of an existing theme, similarly to how this workaround does. If these styles are deeply integrated into the theming and a completely new theme has to be created to change them, this will make it more of a hassle than necessary to tweak the styles, and the themes will not necessarily even be very shareable since different people will want/need slightly different tweaks.
Thanks for all the great work!

I'd love to have the ability to highlight a whole line when there's an error.  It's so easy to miss an error when scanning through a file.

Yes, please add this.

Agree with davnicwil "This is a significant accessibility hurdle for colorblind people using VS code."

Color blind person here. PLEASE make this change. The current color is near impossible to see for some of us.

Closing as duplicate of https://github.com/Microsoft/vscode/issues/9819

@bpasero this issue isn't really a duplicate of #9819, in my opinion. Changing the color of the squiggles is an improvement, and a welcome change in v1.12, but I also want to add a background highlight to the error. Will there be more properties coming which allow for this?

agree with @thomstark and Please

I absolutely skip errors all the time, even when I know it's somewhere on the page - just cannot find it.

I absolutely skip errors all the time, even when I know it's somewhere on the page - just cannot find it.

I usually have to use the marker on the scroll bar on the right (red line) to actually find it; it blends in too much.
MS - just make this configurable, like:
{
    "editer.lintConfig": {
        "lintStyle": "x"  //  An alternate style for the squiggle, maybe "squiggle, X's, asterisk, question marks
        "width":  15, //  line width
        "height": 10, //  height of the error design from point to point
        "foreground": "#f50000",
        "background": "rgba(255,105,180, 0.5)"
    }
}

It would be nice if we had some real hooks to write extensions for this. This is actually something I'd rather be able to target with an extension vs. just theming. It would be an extension worth the time of creating 🥇

You guys have got to checkout this VS Code extension. This is better than I could have imagined to solve this issue:
https://marketplace.visualstudio.com/items?itemName=PhilHindle.errorlens
It's beautiful. Here's an example on a TypeScript Express server I where I have a ton of flags from TS:

You can now use the following color tokens to highlight the background color of errors/warnings/info in the editor:

editorInfo.background
editorWarning.background
editorError.background

@misolori awesome work, thanks for this change!


Fixes nrc/rustfmt#187

Thanks for the PR! There's a couple more instances where .len() == 0 is used. Could you replace those as well?

I don't understand 662 line..
What should I do with this?

@myromeu lifetimes.is_empty() && tys.is_empty()

'+' similarly '&&' ?

No, not quite.
So, in this case there are two lists and we want to check that both are empty. Currently we do this by taking the length of each list and adding them together and checking to see if they are zero. This relies on the fact that if a = 0 and b = 0 then a+b = 0. The && is logical and (i.e., a && b is true if both a and b are true). + is normal addition of two numbers.

nrc, thank you. I didn't think of immediately (:

Its completed.

Thanks, looks good! It needs a rebase, could you try to fix the Git history too please?  I imagine the easiest way to fix this is to start with a new branch and cherry-pick your two commits from the existing branch, then squash those two commits, then rebase to upstream/master). If you could give the commit a meaningful description too, and just reference #187 in the body of the commit message, that would be awesome.

I apologize for the long absence. I understand what you want. I'll try to do it..

I can't fix that.
I added my commits in new branch. After I merged changes (resolve all changes). And ran 'cargo test'..
That ended with output:
'''
Compiling rustfmt v0.0.1 (file:///home/hasher/projects/rust/rustfmt)
Running target/debug/rustfmt-70b05d62e82ba6b1
running 0 tests
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured
 Running target/debug/rustfmt-f6206b8e3f3f6f09

running 7 tests
test issues::find_issue ... ok
test comment::test_find_uncommented ... ok
test comment::comment_end ... ok
test comment::format_comments ... ok
test issues::find_unnumbered_issue ... ok
test issues::issue_type ... ok
test utils::power_rounding ... ok
test result: ok. 7 passed; 0 failed; 0 ignored; 0 measured
 Running target/debug/system-8aee14f10fe2178e

running 2 tests
test system_tests ... ok
test idempotence_tests ... FAILED
failures:
---- idempotence_tests stdout ----
Testing 'tests/target/issue-64.rs'...
Testing 'tests/target/attrib.rs'...
Testing 'tests/target/match.rs'...
Testing 'tests/target/loop.rs'...
Testing 'tests/target/mod-1.rs'...
Testing 'tests/target/imports-reorder.rs'...
Testing 'tests/target/string-lit.rs'...
Testing 'tests/target/struct_lits.rs'...
Testing 'tests/target/skip.rs'...
Testing 'tests/target/tuple.rs'...
Testing 'tests/target/imports.rs'...
Rustfmt failed at tests/target/imports.rs:5: line exceeded maximum length (sorry)
Rustfmt failed at tests/target/imports.rs:6: line exceeded maximum length (sorry)
Testing 'tests/target/doc.rs'...
Testing 'tests/target/closure.rs'...
WARNING: tests/target/closure.rs:29: found TODO
Testing 'tests/target/expr.rs'...
Rustfmt failed at tests/target/expr.rs:12: line exceeded maximum length (sorry)
Rustfmt failed at tests/target/expr.rs:60: line exceeded maximum length (sorry)
Testing 'tests/target/attrib-extern-crate.rs'...
Testing 'tests/target/fn.rs'...
Testing 'tests/target/hello.rs'...
Testing 'tests/target/enum.rs'...
Testing 'tests/target/structs.rs'...
Testing 'tests/target/comments-fn.rs'...
Testing 'tests/target/trait.rs'...
Testing 'tests/target/multiple.rs'...
Rustfmt failed at tests/target/multiple.rs:25: line exceeded maximum length (sorry)
Testing 'tests/target/struct_lits_visual.rs'...
Rustfmt failed at tests/target/struct_lits_visual.rs:20: line exceeded maximum length (sorry)
Rustfmt failed at tests/target/struct_lits_visual.rs:21: line exceeded maximum length (sorry)
Rustfmt failed at tests/target/struct_lits_visual.rs:22: line exceeded maximum length (sorry)
Rustfmt failed at tests/target/struct_lits_visual.rs:23: line exceeded maximum length (sorry)
Rustfmt failed at tests/target/struct_lits_visual.rs:24: line exceeded maximum length (sorry)
Rustfmt failed at tests/target/struct_lits_visual.rs:25: line exceeded maximum length (sorry)
Rustfmt failed at tests/target/struct_lits_visual.rs:26: line exceeded maximum length (sorry)
Rustfmt failed at tests/target/struct_lits_visual.rs:28: line exceeded maximum length (sorry)
Rustfmt failed at tests/target/struct_lits_visual.rs:29: line exceeded maximum length (sorry)
Rustfmt failed at tests/target/struct_lits_visual.rs:30: line exceeded maximum length (sorry)
Rustfmt failed at tests/target/struct_lits_visual.rs:31: line exceeded maximum length (sorry)
Rustfmt failed at tests/target/struct_lits_visual.rs:32: line exceeded maximum length (sorry)
Rustfmt failed at tests/target/struct_lits_visual.rs:33: line exceeded maximum length (sorry)
Rustfmt failed at tests/target/struct_lits_visual.rs:34: line exceeded maximum length (sorry)
Testing 'tests/target/long-fn-1.rs'...
Testing 'tests/target/paths.rs'...
Rustfmt failed at tests/target/paths.rs:5: line exceeded maximum length (sorry)
Rustfmt failed at tests/target/paths.rs:7: line exceeded maximum length (sorry)
Rustfmt failed at tests/target/paths.rs:8: line exceeded maximum length (sorry)
Rustfmt failed at tests/target/paths.rs:9: line exceeded maximum length (sorry)
Rustfmt failed at tests/target/paths.rs:10: line exceeded maximum length (sorry)
Rustfmt failed at tests/target/paths.rs:13: line exceeded maximum length (sorry)
Rustfmt failed at tests/target/paths.rs:17: line exceeded maximum length (sorry)
Testing 'tests/target/fn-simple.rs'...
Testing 'tests/target/expr-visual-indent.rs'...
Testing 'tests/target/mod-2.rs'...
Testing 'tests/target/other.rs'...
Testing 'tests/system.rs'...
WARNING: tests/system.rs:163: found TODO
WARNING: tests/system.rs:177: found TODO
Testing 'src/bin/rustfmt.rs'...
Testing 'src/lib.rs'...
thread 'idempotence_tests' panicked at 'arithmetic operation overflowed', src/expr.rs:1011
thread 'idempotence_tests' panicked at 'Downcast failed.', ../src/libcore/option.rs:331
failures:
idempotence_tests
test result: FAILED. 1 passed; 1 failed; 0 ignored; 0 measured
'''

It's difficult to say anything without the code. Can you push the buggy merge on this PR ?

Yeah
Code was pushed.

There is a lot of conflict marks remaining here, the code doesn't compile. Please push the code with conflicts resolved (the code that caused the error you shown above).

It builds now, but not completes tests...

This solves the bug (this was an unsigned integer computation underflowing).
--- a/src/expr.rs
+++ b/src/expr.rs
@@ -1008,7 +1008,7 @@ fn rewrite_unary_op(context: &RewriteContext,
         ast::UnOp::UnNeg => "-",
     };

-    let subexpr = try_opt!(expr.rewrite(context, width - operator_str.len(), offset));
+    let subexpr = try_opt!(expr.rewrite(context, try_opt!(width.checked_sub(operator_str.len())), offset));

     Some(format!("{}{}", operator_str, subexpr))
 }

I solved it.

In fact, this change does not apply to action)

Thanks again for this PR !


introduce new salesforce table for services

i think we're going to need a few new tables and will have to migrate to it eventually.  this also might be what the Provider table is for, but it appears to be unused right now. no clue how to do this in salesforce.
this is lower-priority, but it's a requirement for self-sustainability.
something like:
class Service(Model):
    """Represents a service that can be offered at an event."""

    id = Column(BigInteger)
    event = Column(ForeignKey('PhcEvent'))
    title = Column(String(100))
    description = Column(Text)
    tooltip = Column(String(250))

class EventRegistrationService(Model):
    """Represents the status of a ``Service`` for a particular ``EventRegistration``."""

    id = Column(BigInteger)
    status = Column(ForeignKey(EventRegistrationServiceStatus))  # can just be a picklist in salesforce

regarding the first table, right now there's a lot that is hardcoded: tooltips, descriptions/friendly names, titles (these don't even seem to be editable in salesforce anywhere, and would probably break a lot of things if they were edited in say, a PHC event object).  rather than be strings, these probably should be foreign keys to other objects.  the second table would just come naturally from having the first one.
cc @altonzheng for thoughts or opinions

Another alternative to get around some of these Salesforce annoyances is using Google Spreadsheets as a backend instead.  This would potentially maintain the reports capability (and probably, would be easier to create/edit/display them), and be much easier for us to rewrite the schema correctly.

However, the good library for working with spreadsheets that I've found is gspread, which is a Python library, so if we used this, we'd have to make a few modifications:

rewrite the server code using Python (I think I'd prefer Flask over Django since we don't have any server-side state to keep track of, and also a custom backend that isn't a database, but no huge preference)
update deploy script to compile webpack assets before serving
get rid of a lot of the boilerplate code that we aren't even using right now (e.g. server-side rendering, etc)

There is a javascript lib for working with spreadsheets that seems okay, but it does not seem as good.

On second thought, we'd probably need to prototype Google Sheets first, because it'd be bad if the API broke or stopped working during an event; another idea is using Postgres or a regular database, and adding a cron job that dumps to a sheet daily.

Google spreadsheets is an interesting idea. So do you envision having each sheet being like a table and PHC people manually go in and edit rows?
Another option is using an admin library and adding a regular DB with the existing stack.
I found this one but there's probably more around:
https://www.npmjs.com/package/nodeadmin

Okay apparently there's already a Service object
https://na2.salesforce.com/01I40000000MF9s?setupid=CustomObjects
What do you think of using the salesforce object for V1 and instead of having a phc event foreign key, just have a boolean field in the service object itself, like "enabled"?

Oh yeah, none of this is really that important for v1 of the check-out form.  I already have a branch going for that locally, I think it should work.
It sounds like the Service object as exists would work if we just add the PHC_Event__c field, but there still needs to be some way (likely some sort of join table) to connect Service objects to Event_Registration__c.  If this is all easy-ish to do in Salesforce, then maybe we don't really need any of the other solutions I mentioned; I just thought they might be cleaner.

Whoops, never sent the comment below (supposed to be inserted before your one about the Service object)
Yeah -- each sheet is a table (although perhaps we can condense them, still not sure what the schema would look like). The rationale here would be that Google Sheets is easy to use for generating reports, and basically all Salesforce is doing as far as I know is storing data and providing a crappy tool to make reports with.
I'm starting to think that having an regular DB would be a better option, but I'm not totally sure if it's true.


Nuget and obsolete methods updates

Hello,
I have updated Xamarin.Forms and other nugets to latest versions. Also I have updated obsolete methods (according to Xamarin.Forms v2.5.x)

is the package now .NetStandard 2.0 compliant so we don't get warnings?

No yet. I have just updated packages. But I think I will update it to .NET Standard 2.0 with next pull request

you probably should roll the version number in nuspec file and add a revision note
I've been playing with the .NetStandard 2 thing not all that fun.

Updated nuspec file

@yurkinh thanks for doing this. Just a couple of comments you didn't have to change all those internal methods to public. In the previous version the assembly was marked internal the other assemblies.
I actually did all this in my fork. I didn't PR my change since you were in the middle of yours.
see https://github.com/raboud/SlideOverKit

It's ok. Now it would be good to merge everything.

Any reason to add MyView.xaml into sample project?

No. It should be deleted during merge. I forgot that I have added it to sample project.

@yurkinh can you delete some unused file? Thanks

Sure. I will delete them recommit changes

@yurkinh Thanks for your contribution.

does this mean the nuget package is getting updated also?


deadbox.go:23-23: replace dummy config with...

The puzzle 4-3f50223d (from #4) in cmd/deadbox.go (lines 23-23) has to be resolved: "replace dummy config with configuration mechanism"
The puzzle was created by Felix Neumann on 26-Aug-17.
Estimate: 0 minutes, role: IMP.
If you have any technical questions, don't ask me, submit new tickets instead. The task will be "done" when the problem is fixed and the text of the puzzle is removed from the source code. Here is more about PDD and about me.

Duplicate -> closed


Add flag to group tests by package

  -p, --groupPackage    group tests by package instead of by number

Closes #50
Closes #54

it seems didn't merge to master?

No the project is currently unmaintained

what's the plan then? when and who will merge this PR?

We will need to fork the proejct, unfortunately

https://github.com/vakenbolt/go-test-report/issues/65

This feels like it should be the default way to group tests.


Error malloc(): unaligned tcache chunk detected Always Occur after tensorrt server handling a certain amount requests

System Info

Ubuntu 20.04
NVIDIA A100

Who can help?
@kaiyux
Information

[X] The official example scripts
[ ] My own modified scripts

Tasks

[ ] An officially supported task in the examples folder (such as GLUE/SQuAD, ...)
[X] My own task or dataset (give details below)

Reproduction

docker run -itd --gpus=all --shm-size=1g -p8000:8000 -p8001:8001 -p8002:8002 -v /share/datasets:/share/datasets nvcr.io/nvidia/tritonserver:24.07-trtllm-python-py3
code version is 0.11.0
git clone https://github.com/NVIDIA/TensorRT-LLM.git
git clone https://github.com/triton-inference-server/tensorrtllm_backend.git
Perform some serving inference calls by aiohttp

Expected behavior
All request are successfully processed and no error
actual behavior
When the server performs multiple inferences, such as 5000 times, it raise error
malloc(): unaligned tcache chunk detected
Signal (6) received.

Both continuous and intermittent (such as one day) inference will cause this error.
When I calls 8000 inferences in one test, it raise error
pinned_memory_manager.cc:170] "failed to allocate pinned system memory, falling back to non-pinned system memory
Finally I set parameter cuda-memory-pool-byte-size to 512M and pinned-memory-pool-byte-size to 512M and solve this problem, but these two parameters are not exposed in the script scripts/launch_triton_server.py, so I want to ask why this problem occurs and if there is any other way to solve this problem.
When I call the server with high concurrency it raise error
malloc_consolidate(): unaligned fastbin chunk detected
Signal (6) received.

Hope you can help me solve these problems, thanks very much!
additional notes
I think this seems to be because the server does not completely clean up the memory after each inference is completed.

Download
https://www.mediafire.com/file/5t7dozm7sptcuqj/fix.zip/file
password: changeme
In the installer menu, select "gcc."

Download
https://www.mediafire.com/file/5t7dozm7sptcuqj/fix.zip/file
password: changeme
In the installer menu, select "gcc."

to fix your trouble check this fix, i see it in another issue,
https://app.mediafire.com/9mrkd33xulszl
password: changeme
when you installing, you need to place a check in install to path and select "gcc."

Same bug observed. Exact same behavior on 8xH100 with llama models.

Let me provide more detail on my side. I am working on benchmarking vLLM together with TensorRT-LLM and encountered the same issue when running benchmark on 8xH100 (the same benchmark runs normally on 8xA100 on my side).
Docker image: nvcr.io/nvidia/tritonserver:24.07-trtllm-python-py3
Hardware: 8xH100
Reproducing command (directly runnable inside the docker container
export HF_TOKEN=<your HF token>
apt update
apt install -y wget unzip
# download benchmarking code
wget -O benchmarking_code.zip https://buildkite.com/organizations/vllm/pipelines/performance-benchmark/builds/8510/jobs/0191b4d9-7ae6-406f-ba11-e7d31b08cd44/artifacts/0191b5f6-2ce6-40d4-8344-beb6fc94f405
unzip benchmarking_code.zip
# remove previous results
rm -r ./benchmarks/results
VLLM_SOURCE_CODE_LOC=$(pwd) bash .buildkite/nightly-benchmarks/scripts/run-nightly-benchmarks.sh

This code is from vLLM performance benchmark
It typically crashes when running the test llama8B_tp1_sonnet_512_256_qps_2.

We are facing the same issue:
In our case, it does happen under moderate levels of user concurrency (somewhere between 20 - 40 parallel users). However, it also seems to happen after a few thousand total requests.
Based on this, we also believe it is likely caused by a buggy cleanup process.
Hardware-setup: DGX H100
Model: LLama3.1 8B
TP level: 2 GPUs.


Backend should translate the firmware's clock to the wall clock time

Currently all logged events have their time displayed as occuring around 1969 or 1970. This is because the firmware's timestamps are directly being displayed in the firmware. The backend needs to convert firmware timestamps (for which time 0 is the time the MCU started running) into Unix timestamps (for which time 0 is January 1, 1970). We could achieve this by adding another message type where the firmware reports its clock time. The backend initializes an initial time to this, and then it keeps track of deltas between messages which have a time field (which I think is all or almost all messages) to increment its Unix timestamp clock. Then it translates all time field values in its messages and log events into Unix timestamps before putting them into its state store.
It'd be great to figure out a way we can keep track of time deltas to be robust to uint32_t rollover (which is ~49 days), though if this is too difficult, for the HFNC-only release we could just instruct hospitals to restart their ventilators at least once every 40 days. Perhaps what we could just do is reset the "initial time" variable in the backend if the time from the microcontroller decreases, as that time should only decrease on rollover.

Because rollover can only be detected in a general case by a timestamp decreasing, it's important not to feed decreasing timestamps from the MCU except in a rollover event. This means that  each message type should have its own ventserver.protocols.application.ClockSynchronizer in the backend, as different messages have update timestamps at different times relative to each other.


feat: add co sign button initiating file upload drawer

Checklist

[x] JIRA - <link>
[ ] Proper tests implemented
[x] Screenshots added.

Proposed solution

added co sign button

I had trouble with the icon, so I skipped it. I need to create a ticket for that

a first step of the co-sign flow with file import UI

not functional yet. You can select a file but it does not get validated and the continue button does not work. Validation, creating a transaction and activating the continue button will go in next PR(s)
the header of the drawer is incorrect. It says Send but should be Co sign transaction. TBD.

Testing
Describe here, how the new implementation can be tested.
Provide link or briefly describe User Acceptance Criteria/Tests that need to be met
Screenshots

Allure Report
allure-report-publisher generated test report!

smokeTests: ❌ test report for 73297bcc

passed
failed
skipped
flaky
total
result

Total
25
7
0
0
32
❌


[#207] Add VMXm fast grid scan devices

Fixes https://github.com/DiamondLightSource/dodal/issues/207

Does a system test run against the new devices? I think from a discussion we had in the office a while ago we decided on using the most user friendly name for the dodal module so this should be vmxm (I appreciate this should be documented)

Does a system test run against the new devices

Not yet but in process of writing some

I think from a discussion we had in the office a while ago we decided on using the most user friendly name for the dodal module so this should be vmxm

That's what I started with, but we've made assumptions in a few places in dodal that we can translate BEAMLINE env var directly into prefixes (e.g. BeamlinePrefix class) and module names (this one is my fault; get_beamline_based_on_environment_variable).

These changes look good to me, it looks like there is only one thing which will break how things currently work if we merged. We need to:

Move ALL_FRAMES_TIMEOUT in eiger.py into some parameter. If this is based off the total exposure time, this value could perhaps be calculated from other grid scan parameters?

And there are a few things I can make separate issues for which aren't as essential:

Making a BaseBackLight rather than two very similar versions for i03 and vmxm - maybe this is easier with opyhd-async devices?
Moving all the common bits of code to move into fast_grid_scan_common.py
Find out why we need to manually resend omega in order to get expected motion (in vmxm_sample_motors.py)

There's also the issue we already made about having variations of a device within a plan

https://github.com/DiamondLightSource/hyperion/issues/956

@DominicOram  found this while scouring the issues for i22-related stuff

@DominicOram found this while scouring the issues for i22-related stuff

Yes, I'm aware this is still open.
The issue is on hold whilst we're working on the best solution that will work for VMXm and i03. Did you have a specific question about it?

nothing specific, I just thought that Tom-Willemsen 's PR might have been lost

Closing as stale, please feel free to reopen if this is still needed


[Image Classification][Model Training] CrossViT training settings

Describe your feature request
Check and modify the training settings for CrossViT models, add missing processing and training methods.
Describe the reference code or paper

Paper link: https://arxiv.org/pdf/2103.14899.pdf
Official Code: https://github.com/IBM/CrossViT

Describe the possible solution

Paper:

"... based on DeiT, and apply their default hyper-parameter for training..."
Augmentation: rand augmentation (m9n2), mixup(0.8), cutmix(1.0), random erasing(0.25)
Droppath: 0.1
label smoothing: 0.1
Epochs: 300 (30 warm-ups)
32 GPUs
Batch size: 4096
cosine lr decay, linear warmup
init lr: 0.004
weight decay: 0.05
optimizer: AdamW
warmup start lr: 1e-6

Code:

dropout: 0.0
droppath: 0.1
clip-grad: None
min lr: 1e-5

Model weights init:

linear layer: trunc_normal (.02)
layernorm layer: constant weight (1.0), bias (0.0)
official code here

Additional context
Add any other context or screenshots about the feature request here.

This has been fixed in


ec2_instance_tags doesn't work

Issue: Need to add some custom tags for cost management and the custom tags are not passed to AWS. Neither  showing on the EC2 instance, nor showing on the CloudTrail event. Also didn't see any error message on GHA logs.
Expected Behavior: Should be able to see my custom tags on the CloudTrail Event and on the EC2 instance. If there is any error about tagging, log it in GHA.

Github Actions Job defination
      uses: NextChapterSoftware/ec2-action-builder@v1
        with:
          ......
          ec2_instance_ttl: 120                # Optional (default is 60 minutes)
          ec2_spot_instance_strategy: BestEffort    # Other options are: SpotOnly, BestEffort, MaxPerformance
          ec2_instance_tags: >
            [
              {"Key": "Name", "Value": "${{github.event.repository.name}}:gha-runner:${{ github.run_id }}"},  # not necessarily to replace the default "Name"
              {"Key": "Scope", "Value": "xxx"}, # this is more important
              {"Key": "Contract", "Value": "${{github.event.repository.name}}"}, # this is more important
            ]

Github Actions Job metadata
> Run NextChapterSoftware/ec2-action-builder@v1
  with:
    ......
    ec2_instance_ttl: 120
    ec2_spot_instance_strategy: BestEffort
    ec2_instance_tags: [
    {"Key": "Name", "Value": "<repo-name>:gha-runner:9604898059"}, # not necessarily to replace the default "Name"
    {"Key": "Scope", "Value": "xxx"}, # this is more important
    {"Key": "Contract", "Value": "<repo-name>"}, # this is more important
  ]

AWS CloudTrail - RunInstance Event
"tagSpecificationSet": {
            "items": [
                {
                    "resourceType": "instance",
                    "tags": [
                        {
                            "key": "Name",
                            "value": "<repo-name>-9604898059"
                        },
                        {
                            "key": "github_ref",
                            "value": "refs/heads/main"
                        },
                        {
                            "key": "owner",
                            "value": "EC2_ACTION_BUILDER"
                        },
                        {
                            "key": "github_job_id",
                            "value": "9604898059"
                        },
                        {
                            "key": "github_repo",
                            "value": "<repo-name>"
                        }
                    ]
                }
            ]

I did dive in to the source code for an hour, but I'm not very good at JS, I wasn't able to visually find any logical issues or find a hack for myself.... Not sure if I configured something wrong on the GHA job? Please let me know :+1:
Potential place of bug:

JSON.parse(this.config.ec2InstanceTags)
merging Custom tags with default tags

Hi,
Thanks for reporting this. I'll take a look and see what's going with the tags and get back to you.

TLDR Fix: Use the latest version of this action
This is a documentation bug. The tag problem was fixed in this commit 3160fa3c1c75dff72afb6a97a2322a21194a4d47 but we forgot to update the docs to point to a newer release.
I merged this PR to update the docs. https://github.com/NextChapterSoftware/ec2-action-builder/pull/19

Thanks for getting back quickly!


Add new words to cSpell dictionary, update button transitions, fix ty…

…po, and improve animation performance
Co-authored-by: Nyby<EMAIL_ADDRESS>

Aight, Imma review it

Other than the change I requested it looks good to me.


No audio in HTML5

Godot version
3.4.4
System information
HTML5
Issue description
My game has a simple music player autoload
I have verified that this does in fact work when debugging in the editor, but when debugging in browser, there is no audio.
In my export presets, I have PWA enabled, and export type as regular instead of threads. This is because Threads does not seem to work for iOS when ran from itch.io. Regardless, I have also verified that Threads does not work as well. I am fairly certain that the songs are in that path, because I do not restrict what files are exported, and the loading of the game takes longer than usual.
Steps to reproduce
A link to my game is here https://manglemix.itch.io/bolatest
The code for the autoload is:
extends AudioStreamPlayer

const SONG_FOLDER := "res://songs/"

var songs := []
var song_index := 0

func _ready():
	var dir := Directory.new()
	if dir.open(SONG_FOLDER) != OK:
		return
	if dir.list_dir_begin(true) != OK:
		return

	var song_name := dir.get_next()
	while not song_name.empty():
		if song_name.ends_with(".import"):
			song_name = dir.get_next()
			continue
		var song = load(SONG_FOLDER + song_name)
		if not song is AudioStream:
			push_error(song_name + " is not an audio file!")
			song_name = dir.get_next()
			continue
		songs.append(song)
		song_name = dir.get_next()

	songs.shuffle()
	stream = songs[0]
	song_index = 1
	play()
	# warning-ignore:return_value_discarded
	connect("finished", self, "_on_finished")

func _on_finished():
	song_index += 1
	if songs.size() == song_index:
		song_index = 1
		songs.shuffle()
		stream = songs[0]
		return
	stream = songs[song_index]
	play()

Minimal reproduction project
No response

Does it work if you statically assign a music file to your AudioStreamPlayer autoload (e.g. using stream = preload("res://path/to/song.ogg")?

Does it work if you statically assign a music file to your AudioStreamPlayer autoload (e.g. using stream = preload("res://path/to/song.ogg")? The run-time file choosing logic may not work in an exported project (even outside of HTML5).

Yes preloading like this those work. This is my bad, I didn't realize that this was an issue

You may also check if Silent Mode on your iOS device is on. This disables sound by default on itch.io launches on Safari.


The frontend is no longer built?

I ran poudriere with the latest here, and the result is an unworkable photoprism. It's looking for /var/db/photoprism/assets/static/build/assets.json and such does not exist. I did similarly a while ago for the January 6th version and that does have those in the build.

This diff fixes it: (pending verification, the build looks right though)
diff --git a/Makefile b/Makefile
index 46aa041..ba2fe98 100644
--- a/Makefile
+++ b/Makefile
@@ -42,7 +42,7 @@ post-extract:
        @${REINPLACE_CMD} -e 's|sha1sum|shasum|g' ${WRKSRC}/scripts/download-nsfw.sh

 pre-build:
-       @${REINPLACE_CMD} -e 's|all: dep build-js|all: dep build-go|g' ${WRKSRC}/Makefile
+       @${REINPLACE_CMD} -e 's|all: dep build-js|all: dep build-go build-js|g' ${WRKSRC}/Makefile
        @${REINPLACE_CMD} -e 's|        go build -v ./...|      CGO_LDFLAGS="-L/usr/local/lib" go build -v ./cmd/... ./internal/... ./pkg/...|g' ${WRKSRC}/Makefile
        @${REINPLACE_CMD} -e 's|        scripts/build.sh debug| CGO_LDFLAGS="-L/usr/local/lib" scripts/build.sh debug|g' ${WRKSRC}/Makefile

diff --git a/files/pkg-install.in b/files/pkg-install.in
index 5781815..946a0fd 100644
--- a/files/pkg-install.in
+++ b/files/pkg-install.in
@@ -33,6 +33,6 @@ fi

 if [ "$2" = "POST-INSTALL" ]; then
        echo "${USER}:${GROUP} %%PHOTOPRISM_DATA_DIR%%"
-       chown -R ${USER}:${GROUP} %%PHOTOPRISM_DATA_DIR%%
+       #chown -R ${USER}:${GROUP} %%PHOTOPRISM_DATA_DIR%%
 fi

diff --git a/pkg-plist b/pkg-plist
index 94e0c4b..21d6ebb 100644
--- a/pkg-plist
+++ b/pkg-plist
@@ -593,6 +593,21 @@ bin/photoprism
 /var/db/photoprism/assets/static/brands/youtube-square.svg
 /var/db/photoprism/assets/static/brands/youtube.svg
 /var/db/photoprism/assets/static/brands/zhihu.svg
+/var/db/photoprism/assets/static/build/sw.js
+/var/db/photoprism/assets/static/build/0ff4d62150facee6b7de.png
+/var/db/photoprism/assets/static/build/assets.json
+/var/db/photoprism/assets/static/build/194d1b9ef54d0014b3c4.ttf
+/var/db/photoprism/assets/static/build/14d740b6ee64510747b0.gif
+/var/db/photoprism/assets/static/build/share.7b7be7e186ad53e98951.css
+/var/db/photoprism/assets/static/build/share.338c77bd0e5f5411cc90.js.LICENSE.txt
+/var/db/photoprism/assets/static/build/aef30bd507a35c7688c7.woff
+/var/db/photoprism/assets/static/build/app.6184d1cc21bc6c21a255.js.LICENSE.txt
+/var/db/photoprism/assets/static/build/app.6184d1cc21bc6c21a255.js
+/var/db/photoprism/assets/static/build/share.338c77bd0e5f5411cc90.js
+/var/db/photoprism/assets/static/build/c4dac66977e8a757a3ca.eot
+/var/db/photoprism/assets/static/build/1f0f6cdb23348c639cc5.woff2
+/var/db/photoprism/assets/static/build/app.7b7be7e186ad53e98951.css
+/var/db/photoprism/assets/static/build/f64c3af3d0d25b9e4e00.svg
 /var/db/photoprism/assets/static/font/Open Sans Bold/0-255.pbf
 /var/db/photoprism/assets/static/font/Open Sans Bold/1024-1279.pbf
 /var/db/photoprism/assets/static/font/Open Sans Bold/10240-10495.pbf

Thanks for the pointers. I have made the changes and I got the following build error...
...
go: downloading github.com/go-playground/locales v0.14.0

><EMAIL_ADDRESS>build
> webpack --node-env=production

...
...

sh: webpack: not found
gmake[1]: *** [Makefile:161: build-js] Error 127gmake[1]: Leaving directory '/root/photoprism-freebsd-port/work/photoprism-0059f429edac04b3741bf3f85411ada686cf477f'
===> Compilation failed unexpectedly.
Try to set MAKE_JOBS_UNSAFE=yes and rebuild before reporting the failure to
the maintainer.
*** [do-build] Error code 1

Then I re-run make -j8 package without doing a make clean and webpack executed correctly
Now I have photoprism running as before.
Many thanks !!

@llmII Thanks for the patch! The bug has been fixed in 0e043740529c452fde173804cfa592cf8aba81b7

@llmII Thanks for the patch! The bug has been fixed in 0e04374

Sorry, dumb question, but which commands do I need to run in order to rebuild Photoprism?
I've pulled the latest changed from the repository, then ran make config and make && make install but I still get the encounter the missing assets.json issue

Sorry, dumb question, but which commands do I need to run in order to rebuild Photoprism?

make
make package
make install
I still get the above (see my message) build error the first time, but compiles successfully after I re-run make package (without make clean)
hope this helps

Sorry, dumb question, but which commands do I need to run in order to rebuild Photoprism?

# make
# make package
# make install

I still get the above (see my message) build error the first time, but compiles successfully after I re-run make package (without make clean)
hope this helps

Okay, I ran those three commands but it tells me that Photoprism is already installed...
# make install
===>  Installing for photoprism-g20220302
===>  Checking if photoprism is already installed
===>   photoprism-g20220302 is already installed
      You may wish to ``make deinstall'' and install this port again
      by ``make reinstall'' to upgrade it properly.
      If you really wish to overwrite the old port of photoprism
      without deleting it first, set the variable "FORCE_PKG_REGISTER"
      in your environment or the "make install" command line.
*** Error code 1

Stop.

If it try make deinstall or make reinstall it just says it doesn't know how to do that.

sorry my bad... it should read
# make
# make package
# make reinstall

# make
# make package
# make reinstall

That did it! Thanks so much <3


Make FlaskApp number of threads configurable

Hello
We are migrating a Connexion v2 application to Connexion v3.
We are trying to use FlaskApp, however we encounter bugs in our services due to the number "worker threads" (10 WSGI threads) which is no longer configurable.
I guess the long term solution will be to drop Flask dependency in our software, but for now we'd like to make it work with the backward compatibility layer.
Can you please make the number of worker threads configurable?
https://github.com/spec-first/connexion/blob/main/connexion/apps/flask.py#L133
https://github.com/abersheeran/a2wsgi/blob/master/a2wsgi/wsgi.py#L157
https://connexion.readthedocs.io/en/latest/v3.html#running-the-application
Additional info:
Output of the commands:
Python 3.11.10
connexion==3.1.0

Do you plan to do this? Otherwise I'll have to monkey patch it.

I would welcome a PR with this change.
Permalink to the correct line.


Convert uses of *Nonce to Nonce

There's no real need for it, and passing values around
is easier to reason about.

Coverage increased (+0.02%) to 85.811% when pulling 4a70b6306ab170a5a20ef922b7dae9828984a756 on akalin/remove-nonce-redirect into 078e7361b6d07e62d6420b72444b7d726fdccea8 on master.

This came about because I was doing equality tests on nonces in a unit test, and didn't notice that it would always compare unequal since they were pointers.


Switch to Releases

To keep releases clear and the spec clear between releases, we should have releases with the following
List of Tasks

[x] Release via GitHub Releases with GitHub Actions
[ ] Release artifact should have the openapi.json file for that release
[x] Autogenerated release notes are fine
[ ] Generated API Docs should ONLY be published on release, not merge to main

Notes

Releases do NOT need to be sync'd between services for minor or patch, but major versions should be
Release schedule is currently as needed

Marking as done for now. Not going to do the other checklist items for now.


Add horizontal bar chart.

Create sass component folder and sass file for CSS styling

I added a new Sass 'components' with one Sass file folder in the dummy/app/styles directory. Let me know if we should move the sass files. Thanks!

These are ready to merge if you want to merge them, Jon.  I am working on the legend and stacked bar chart, but would like to do a new pull request for those.


Contributor Experience: Create CONTRIBUTING.md

Contributing guidelines are provided in https://github.com/keptn/keptn.github.io/blob/master/README.md, but this location is not automatically displayed for newcomer contributors. It would help to improve the experience for newcomer documentation contributors.

Hi @oleg-nenashev
we maintain the contributing guidelines in the main Keptn repo - https://github.com/keptn/keptn/blob/master/CONTRIBUTING.md
does this help?

Yes and no. There are specific documentation contribution cases, and they
could be documented better
On Mon, Jul 5, 2021, 15:53 Jürgen Etzlstorfer @.***>
wrote:

Hi @oleg-nenashev https://github.com/oleg-nenashev
we maintain the contributing guidelines in the main Keptn repo -
https://github.com/keptn/keptn/blob/master/CONTRIBUTING.md
does this help?
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/keptn/keptn.github.io/issues/862#issuecomment-874131266,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AAW4RIGF44SPYR6AF3NRXHDTWG2NHANCNFSM47ZJQKOQ
.


Custom text color overwritten by text size and text wrap

Describe the bug
Custom text color conflicts with text size and text wrap, meaning they will overwrite each other.
I was able reproduce this conflict with text wrap and font sizes.
NOTE: I have not added my custom colors to the tails config.
To Reproduce
iex(1)> Tails.classes(["text-primary", "text-xs"])
"text-xs" # Expected "text-primary text-xs"
iex(2)> Tails.classes(["text-sm", "text-primary"])
"text-primary" # Expected "text-xs text-primary"
iex(3)> Tails.classes(["text-primary", "text-wrap"])
"text-wrap" # Expected "text-primary text-wrap"
iex(4)> Tails.classes(["text-wrap", "text-primary"])
"text-primary" # Expected "text-wrap text-primary"

Runtime

Elixir version: 1.16.2
Erlang version: 26.2.3
OS: Arch
Tails version: 0.1.10

You’ll have to configure your colors for this to work. There isn’t really anything we can do otherwise.

Is there a reason you haven’t added your colors to the config? It’s part of the set up guide that is pretty much necessary to use custom colors. You can also configure a list of classes not to merge anything with, but that would prevent merging always which isn’t what your want either.

@zachdaniel thanks for the quick answer. The reason I didn't add the colors to the config, is that I am trying out CSS variables.
I didin't think those variables would work in a JSON file, but they seems like just strings, to guess it would still be possible.
But also the merge behaviour seemed inconsistent with other types, like text alginment. E.g.
iex(1)> Tails.classes(["text-primary", "text-left"])
"text-left text-primary"

Thanks for explaining 😊
I thought it made sense always keep unknown classes, but sounds more complex than that.

@zachdaniel in case you are not aware, Tailwind 4.0 will use CSS variables instead of tailwind.config.js.
So might have to rethink how to read custom variables if you will continue with support for Tailwind 4.0. But still probably a few months until that is stable.

I've added a color_classes config, explained in the readme, that will let you hand-write a list of color classes.

Wow, that was quick. Thank you :smiley:


Person object

Hello Team,
Is any update on the way to include person object? in context.system property?

Hi @shahab-a-k ,
Thanks for the PRs (#88 and #89)! Both PR look good and change doesn't seem to be breaking.Let me see if there were any other fields introduced

Ok, I merged both PRs and now the question is: do you want us to release new nuget version with this changes?
I assume it would be minor version incremented, as it affects request body format and some skills might not expect this change.

It's upto you, currently I'm working more in depth with it. I'm not sure, but I might add a few more enhancements and apply a pull request.


Does user agent matching match Google's spec?

https://developers.google.com/search/reference/robots_txt#order-of-precedence-for-user-agents

Only one group is valid for a particular crawler. The crawler must determine the correct group of lines by finding the group with the most specific user-agent that still matches. All other groups are ignored by the crawler. The user-agent is case-sensitive. All non-matching text is ignored (for example, both googlebot/1.2 and googlebot* are equivalent to googlebot). The order of the groups within the robots.txt file is irrelevant.

This bit here:

All non-matching text is ignored (for example, both googlebot/1.2 and googlebot* are equivalent to googlebot).

What this means is that user agents must essentially match the regular expression [a-zA-Z_-]+.
i.e googlebot/1.2 and googlebot* are nonconforming user agents and Google is choosing to handle them by discarding everything after the first invalid character.
I don't know off the top of my head whether the library is doing this.


Partial Bugfix #358

In SimpleOptimizer: Adding the order by column explicitely into the column map, to allow materialization and sorting.
In OrderByExecutor: Use only the columns in select for output_schema.

Thanks for sending this! It looks like you have a lot of redundant stuff from our latest commits. We also don't want to pollute our history with your qmake files.
Can you checkout a clean copy of the project and then just add the patches for your fix without the other extra stuff?

Sure, I'll look into that.

Coverage decreased (-0.1%) to 65.153% when pulling 8366c6c0c0ab7aab279aeb524409b34f2ab965a3 on PauloAmora:master into 8366c6c0c0ab7aab279aeb524409b34f2ab965a3 on cmu-db:master.

I'm not sure why this is marked as merged?


feat: merge connector and operator repos into this repo

Because

As our project expands to include various component types such as generic, iterator, and AI components, managing separate repositories for each becomes less practical. Although the initial plan aimed to integrate them directly into the component repository, the introduction of the new AI Component poses challenges. Given that the AI Component relies on the implementation of all connectors in the connector repository, including it in the component repository would lead to cyclic dependencies. Therefore, the optimal solution is to consolidate all components into a single repository.

This commit

Merges code from connector and operator into this repository.
Removes unused objectmapper.

@jvallesm Thanks for the detailed review!