[Owned] attribute does not play nicely with lazy loading and nullable references in C# 8.0

I am using Visual Studio 2019 Preview, .Net Core 3.0 Preview 5 and EF Core Preview 5.
If a class is marked [Owned] and lazy loading is enabled, Lazy loading thinks this is a navigational property. This causes two problems:

It forces you to make the property virtual (not so horrible but seems to be a bug)
If you are using nullable references and instantiate the [Owned] type (obviously not marked as nullable) in place, you cannot seed the data for the entity since system thinks that this is a nav property and you get an exception stating that the seed entity for entity type cannot be added because it has the navigation for the owned type set.

Steps to reproduce
Create a .Net Core Console application. Reference EF Core and Lazy Loading NuGets.
Here is the entity and the owned type
#nullable enable

using System.Collections.Generic;

namespace Tester
{
    [Owned]
    public class USAddress
    {
        public string Street { get; set; } = "";
        public string City { get; set; } = "";
        public string State { get; set; } = "";
        public string Zip { get; set; } = "";
    }

    public class Author : Entity
    {
        public string Name { get; set; } = "";
        public virtual USAddress Address { get; set; } = new USAddress();

        //this must be nullable because it is a nav property and it must be set to null to seed data
        public virtual List<Book>? Books { get; set; }
    }
}

Attempting to seed the data for this class in OnModelCreating method will always fails because it thinks that a nav property Address is initialized (and it will always be because it is not nullable):
'The seed entity for entity type 'Author' cannot be added because it has the navigation 'Address' set. To seed relationships you need to add the related entity seed to 'USAddress' and specify the foreign key values {'AuthorId'}. Consider using 'DbContextOptionsBuilder.EnableSensitiveDataLogging' to see the involved property values.'
Further technical details
EF Core version: 3.0.0-preview5.19227.1
Database Provider: Microsoft.EntityFrameworkCore.SqlServer
Operating system: Windows 10
IDE: Visual Studio 2019 Preview

Also because of the problem I described above, it is impossible to initialize the owned object on an entity - you get the error saying that entity cannot be added because it has the navigation set (where navigation is really an owned property).

@ibasin There's a few things going on here. First, just because something is owned does not mean it is not an entity type. It therefore follows from this that the Author.Address property is a reference from one entity type to another--i.e. it is a navigation property. Also, it means that setting inline is creating a new entity instance that EF should try to insert.
Second, it's involvement in lazy loading is something that is not required: see #12462
Third, the implications of this for non-nullable references is interesting. We will discuss this.

@ajcvickers Thank you for a quick reply.

I read #12462 and agree that in my sample Author.Address should not be marked as virtual because it should be eager loaded always. However, if my project uses lazy loading elsewhere (references Microsoft.EntityFrameworkCore.Proxies and enables lazy loading in OnConfiguring) and I do not mark it as virtual, I get the following exception (you can easily reproduce yourself):

System.InvalidOperationException: 'Navigation property 'Address' on entity type 'Author' is not virtual. UseLazyLoadingProxies requires all entity types to be public, unsealed, have virtual navigation properties, and have a public or protected constructor.'

Thank you for looking into non-nullable references in the context of data seeding.

I think both of these are real problems with no easy workarounds.
Thank you!
Please let me know if I could be of service.
Ilya

@ibasin The 'workaround' for #12462 is to make the property virtual. Is there a reason you can't do this?
We discussed the non-nullable reference type scenario, but came to the conclusion that it is really no different from any other navigation property, which is discussed on #15520 and #10347. The way to handle this is to use default!. EF will then initialize the value during loading.
There is also a more general issue here, which is that owned entity types are not value objects and don't have the same semantics as value objects. Attempting to use these types as if they are value objects often ends up being difficult and feeling wrong because of the very different semantics.

There is still a problem. Data for an inline owned property cannot be seeded. I see no workaround. Am I missing something?
Thank you.

@ibasin See #12004


Added comments for typst

Added comments for Typst
Language specification can be found here https://typst.app/docs/reference/syntax/

Alright, no worries then.


[MM-34233] Only refresh App bindings if apps plugin is enabled

Summary
This PR solves the issue of avoiding requests going to the Apps plugin when it is disabled, as well as solving invalidation of bindings when a request to fetch new bindings fails.
I've added a websocket reconnect test, but other tests still need to be added.
@larkox I've based this PR off of yours that's in progress https://github.com/mattermost/mattermost-mobile/pull/5563
Ticket Link
Fixes https://mattermost.atlassian.net/browse/MM-34233
Fixes https://mattermost.atlassian.net/browse/MM-34710
Checklist

[x] Added or updated unit tests (required for all new features)

Related Pull Requests
https://github.com/mattermost/mattermost-webapp/pull/8545
Release Note
The mobile app will now only fetch App bindings if the Apps plugin is enabled.

@mickmister conflicts need resolving.
@DHaussermann friendly reminder to review this one

/update-branch

Error trying to update the PR.
Please do it manually.

@DHaussermann If you're wanting to test with the latest apps plugin, this is currently blocked by https://github.com/mattermost/mattermost-mobile/pull/5877. Otherwise I've updated this PR to latest master of this repo.

@DHaussermann This is up to date with the separate calls mobile branch

Building app in separate branch.

Successfully building:
https://circleci.com/gh/mattermost/mattermost-mobile/21253
https://circleci.com/gh/mattermost/mattermost-mobile/21252

Artifact links:
https://21253-70265724-gh.circle-artifacts.com/0/tmp/artifacts/Mattermost_Beta.ipa
https://21252-70265724-gh.circle-artifacts.com/0/tmp/artifacts/Mattermost_Beta.apk


quest page alignment + quest tile

closes #36
closes #37

Codecov Report

Merging #72 into master will decrease coverage by 0.74%.
The diff coverage is 38.51%.

@@            Coverage Diff            @@
##           master     #72      +/-   ##
=========================================
- Coverage   46.24%   45.5%   -0.75%
=========================================
  Files          51      57       +6
  Lines         653     767     +114
  Branches       75      85      +10
=========================================
+ Hits          302     349      +47
- Misses        341     407      +66
- Partials       10      11       +1

Impacted Files
Coverage Δ

src/state/quests/questSaga.ts
0% <0%> (ø)
:arrow_up:

src/state/stockMarket/stockSelector.ts
0% <0%> (ø)
:arrow_up:

src/state/initialLoad/initialLoadSaga.ts
0% <0%> (ø)
:arrow_up:

src/state/quests/taskProgressEvaluation.ts
0% <0%> (ø)

src/routes/routes.ts
100% <100%> (ø)
:arrow_up:

src/state/quests/questActions.ts
100% <100%> (ø)
:arrow_up:

src/state/AppState.ts
100% <100%> (ø)
:arrow_up:

src/state/news/newsActions.ts
100% <100%> (+100%)
:arrow_up:

src/state/Config.ts
60% <100%> (+10%)
:arrow_up:

src/views/Quests/SortsQuests.ts
16.66% <16.66%> (ø)

... and 15 more

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 ce276a4...e7a8f19. Read the comment docs.

I this 0% progress should be displayed...

Shouldn't locked Quest be shown in some way?


Can I preserve a callback across multiple steps?

My first step is a two db queries in parallel (this.parallel)
My second step is to do something with the data from one of those queries, but not the other, which I want to preserve for the next step. I don't want to group them because they are not the same.
My third step is to render them both.
qv:
step(
    function step1(){
      person.findById(req.params.person, this.parallel());
      blurb.find({ref:req.params.person}, this.parallel());
    },
    function step2(err, person, blurbs){
    // refine blurb object, preserve person, and send them both to the next step
    },
    function step3(err, person, blurbs){
      if (err){console.log(err);}
      console.log(person);
      console.log(blurbs);
    });

In the new proposed API, there is a this.pass() function that passes values to the next step.  Comment at https://github.com/creationix/step/issues/24


ci: 🐝 update pre-commit config

Description
Update pre-commit and dprint config
Type of change

[X] CI

Checklist:

[X] My code follows the style guidelines of this project
[X] I have performed a self-review of my own code
[X] I have commented my code, particularly in hard-to-understand areas
[X] I have made corresponding changes to the documentation
[X] My changes generate no new warnings
[X] I have added tests that prove my fix is effective or that my feature works
[X] New and existing unit tests pass locally with my changes
[X] Any dependent changes have been merged and published in downstream modules

Codecov Report
All modified and coverable lines are covered by tests :white_check_mark:

Project coverage is 36.58%. Comparing base (06f296f) to head (0aac445).

:exclamation: Your organization needs to install the Codecov GitHub app to enable full functionality.
Additional details and impacted files
@@           Coverage Diff           @@
##             main      #74   +/-   ##
=======================================
  Coverage   36.58%   36.58%
=======================================
  Files           4        4
  Lines        1159     1159
=======================================
  Hits          424      424
  Misses        735      735

:umbrella: View full report in Codecov by Sentry.
:loudspeaker: Have feedback on the report? Share it here.


what should the document base URI for an intercepted navigation

Now that the spec says to propagate back the intercepted Response.url, but its careful not to change the URL shown in the window's URL bar for a navigation.
What should the base URI of a document be in this case, though?  The original URI or the intercepted Response.url?  What about window.location?
@annevk @jakearchibald

All should be the requested URL. Basically the response URL is not used.

So this is different from the behavior for stylesheets, where the response URL becomes the base URL, right?  Why the difference?  That is, why does whatever logic required the base URL to be the response URL for stylesheets not apply to documents?

It is a bit weird that the baseURI doesn't change.  This means you can't build a separate site with relative resource paths under /offline/ and then return it for the navigation.  Because all those relative resources will load using the original request URL as the base and be broken.

For stylesheets the response URL becomes the URL (as if there was a redirect). We don't want that for navigation however. A resource served from the cache shouldn't change the URL in the address bar and such. @jakearchibald can explain more if needed or maybe dig up a pointer to the meeting where we discussed this.

I agree we talked about the address bar not changing, but not changing the baseURI actually seems counter to what we would want for @jakearchibald's use case.  It would mean you could not use relative resources in the html Response used to intercept the navigation.

For stylesheets the response URL becomes the URL (as if there was a redirect)

Becomes the URL in what sense?
Let's ignore service workers for now and just consider basic HTTP redirects.  Consider a load for a stylesheet that starts with <link rel="stylesheet" href="A"> where A then redirects to B.
The resulting StyleSheet object has A as its .href but uses B as its base URL.  See http://web.mit.edu/bzbarsky/www/testcases/css-loading/test-redirect-1.html for a simple testcase.
The first part of that is kinda specced at https://drafts.csswg.org/cssom/#concept-css-style-sheet-location and I'm not sure whether the second part is specced anywhere obvious.
But the point is that stylesheets have two URLs associated with them: one that they expose as their .href and another that they use as the base URL.  I assume in the service worker case response.url affects the latter but not the former, right?

Similar thing for scripts, by the way.  Last I checked, the location of a script as it shows up in error stacks or whatnot is the original URL the fetch started with (presumably not affected by response.url in the service worker case), but the location used for muting decisions is the post-redirect URL (and hence presumable affected by response.url).  Base URLs are not an issue there, since scripts don't have one, of course, so it's not directly relevant to our discussion here.

You are correct, .href is not affected.
Interesting point about scripts. I guess in both cases we don't want to expose redirects to cross-origin URLs though in the stylesheet scenario that would end up with a non-accessible stylesheet anyway (CSSOM-wise).

I guess my point was that we could/should decouple "base URL" from "URL" for documents in the interception case.
Note that this sort of thing already happens at least for about:blank (which inherits its base URI along with its origin, iirc).

Interesting precedent, loading <iframe onload=w(this.contentDocument.baseURI);w(this.contentWindow.location)></iframe> in the Live DOM viewer does indeed show that to be true. @jakearchibald, what do you think?

this.contentDocument.baseURI

You have to be careful with this one, because WebKit and Blink totally lie in that getter: they return a string that has nothing to do with the actual base URI they use.  See https://code.google.com/p/chromium/issues/detail?id=484930 and https://bugs.webkit.org/show_bug.cgi?id=144652 (which include links to and pastes of code that tests the actual base URI they use).
But yes, the upshot is that the base URI of about:blank is inherited.

F2F: Ask developers via a blog post. & see if we can safely make this change anyway. Showing both CSS & document and asking where links & background images would go. Send it around the group before publishing.

From the F2F discussion I'd like to capture a few options:

regardless of which way we decide this, we can extend Requests from pages with extra content about the base URL, which would allow a SW to handle these sub requests however it likes
we can do this for both CSS and main-document-generated fetches, allowing us to more easily adopt a single policy for both (which I know @ehsan favors)
we can extend the Response constructor to allow a base to be specified, bringing synthetic responses in line with fetch()'d responses.

Throughout the platform we consistently use the URL from the response as the base URL, even though we might use the (potentially different) request URL for some other purpose. Since that is currently an invariant we consistently offer, I think we should continue to do so by default. We could perhaps offer further overrides, but I'm not entirely swayed it's needed.

Summary from https://jakearchibald.com/2016/service-workers-and-base-uris/:
[1] - event.respondWith(fetch(event.request)) should preserve regular browser behaviour. Base url should come from the request url. (This is contradictory, the impression is you'd use redirects to set the base url, which doesn't really work in our current system).
[2] - use the response url for the base (I think, it's not clear when it comes to pages).
[3] - use the request url (but mistakingly assumes this is normal browser behaviour).
[4] - allow setting of base via header.
[5] - use the response url
[6] [7] [10] - response url for CSS, request url for pages.
[8] [9] [11] [12] - use the request url, happy to break event.respondWith(fetch(event.request))

Unfortunately I don't think the answers were particularly useful, there's a lot of confusion around when fetch() would return a redirect and when it wouldn't.
Some developers are happy for the SW to act like a server, where it'd swallow redirect or deliberately serve redirects, but this can't work due to the security stuff around opaque redirects.
Despite some developers being happy with event.respondWith(fetch(event.request)) breaking non-SW behaviour, I'm pretty sure it'll create angst if people try and use SW just to create offline fallback pages, and find that event.respondWith(fetch(event.request).catch(…)) is causing difficult-to-debug differences. This was a mistake of appcache that I'm really against introducing.
Seems that whatever we pick here is going to be what a large number of developers do not expect, so for consistency reasons I'm happy to go for response url across the board, but a way to change it via a header or property on response (maybe just response.url?) would be nice.

I don't think we should allow setting response.url. We want that to be reliable for security checks. Responses could have a baseURL field perhaps, but I'd prefer we introduce that at the moment we identify a need.

Having a convenience method to convert a response to a synthetic response would allow someone to opt in to the request url.  Something like response.asSyntheticResponse().
Of course, that would not work for opaque responses, though.

Opaque responses are another good reason to not let the service worker change the base URL.

F2F: Use response.url as the base.
TODO: Investigate if this breaks anything.

Gecko bug: https://bugzilla.mozilla.org/show_bug.cgi?id=1222008

I believe https://github.com/whatwg/fetch/pull/146 addressed the f2f resolution. If more things are left with this issue, feel free to reopen it.
Closing.


add API to query number of timers currently ready to avoid comparing …

add API to query number of timers currently ready to avoid comparing timer clocks
This allows the executor to work regardless of the different clocks that may be used in the system (e.g. simulated clock)
Signed-off-by: Alberto Soragna<EMAIL_ADDRESS>

Replaced by https://github.com/irobot-ros/rclcpp/pull/75


Use hardened kernel again(?)

https://search.nixos.org/packages?channel=unstable&show=linuxKernel.kernels.linux_hardened&from=0&size=50&sort=relevance&type=packages&query=linux_hardened
We avoided using hardened kernel as default since it was an unmaintained package, despite being a critical system component with known vulnerabilities. It seems like it's been being updated recently, but I'm not sure if we want to return to using it by default or just continue to leave it as optional and adjust the phrasing of the advisory which comes with it.

Not setting default for now, altered advisory instead.


Working HAL for the XOSC

Hi,
This is a full, working implementation of a CrystalOscillator that allows use of the XOSC.
Typestate programming is used to transition between the different stages : Disabled > Initialized > Stable > Disabling, Dormant.
I've tested the code on my Pi Pico up to the first 3 stages (ie up to Stable) and confirmed with the Frequency Counter that the XOSC's frequency is indeed 12MHz at that point.
To be noted that the code is based on hardware_xosc/xosc.c from the official pico-sdk.
I also want to point out that I'm a novice in Rust and that this is my first ever contribution to a Rust crate, so don't hesitate to point out things that I could have done better.
Regards,

Hi,
thanks for taking up the work on the Oscillator. I started work on this previously, but I think you picked up from there anyway?
Overall this PR looks really good. I would just change a few minor details and maybe not yet expose the Dormant mode.

Hi,
Thanks for your feedback and code review =) I read extensively your PR and I saw you tried to bind nicely together Clocks, PLLs, Oscillators, ... with extensive typestates and such. I then had a brain meltdown trying to think about about how to pick up your work; not criticizing your code (from which I learned a lot) but the complexity of the clocks/PLL/oscillators subsystems and the complexity of "bridging" them together, with all the different abstractions that would be needed : macros, typestate, ...
So I decided on starting from scratch, taking inspiration from your PR as you saw (StableOscillatorToken for example) with the goal of trying to implement one subsystem at a time, starting at the bottom of the foodchain : XOSC.
Not sure if it's the right approach but I figured that it might be easier that way =)

Oh I can feel you, I had the same brain-meltdown. I think I bit off a bit to much of the problem. Writing it in smaller steps definitely is a good idea. :+1:
Maybe at some point in the future when we have all the building blocks we can actually tie them together.

This is ready for review again :)


Confusing documentation link on top of page

I would expect the link at the top of the page to link to https://dask-ml.readthedocs.io/en/latest/index.html, not https://dask.pydata.org/en/latest/
Here's a picture of what I mean:

I would modify this myself, but PRs don't work for this.

Fixed!

Thanks!


Infinite event is not fired since 2.2.2

Version
2.2.2
Vue.js version
2.4.2 (with nuxt 1.0.0-rc11)
What is expected?
infinite-loading should fire 'infinite' event as usual
What is actually happening?
the event is not fired anymore since 2.2.2 (working in 2.2.1)
How to reproduce this problem?
Use the component as usual, but the handler is never called:
<no-ssr>
  <InfiniteLoading @infinite="infiniteHandler"></InfiniteLoading>
</no-ssr>
...
methods: {
  infiniteHandler ($state) { console.log('never called') },
},

Did you used the vue-no-ssr component? I tried it like your code, and it works for me, this is a live demo: https://jsfiddle.net/ksLr54sw/

Yes we did use vue-no-ssr (from nuxt), and our code worked with 2.2.1 so we rollbacked to this version for the moment.
Your jsfiddle seems to work, but it doesn't use nuxt and is not run in Server Side Rendering.
So maybe the difference comes from here ? I don't know how to make a simple jsfiddle with nuxt...

Same problem here

Same problem, sometimes, the function isn't fired...

Here it always happens in version 2.2.2, back to version 2.2.1 works normally.

@filipesarturi @pirmax did you also used it with nuxt?

@PeachScript no

Event is not firing, using plain VueJS

@filipesarturi @pirmax @roosh-t3 could you reproduce this problem through a live demo like this https://jsfiddle.net/ksLr54sw/ to help me find the reason?

Same problem, total can't use

Hello,
I have the same problem, and I took the time to build my application with each commit between 2.2.1 and 2.2.2 to find which one lead to this issue.
I found that the commit 8b47b2d which fixes #100 is causing the actual bug. It is because when the elm is body, it can pass the first if or the second if  (depending on parameters and element style). But not matter which if is ran, when the found element is body, the result should always be window instead of body.
@PeachScript I've made a PR to fix this issue (and I hope keep the other issue #100 fixed too): #115

@damienbeaufils thank you very much to spend time to find the reason! After reading your comment,  I think I made a mistake when fix the #100 , before that the program will find the body first, code is here, I think it is the same with your PR, so is the #100 a special situation? Maybe I should recommend the reporter of #100 to use the force-use-infinite-wrapper attribute?
Thanks again!

@PeachScript I agree that #100 is a special case and should use the force-use-infinite-wrapper instead

@damienbeaufils I see, I have been released a new version v2.2.3 to fix it, you can try it now, and thanks for your idea and PR :D

@rquelen @filipesarturi @pirmax @kitkimwong @roosh-t3 hello everyone, you can try the new version v2.2.3 now, if it still not working, please tell me, thanks!


Remove content on installing Microsoft.Identity.Web.ProjectTemplates

WRT the section: Create the app using the .NET Core CLI at https://learn.microsoft.com/en-us/azure/active-directory/develop/tutorial-blazor-webassembly#create-the-app-using-the-net-core-cli
Since the tutorial calls for installing the SDK and then has them install the project templates in Microsoft.Identity.Web.ProjectTemplates, the added templates are numbered (e.g., Blazor WebAssembly: blazorwasm2). The command that creates the app uses the template from the SDK ...
dotnet new blazorwasm ...

Therefore, the Microsoft.Identity.Web.ProjectTemplates template isn't used. That part of that section of the topic can be deleted.
It's for the best anyway because the templates in the Microsoft.Identity.Web.ProjectTemplates package are stale at 5.0 compared to the topic's guidance that states it has been updated to 7.0 ...

This tutorial uses .NET Core 7.0.

... and uses another 7.0 package ...
<PackageReference Include="Microsoft.Extensions.Http" Version="7.0.0" />

... and refers to 6.0+ template content, Program.cs versus Startup.cs.

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

ID: d60e8edb-2347-c809-8d6e-3a09b65b6762
Version Independent ID: 1110826c-8c31-19b2-c9da-c9dba4777a05
Content: Tutorial - Sign in users and call a protected API from a Blazor WebAssembly app - Microsoft Entra
Content Source: articles/active-directory/develop/tutorial-blazor-webassembly.md
Service: active-directory
Sub-service: develop
GitHub Login: @henrymbuguakiarie
Microsoft Alias: henrymbugua

Duplicate of #https://github.com/MicrosoftDocs/azure-docs/issues/104956
@guardrex
We are going to close this thread as duplicate you can follow the update here https://github.com/MicrosoftDocs/azure-docs/issues/104956


[Add] Postman and Cypress in subcategory testing / backend

Site URL
https://www.postman.com/ , https://www.cypress.io/
Description of the above provided site
Postman :- Postman is a popular API testing tool that simplifies the process of sending HTTP requests to test and analyze web services. It allows developers to create, organize, and automate API tests, making it a valuable tool for ensuring the functionality and reliability of web applications.
cypress :- Cypress is an end-to-end testing framework for JavaScript applications. It runs in the browser and provides a simple, yet powerful API for writing and running tests. Cypress is a good choice for teams that need to test their JavaScript applications quickly and easily.
Category
Backend
Sub Category
testing
Checklist

[X] I have checked the existing issues
[X] I have read the Contributing Guidelines
[X] I am willing to work on this issue (optional)
[X] I am participating in Hacktoberfest 2023

Hi @Abhishek19-dev. I've assigned you this issue, but please do not make a pull request before it is approved.


chore: code split for EE PR 2169

Description
Code split for EE PR #2169
PR fixes following issue(s)
Fixes #2164 EE issue

/ok-to-test

/ok-to-test

/build-deploy-preview skip-tests=true

/ok-to-test

/ok-to-test

/ok-to-test

/ok-to-test

Adding skip label since this is a dev only change

/ok-to-test

/ok-to-test


Edit hdinsight-develop-deploy-java-mapreduce.md

Edit complete.
The link "Install and configure Azure PowerShell" didn't work when I tried it.
Per naming guidelines, I changed instances of "PowerShell" by itself to "Azure PowerShell." Please make sure that all mentions are technically accurate and shouldn't be "Windows PowerShell" instead.
Per naming guidelines, I changed instances of "storage account" to "Storage account" (except in instances of "Blob storage account," because "Blob storage" is a separate term). Please confirm that this change is accurate at every mention.
Throughout the article, please make sure that there are multiple commands after the introductory text "following commands...", and that there is only one command after the introductory text "following command..."
Please check the spacing between steps in procedures. It looks inconsistent in the GitHub preview.
On line 77, the text after both instances of "listed within" isn't rendering in the GitHub preview.
Line 385 says "You should see about the uploaded text data files." I'm not sure what this sentence means. It looks like either "about" should be removed or some text is missing.

Hi @ShawnJackson, I'm your friendly neighborhood Azure Pull Request Bot (You can call me AZPRBOT). Thanks for your contribution!

It looks like you're working at Microsoft (v-shawja). If you're full-time, we DON'T require a contribution license agreement.

If you are a vendor, or work for Microsoft Open Technologies, DO please sign the electronic contribution license agreement. It will take 2 minutes and there's no faxing! https://cla.azure.com.

TTYL, AZPRBOT;


xkbd: init at 0.8.18

Motivation for this change
i need this to fix onscreen in navit.
Things done

[ ] Tested using sandboxing (nix.useSandbox on NixOS, or option sandbox in nix.conf on non-NixOS)
Built on platform(s)

[x] NixOS
[ ] macOS
[ ] other Linux distributions

[ ] Tested via one or more NixOS test(s) if existing and applicable for the change (look inside nixos/tests)
[ ] Tested compilation of all pkgs that depend on this change using nix-shell -p nox --run "nox-review wip"
[x] Tested execution of all binary files (usually in ./result/bin/)
[ ] Determined the impact on package closure size (by running nix path-info -S before and after)
[x] Fits CONTRIBUTING.md.

@GrahamcOfBorg build xkbd

Success on x86_64-linux (full log)
Attempted: xkbd
Partial log (click to expand)
make[2]: Leaving directory '/build/source'
make[1]: Leaving directory '/build/source'
post-installation fixup
shrinking RPATHs of ELF executables and libraries in /nix/store/xk2pnin7z9yshf33rs8s7kb7qp1nzyhn-xkbd-0.8.18
shrinking /nix/store/xk2pnin7z9yshf33rs8s7kb7qp1nzyhn-xkbd-0.8.18/bin/xkbd
gzipping man pages under /nix/store/xk2pnin7z9yshf33rs8s7kb7qp1nzyhn-xkbd-0.8.18/share/man/
strip is /nix/store/h0lbngpv6ln56hjj59i6l77vxq25flbz-binutils-2.30/bin/strip
stripping (with command strip and flags -S) in /nix/store/xk2pnin7z9yshf33rs8s7kb7qp1nzyhn-xkbd-0.8.18/bin
patching script interpreter paths in /nix/store/xk2pnin7z9yshf33rs8s7kb7qp1nzyhn-xkbd-0.8.18
checking for references to /build in /nix/store/xk2pnin7z9yshf33rs8s7kb7qp1nzyhn-xkbd-0.8.18...

Success on aarch64-linux (full log)
Attempted: xkbd
Partial log (click to expand)
make[1]: Leaving directory '/build/source'
post-installation fixup
shrinking RPATHs of ELF executables and libraries in /nix/store/mya1w3z0x4dmh8zzi36ycxqyjb5pjl2z-xkbd-0.8.18
shrinking /nix/store/mya1w3z0x4dmh8zzi36ycxqyjb5pjl2z-xkbd-0.8.18/bin/xkbd
gzipping man pages under /nix/store/mya1w3z0x4dmh8zzi36ycxqyjb5pjl2z-xkbd-0.8.18/share/man/
strip is /nix/store/y4ymnvgxygpq05h03kyzbj572zmh6zla-binutils-2.30/bin/strip
stripping (with command strip and flags -S) in /nix/store/mya1w3z0x4dmh8zzi36ycxqyjb5pjl2z-xkbd-0.8.18/bin
patching script interpreter paths in /nix/store/mya1w3z0x4dmh8zzi36ycxqyjb5pjl2z-xkbd-0.8.18
checking for references to /build in /nix/store/mya1w3z0x4dmh8zzi36ycxqyjb5pjl2z-xkbd-0.8.18...
/nix/store/mya1w3z0x4dmh8zzi36ycxqyjb5pjl2z-xkbd-0.8.18

Success on x86_64-linux (full log)
Attempted: xkbd
Partial log (click to expand)
/nix/store/xk2pnin7z9yshf33rs8s7kb7qp1nzyhn-xkbd-0.8.18
make[1]: Leaving directory '/build/source'
post-installation fixup
shrinking RPATHs of ELF executables and libraries in /nix/store/xk2pnin7z9yshf33rs8s7kb7qp1nzyhn-xkbd-0.8.18
shrinking /nix/store/xk2pnin7z9yshf33rs8s7kb7qp1nzyhn-xkbd-0.8.18/bin/xkbd
gzipping man pages under /nix/store/xk2pnin7z9yshf33rs8s7kb7qp1nzyhn-xkbd-0.8.18/share/man/
strip is /nix/store/h0lbngpv6ln56hjj59i6l77vxq25flbz-binutils-2.30/bin/strip
stripping (with command strip and flags -S) in /nix/store/xk2pnin7z9yshf33rs8s7kb7qp1nzyhn-xkbd-0.8.18/bin
patching script interpreter paths in /nix/store/xk2pnin7z9yshf33rs8s7kb7qp1nzyhn-xkbd-0.8.18
checking for references to /build in /nix/store/xk2pnin7z9yshf33rs8s7kb7qp1nzyhn-xkbd-0.8.18...

@Infinisil : Should be ready to merge :))

oki, fixed

Success on x86_64-linux (full log)
Attempted: xkbd
Partial log (click to expand)
/nix/store/xk2pnin7z9yshf33rs8s7kb7qp1nzyhn-xkbd-0.8.18

Success on aarch64-linux (full log)
Attempted: xkbd
Partial log (click to expand)
/nix/store/mya1w3z0x4dmh8zzi36ycxqyjb5pjl2z-xkbd-0.8.18

Success on x86_64-linux (full log)
Attempted: xkbd
Partial log (click to expand)
make[1]: Leaving directory '/build/source'
post-installation fixup
shrinking RPATHs of ELF executables and libraries in /nix/store/xk2pnin7z9yshf33rs8s7kb7qp1nzyhn-xkbd-0.8.18
shrinking /nix/store/xk2pnin7z9yshf33rs8s7kb7qp1nzyhn-xkbd-0.8.18/bin/xkbd
gzipping man pages under /nix/store/xk2pnin7z9yshf33rs8s7kb7qp1nzyhn-xkbd-0.8.18/share/man/
strip is /nix/store/h0lbngpv6ln56hjj59i6l77vxq25flbz-binutils-2.30/bin/strip
stripping (with command strip and flags -S) in /nix/store/xk2pnin7z9yshf33rs8s7kb7qp1nzyhn-xkbd-0.8.18/bin
patching script interpreter paths in /nix/store/xk2pnin7z9yshf33rs8s7kb7qp1nzyhn-xkbd-0.8.18
checking for references to /build in /nix/store/xk2pnin7z9yshf33rs8s7kb7qp1nzyhn-xkbd-0.8.18...
/nix/store/xk2pnin7z9yshf33rs8s7kb7qp1nzyhn-xkbd-0.8.18

Success on aarch64-linux (full log)
Attempted: xkbd
Partial log (click to expand)
/nix/store/mya1w3z0x4dmh8zzi36ycxqyjb5pjl2z-xkbd-0.8.18

I keep bash and perl since there is 2 scripts in share/xkbd but i've some pb to fix them
It will necessary some work, i don't get that work for the moment, if you can help here :
preFixupPhases = ''
pushd "$out/share/xkbd"
chmod +x xkbd-config xkbd-onoff
mv xkbd-config $out/bin/xkbd-config
mv xkbd-onoff $out/bin/xkbd-onoff
/* patchShebangs xkbd-config
patchShebangs xkbd-onoff */
popd
'';
I'd like to do that since it's not very necessary to spend more time on that for the moment.

Success on x86_64-linux (full log)
Attempted: xkbd
Partial log (click to expand)
make[2]: Leaving directory '/build/source'
make[1]: Leaving directory '/build/source'
post-installation fixup
shrinking RPATHs of ELF executables and libraries in /nix/store/xdxvj6a0w74n8jnazyar253n7b8ldwkd-xkbd-0.8.18
shrinking /nix/store/xdxvj6a0w74n8jnazyar253n7b8ldwkd-xkbd-0.8.18/bin/xkbd
gzipping man pages under /nix/store/xdxvj6a0w74n8jnazyar253n7b8ldwkd-xkbd-0.8.18/share/man/
strip is /nix/store/h0lbngpv6ln56hjj59i6l77vxq25flbz-binutils-2.30/bin/strip
stripping (with command strip and flags -S) in /nix/store/xdxvj6a0w74n8jnazyar253n7b8ldwkd-xkbd-0.8.18/bin
patching script interpreter paths in /nix/store/xdxvj6a0w74n8jnazyar253n7b8ldwkd-xkbd-0.8.18
checking for references to /build in /nix/store/xdxvj6a0w74n8jnazyar253n7b8ldwkd-xkbd-0.8.18...

Success on aarch64-linux (full log)
Attempted: xkbd
Partial log (click to expand)
make[1]: Leaving directory '/build/source'
post-installation fixup
shrinking RPATHs of ELF executables and libraries in /nix/store/znsisldnxhkd1c181436npjidhxdy7a2-xkbd-0.8.18
shrinking /nix/store/znsisldnxhkd1c181436npjidhxdy7a2-xkbd-0.8.18/bin/xkbd
gzipping man pages under /nix/store/znsisldnxhkd1c181436npjidhxdy7a2-xkbd-0.8.18/share/man/
strip is /nix/store/y4ymnvgxygpq05h03kyzbj572zmh6zla-binutils-2.30/bin/strip
stripping (with command strip and flags -S) in /nix/store/znsisldnxhkd1c181436npjidhxdy7a2-xkbd-0.8.18/bin
patching script interpreter paths in /nix/store/znsisldnxhkd1c181436npjidhxdy7a2-xkbd-0.8.18
checking for references to /build in /nix/store/znsisldnxhkd1c181436npjidhxdy7a2-xkbd-0.8.18...
/nix/store/znsisldnxhkd1c181436npjidhxdy7a2-xkbd-0.8.18


Fixed missing forward slash escape in regexp

@joshvoigts Thanks for your contribution but \ doesn’t have to be escaped in a character class (as already noted). Closing.

No problem, thanks for looking into this. The javascript engine I was using choked on this, but I was able to change it by hand.


Wish List: Make version upgrades easier

Add code to 'About' option so user can verify
which version they are running

Upgrade .msi to auto-uninstall old version before
installing new version.

First one done, your Desktop should notify there is a new update.
I will investigate second request.

I am trying to write a .BAT file to automate the new-version-install process:
`:* PURPOSE: To force Bling to update itself to the latest-and-greatest
:*          Viewer code
TASKKILL /IM Bling.exe
C:
CD %appdata%\Roaming\Bling Desktop\Html\viewer
DEL .
CD %userprofile%/Documents/Bling.exe/Download/Versions
DEL .
C:\Users\Kolon\AppData\Roaming"Bling Desktop"\bling.exe
PAUSE`
Seems to work... sort of (trips on a couple Deletes if not run in Admin mode), but
the last line - where we want to restart Bling does not seem to work.
Windows throws a momendary dialog "Checking.... (something-or-other)..." which then disappears
without having started Bling.
Any thoughts?

C:\Users\Kolon\AppData\Roaming"Bling Desktop"\bling.exe
This line lacks a \ before bling and needs to be without quotes.
I have just released a new Desktop version with a new installer that allows reinstalling without uninstalling. No longer a msi but an exe. Also moved from roaming to local folder.
On a separate note, next release will also notify of new desktop releases (hopefully). In fact, viewer is automatically downloaded and loaded by the current application. When a new viewer is available you should see a notification toast in your windows 10. I will double check if this funtionality has been lost during other modifications as another user is not having these notifications neither.


Add field for link to Fossil Plant Names registry

https://www.plantfossilnames.org/
This is the website for registered valid fossil plant names. Taxa are given a registry number for the taxon and the nomenclatural act that supports it. The data is vetted. This will soon be a requirement for publishing new names (like it is for Zootaxa). Support/interoperability would be really good.
In the optional part of the OTU form:
Add field beside the genus field for the registry link to genus name.
Add field beside the specific epithet for registry link to species name.
Also provide a link to (https://www.plantfossilnames.org/) like what was done for the PBDB link below PBDB parent taxon.
*in the future would be great to be able to pull data from the Plant Fossil Names database (that would be a distant V3 thing I would imagine)

Please before more data entry opens up :)

This is in
paleobot/pbot-api@51f7efca0df35e9cfb82dbc3d87ffe5bbc0fd031
paleobot/pbot-client@af6bb53ad60009cdae65a2fd7902eda6983847fd
paleobot/pbot-client@837b34360b5ed08dccb672ecd5d32000584f4f3b
paleobot/pbot-client@f7c7289005aa5914f299e115bc6ae2506cdad425
not yet merged to master

Merged to master and deployed to dev and stage


Remove scrollspy

The TOC which uses the scrollspy no longer exists. Removing it.

FYI, remember to link to the related issue


Atmospheric effects and scattering?

(Is this the right forum? I couldn't find any other contact information.)
I'm looking for a C++ raytracing library for an art project. One of the things I need is the ability to render atmospheric Rayleigh scattering in heterogeneous volumes. API-wise, OSPRay looks ideal for my purposes, but I don't see any mention of atmospheric effects at all.
Are they supported? If not, can they be trivially added via the SDK?

hello,
we do have an email address for questions, but a feature request on the issue list seems valid to me.  OSPRay does not compute atmospheric scattering, nor single or multi-scattering volumetric effects and it's unlikely this will be on our todo list anytime soon; however, OSPRay was designed as an open source project to be easily modified.  We have several users that have done such modifications.  How difficult this may be will depend on exactly how you want to implement it- as simply a coefficient applied as a function of ray depth, camera, and sun angle it should be trivial; simulating single ray scattering in the volume renderer would be more difficult, but likely easier to add then writing something from scratch.

FYI: the email address Carson mentioned is<EMAIL_ADDRESS>but this is an OK place to ask questions as well. :)
As Carson mentioned, we don't have any atmospheric scattering code in OSPRay as our focus is on scientific visualization and not photo realistic rendering. That said, we DO have a path tracing renderer for more photo realistic rendering, but it doesn't have any volume rendering support in it (yet).
Even though our existing renderers don't implement what you're looking for "out of the box", OSPRay still has a nice collection of building blocks to work with: cameras, frame buffers, volume sampling, transfer functions, multi-threaded rendering, progressive refinement primitives, etc. What I would recommend is that you implement your own renderer, and reuse everything else in OSPRay.
There are two options for extending OSPRay, writing a "module" or using the "SDK". A module is just a subdirectory in the "modules" directory in the OSPRay source tree that lets you quickly develop little test apps through being built as a part of the OSPRay CMake build system setup. The "SDK" refers to the internal object headers we install in our binary releases to allow for production apps to extend OSPRay inside of their project's source.
To me, modules are easier to get working as there's a ton of "boiler plate" stuff we've already written for you (CMake system, data loaders, viewer app infrastructure). A simple example can be found here: https://github.com/jeffamstutz/module_multihit. By cloning that project into OSPRay's "modules" dir, that module implements a custom trianglemesh, renderer, and demo app (which simply loads the module objects for you by default) to showcase how to do multi-hit ray tracing using OSPRay. While the objects it defines won't be useful to you, it is a nice simple example of how you might structure a module.
Cheers,
Jeff

That's a shame --- unfortunately, it's the volumetric rendering that I find the hard bit; I've already tried playing with my own ray tracer, and that was where I got bogged down.
What I'm doing is rendering 3D images of planetary surfaces, complete with atmosphere and ocean (and, I hope, clouds eventually). I have code which will generate a procedurally deformed terrain mesh from a PDS dataset, but the cost of writing the huge mesh out to disk from one tool and immediately reading it back in again into another is crippling; right now I'm using the venerable Povray, which isn't the fastest. I'd like something which can be tightly coupled to my scene generator.
I'll bear OSPRay in mind (I actually think I can get away with homogeneous volumes, by stacking many layers of different densities) for for now I'll keep looking. Shame --- renderers with decent APIs are few and far between, and OSPRay has one of the cleanest I've seen...

I will add that in case Jeff's comment about a new "renderer" threw you off, that depending on exactly what you are implementing this could be a minor alteration to our existing volume renderer.  However, we cannot do that for you unless it applies to our current Scientific Visualization focus or a major client application I'm afraid.


Extensions created by the in-page designer

We have a page with a field and validation code on the page/field. This field is set to Visible=false.
The user/customer would like to have that field in the page and uses design to add the field.
In the In-Page designer they are able to add the field, but the way its added is like a new field - meaning that there is no validation code on the field.
They are not able to see that the field is already in the page - and they are not able to just make it visible by extension (via the In-Page designer).
A simple solution would have been to just make an error if they add an filed that is already in the page, and the right solution would be to should all fields that are in the page - also thoose taht are not visible, and make it possible to make them visible.
NOTE that all this works prefect and ok - if they had added the field by personalize instead of using design

Just to be That Guy: Doing validation on the table, not page, level is proper and would obviate this.

You are right, and that is what we normally do, however in this scenario - when we load the page we create and load a bunch of temporary records, and these are used in the validation code.
I'm not saying that there isn't a workaround for it, I'm just stating that I see this as an issue, since I spent several hours to find out why it was working locally but not at the customer site, and I see this as a scenario that could occur as long as there is a option to put code on page triggers.

If a table field requires special logic and other apps cannot be trusted to handle that, like in your example, it should have Access=protected. That will stop any other app directly referencing that field from compiling. Any other app needing to use that field will then have to call the procedures you have for accessing it correctly.

Hi @RichardPostborg, thanks for creating this issue! We figured it's missing some basic information or in some other way doesn't follow our issue reporting guidelines. Please take the time to review these and update the issue.
Happy Coding!


Voronoi mark

Here are a few explorations of a delaunay/voronoi plugin, written as a transform. However this should probably be done as initializers/layouts (#801) since the x and y dimensions are not separable (Delaunay/Voronoi being based on the euclidian distance on the plane).
https://observablehq.com/@observablehq/plot-delaunay-voronoi-mark-812

Here's the same exploration, but this time as an initializer:
https://observablehq.com/@observablehq/plot-delaunay-layout-812
My current feedback with custom initializers and transforms:

dealing with z/stroke/fill is very tedious.
this initializer doesn't compose with the others because Plot.composeInitializers is not exported (but it's just a matter of exporting it as we do for Plot.transform).


Drive details duration rounds down and is misleading

I went on a drive today - nearly 2 hours, but when the drive details shows this - it seems to just use the 'hour' component and not the minutes and displays that. This should be more precise and show the complete duration. As shown in the screenshot the time shows this was an hour and forty minutes.
I am on the latest release of Teslamate (1.22.0).

Thanks!

PR in place to correct.


Windows support

Recently, we need to deploy a local CI with chttpd on a Windows server. Though it is possible to use MSYS or Cygwin yet, we still prefer native implementations.

Windows support for chttpd is not easy. Our current approach to parse HTTP request relies on FILE* and fdopen. These functionalites might not be viable on Windows platform. Using WinHTTP might help us alot, however that's not the goal of this project.


Make starred Pokemon stay in your inventory

Testing this out, found out that it grinded all my pokemon into candy that didn't meet my CP threashold, even the pokemon I had in my inventory, not just the pokemon I caught while running the bot.

I encountered the same problem, and re-ran the bot with CP of 1 to keep everything this time, hoping to rebuild my collection (I lost 9 Eevees, and a couple rare ones I hatched from eggs).

please iis this on dev or master?
Its fixed in dev @douglascamata close?


Feature Request: Resolve Object Attributes

Hello everyone, thanks for the good work first of all. The title is itself self-explanatory i think, but please find below more info for completion.
Big question is whether this should be supported at all. Please discuss.
Rationale
Sometimes we need to pass object as prop. For example:
<!-- Image.svelte -->
<script lang="ts">
  export let src: {
    mobile: string;
    desktop: string;
  };
</script>

<picture>
  <!-- mobile img source -->
  <!-- desktop img source -->
</picture>

Right now it is not possible with svelte-preprocess-import-assets.
<script lang="ts">
  import Image from './Image.svelte';
</script>

<Image
  src={{
    mobile: '../assets/image.150x150.png',
    desktop: '../assets/image.400x400.png',
  }}
/>

src.mobile and src.desktop here would be parsed as literals.
How to?
I played with https://astexplorer.net/ and did some experimentation, seen in stackblitz here (run pnpm install & pnpm dev
Repo here if needed.
This is just some minimal code. It looks ugly, but we can expand from the idea.
const TAG = 'Image';
const STRING_TO_REPLACE = `'/vite.svg'`;

walk(ast.html, {
  enter(node) {
    if (node.name === TAG) {
      const srcAttr = node.attributes.find((attr) => attr.name === 'src');
      for (const value of srcAttr.value) {
        if (value?.expression?.type === 'ObjectExpression') {
          for (const prop of value.expression.properties) {
            if (prop.type === 'Property' && prop.value?.type === 'Literal') {
              const { start, end } = prop.value;
              s.update(start, end, STRING_TO_REPLACE);
            }
          }
        }
      }
    }
  },
});

Potential Issues?
(1) How to handle nested objects?

only support top level? => best imo, keep things minimal, can expand in the future when there's people requesting it
provide a depth config?
support recursively by default?

(2) Nuances such as if properties are computed values? Maybe we can do a try-catch or detect these cases and just skip the processing.
Change to config interface?
ImportAssetsOptions
A separate option for configuring behavior concerning this feature?

enabled to enable or disable this feature globally
depth to limit, if (1) in Potential Issues is of concern

interface ImportAssetsOptions {
    sources?: AssetSource[] | ((defaultSources: AssetSource[]) => AssetSource[]);
    importPrefix?: string;
    http?: boolean;
    urlFilter?: (url: string) => boolean;
+   transformObject: {
+       enabled?: boolean;
+       depth?: number;
+   }
}

AssetSource

An additional objectAttributes for this purpose?

interface AssetSource {
    tag: string;
    srcAttributes?: string[];
    srcsetAttributes?: string[];
    filter?: (metadata: FilterMetadata) => boolean;
+   objectAttributes?: string[];
}

I would love to help out further if needed but might need more guidance.

Thanks for the very thorough write-up! I think it'd be best to avoid a new option, so we can provide a sensible default. Transforming all the string literals recursively within an object make sense to me, we can also do so for arrays.
It should be fine is most case as long as we document this. We probably want to only do this for InlineComponents too.
If you're interested in implementing this, feel free to send a PR!

thanks @bluwy sounds good to me, having support for array and object by default is good indeed. I will find some time to open a PR in the near future.

We probably want to only do this for InlineComponents

InlineComponent makes sense. For Element, we can skip because they shouldn't receive object & array as props. What are the other possibilities? Do you know if there's any documentation for Svelte AST?

Looking forward to your PR! I think those are the only possibilities we need to handle for now. There isn't documentation for the Svelte AST as it's not part of Svelte's semver. I personally use https://svelte.dev/repl to test ASTs, there's an AST tab in the output view.


Handle Internationalization Differences before importing

We need to create separate indexes for each language for better search results in OpenSearch.

Issue fixed by @tischrei


Port seems to be blocked error

I got this error that says that port xxxx seems to be blocked, even after adding to firewall exception.
But that port is open 100%, and firewall is off.
Any advice?

Add me on discord and I will help you. @Florid1995#4983

@alarin1
I see, But did you try to run the client on your PC? just to test it.

@NYAN-x-CAT
I try, but it don`t works on my PC

@alarin1  Make sure your port forwarding is valid. Also try to check your port here http://www.canyouseeme.org/

@NYAN-x-CAT
Confirmed that it is open on that site.
I`m testing this on freshly installed VM, without AV, and with Firewall off.

@alarin1 I see. Can you try it on windows 10? There is a bug that the client doesn't work freshly windows7, I already fix it but I will release the update later. For now, you need to update your browser from here https://www.microsoft.com/en-us/windows/microsoft-edge Or use windows 10.

@NYAN-x-CAT
Thanks man, i will try it on win 10.

Confirmed bug, I changed port listening to 80 and it worked, but not for 443. Can you update no-ip dns in case pastebin is not going to work in the future please. Thank you


#43 - update font-sizes & remove white spaces in css

Please always provide the GitHub issue(s) your PR is for, as well as test URLs where your change can be observed (before and after):
Fix #43
Test URLs:

Before: https://main--netcentric--hlxsites.hlx.page/
After: https://43--netcentric--hlxsites.hlx.page/drafts/JLledo/font-size

It conflicts with: https://github.com/hlxsites/netcentric/pull/20/files, some of the changes are the same, but not all.


Optimize WhiskEntity deserialization

Currently the deserialization logic for WhiskEntity uses a trail based approahc where it tries multiple deserializers
https://github.com/apache/openwhisk/blob/e9dd2073cd2343545d006cd71ca01dc24114c216/common/scala/src/main/scala/org/apache/openwhisk/core/entity/WhiskEntity.scala#L134-L152
This can be optimized for newer setups which started using new entityType attribute (#3164). So we can have a pre check if the object have field entityType defined then use that otherwise fallback to existing approach.
It would avoid the cost of exception generated for cases where we are looking for entries later in the sequence

This approach would improve scenarios where pre-existing actions are loaded from the artifact store and fail in deserialisation because the used runtime kind has been removed. In this scenario, the document cannot be deserialised into a WhiskAction and will be read as WhiskTrigger.
See<EMAIL_ADDRESS>


Can not keep X-Forwarded-For value for app

Do you want to request a feature or report a bug?
Bug
What did you do?
version: 2.1.6
providers: kubernetes-crd
flow: client(<IP_ADDRESS>) -> elb(<IP_ADDRESS>) -> nginx(<IP_ADDRESS>) -> traefik(<IP_ADDRESS>) -> app
traefik host tcpdump:
X-Forwarded-For: <IP_ADDRESS>,<IP_ADDRESS>,<IP_ADDRESS>
app host tcpdump
X-Forwarded-For: <IP_ADDRESS>
X-Forwarded-Host: your.domain.com
X-Forwarded-Port: 80
X-Forwarded-Proto: http
X-Forwarded-Server: hostname
X-Real-Ip: <IP_ADDRESS>
X-Ruxit-Forwarded-For: <IP_ADDRESS>, <IP_ADDRESS>
traefik.toml
[entrypoints]
  [entrypoints.web]
    Address = ":8000"

    [entryPoints.web.forwardedHeaders]
      insecure = true

  [entrypoints.websecure]
    Address = ":4443"
    [entryPoints.websecure.forwardedHeaders]
      insecure = true

What did you expect to see?
X-Forwarded-For: <IP_ADDRESS>,<IP_ADDRESS>,<IP_ADDRESS>,<IP_ADDRESS>

Hi! I'm Træfiker :robot: the bot in charge of communication regulation.
Thanks for your interest in Traefik!
We dedicate the issue tracker to bug reports and feature requests only. My advanced AI has spotted that your issue might be a configuration problem or relates to something that doesn't look like a bug.
To confirm this, please join our Community Forum and reach out to us on the Traefik section.
In case I'm wrong (well, that would be embarrassing :sweat_smile:), my developers will re-open the issue and fix me!
In the meantime, you can double check Traefik's documentation.

@re-open


'Terminology and IM' page feedback

https://vr-spec.readthedocs.io/en/latest/specification/terms_and_model/index.html
Lead in Text:

Regarding the following text:

"Even for human interpretation, these definitions are inconsistent: does the definition describe a precise sequence change or a qualitative one"

It may not be clear to readers what you mean by a 'qualitative' change.

Regarding the following text:

"We then translate each of these computational definitions into precise specifications for representing information (logical model)."

Do you use 'logical model' here to mean the same thing as 'information model'?  If so,  I would use this term - since that what you call this elsewhere.
Primitive Concepts:
I might include a line or two explaining what exactly you mean by 'Primitive Concept', 'Composite Concept', and how these are related. Not critical, but these terms will likely not be intuitively clear to everyone.
Id:

I think you should include some text about a recommendation to use CURIEs here (as you have in the json spec itself)?

Residue:

The computational definition of 'Residue' doesn’t sound like a definition, nor does it sound computational.  Consider updating def to be consistent with the tone/language used in other computational definitions, e.g. 'Sequence' (e.g. start the def for Residue with "a character or code representing a single monomeric unit of . . . ")

Sequence:

Why is Sequence the only Primitive concept with an Information model section in this document?  And the text in this IM section isn't really an information model - just a sentence that makes it sound like Sequence is a specialization of the string datatype.

Related: Looking at the spec and the diagram, it is not clear if Sequence is meant to be a proper object in the model, with attributes of its own. Or just a specialization of the string datatype (which seems to be the case for other primitives such as Id and Residue)

Regarding the following text:

"A Sequence provides a stable coordinate system by which an Allele may be located and interpreted. A Sequence may have several roles. A “reference sequence” is any Sequence used to define an Allele."

Here I might move the first sentence to follow from the second - which would let you be more precise about the fact that a Sequence with a "reference sequence" role is really what "provides a stable coordinate system by which an Allele may be located and interpreted".  This is not be true of a sequence with a "replacement sequence role".  Anyway, this is not critical, but something to consider because it speaks to a point of confusion raised at the Hinxton meeting.

Regarding the following text:

". . . it is not necessary that Sequences be “typed” (i.e. DNA, RNA, or AA)"

This phrasing could be confusing - consider " it is not necessary that the molecular type of the sequence be explicitly represented (i.e. DNA, RNA, or AA)"
Composite Concepts:
Generally, ensure consistency of the VR object graph diagram with the text and info models presented elsewhere in the documentation.

e.g. the 'type' for Location/SequenceLocation 'id' and 'sequence_id' attributes is CURIE in the diagram, and 'Id' in the IM table on the Location page.
e.g. in the Variation box, the value of the id attribute is 'CURIE' . . . .CURIE isn't a defined type in the model - should the value be Id here? Or do you want to define CURIE as a data type in the documentation above?

Perhaps  there should be some info about CURIEs in the Implementation Guide section under Id . . . or at a least link to another page with this info?

I think I captured the majority of these comments in changes, committing next. Thanks for the careful reading, @mbrush.


CasC not working with local build

I built the master of jenkinsfile-runner with:
mvn clean package
Then i changed into jenkinsfile-runner/demo/pipeline-library
There i did in a bash shell:
CASC_JENKINS_CONFIG=$(pwd)/jenkins.yaml
java -jar ../../app/target/jenkinsfile-runner-standalone.jar -p ../../vanilla-package/target/plugins/ -f .

i got the following exception:
Started
Running in Durability level: PERFORMANCE_OPTIMIZED
[Pipeline] Start of Pipeline
[Pipeline] End of Pipeline
java.lang.NoSuchMethodError: No such DSL method 'buildPlugin'

Which is not what i expected.
So i changed into jenkinsfile-runner/demo/casc and did there:
CASC_JENKINS_CONFIG=$(pwd)/config/jenkins.yaml
java -jar ../../app/target/jenkinsfile-runner-standalone.jar -p ../../vanilla-package/target/plugins/ -f .

And got as output:
[Pipeline] Start of Pipeline
[Pipeline] node
Running on Jenkins in /var/folders/m7/jql3p30h8xl46m001s7q50mh0000gp/T/jenkinsfileRunner.tmp/jfr5797116649782649554.run/workspace/job
GOT CONTEXT FOR Build
[Pipeline] {
[Pipeline] stage
[Pipeline] { (Declarative: Checkout SCM)
[Pipeline] checkout
[Pipeline] }
[Pipeline] // stage
[Pipeline] stage
[Pipeline] { (Build)
[Pipeline] echo
Hello world!
[Pipeline] echo
An environment variable configured via JCasC: null
[Pipeline] }
[Pipeline] // stage
[Pipeline] }
[Pipeline] // node
[Pipeline] End of Pipeline
Finished: SUCCESS

With the null value for ${env.SOME_CASC_ENV_VAR} it seems to me obvious that the CasC mechanism at least in my environment is not working
My environment:
bash-3.2$ java -version
openjdk version "1.8.0_232"
OpenJDK Runtime Environment (AdoptOpenJDK)(build 1.8.0_232-b09)
OpenJDK 64-Bit Server VM (AdoptOpenJDK)(build 25.232-b09, mixed mode)

bash-3.2$ java -jar ../../app/target/jenkinsfile-runner-standalone.jar -p ../../vanilla-package/target/plugins/ -f .
No explicit version has been selected, using latest LTS
Running pipeline on jenkins 2.222.1

git log                                                                                628ms  Do  2 Apr 18:18:59 2020
commit b8429941bbc8898876dcc3b975070f2d5707a822 (HEAD -> master, origin/master, origin/HEAD)
Merge: 1a25d1c 337b27d
Author: Oleg Nenashev<EMAIL_ADDRESS>Date:   Thu Mar 26 12:07:12 2020 +0100

    Merge pull request #253 from LinuxSuRen/latest-plugin

    Use latest as the default version of plugin

commit 337b27de0b0c3ab231d1a8d5ace22df78ba0a4fe
Author: rick<EMAIL_ADDRESS>Date:   Sun Mar 8 22:41:48 2020 +0800

    Use latest as the default version of plugin

Any suggestions?
Best thanks for the great work, a working CasC would be neat though

Note :
in jenkinsfile-runner/demo/casc
./../app/target/appassembler/bin/jenkinsfile-runner -w /tmp/jenkins -p ../../vanilla-package/target/plugins -f .
produces the same output described above.

interesting though , if i run both demos, the casc and the pipeline library with docker the results are as expected:
demo/casc  docker build -t jenkinsfile-runner:my-production-jenkins ../..
demo/casc  docker run --rm -v $PWD:/workspace -v $PWD/config:/usr/share/jenkins/ref/casc jenkinsfile-runner:my-production-jenkins

I get the expected output:
Started
Running in Durability level: PERFORMANCE_OPTIMIZED
[Pipeline] Start of Pipeline
GOT CONTEXT FOR Build
[Pipeline] node
Running on Jenkins in /build
[Pipeline] {
[Pipeline] stage
[Pipeline] { (Declarative: Checkout SCM)
[Pipeline] checkout
[Pipeline] }
[Pipeline] // stage
[Pipeline] stage
[Pipeline] { (Build)
[Pipeline] echo
Hello world!
[Pipeline] echo
An environment variable configured via JCasC: a value configured via JCasC
[Pipeline] }
[Pipeline] // stage
[Pipeline] }
[Pipeline] // node
[Pipeline] End of Pipeline
Finished: SUCCESS

And
demo/pipeline-library  docker run --rm -v $PWD:/workspace -v $PWD:/usr/share/jenkins/ref/casc jenkinsfile-runner:my-production-jenkins
2020-04-02 18:05:52.513+0000 [id=1]	WARNING	j.branch.WorkspaceLocatorImpl#getWorkspaceRoot: JENKINS-2111 path sanitization ineffective when using legacy Workspace Root Directory ‘/build’; switch to ‘${JENKINS_HOME}/workspace/${ITEM_FULL_NAME}’ as in JENKINS-8446 / JENKINS-21942
Started
Running in Durability level: PERFORMANCE_OPTIMIZED
Loading library Test Git<EMAIL_ADDRESS>No credentials specified
Cloning the remote Git repository
Cloning repository https://github.com/jenkins-infra/pipeline-library.git
 > git init /build@libs/Test Git Lib # timeout=10
Fetching upstream changes from https://github.com/jenkins-infra/pipeline-library.git
 > git --version # timeout=10
 > git fetch --tags --force --progress -- https://github.com/jenkins-infra/pipeline-library.git +refs/heads/*:refs/remotes/origin/*
 > git config remote.origin.url https://github.com/jenkins-infra/pipeline-library.git # timeout=10
 > git config --add remote.origin.fetch +refs/heads/*:refs/remotes/origin/* # timeout=10
 > git config remote.origin.url https://github.com/jenkins-infra/pipeline-library.git # timeout=10
Fetching upstream changes from https://github.com/jenkins-infra/pipeline-library.git
 > git fetch --tags --force --progress -- https://github.com/jenkins-infra/pipeline-library.git +refs/heads/*:refs/remotes/origin/*
 > git rev-parse origin/master^{commit} # timeout=10
Checking out Revision c7acbe5bf68da0f1ad00d63d40a38e9dc59d6e6d (origin/master)
 > git config core.sparsecheckout # timeout=10
 > git checkout -f c7acbe5bf68da0f1ad00d63d40a38e9dc59d6e6d
Commit message: "Merge pull request #138 from dwnusbaum/mv-src-test"
First time build. Skipping changelog.
[Pipeline] Start of Pipeline
[Pipeline] properties
[Pipeline] parallel

How that?

I ran in jenkinsfile-runner/demo/casc
./../app/target/appassembler/bin/jenkinsfile-runner  -w ../../vanilla-package/target/war/jenkins.war -p ../../vanilla-package/target/plugins -f .
on
mvn --version                                              1.2m  Don 02 Apr 2020 23:09:40 CEST
Apache Maven 3.5.4 (1edded0938998edf8bf061f1ceb3cfdeccf443fe; 2018-06-17T20:33:14+02:00)
Maven home: /home/che/opt/apache-maven-3.5.4
Java version: 1.8.0_232, vendor: Oracle Corporation, runtime: /usr/lib/jvm/java-1.8.0-openjdk-<IP_ADDRESS>.b09-0.el7_7.x86_64/jre
Default locale: de_CH, platform encoding: UTF-8
OS name: "linux", version: "3.10.0-1062.el7.x86_64", arch: "amd64", family: "unix"

No avail.
So to summarize: Casc worsk against a docker build, but not against a "native" build of the jenkinsfile-runner.

One difference between Docker images and standalone version are the Jenkins core versions. I cannot say for sure, but something might be broken when vanilla JFR is launched with new Jenkins core

"native"

I hope to finish my Quarkus PoC eventually...

.....but something might be broken when vanilla JFR is launched with new Jenkins core

Is it possible to switch the Jenkin core version for the JFR? I could try that....

There is a --jenkinsVersion argument

What i also will try is a docker build against the Dockerfile-dev

There is a --jenkinsVersion argument

Ah ok, thanks i‘ll try that

Just in case, I am updating the target version for the next release: https://github.com/jenkinsci/jenkinsfile-runner/pull/177

Just in case, I am updating the target version for the next release: #177
Oh great, i try also with that branch

One difference between Docker images and standalone version are the Jenkins core versions.

I don't think that's the problem.  I ran

demo/casc  docker build -t jenkinsfile-runner:my-production-jenkins -f ../../Dockerfile-dev ../..

which builds a Docker image against my local build on my box.
Running that image worked! So the jenkinsfile-runner build and the versions are fine.
There must be something with running the demo on my local box versus running it through Docker?

Just in case, I am updating the target version for the next release: #177

I cloned that one with the same results: It works running with docker with a image built against the local build on my box, running for example:

demo/casc  java -jar ../../app/target/jenkinsfile-runner-standalone.jar -w ../../vanilla-package/target/war  -p ../../vanilla-package/target/plugins/ -f .

does'nt work.

Thanks for checking! I just did a clean build, and it works for me (apart from #193 warnings). Are you sure the environment variable for JCasC was passed properly in the last experiment?
CASC_JENKINS_CONFIG=config/jenkins.yaml java -jar ../../app/target/jenkinsfile-runner-standalone.jar -w ../../vanilla-package/target/war -p ../../vanilla-package/target/plugins/ -f .

[Pipeline] {
[Pipeline] stage
[Pipeline] { (Declarative: Checkout SCM)
[Pipeline] checkout
[Pipeline] }
[Pipeline] // stage
[Pipeline] stage
[Pipeline] { (Build)
[Pipeline] echo
Hello world!
[Pipeline] echo
An environment variable configured via JCasC: a value configured via JCasC
[Pipeline] }
[Pipeline] // stage
[Pipeline] }
[Pipeline] // node
[Pipeline] End of Pipeline
Finished: SUCCESS

Are you sure the environment variable for JCasC was passed properly in the last experiment?

Uppps , sorry , my fault.

CASC_JENKINS_CONFIG=config/jenkins.yaml java -jar ../../app/target/jenkinsfile-runner-standalone.jar -w ../../vanilla-package/target/war -p ../../vanilla-package/target/plugins/ -f .

versus

CASC_JENKINS_CONFIG=config/jenkins.yaml
java -jar ../../app/target/jenkinsfile-runner-standalone.jar -w ../../vanilla-package/target/war -p ../../vanilla-package/target/plugins/ -f .

I did't realize that the  environment variable needs to be on the same line.
Great thanks, keep up with the great work.

NWS, I also had not noticed it until I tried. There are too many shells out there, and all of them handle env vars differently. I will add a note to the demo

NWS, I also had not noticed it until I tried. There are too many shells out there, and all of them handle env vars differently. I will add a note to the demo

Yep , true. Still a newbie error, although i am not that newbie anymore ;-)
Shell variable vs Environment variable ......
Again great thanks , learnt a lot.

Maybe for "newbies" like me an explicit:
CASC_JENKINS_CONFIG=$(pwd)/jenkins.yaml
export CASC_JENKINS_CONFIG
java -jar ../../app/target/jenkinsfile-runner-standalone.jar -p ../../vanilla-package/target/plugins/ -f .

would help ;-)

BTW love the Vanilla Packaging. Great work. Makes things really easier, who needs Docker, haha

Vanilla is also packaged to Docker so they are quite orthogonal.
But yes, I hope to evolve the vanilla packaging a bit more so that one can actually use Jenkinsfile Runner without repackaging everything in simple use-cases

Great, i actually mean the fat jar for the runner in the Vanilla Package


Cached SVGs not always injected correctly

Version 1.2.0 introduced a bug where cached images are not always injected.
The problem exists because in Line 540 there is not a distinction between a loadValue Array and a callbackQueue Array.
A test to prevent regression of this this should also be written.

fixed in 4494c13ae4b3c932a21fc485facb8bd92705e058 and implemented tests to prevent regression of this issue.
fix is part of already released Version 1.2.1


[ZEPPELIN-997] Export data to csv

What is this PR for?
Add csv download from front-end leveraging #714
What type of PR is it?
Improvement
What is the Jira issue?
ZEPPELIN-997
Screenshots (if appropriate)
Before

After

Questions:

Does the licenses files need update? No
Is there breaking changes for older versions? No
Does this needs documentation? No

Could we use a separator between the button and the carret?
http://getbootstrap.com/components/#btn-dropdowns-split
Default download could be CSV

@corneadoug I just changed, please check and let me know your opinion.

Unrelated CI failure (timeout)
LGTM

@felixcheung Thanks for coming up with the issue, let me handle it in another PR. I created new issue for that.

LGTM

Merging in Master if there is no more discussions

if i can export more than  1000 rows

@qinzl1 It might be independent from the download button.
Queries are usually limited to 1000 rows (it is set in the interpreter's setting).
Can you check that?


Pipe: make exception message more friendly when creating pipe failed

Description
will print the warning message in sendHandshakeReq when handshake failed
now the message looks like this:


Remove old bootstrap templates

We don't support installing from gems anymore as a first-class citizen
Now that the bootstrap template supports regular Bourne shell (not bash), the AIX bootstrap is no longer necessary.

:+1: for what I think you mean. We support installing from gems, just not with knife bootstrap et al :P

Yeah, that's what I meant. :grin:

:+1:


UML-334 Added a new page and handler for your details on actor side

Coverage decreased (-0.2%) to 74.625% when pulling 57eddfc9464cf651c84edf71ce95a0b01eb0cb9e on UML-334-Your-Details-Page into 5a66564bec209edad680c2a2ee04688f7d64bd86 on master.

I've done a bit of a refactor on the test code for this. You can find those changes at UML-334-Your-Details-Page-test-refactor. I would recommend you take a look at them and then we can have a quick call about it.


runtime: remove concatstring{2,3,4,5}

Background
Functions runtime.concatstring{2,3,4,5} were added by commit: https://github.com/golang/go/commit/24699fb05c897dbaec3fe4f1d565c3c9da5078fc to avoid using C varargs (accordingly written in c).
After these functions have been replaced to Golang code by commit https://github.com/golang/go/commit/61dca94e107170d2ff3beb13bb9fa5ce49d8d6fd, functions only calls runtime.concatstrings() and that is it.
Proposal
Remove runtime.concatstring{2,3,4,5} and use only runtime.concatstrings(*tmpBuf, []string) string.
API changes
Nope
Benefits

The code is clearer.
Performance:

Benchmark code
package main

import "testing"

func concat2(a, b string) string {
	return a + b
}

func concat3(a, b, c string) string {
	return a + b + c
}

func concat4(a, b, c, d string) string {
	return a + b + c + d
}

func concat5(a, b, c, d, e string) string {
	return a + b + c + d + e
}

func concat6(a, b, c, d, e, f string) string {
	return a + b + c + d + e + f
}

var a = "foo"
var _b = "bar"
var c = "baz"
var d = "ipsum"
var e = "lorem"
var f = "dolor"

func BenchmarkConcat2(b *testing.B) {
	for i := 0; i < b.N; i++ {
		_ = concat2(a, _b)
	}
}

func BenchmarkConcat3(b *testing.B) {
	for i := 0; i < b.N; i++ {
		_ = concat3(a, _b, c)
	}
}

func BenchmarkConcat4(b *testing.B) {
	for i := 0; i < b.N; i++ {
		_ = concat4(a, _b, c, e)
	}
}

func BenchmarkConcat5(b *testing.B) {
	for i := 0; i < b.N; i++ {
		_ = concat5(a, _b, c, e, d)
	}
}

func BenchmarkConcat6(b *testing.B) {
	for i := 0; i < b.N; i++ {
		_ = concat6(a, _b, c, e, d, f)
	}
}

Result of benchmark
name        old time/op  new time/op  delta
Concat2-10  11.3ns ± 1%  10.6ns ± 0%  -6.37%  (p=0.000 n=18+17)
Concat3-10  14.3ns ± 0%  13.6ns ± 3%  -5.26%  (p=0.000 n=18+20)
Concat4-10  18.3ns ± 5%  17.7ns ± 3%  -3.17%  (p=0.000 n=18+20)
Concat5-10  21.1ns ± 1%  20.6ns ± 0%  -2.26%  (p=0.000 n=18+18)
Concat6-10  23.2ns ± 2%  23.3ns ± 0%    ~     (p=0.084 n=18+19)

The Concat6 must show same result, because changes doesn't affect.

Taking out of proposal process, no API changes.

See https://github.com/golang/go/issues/27801 though


delete this nix debug line

https://github.com/xc-jp/purescript-protobuf/blob/23d2537c239450aa670c53edb491d46cd18c4422/default.nix#L47

Done.


Game Theory Python

Solved issue #639
In Language- Python

[x] Updated README Link
[x] Added code with comments

Thanks for contributing!

Resolve conflicts

Done


Enabled a new DevKit build job and support use within pipeline configuration

Create a ci-jenkins-pipelines "Build DevKit" job to build gcc Linux based DevKits https://openjdk.org/groups/build/doc/building.html
These jobs will clone the required openjdk source containing the "make/devkit" make files, and then patch the Tools.gmk to enable building Centos7 based DevKit's required by Eclipse Adoptium to build Temurin.
DevKit jobs using this PR actively building DevKits for jdk21+ gcc 11.3.0 x64/aarch64/ppc64le linux : https://ci.adoptium.net/job/build-scripts/job/utils/job/devkit/job/gcc-11.3.0/
binutils-2.39.patch makefile patch required to enable building on Centos7

A few thoughts:

Is there a reason why the job name is e.g. x64Linux and not linux_x64 which is in the same as the other jobs in build?
Pulling this sort of things directly from jenkins jobs makes me a bit nervous - I'm not sure it's ideal to have jenkins jobs be the master location of anything so perhaps we could have some other way of storing them. I've always preferred the userContent directory on jenkins
Given that this is a large download I'd personally prefer if we could incorporate these into the playbooks for installation onto the machine. The exact versions would be tracked and checksums verified in the same way that we do for GCC at the moment.
How often are the devkits likely to change? Is the JDK version the best way to index them?

A few thoughts:
* Is there a reason why the job name is e.g. `x64Linux` and not `linux_x64` which is in the same as the other jobs in build?

* Pulling this sort of things directly from jenkins jobs makes me a bit nervous - I'm not sure it's ideal to have jenkins jobs be the master location of anything so perhaps we could have some other way of storing them. I've always preferred the `userContent` directory on jenkins

* Given that this is a large download I'd personally prefer if we could incorporate these into the playbooks for installation onto the machine. The exact versions would be tracked and checksums verified in the same way that we do for GCC at the moment.
  How often are the devkits likely to change? Is the JDK version the best way to index them?

I chose the arch to match the build configuration :-) but we can choose which ever..
So devkit make dependencies are defined in the make/devkit/Tools.gmk
which in theory could change between versions, or at any time! So this point is for debate, I suspect the reality is the jdk21u gcc11.3.0 won't change, and is currently built the same for jdk22 and jdk23, the latter have added gcc13.2.0.
The really important thing is for 3rd party "reproducible" builds a 3rd party can build the identical devkit.
So I think we could reasonably build by "gcc version" as opposed to jdk version, but on making that decision say for example building jdk23 with gcc11.3.0 i'd want to ensure the jdk32 Tools.gmk is identical to the jdk21u one...
We also need to come up with a precise "versioning" method, ie.some metadata within the tarball that states something like:
gcc version output = gcc 11.3.0 - Centos 7.9
devkit openjdk source = https://github.com/openjdk/jdk21u/commit/36b5ac46ed4cb450a17fc993d2b734c0a8e32bc0
devkit_identifier = linux_x64-gcc11.3.0-04-Mar-2024-001

Then in the ci-jenkins-pipeline configuration the devkit is specified by the devkit_identifier "gcc11.3.0-linux_x64-04-Mar-2024-001", and then verified with the /usr/local/devkit/gcc11.3.0 content to ensure validity?
The devkit version metadata is then stored in the SBOM...
I'd be happy to putting the devkit's in userContent, although if we are going to use ansible playbooks to set them up, then they just need to be where ever they need to get it from?
@sxa let me know your thoughts?, thanks

I chose the arch to match the build configuration :-) but we can choose which ever..

I think it's better if the jenkins job names are consistent so I'd go with that if possible. The other thing we could do is have the job as a multiconfiguration or pipeline job that builds all the platforms together, which would also keep the artifacts all in one job (so similar to the centos7_docker_image_creator or the old AdoptOpenJDK docker multiarch jobs.

So devkit make dependencies are defined in the make/devkit/Tools.gmk which in theory could change between versions, or at any time! So this point is for debate, I suspect the reality is the jdk21u gcc11.3.0 won't change, and is currently built the same for jdk22 and jdk23, the latter have added gcc13.2.0.

we could reasonably build by "gcc version" as opposed to jdk version, but on making that decision say for example building jdk23 with gcc11.3.0 i'd want to ensure the jdk32 Tools.gmk is identical to the jdk21u one... We also need to come up with a precise "versioning" method, ie.some metadata within the tarball that states something like:

Are we able to add in an identifier to the version string? (There's a separate question about "should we"?). At the moment we have Adoptium/SXA in many of the GCC builds - could we have Adoptium-b01/jdk21/sha or Adoptium-devkit21-sha to indicate which we built from, and have b01 be a parameter we could increment if we needed to rebuild with the same gcc level but some other changes? That could go into the resultant tarballs (I'd also suggest using xz to compress instead of gzip since that will save a pile of space).

The really important thing is for 3rd party "reproducible" builds a 3rd party can build the identical devkit.

Agreed.

gcc version output = gcc 11.3.0 - Centos 7.9
devkit openjdk source = https://github.com/openjdk/jdk21u/commit/36b5ac46ed4cb450a17fc993d2b734c0a8e32bc0
devkit_identifier = linux_x64-gcc11.3.0-04-Mar-2024-001

Is that particular devkit identifier somethign under our control or is that a standard format that pops out somewhere?

I'd be happy to putting the devkit's in userContent, although if we are going to use ansible playbooks to set them up, then they just need to be where ever they need to get it from?

I think I'd prefer that to jenkins jobs, just because it's a bit nicer if someone else wants to make use of our stuff to decouple it a bit from jenkins. Another option would be to have a devkit-binaries release repository and store them in there similar to what we do with temurin itself.

The other thing we could do is have the job as a multiconfiguration or pipeline job that builds all the platforms together, which would also keep the artifacts all in one job (so similar to the centos7_docker_image_creator or the old AdoptOpenJDK docker multiarch jobs.

yeah, I was toying with that, if the jobs typically always build green then doing that would probably be best

Are we able to add in an identifier to the version string? (There's a separate question about "should we"?). At the moment we have Adoptium/SXA in many of the GCC builds - could we have Adoptium-b01/jdk21/sha or Adoptium-devkit21-sha to indicate which we built from, and have b01 be a parameter we could increment if we needed to rebuild with the same gcc level but some other changes? That could go into the resultant tarballs (I'd also suggest using xz to compress instead of gzip since that will save a pile of space).

So no, as this makes the "devkit" non-reproducible, as this version info gets embedded in compiled obj/debuginfo, the devkit gcc -version is standard:
gcc (GCC) 11.3.0

gcc version output = gcc 11.3.0 - Centos 7.9
devkit openjdk source = https://github.com/openjdk/jdk21u/commit/36b5ac46ed4cb450a17fc993d2b734c0a8e32bc0
devkit_identifier = linux_x64-gcc11.3.0-04-Mar-2024-001

Is that particular devkit identifier somethign under our control or is that a standard format that pops out somewhere?

I've just made the above up! just as an indication of something we'd need, in essence to provide tracability and guarantee of what we're building with. So the devkit_identifier could be something relating to the "devkit build" it is from?

I think I'd prefer that to jenkins jobs, just because it's a bit nicer if someone else wants to make use of our stuff to decouple it a bit from jenkins. Another option would be to have a devkit-binaries release repository and store them in there similar to what we do with temurin itself.

"devkit-gccNN-binaries" could be a good option. We could publish them as tags like "gcc-11.3.0-<date>", which would also be the devkit_identifier and the ci-jenkins pipeline config would reference by that tag...?

@sxa For the initial cycle I think i'm going to go with downloading the devkit (from devkit-gccNN-binaries or whereever..). In a 2nd stage we can implement ansible caching in /usr/local/bin, and if not found there it would do the 1st stage download...

So no, as this makes the "devkit" non-reproducible, as this version info gets embedded in compiled obj/debuginfo, the devkit gcc -version is standard:

Unfortunate - it would be nice to be able to include something to indicate it was built from a devkit. So we can't have an identifiable build number in there.

"devkit-gccNN-binaries" could be a good option. We could publish them as tags like "gcc-11.3.0-", which would also be the devkit_identifier and the ci-jenkins pipeline config would reference by that tag...?

I'd just go with devkit-binaries (I can't see a good reason to create a new repo for each GCC version) and have release versions/tags for each devkit we build (including potentially the -b01 etc. number so we can have multiple builds if required (e.g. the devkit makefiles were updated but still used the same gcc) that show up in the release name and tar.xz filename but not in the binaries.
Does that sound reasonable? Any gotchas you can think of?

So no, as this makes the "devkit" non-reproducible, as this version info gets embedded in compiled obj/debuginfo, the devkit gcc -version is standard:

Unfortunate - it would be nice to be able to include something to indicate it was built from a devkit. So we can't have an identifiable build number in there.

"devkit-gccNN-binaries" could be a good option. We could publish them as tags like "gcc-11.3.0-", which would also be the devkit_identifier and the ci-jenkins pipeline config would reference by that tag...?

I'd just go with devkit-binaries (I can't see a good reason to create a new repo for each GCC version) and have release versions/tags for each devkit we build (including potentially the -b01 etc. number so we can have multiple builds if required (e.g. the devkit makefiles were updated but still used the same gcc) that show up in the release name and tar.xz filename but not in the binaries.
Does that sound reasonable? Any gotchas you can think of?

I think that sounds reasonable, i'll work through this and see how it looks, thanks

Added a new "publish_devkit_tool" : https://github.com/adoptium/devkit-binaries/releases/tag/gcc-11.3.0-Centos7.6.1810-b01

Added update to Tools.gmk to perform GPG verification on all the downloads.
MPFR cannot be gpg verified as Centos7 gpg 2.0.22 does not support the latest key format of the MPFR public gpg key. So a sha256 sum check is performed instead.

run tests

run tests

Looking at the previous sha256.txt file the filename in there has a workspace/ prefix which makes it more difficult to use sha256sum -c. Can we remove the workspace prefix when it's generated?
This is a similar issue to the one for the windows 32-bit JDK8 builds from https://github.com/adoptium/temurin-build/issues/3662

I feel the build dir changes might have been better in a separate PR for ease of review. I'm approving based on the fact I've run some of these jobs as part of the s390x testing and they appear to work :-) Some extra changes will be required for RHEL support but they will need to wait a bit pending some decisions on which environments to use Ref: adoptium/temurin-build#3700
One question: Shat were the reasons for changing the binutils patch to not use doc explcitly?
EDIT: I'm really thinking it would be preferable to have a top level directory inside the devkit tarballs

Thank you @sxa
binutils patch is a known binutils bug for Centos7 : https://sourceware.org/bugzilla/show_bug.cgi?id=29476
I think the devkit tarball structure I wanted to keep simple, without having to handle arch folder renaming/..


ci work

Pull Request Test Coverage Report for Build acf297ca8245046c69026f483c675248bef15f18-PR-33

0 of 0   changed or added relevant lines in 0 files are covered.
No unchanged relevant lines lost coverage.
Overall coverage remained the same at 89.607%

Totals

Change from base Build 8b6b6a0bea20a5bf4fdc8fe8d7b7d2f0ca59c4a1:
0.0%

Covered Lines:
173

Relevant Lines:
182

💛  - Coveralls


improve record rows info in log for check

Proposed changes
Issue Number: close #xxx

Further comments
If this is a relatively large or complex change, kick off the discussion at<EMAIL_ADDRESS>by explaining why you chose the solution you did and what alternatives you considered, etc...

run buildall

run buildall


how to document Path<> and Query with poem_openapi?

Hello,
How to add a description to the :id parameter with #[aoi] poem_openapi,
 #[oai(path = "/user/:id", method = "get")]
    async fn hello(&self, Path(id): Path<String>) -> PlainText<String> {
        PlainText(format!("userid = {}", id))
    }

like this:

and also for Url parameters (Query), http://xxxxxxxxxx/yyyy?param1=3 & param2=8784

it's okay, I found out how :
here's an example of what to do if someone wants to do the same thing :
const ID_EXAMPLE: fn() -> String = || "id code".to_owned();
#[oai(path = "/user/:id", method = "get")]
async fn hello(&self,
                      #[oai(name = "id", example = "ID_EXAMPLE")]
                      /// description here
                       Path(id): Path<String>
                       ) -> PlainText<String> {
    PlainText(format!("userid = {}", id))
}

example = "ID_EXAMPLE"
Why do we have to use double quotes when we're calling a function? "example =" won't accept an example in String format.
Poem is very feature-rich, and I'd like to congratulate you on a great piece of work, but unfortunately it lacks documentation and examples for this kind of scenario.

Why do we have to use double quotes when we're calling a function? "example =" won't accept an example in String format.

Because there could be many different types, not just strings.
like this:
https://serde.rs/field-attrs.html#default--path

Tried example = "ID_EXAMPLE") but it says that this option doesn't exist. So I take it that we cannot add examples as of now?

Just in case anyone else is making the same mistake as me, for documentation to work you need to use the Path, Query imported from poem_openapi::param not poem::web.


Apply a lifecycle event to Component

Hello,
I have been struggling to find a solution to the following. I would like to know when the application has returned to the resume state for a specific component so I have invoked the following in the components constructor.
The following works well though after the event has been invoked now when I navigate back to the home component the init() function is called every time the app resumes. Is there a way to only call the init() function when the application resumes for the "NewComponent"??
export class NewComponent {
    constructor(){
        applicationOn(resumeEvent, (args: ApplicationEventData) => {
            this.init();
        });
    }

  home() {
       //navigate to the home page and clear history
  }
}

Any help is appreciated!
Cheers

@jwall132 you could use the appropriate Angular lifecycle events instead of the application resume event

@jwall132 here is the article about the exposed application events and for accessing the native event as well. For the Angular based project, you can use the application events and also the Angular component's lifecycle hooks

I have been trying to implement an event as you have suggested though I don't understand how any of these can be used to detect when the application goes from the background to the foreground..

What method gets called when a component inside a dialog gets adjusted?


Implement mini-apparatus beneath edition

The mini-apparatus should only capture:

sic and corr
keep sic in text
put corr in apparatus
NOT reg and orig

from guidelines:
“Internal” apparatus: Spelling mistakes/phonetic spellings etc. in the text (marked as ΜΑΡΗΑΜΑΡΙΑ). The “sic” version will appear in the text, as normal. The “corr” version will appear beneath the text, in the form:

reg. ΜΑΡΙΑ

from guidelines:
“Internal” apparatus: Spelling mistakes/phonetic spellings etc. in the text (marked as ΜΑΡΗΑΜΑΡΙΑ). The “sic” version will appear in the text, as normal. The “corr” version will appear beneath the text, in the form:

reg. ΜΑΡΙΑ

from guidelines:
“Internal” apparatus: Spelling mistakes/phonetic spellings etc. in the text (marked as ΜΑΡΗΑΜΑΡΙΑ). The “sic” version will appear in the text, as normal. The “corr” version will appear beneath the text, in the form:

reg. ΜΑΡΙΑ

Gabby how the internal apparatus' process going? Did it sorted?

@gabrielbodard @emylonas
Dear Gabby and Elli,
Happy new year with health and prosperity!!
I would like to ask you if the internal apparatus' issue was sorted in order to start adding it in xml?

It's not implemented in EFES now (sorry!) but that's no reason to start tagging these details correctly in the EpiDoc. Do you have a question about how to tag something?

@gabrielbodard
So if I understand correctly, at this moment we can't proceed with the apparatus until this formula is sorted?

@gabrielbodard
Thank you very much Gabby for the clarification. I will make some examples and show them to you at Tuesday's zoom meeting.

First implementation of this issue at commit d141c9207ccdbec40dcc608ac14d25902c58f8a4

Closed and approved.


Databases should be listed alphabetically in Publish Database Project UI

Note: this seems to be happening only sporadically.  Low pri

seems to be fixed now.


wip: withdrawal

Currently seeing the transaction succeed but the funds don't seem to be sent to my address.

Does this affect the budget?

Does this affect the budget?

Yes the budget gets cleared out when the user completes the withdrawal.


Hal::setEntityExtractor dependency and EntityExtractor extractEntity method is marked private

I tried to add some custom logic to an EntityExtractor. First I thought of making a custom class implementing the Zend\Stdlib\Extractor\ExtractionInterface, but since the Hal::setEntityExtractor method is dependent on EntityExtractor I was unable to set my custom class. Would it not be enough to check for ExtractionInterface in the setter method?
Then when I moved to extending the existing ZF\Hal\Extractor\EntityExtractor class it turned out to be impossible to overwrite the extractEntity method since the method is marked private. Would it be possible to make it to a protected method so it becomes possible to redefine the method in my custom (extended) class.

This repository has been closed and moved to laminas-api-tools/api-tools-hal; a new issue has been opened at https://github.com/laminas-api-tools/api-tools-hal/issues/18.


[CPDLP-3094] Add POST declaration endpoint

Context
Ticket: https://dfedigital.atlassian.net/browse/CPDNPQ-000
We would like to add the POST participant declaration endpoint to NPQ separation.
Changes proposed in this pull request

Add new API endpoint for all API versions: POST api/v{1/2/3}/participant-declarations
The endpoint accepts the following request body:

{
  "data": {
    "type": "participant-declaration",
    "attributes": {
      "participant_id": "db3a7848-7308-4879-942a-c4a70ced400a",
      "declaration_type": "started",
      "declaration_date": "2021-05-31T02:21:32.000Z",
      "course_identifier": "npq-leading-teaching"
      "has_passed": true # only on completed requests
    }
  }
}

All validations and mapping are similar to ECF
Creation of outcomes can be ignored for now, however we’ll just validate the value of the has_passed field being passed in
Some fields are required on some requests but not others
no documentation in this ticket
no declaration attempt
align with creating declaration ticket on statement line attacher logic

Looking great 👍 just a few minor comments left


autorestic: 1.2.0 -> 1.3.0

Automatic update generated by nixpkgs-update tools. This update was made based on information from https://github.com/cupcakearmy/autorestic/releases.
meta.description for autorestic is: "High level CLI utility for restic"
meta.homepage for autorestic is: "https://github.com/cupcakearmy/autorestic"
meta.changelog for autorestic is: ""
Updates performed

Golang update

To inspect upstream changes

Release on GitHub

Compare changes on GitHub

Impact

Checks done (click to expand)

built on NixOS
The tests defined in passthru.tests, if any, passed
/nix/store/fxda7y81nv6qhqjc9nx6imqjb0cn1bvp-autorestic-1.3.0/bin/autorestic passed the binary check.
/nix/store/fxda7y81nv6qhqjc9nx6imqjb0cn1bvp-autorestic-1.3.0/bin/build passed the binary check.
1 of 2 passed binary check by having a zero exit code.
2 of 2 passed binary check by having the new version present in output.
found 1.3.0 with grep in /nix/store/fxda7y81nv6qhqjc9nx6imqjb0cn1bvp-autorestic-1.3.0
found 1.3.0 in filename of file in /nix/store/fxda7y81nv6qhqjc9nx6imqjb0cn1bvp-autorestic-1.3.0

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

4 total rebuild path(s)

1 package rebuild(s)

1 x86_64-linux rebuild(s)
1 i686-linux rebuild(s)
1 x86_64-darwin rebuild(s)
1 aarch64-linux rebuild(s)

First fifty rebuilds by attrpath
autorestic

Instructions to test this update (click to expand)

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

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

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

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

1 package built:

autorestic

Maintainer pings
cc @renesat @kalbasit for testing.

@kalbasit, OK. Everything works.


Fix 'SPC m b r' in go-mode.

This PR fixes a bug which caused 'SPC m b r' to fail in go mode.

Good catch, thanks!


Self contained devbox launcher

This allows the devbox to be used as a standalone application, without any heavy dependencies

Alright, looking forward to early test this! :)