[Go Live][April 01]

Docs Build status updates of commit 1d7d8c6:
:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

msteams-platform/assets/images/conversation-bot/add-app-teams.png
:white_check_mark:Succeeded
View

msteams-platform/assets/images/conversation-bot/add-client-secret.png
:white_check_mark:Succeeded
View

msteams-platform/assets/images/conversation-bot/api-permissions.png
:white_check_mark:Succeeded
View

msteams-platform/assets/images/conversation-bot/appsettings.png
:white_check_mark:Succeeded
View

msteams-platform/assets/images/conversation-bot/azure-bot.png
:white_check_mark:Succeeded
View

msteams-platform/assets/images/conversation-bot/bot.png
:white_check_mark:Succeeded
View

msteams-platform/assets/images/conversation-bot/channels-teams.png
:white_check_mark:Succeeded
View

msteams-platform/assets/images/conversation-bot/configure-teams.png
:white_check_mark:Succeeded
View

msteams-platform/assets/images/conversation-bot/create-azure-bot.png
:white_check_mark:Succeeded
View

msteams-platform/assets/images/conversation-bot/final-output.png
:white_check_mark:Succeeded
View

msteams-platform/assets/images/conversation-bot/go-to-resource.png
:white_check_mark:Succeeded
View

msteams-platform/assets/images/conversation-bot/manage-bot-label.png
:white_check_mark:Succeeded
View

msteams-platform/assets/images/conversation-bot/manifest.png
:white_check_mark:Succeeded
View

msteams-platform/assets/images/conversation-bot/mentionme-new.png
:white_check_mark:Succeeded
View

msteams-platform/assets/images/conversation-bot/message-all-members-new.png
:white_check_mark:Succeeded
View

msteams-platform/assets/images/conversation-bot/messaging-endpoint.png
:white_check_mark:Succeeded
View

msteams-platform/assets/images/conversation-bot/microsoft-app-id.png
:white_check_mark:Succeeded
View

msteams-platform/assets/images/conversation-bot/new-client-secret.png
:white_check_mark:Succeeded
View

msteams-platform/assets/images/conversation-bot/ngrok.png
:white_check_mark:Succeeded
View

msteams-platform/assets/images/conversation-bot/output.png
:white_check_mark:Succeeded
View

msteams-platform/assets/images/conversation-bot/repo.png
:white_check_mark:Succeeded
View

msteams-platform/assets/images/conversation-bot/review-create.png
:white_check_mark:Succeeded
View

msteams-platform/assets/images/conversation-bot/show-welcome-new.png
:white_check_mark:Succeeded
View

msteams-platform/assets/images/conversation-bot/suggestions.png
:white_check_mark:Succeeded
View

msteams-platform/assets/images/conversation-bot/teams-added.png
:white_check_mark:Succeeded
View

msteams-platform/assets/images/conversation-bot/teams-link-new.png
:white_check_mark:Succeeded
View

msteams-platform/assets/images/conversation-bot/teamsicon.png
:white_check_mark:Succeeded
View

msteams-platform/assets/images/conversation-bot/tenant-id.png
:white_check_mark:Succeeded
View

msteams-platform/assets/images/conversation-bot/terms-of-service.png
:white_check_mark:Succeeded
View

msteams-platform/assets/images/conversation-bot/upload-manifest.png
:white_check_mark:Succeeded
View

msteams-platform/assets/images/conversation-bot/url-tenantid.png
:white_check_mark:Succeeded
View

msteams-platform/assets/images/conversation-bot/validation-passed.png
:white_check_mark:Succeeded
View

msteams-platform/assets/images/conversation-bot/value.png
:white_check_mark:Succeeded
View

msteams-platform/assets/images/conversation-bot/visual-studio.png
:white_check_mark:Succeeded
View

msteams-platform/bots/how-to/conversations/channel-and-group-conversations.md
:white_check_mark:Succeeded
View

msteams-platform/concepts/design/activity-feed-notifications.md
:white_check_mark:Succeeded
View

msteams-platform/mstdd-landing.yml
:white_check_mark:Succeeded
View

msteams-platform/sbs-teams-conversation-bot.yml
:white_check_mark:Succeeded
View

msteams-platform/whats-new.md
:white_check_mark:Succeeded
View

For more details, please refer to the build report.
Note: Broken links written as relative paths are included in the above build report. For broken links written as absolute paths or external URLs, see the broken link report.
For any questions, please:Try searching the docs.microsoft.com contributor guidesPost your question in the Docs support channel


get_tx_info should properly handle alt_ac and alt_aln_method

If it doesn't match what we have data for (our build contigs and splign) we should return empty matching how UTA does it

Added unit test to ensure it throws error matching UTA behavior if contig not found


Fix sorting MIME children when their types are equal

Currently, if a message has two MIME children with the same content type, they will be added in their inverted order. In most cases, this won't matter, but for some e-mails (like X-ARF, which has two text/plain parts, one with human readable and one with YAML content), this is problematic.
This small fix ensures the original ordering is preserved when the typePrefs are identical.

Thanks for the fix. Can you add a test for that behavior?

Sure, I will add a test for it ASAP.

After adding my test, it turns out that this fix causes a regression for PHP 5.
The reason for this is the ordering of the first and second argument of usort being different in PHP 5 and PHP 7.
Given a simple proof of content:
<?php
$array = ['one', 'two'];

usort($array, function($a, $b) {
	echo 'A: '.$a.' - B: '.$b;
	return 0;
});

The output for PHP 5.6 is:
A: two - B: one

But for PHP 7.0, the ouput is:
A: one - B: two

In other words, you can't make any assumptions about $a and $b regarding their position in the source array.
Because of that, I rewrote the entire sorting function to not rely on usort anymore. This implementation groups the mime parts first, sorts those and then flattens the sorted groups. This is the only method I could think of which reliably works on all PHP versions.

Can you rebase? I've fixed Travis conf. Thanks

Thanks, I've rebased the branch and all tests are green now.

Thank you @HansAdema.


add batching to presigned url requests

Fixes #193
Overview
Switches the request structure during loading to employ batching to reduce http overhead.
Discussion
Requires the corresponding backend PR.
Testing
Cannot be fully tested until the aforementioned backend PR is merged.

:books: Documentation preview :books:: https://garden-ai--198.org.readthedocs.build/en/198/

As expected, mypy is not a fan of this structure. I leave it to the reviewer to decide whether or not that is important. (yes the tests will fail without making an exception, but is the behavior worth an exception?)

Codecov Report

Merging #198 (899d8f0) into main (b8deb54) will decrease coverage by 1.25%.
The diff coverage is 47.22%.

:exclamation: Your organization is not using the GitHub App Integration. As a result you may experience degraded service beginning May 15th. Please install the Github App Integration for your organization. Read more.
@@            Coverage Diff             @@
##             main     #198      +/-   ##
==========================================
- Coverage   80.30%   79.05%   -1.25%
==========================================
  Files          48       50       +2
  Lines        2910     3424     +514
==========================================
+ Hits         2337     2707     +370
- Misses        573      717     +144

Impacted Files
Coverage Δ

garden_ai/backend_client.py
43.66% <22.72%> (-3.22%)
:arrow_down:

garden_ai/client.py
71.42% <81.81%> (+2.53%)
:arrow_up:

tests/test_mlmodel.py
100.00% <100.00%> (ø)

... and 17 files with indirect coverage changes


Is there an event like preClose for web view?

I created an extension, it will create some web views, I wonder is there an event like preCloseWebView? Because I have to check the data in the web views is legal or not. The web view cannot be closed if any data is illegal.  Much appreciate if any help.

We provide UI support for editing property values in our web view extension - the extension knows if the data is not saved or not, but due to this issue we cannot warn the user if data will be lost by continuing to exit or close the web view

Additionally it would be nice to indicate changes in the same way as normal documents.

Just FYI to anyone else dealing with this, in case it helps, we spent the last few months making a solution where we save drafts of all the unsaved data in the webview - we have a complex extension, and it was a significant amounbt of work.  Users can see the draft status on each object individually and also edit / delete drafts for various objects.
This is a failsafe solution - in case the VS Code process is killed (or the power goes out etc), there is no chance for a "pre-close event".
When looking at VS Code's design, the editor takes this approach itself - whatever you are working on is always saved as a draft that is there the next time you start the editor, even if the editor is killed.  This is an intuitive approach and provides for the best UX -- however at the cost of implementation complexity.
We are not aware of any direct support in VS Code for this for extensions - for example, we had to determine the path for drafts based on platform-specific temporary directories.
I do not speak for the VS Code team in any way, shape, or form, however my best guess is that a "pre-close" event will not be implemented any time soon as it is not deterministic (ex cannot be delivered in case the process is killed or the power is lost etc), and the "automatic draft" approach provides a better UX (albeit at the cost of implemnentation complexity).

We closed this issue because we don't plan to address it in the foreseeable future. If you disagree and feel that this issue is crucial: we are happy to listen and to reconsider.
If you wonder what we are up to, please see our roadmap and issue reporting guidelines.
Thanks for your understanding, and happy coding!


Google Cloud TTS supported languages

Home Assistant release with the issue:

0.95.3
Last working Home Assistant release (if known):
Operating environment (Hass.io/Docker/Windows/etc.):

Docker
Component/platform:

https://www.home-assistant.io/components/google_cloud/
Description of problem:
Hungarian language ('hu-HU') is supported by Google Cloud, but not by the current Home Assistant platform.
Problem-relevant configuration.yaml entries and (fill out even if it seems unimportant):

Traceback (if applicable):

Additional information:

not according to the google cloud tts documentation
https://cloud.google.com/text-to-speech/docs/voices

Yes, the doc is outdated.
On the demo page you can select Hungarian, and I created my custom component of this Google Cloud TTS with adding 'hu-HU' to the language list, and it works.

If it works i suggest you submit a PR to add the the language to the built in integration


TinkerPop's Style Guide

I came across this project after thinking (again) about an automated way to format Gremlin. It was nice to see that someone else was thinking of the same thing. I so often see a big one-liner of Gremlin posted on StackOverflow like:
g.V().as_("v").repeat(identity().as_("src").bothE().as_("e").bothV().as_("v").where(neq("src")).simplePath()).emit().filter(project("x","y","z").by(select(first, "v")).by(select(last, "v")).by(select("v").count(local)).as_("triple").coalesce(select("x","y").as_("a").select("triples").unfold().as_("t").select("x","y").where(eq("a")).select("t"),store("triples")).select("z").as_("length").select("triple").select("z").where(eq("length"))).select('e').unfold().groupCount().next()

and I know I can't possibly read that until I paste it into a notepad and add some indents:
g.V().as_("v").
  repeat(identity().as_("src").
         bothE().as_("e").
         bothV().as_("v").
         where(neq("src")).
         simplePath()).
    emit().
  filter(project("x","y","z").
           by(select(first, "v")).
           by(select(last, "v")).
           by(select("v").count(local)).as_("triple").
         coalesce(select("x","y").as_("a").
                  select("triples").unfold().as_("t").
                  select("x","y").
                  where(eq("a")).
                  select("t"),
                  store("triples")).
         select("z").as_("length").
         select("triple").
         select("z").
         where(eq("length"))).
   select('e').
   unfold().
   groupCount()

gremlint looks like a nice start to getting Gremlin looking pretty and the name (and art) is very cool.  It appears as if you've been away from this project for a while but I do intend to promote it a bit to see if it might generate some interest in the TinkerPop community.
https://twitter.com/spmallette/status/1233386453234786305
All that said, I wanted to point out that TinkerPop does have a style guide for Gremlin which can be found in our Recipes. It would be really nice to see gremlint advance in that direction.

@OyvindSabo I've not I was just wondering if you still had interest in this project and what future plans you might have for it. Any thoughts?

Hey, @spmallette, I apologize for not getting back to you earlier. I do indeed have plans to continue working on it.
This has been at the back of my mind for the last months, and I've been working on gathering sample queries to write good test cases.
When I first wrote this, I had only been writing Gremlin every now and then for three or four months, doing really basic stuff, but since then Gremlin has become a natural part of my work life, and I use Gremlin for way more advanced stuff now, so I'm tempted to start over again with a blank sheet.
My opinion on what is good formatting has also changed considerably over the last year and a half (at the time of making this, I had not even read the style guide in Recipes).
For the next iteration I would like to make it more module-based, making it easier to turn on and off individual rules, and perhaps even suggest what might cause the query to fail (e.g. using in instead of __.in and so on). The current implementation is just a huge behemoth of a function which also does color formatting.
I would love for this to get more traction in the community, ideally getting the project to a state where we can have a continuous feedback loop with frequent improvements. Thanks for breathing new life to my inspiration:smiley:

That is all very nice to hear. Glad to see that you intend to continue here and hopefully some folks in the TinkerPop community could help contribute.

For the next iteration I would like to make it more modular, making it easier to turn on and off individual rules, and perhaps even suggest what might cause the query to fail (e.g. using in instead of __.in and so on).

More modularity in the code would be good and help new contributors add things in a way that don't create more tangles. I like the idea of having rules that could be flipped on/off but also those that are configurable in some way. You may or may not want to get into suggesting fixes to errors which is more the job of the development environment/compiler imo but it's an interesting idea.
I do think that you should consider language specific formatting. Would be nice to get sane formatting for .NET that is different than Java for example.
Looking forward a bit, personally, I would like to see a tighter association between gremlint and our official Apache project. I see gremlint as providing a living style guide which enforces the rules we'd like to see in all Gremlin written. That's much better than the TinkerPop "style guide" written up in the bottom of our Recipes as documentation.
I'd like to continue our discussions on all this as time goes forward. Would you like to continue using this GitHub issue or is there a better way to get in touch with you? Are you on Twitter somewhere perhaps?

Yes, Gremlint mirroring the best practices from the Apache project would be the goal.
I've never used Twitter, but maybe it's time I give it a try. For the time being I think this issue is a good place for further discussion.

@spmallette I released a new version of Gremlint yesterday. It's a complete rewrite which more properly parses queries to syntax trees, adds formatting information and then reprints them, taking into account a user-defined maximum line length, whether a step is a modulator, etc... Some work still remains, but I think it is already doing a better job reflecting the TinkerPop style guide. It also has a more modular architecture, which makes it easier to make iterative improvements. Lastly, I've also graduated from university now, which hopefully means I'll have more spare time to actively maintain the project.

excellent! i will have to take a look at how you restructured the code later today. Nice to hear that you plan to keep maintaining the project.
https://twitter.com/spmallette/status/1287706967138590722
I'll re-iterate the notion that I think it would be great for the TinkerPop Community if gremlint could become the official living style guide for Gremlin. Would you be willing to consider contributing the work to live at the Apache Software Foundation within the TinkerPop project where you could continue to work on it there? If so, I would be happy to bring up the idea within the TinkerPop community to see what the reaction is. If you're not ready yet and like things the way they are, no worries - I just think that there is considerable benefit to both gremlint and TinkerPop if they are more tightly bound together. Looking forward to hearing what you think!

Thanks for another shoutout! If you haven't found it yet, the code of interest is probably here, as well as the surrounding files. The rest is just UI code. I'll give the subject of letting the project live within the TinkerPop project some thought and get back to you:)

thanks for considering it. if there is anything you'd like to talk about privately or want to know more about why i think both projects would benefit, please feel free to email me directly:
<EMAIL_ADDRESS>

Another reason gremlint.com is so important is that groovysh, the basis for Gremlin Console, likes periods at ends of lines, but I tend to find that most Java developers prefer otherwise. If gremlint is able to convert easily between the two that saves a lot of time.
https://twitter.com/spmallette/status/1288074984817139713

When I first started using Gremlin, I also put the punctuation at the beginning of the lines, since that's what I was used to from Java and JavaScript, but switched after a while because it sometimes resulted in weirdly shaped queries which looked like they had these half-indentations, depending on how I let punctuation affect indentation.
Considering the following query (with a maximum line width of 40 characters):
g.V().
  hasLabel("person").
  group().
    by(values("name", "age").fold()).
  unfold().
  filter(
    select(values).
    count(local).
    is(gt(1)))

Should the punctuation come after the indentation, like this:
g.V()
  .hasLabel("person")
  .group()
    .by(values("name", "age").fold())
  .unfold()
  .filter(
    select(values)
    .count(local)
    .is(gt(1)))

or be part of the indentation, like this?:
g.V()
 .hasLabel("person")
 .group()
   .by(values("name", "age").fold())
 .unfold()
 .filter(
    select(values)
   .count(local)
   .is(gt(1)))

I don't think it will be much work adding a toggle for switching punctuation position, as long as I know where to place it.
I might send you an email, in which case it's<EMAIL_ADDRESS>


Generate Nexus and Steam readmes

It would be good if this could be generated automatically somehow.

Also be cool to link to the wiki page

Add links to the vendor wiki pages using th enew url property


flib: PWM output does not switch off completely at 0

Looks like an output configured for PWM newer goes down to exactly 0.
Steps to reproduce:
120 PB6 +pwm  ok. \ pwm output 120 HZ
100 PB6 pwm  ok.  \ about 1% duty-cycle as expected
10 PB6 pwm  ok.   \ about 0.1% duty-cycle as expected
0 PB6 pwm  ok.    \ about 0.1% duty-cycle - NOT expected

This workaround fixes this issue by completely disabling pwm at 0.
\ Make sure pwm is completly off at 0
: pwm ( u pin -- )
  over 0 = IF
    -pwm  \ disable pwm
    drop  \ drop output value
  ELSE
    \ enable pwm output on pin again
    dup dup p2cmp 4 * bit swap p2tim timer-base $20 + bis!
    pwm   \ set pwm output (duty cycle)
  THEN
;

There is no such issue on the upper end of the pwm output. 10000 sets the duty-cycle to exactly 100%.
Tested on a Blue Pill.

Thanks for the report and workaround. I suspect that this is due to the way PWM is implemented in the hardware: it always toggles when the timer wraps around, and then toggles back when the preset counter value matches. So the best it can do at the minimum setting is to toggle very quickly, i.e. on and immediately off again - which produces an undesirable brief pulse.

Ahh… thanks for the clarification. So It's a limit on the hardware, not an issue in flib.
Most use-cases will never notice this 0.1% duty-cycle but it's an issue for me right now. I think we should add a note to the documentation and close this issue?


Status text change to a link when opening object and became unreadable

Environment

Nautobot version (Docker tag too if applicable): 2.0.0b2
Python version:3.10.9
Database platform, version:
Middleware(s):

Steps to Reproduce
Thia affects Nautobot 2.0.0b2 it does not happen in 1.5.19.

In GUI open list of prefixes (IPAM > Prefixes) or IP addresses (IPAM > IP Addresses).
Statuses are displayed as white text in colorful frame
Open any prefix/IP and the Stats text became a link which makes it very hard to read when the frame color is darker (red

list view:

object view:

When opening a specific object, the status should be still a white text.

When opening a specific object, the status became a link (blue color) and become unreadable.

Hi @martin-networker thanks for the report!
I have confirmed that this is not just unique to IPAddress or Prefix objects, but any object that has a status field. In list view, the style is correct, in detail view it is now.
It is merely a side effect of the fact that in list (table) view, the status field does not link to the status object, whereas in detail view it does.
A simple fix to the CSS for status fields that are linked should do the trick to address this. Specifically in templates this is a result of the hyperlinked_object template filter defined in nautobot/core/templatetags/helpers.py. See:
https://github.com/nautobot/nautobot/blob/next/nautobot/core/templatetags/helpers.py#L703-L708


config.py unable to access environment variables

class Config:
    ...
    MAIL_USERNAME = os.environ.get('MAIL_USERNAME')
    MAIL_PASSWORD = os.environ.get('MAIL_PASSWORD')
    ...

MAIL_USERNAME and MAIL_PASSWORD always receive None. I am using Windows and I have set the environment variables correctly. All other scripts can read these environment variables but Config.py unable to do so.
What could be issue ?

print os.environ to debug this issue. I'm not sure I can help you, config.py is not special in any way, it should see the environment.


Ecommerce: Discuss cache crawling speeds and cache update speeds

Of particular importance to ecom partners are caching speeds for large numbers of pages (10ks - 100ks - 1MMs) and update speeds. I notice that ampbyexample does discuss caching (https://ampbyexample.com/advanced/using_the_google_amp_cache/) so this would be a relevant to discuss in depth.

I think this subject is very important and the best place to document it would be a post into ampproject.org. I think AMPByExample should focus more on samples than documenting, @sebastianbenz WDYT?

This is specific to google infrastructure, so documenting it on ampproject.org (which is about AMP the open source project) would be the wrong place. On ampbyexample we have a slightly different approach as we also provide samples highlighting different platforms (Google and others).
The Google AMP cache and Update Ping docs discuss update behavior quite well so I don't see an imminent need here.
What information are you interested in regarding caching speeds?

I understand that this is specific to Google infrastructure, but I don't think that is clear to someone approaching AMP for the first time. An hint to that would be useful in the official AMP documentation website ampproject.org.

As Chiara says, it is relevant / useful. I felt comfortable suggesting it here because ampbyexample already has some discussion of the cache (and Lisa asked for suggestions here).
I'll ping you the internal thread.


Support recursive queries for list rows

Implements traversal into subfolders of document libraries.

Ping?

I'm no longer using this package. Closing.


bugfix: resolved loading issue when attempting to start a world twice

looks like gestalt loads a whole new environment so any assets from one session are not compatible for another session. there are two main things I do, I wipe all the prefabs and let the engine re-resolve them when the world loads and unload any assets that are not loaded in by core.

 Second World Start Bug

I tested this out and it definitely is not crashing anymore, neither when loading nor when starting a second or third world! :tada:
However... I saw the following, so I assume we're still not cleaning up everything properly?

I was in my LaS workspace (because testing some other things before) and did the following:

Start a new LaS world
Load an older LaS world
Start a new Core Gameplay world

this only broke after the tinting was added I'm sure its a couple line fix but I thought it was out of the scope of this change. @jdrueckert I was planning on looking at this separately.


Added e2e test for post.unpublished webhook

Added e2e test for post.unpublished webhook
Ref - #15537

Hi @Nekros1712 thank you so much for working on this PR. It has now been merged 🎉 and will appear in today's release.
I'm not sure if you found this through hacktoberfest, but I've added the hacktoberfest-accepted label to this PR to make sure it counts. We have plenty of open issues and ongoing projects for hacktoberfest and beyond. We would love to see you around again 👋


Build issues

Hi there. Great app!
We're getting compile issues when trying to publish the app. Looks like main.component.html references loadUsers, but that member doesn't exist on the MainComponent class. You can see the errors by running eca build from the command line in your project directory.
Can you check that and publish a new version? Alternatively, we can submit a pull request with the change.
Thanks!

Hi @jweisman
Thanks for looking into this! I resolved the build issue and created a new release v1.0.1.
Best regards
Jonas

Great- thanks @d22 . The app was successfully published and is available in Alma.


New API suggestion

@Urigo @kamilkisiela @eitanfr @tomermoshe @darkbasic
Current Implementation
So today most of the apps that using apollo-angular do it in one of the following ways (better to worst)

Create a Service that required Apollo and exposes a function that use the Apollo instance to fetch the data. Then create a Component and inject the service and call it. The service serves the component only, and does not do the work for other components (this way it's easier to move and reuse the component).
Same as one, but share a service between multiple components.
Inject Apollo directly into the Component, and use it inside the Component's code.

New API using DI
I would like to suggest a new API, that is similar to option number 1 but uses Angular DI, remove the need for the Service, and helps to create a better best-practice by avoiding option number 2.
The idea is to take the GraphQL Query and create for it an InjectionToken, the use the InjectionToken and the query itself to create a Provider.
The Provider is created and injected during the creation of the module, and we use the InjectionToken with @Inject in the Component.
Example
This is an example for the usage:
graphql is the functions that takes a query and creates InjectionToken
provideGraphql is the functions that takes a query and InjectionToken, and creates the Provider
// users.query.ts
import gql from 'graphql-tag';
import { graphql, provideGraphql } from 'apollo-angular';

const usersQuery = gql(`
    query users {
         users {
               id
               name
          }
    }
`);

export const UsersQuery = graphql(machineListQuery); // this is the token
export const UsersQueryProvider = provideGraphql(UsersQuery, machineListQuery); // provider

// my-modules.ts
@NgModule({
    imports: [ ... ],
    declarations: [ ... ],
    providers: [ UsersQueryProvider ] // import here
})
class MyApp {

}

Then, in the Component that needs to use the users query:
// users-list-component.ts
import { GraphQL } from 'apollo-angular';

interface UsersResponse { // even better if generated
    users: { name: string, id: string }[];
}

@Component({ ... })
class MyComponent implemented NgOnInit {
     constructor(@Inject(UsersQuery) users: GraphQL<UsersResponse>) {}

     ngOnInit() {
           this.users.query({}); // you can pass variables here
     }
}

So now the Component injects the GraphQL Query directly and there is no need to create a service.
Extensions
Also, I thought that we can implement a mechanism for doing transformations over the response, and decouple it from the implementation of the Component. Something like that:
export const UsersQueryProvider = provideGraphql(UsersQuery, machineListQuery, {
    transform: obs => {
          return obs.map(response => response.data.users);
    },
});

Implementation
I already created a very basic implementation and tested it on an existing app.
import { InjectionToken } from '@angular/core';
import { Apollo, QueryRef } from 'apollo-angular';
import { getOperationName } from 'apollo-utilities';
import { FetchResult } from 'apollo-link';
import { Observable } from 'rxjs';

export interface GraphQL<ResultType = any, VariablesType = any> {
  query(variables: VariablesType): QueryRef<ResultType>;
  mutate(variables: VariablesType): Observable<FetchResult<ResultType>>;
}

export function provideGraphQL<ResultType = any, VariablesType = any>(token: InjectionToken<any>, document: any) {
  return {
    provide: token,
    useFactory(apollo: Apollo): GraphQL<ResultType, VariablesType> {
      return {
        query(variables: any = {}): QueryRef<ResultType> {
          return apollo.watchQuery({
            query: document,
            variables,
          });
        },
        mutate(variables: any = {}): Observable<FetchResult<ResultType>> {
          return apollo.mutate({
            mutation: document,
            variables,
          });
        },
      };
    },
    deps: [Apollo],
  };
}

export function graphql(document: any) {
  return new InjectionToken(getOperationName(document));
}

Issues so far
When dealing with Angular code and AOT on the same file, and trying to defined the GraphQL query and the token creation on the same file, the AOT compiler throws this exception, the workaround for this is to use gql(...) (as function, not as ES2016 tag).
What do you think?

Just wanted to add that we're not using it like you said. There are no services and the components define their own GQL data requirements. I think when you use services then you encourage query re-use and over-fetching until you're back to REST.
Below is how we do 2x components: MessageList with Messages:
message.graphql.ts
import { DocumentNode } from 'graphql';
import gql from 'graphql-tag';

export interface MessageFragment {
  id: string;
  body: string;
  createdAt: string;
  user: {
    id: string;
    name: string;
  };
}

export const fragment: DocumentNode = gql`
  fragment Message on Message {
    id
    body
    createdAt
    user {
      id
      name
    }
  }
`;

message.component.html:
{{ message.user.name }} {{ message.createdAt }}

{{ message.body }}

message.component.ts:
import { MessageFragment } from './message.graphql.ts';

@Component({
  selector: 'xc-message',
  templateUrl: './message.component.html',
})
export class MessageComponent {
  @Input() message: MessageFragment;
}

Then a data fetching component which uses the fragment:
message-list.graphql.ts:
import { fragment, MessageFragment } from '../message/message.graphql';

export interface MessageList {
  messages: {
    pageInfo {
      hasPreviousPage: boolean;
      endCursor: string;
    };
    edges: [{
      node: MessageFragment;
    }];
  };
}

export const query: DocumentNode = gql`
  query MessageList {
    messages {
      pageInfo {
        hasPreviousPage
        endCursor
      }
      edges {
        node {
          ...Message
        }
      }
    }
  }

  ${MessageFragment}
`;

message-list.component.ts:
import { query } from './message-list.graphql.ts';

@Component({
  selector: 'xc-message-list',
  templateUrl: './message-list.component.html',
})
export class MessageListComponent implements OnInit {

  private messagesQuery = this.apollo.watchQuery<MessageList>({ query });

  messages$: Observable<any> = this.messagesQuery.valueChanges.pipe(
    map(({ data }) => data.messages.edges.map(edge => edge.node)),
  );

  constructor(private apollo: Apollo) {}
}

message-list.component.html:
<xc-message [message]="message" *ngFor="let message of messages$ | async"></xc-message>

This is basically use case 3, isn't it?

Basically, I think it is; but also, I think think it is the best way of using Graphql.
Still, I really like what your proposal. IMHO, best case scenario would be to have both (or even more) ways of querying; though I would not like it to be the default, nor do I think it should be bundled with angular-apollo. I would really like it to be a fully independent and optional additional package.

We released something similar in v1.2.0.
Here's a blogpost about it:
https://medium.com/the-guild/apollo-angular-code-generation-7903da1f8559
And a video to show it in action:
https://www.youtube.com/watch?v=KGBPODrjtKA


[improve][broker] PIP-192: Implement broker version filter for new load manager

Motivation
We will start raising PRs to implement PIP-192, https://github.com/apache/pulsar/issues/16691
Modifications
This PR Added BrokerVersionFilter to the load balancer extensions and its unit test.
For the pip-192 project, this BrokerVersionFilter

Copy of the existing broker version filter, org.apache.pulsar.broker.loadbalance.impl.BrokerVersionFilter.
Change the interface base on https://github.com/apache/pulsar/pull/18810#discussion_r1053937530

Documentation

[ ] doc
[ ] doc-required
[x] doc-not-needed
[ ] doc-complete

Matching PR in forked repository
PR in forked repository: https://github.com/Demogorgon314/pulsar/pull/9

/pulsarbot run-failure-checks

Codecov Report

Merging #19023 (a40e190) into master (b36e012) will decrease coverage by 10.46%.
The diff coverage is n/a.

@@              Coverage Diff              @@
##             master   #19023       +/-   ##
=============================================
- Coverage     47.74%   37.27%   -10.47%
+ Complexity    10623     1990     -8633
=============================================
  Files           703      209      -494
  Lines         68828    14452    -54376
  Branches       7381     1577     -5804
=============================================
- Hits          32861     5387    -27474
+ Misses        32307     8479    -23828
+ Partials       3660      586     -3074

Flag
Coverage Δ

unittests
37.27% <ø> (-10.47%)
:arrow_down:

Flags with carried forward coverage won't be shown. Click here to find out more.

Impacted Files
Coverage Δ

...he/pulsar/client/impl/PartitionedProducerImpl.java
30.34% <0.00%> (-5.13%)
:arrow_down:

.../apache/pulsar/client/impl/BatchMessageIdImpl.java
67.50% <0.00%> (-4.73%)
:arrow_down:

.../pulsar/client/impl/BatchMessageContainerImpl.java
55.95% <0.00%> (-1.02%)
:arrow_down:

...va/org/apache/pulsar/client/impl/ProducerImpl.java
16.25% <0.00%> (-0.75%)
:arrow_down:

.../pulsar/client/impl/ProducerStatsRecorderImpl.java
84.04% <0.00%> (-0.62%)
:arrow_down:

...va/org/apache/pulsar/client/impl/ConsumerBase.java
21.51% <0.00%> (-0.42%)
:arrow_down:

...he/pulsar/client/impl/MultiTopicsConsumerImpl.java
22.80% <0.00%> (-0.07%)
:arrow_down:

...va/org/apache/pulsar/client/impl/ConsumerImpl.java
15.06% <0.00%> (-0.06%)
:arrow_down:

.../java/org/apache/pulsar/client/impl/ClientCnx.java
29.97% <0.00%> (ø)

...ache/pulsar/client/impl/ZeroQueueConsumerImpl.java
0.00% <0.00%> (ø)

... and 503 more


--exec broken on 0.20.4

It seems like 0.20.4 broke the --exec feature.
On 0.20.4:
$ GRANTED_QUIET=true FORCE_NO_ALIAS=true assumego ReadOnlyPlus --exec 'aws ec2 describe-fleets'
GrantedExec ASIAXXXXXXXXXXXXXXXX [redacted secret key] None us-east-1 None false None None None None aws ec2describe-fleets

On 0.20.3:
$ GRANTED_QUIET=true FORCE_NO_ALIAS=true assumego ReadOnlyPlus --exec 'aws ec2 describe-fleets'
{
    "Fleets": []
}

It seems like maybe this was intentional after all, with the idea that one would be using the wrapped assume alias, but that isn't working for me here either. I get no output. Credentials are acquired but it does not seem to be executing anything.
$ assume lab-1/ReadOnlyPlus --exec -- aws s3 get-caller-identity
[✔] [lab-1/ReadOnlyPlus](us-east-1) session credentials will expire in 12 hours
$

My mistake, I had mismatched versions of assume in my path between 0.20.3 and 0.20.4. The original behavior is still unexpected to me, but I guess it's intended that we use --exec only with the assume wrapper script. Closing, thanks.


Provide direct access to modules exposed by plugins

Related to RHCLOUD-21494
This PR adds PluginStore.getExposedModule method which can be used to access specific module exposed by a plugin.

/lgtm


Shraddhavp-Blog-post

Please make sure to check the following boxes creating your pull request, thank you very much!

[ ] Add Blog Header, including title, author, image, categories, tags, etc.
For example:
---
title: Your Great Blog Title
author: your_github_id
categories: project
tags:
  - python
  - padlocal
image: /assets/2021/02-your-blog-slug/teaser.jpg
---

One line bio

Your blog post content Your blog post content
Your blog post content Your blog post content
Your blog post content Your blog post content

It will be easier to start drafting your post by using a existing post file as your template, for example, this one

[ ] Keep all filenames lowercase, and use - to connect words instead of space. e.g. 2017-10-06-wechat-pc-impactor.md instead of 2017-10-06-WeChat PC Impactor.md

[ ] Embed video/pdf from YouTube/Bilibili/local (if there's any) by using {% include iframe.html src="URL_or_PATH" %}. (Learn more about how to embed file/url in the post by reading this blog post

[ ] Save photo to local before publishing, to a folder named by ${MONTH}-${YOUR_BLOG_SLUG}/ under /assets/2021/ directory.

[ ] Select a beautiful and meaningful teaser image for your blog

[ ] Create your contributor profile (if you are a first time contributor)
For excample:

jekyll/_contributors/lijiarui.md

---
name: Jiarui LI (李佳芮)
site: https://lijiarui.github.io
bio: 句子互动创始人 & CEO，微软人工智能最具价值专家 (AI MVP)
avatar: /jekyll/assets/contributors/lijiarui/avatar.png
email<EMAIL_ADDRESS>twitter: https://weibo.com/u/2175505900
---

Here is the example file:

lijiarui.md: https://github.com/wechaty/wechaty.js.org/blob/master/jekyll/_contributors/lijiarui.md
It will shown like this on wechaty website: https://wechaty.js.org/contributors/lijiarui/

To learn more about the contribute guideline, visit: https://wechaty.js.org/docs/contributor-program/

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

Hi, @shraddhavp
Please make sure the CI turns green by fixing all the issues showed by the GitHub Actions : )
You may try running tests locally on your pc before pushing your changes on Github.
To run tests locally use npm test

Hi, @shraddhavp
Please make sure the CI turns green by fixing all the issues showed by the GitHub Actions : )
You may try running tests locally on your pc before pushing your changes on Github.
To run tests locally use npm test

Yes tried still it shows the same @Rohitesh-Kumar-Jain

Hi, @shraddhavp
Please make sure the CI turns green by fixing all the issues showed by the GitHub Actions : )
You may try running tests locally on your pc before pushing your changes on Github.
To run tests locally use npm test

Yes tried still it shows the same @Rohitesh-Kumar-Jain

You need to fix issues pointed by tests, for e.g. one of the issues pointed in your test
MD018/no-missing-space-atx No space after hash on atx style heading [Context: "##Project summary"]
might be simply fixed by editing ##Project summary to ## Project summary
you may fix the remaining issues in a similar manner : )


Realm crash when accessing PersistableEnum

How frequently does the bug occur?
Sometimes
Description
We are seeing a huge uptick in crashes by our users. We are currently unable to replicate the issue.
0  Riverside                      0x16d96b0 protocol witness for static _Persistable._rlmGetProperty(_:_:) in conformance StudioRecordingSet.RecordingType + 2552184
1  Riverside                      0x16d9600 protocol witness for static _Persistable._rlmGetProperty(_:_:) in conformance StudioRecordingSet.RecordingInputType + 2552008

The very strange thing is that in the crashing func I see the call to get one of the @Persisted public var that is crashing (recordingInputType) but not to the other one (recordingType)
This is how they are defined, and the crashing func
    public enum RecordingType: String, PersistableEnum {
        case studioRecording
        case testRecording
    }
    public enum RecordingInputType: String, PersistableEnum {
        case screen
        case cameraAndMicrophone

        public var streamInputType: ParticipantInputType {
            switch self {
            case .screen: return .screen
            case .cameraAndMicrophone: return .camera
            }
        }
    }

    @Persisted public var recordingType: RecordingType = .studioRecording
    @Persisted public var recordingInputType: RecordingInputType = .cameraAndMicrophone

    public var archiveId: String { <--- here is the crash
        // editor team expects the screenshare recordings to have a specific prefix
        let prefix = self.recordingInputType == .screen ? "screenshare_" : ""
        return "\(prefix)\(self.cleanParticipantName)-\(self.archiveNumber)"
    }

Stacktrace & log output
0  Riverside                      0x16d96b0 protocol witness for static _Persistable._rlmGetProperty(_:_:) in conformance StudioRecordingSet.RecordingType + 2552184
1  Riverside                      0x16d9600 protocol witness for static _Persistable._rlmGetProperty(_:_:) in conformance StudioRecordingSet.RecordingInputType + 2552008
2  RealmSwift                     0x6090c $s10RealmSwift9PersistedV3getyxSo13RLMObjectBaseCF + 720
3  RealmSwift                     0x60614 $s10RealmSwift9PersistedV18_enclosingInstance7wrapped7storagexqd___s24ReferenceWritableKeyPathCyqd__xGAHyqd__ACyxGGtcSo13RLMObjectBaseCRbd__luigZ + 104
4  Riverside                      0x16dd7e4 StudioRecordingSet.archiveId.getter + 111 (StudioRecordingSet.swift:111)
5  Riverside                      0x16e3c7c StudioRecordingSet._getBaseRecordingObject() + 476 (StudioRecordingSet.swift:476)
6  Riverside                      0x16e4508 StudioRecordingSet.getUpdateRecordingObject() + 429 (StudioRecordingSet.swift:429)
7  Riverside                      0x16ebcd0 StudioRecordingsManager._handleRecordingEnded(_:log:) + 128 (StudioRecordingsManager.swift:128)
8  Riverside                      0x16eb488 StudioRecordingsManager._updateRecordingsOnServerDB() + 90 (StudioRecordingsManager.swift:90)
9  Riverside                      0x16ea740 closure #1 in StudioRecordingsManager._startUpdaterTimer() + 63 (StudioRecordingsManager.swift:63)
10 Riverside                      0x26c8e4 thunk for @escaping @callee_guaranteed () -> () +<PHONE_NUMBER> (<compiler-generated>:4302997732)
11 libdispatch.dylib              0x3fdc _dispatch_client_callout + 20
12 libdispatch.dylib              0x746c _dispatch_continuation_pop + 504
13 libdispatch.dylib              0x1aa58 _dispatch_source_invoke + 1588
14 libdispatch.dylib              0x15a6c _dispatch_root_queue_drain + 396
15 libdispatch.dylib              0x16284 _dispatch_worker_thread2 + 164
16 libsystem_pthread.dylib        0xdbc _pthread_wqthread + 228
17 libsystem_pthread.dylib        0xb98 start_wqthread + 8

Can you reproduce the bug?
No
Reproduction Steps
The crash is happening a lot for our users.
Version
Realm (10.45.3) RealmSwift (10.45.3)
What Atlas Services are you using?
Local Database only
Are you using encryption?
No
Platform OS and version(s)
iOS (16.2, 17.4.1, 17.5.1)
Build environment
Xcode version: 15.2
Dependency manager and version: Cocoapods

Can you include what the enum models look like for additional clarity?

Can you include what the enum models look like for additional clarity?

@Jaycyn Sure NP, added to the description

Is it possible that in the database you have a value that is not part of the possible enum values?

No, there is no option like that.
These values are given in the init function of the Object

The value stored in the database is a raw string, so even if you supply the enum value in the init function of the object, there can be a number of ways where the value on disk can be something other than what's allowed by the enum - for example, if the enum property was introduced after a migration, but existing objects were not backfilled with one of the valid values. Or if the enum cases were renamed without migrating the data on disk. Not saying this is necessarily what's happening, just making sure those cases are considered.
If you're able to get access to the Realm file from one of your crashing users or capture trace level logs from a crashing run, that should give us some clue as to what's happening.

I'll try to look for this, haven't managed to find one yet.
One question, why would realm crash trace show error on the recordingType value, where the crashing line does not use that property (it is using recordingInputType and not recordingType)?
The crash trace shows both of the values, why would that happen?

Yeah, that's weird but I have no theory as to why both appear in the stacktrace. @dianaafanador3 perhaps you can see something I'm not?

@nirinchev found something, but I'm not sure it has anything to do with this
the property @Persisted public var recordingInputType: RecordingInputType = .cameraAndMicrophone was introduced recently, And I see that I do not have a migration specifically to add it to existing models, can this be an issue?
*I'm under the impression that If I give a default value and increase the realm file's version the automatic migration will take case of it

The default value only applies when creating new objects and will not go ahead and update existing objects, so they'll have the intrinsic default for the datatype which is an empty string in the case of an enum. Since that won't match any of the enum values you have defined and the enum property is not optional, you would get an exception trying to parse the string into the enum.

Interesting, this contradicts the documentation that adding a property is automatically managed by the auto-migration (as long as the file version is increased)

In the Automatically Update Schema section of the docs, there's a warning box that states:

Realm does not automatically set values for new required properties. You must use a migration block to set default values for new required properties. For new optional properties, existing records can have null values. This means you don't need a migration block when adding optional properties.

I can see that the wording can be improved to clarify that the automatic handling will just assign the intrinsic defaults, even if you have an explicit default set in your model. Let me know if you have other suggestions for how we can make this more clear and I'll relay those to the docs team.

Yeah, maybe a more explicit example would be helpful (although when reading this with the current case we have, it is quite understandable, but maybe for new adopters)
Anyway looks like this is the reason of the issue.
Thank you so much for your help! I'll close this ticket


KKnights.java

Program for K Knights problem in java

@py3-coder I've read the Readme.md file for java and did what was asked. I hope this would count for Hacktoberfest 2022 PR. Kindly merge it soon as possible from your side. Thankyou


bug(mat-table): Opening material table breaks previous styles on table

Is this a regression?

[X] Yes, this behavior used to work in the previous version

The previous version in which this bug was not present was
version 14
Description
I've updated my angular project from version 14 to 17 and tried to sort out problems that followed.
I can't figure out why my table styles breaks every time I open material table in my app.
Mat-mdc-row is always defaultin to 52px, even if I have set it to something else.
Reproduction
StackBlitz link: https://stackblitz-starters-zegkxu.stackblitz.io (https://stackblitz.com/edit/stackblitz-starters-zegkxu)
Steps to reproduce:

Click row on table
New dialog with mat table should open and underlying tables row heigth changes.

Expected Behavior
Height should not be affected.
Actual Behavior
Height is changed to default (52px).
Environment

Angular: 17
CDK/Material: 17

Here's the same code with version 14
https://stackblitz.com/edit/ngx-14-title-demo-u13zvk

Custom css overrides like this is not supported. It would be infeasible to not change underlying dom & css of these components while continuing to make progress on the library & keeping up with the material design spec


Configuration has an unknown property 'resolveTypeReferenceDirectiveModule'.

The first, pls create migration to new versions files, because im trying to update from 4 to 6, for example and cant find any help to that.
And for now, i cant understand how to change my highlighted options to new 6.5.0 version.

I can't figure out where the parameters disappeared to after v 4. Would be thankful for every help!

Yarn PnP is supported OOTB starting from 5.0.0 - you don't need these options anymore :)


[AJ-1296] Rename data to workspace-data

Still working on organizing UI code for the Data tab...
This moves src/data to src/workspace-data and updates import paths accordingly.
Apologies for the churn here. I originally named the folder "data" after the "Data" tab, but got feedback that that name was too generic given how many other "data" related things there are in Terra.

Rebased to resolve merge conflict.

A tedious find/replace.
Though now that you mention, VS Code can update imports if you move files from within VS Code.
https://code.visualstudio.com/docs/typescript/typescript-refactoring#_update-imports-on-file-move


remove direct openmm import

At the moment, I cannot import openmm-dlext properly with openmm version 7.5.
The import openmm statement fails, since you import simtk.
Modifying the line, I highlight here, fixes the import, but I can't run openmm anywhere right now, so. not sure if that works.
Locally on my machine i get a segfault, might be related, might not be.

If we dump support for OpenMM 7.5.X we can close this.

Superseeded by #29


reForkOptions should include envVars.

Fixes #63. Also adds SBT-scripted to test the change (LMK if you'd rather not include it).

Any update on this?

@jrudolph I'd completely forgotten about this, but I'm happy to bring it up-to-date if you want it. Let me know!

@danxmoran thanks for tackling this and adding scripted infrastructure. It works as advertised..


Result Scores are not accurate

I've noticed that the number  produced by my playwright-lighthouse is not 100% accurate, especially the performance citera.
Result I Got
performance record is 44 and desired threshold was 0
accessibility record is 80 and desired threshold was 50
best-practices record is 95 and desired threshold was 50
seo record is 100 and desired threshold was 50
Acual Results By LightHouse
performance record is 59
accessibility record is 82
best-practices record is 92
seo record is 93
OS -  Microsoft Windows 10 Pro  10.0.19045(19045)
Node Version   - 20.10.0

@tuansheran could you mention the lighthouse versions you are using in both the cases?

@tuansheran the results are affected by environment:

OS affects accessibility
server you use to host your files affects seo
lighthouse version difference, even patch one, might affect anything

in addition, the performance score would vary greatly depending on your environment and current performance capabilities of your machine.


Update filter logic to work with Webcharts v1.11.4.

update All filter logic in case All appears in the data
https://github.com/RhoInc/Webcharts/issues/236
Test Notes

Download the CAT data, add an "All" value in the "Status" column and upload the updated file.
Select the top "All" option from the Subject Status dropdown and verify that all chart data is displayed.
Select the second "All" option and verify that only a subset is displayed.

Tested in Webcharts

@samussiah said this can be skipped


Integrate Ornament into Astro build process for web-ui pages

We need to make many reusable web components available to surveilr web-ui SQLPage pages. Use Ornament web component infrastructure.

[ ] Create components in src/web-components.
[ ] Update astro.config.mjs to include Vite build config that automatically bundles all components in src/web-components.
[ ] Reference the bundled components in package.sql.ts and other SQLPage dependencies and Astro pages via script tags.

This approach keeps our Ornament components integrated with minimal configuration changes, ensuring they are easily accessible via https://www.surveilr.com/js/wc/component.js.
Implement the following to integrate Ornament-based web components into our existing Astro site using Astro's built-in Vite configuration.
First, install Ornament to create web components:
npm install @sirpepe/ornament

Add components to src/web-components. Here's an example component:
// src/web-components/my-greeter.ts
import { define, attr, string, number, connected, reactive } from "@sirpepe/ornament";

@define("my-greeter")
class MyGreeter extends HTMLElement {
  #shadow = this.attachShadow({ mode: "open" });

  @attr(string()) accessor name = "Anonymous";
  @attr(number({ min: 0 })) accessor age = 0;

  @reactive()
  @connected()
  greet() {
    this.#shadow.innerHTML = `Hello! My name is ${this.name}, my age is ${this.age}`;
  }
}

Add a Vite configuration to bundle your web components:
import { defineConfig } from 'astro/config';
import fs from 'fs';
import path from 'path';

const webComponentsDir = 'src/web-components';
const webComponentsFiles = fs.readdirSync(webComponentsDir).filter(file => file.endsWith('.ts'));
const inputComponents = webComponentsFiles.reduce((acc, file) => {
  const name = path.basename(file, '.ts');
  acc[name] = path.join(webComponentsDir, file);
  return acc;
}, {});

export default defineConfig({
  vite: {
    build: {
      rollupOptions: {
        input: inputComponents,
        output: {
          dir: 'public/js/wc',
          entryFileNames: '[name].js',
        },
      },
    },
  },
});

Reference the compiled JavaScript files in our SQLPage and Astro pages:
<html>
  <head>
    <script type="module" src="/js/wc/my-greeter.js"></script>
  </head>
  <body>
    <my-greeter name="Astro User" age="25"></my-greeter>
  </body>
</html>

The Ornament tool did not work as expected, so we contacted the Ornament team (GitHub Issue #11). They provided options different from what we anticipated. Additionally, the creator lacked familiarity with Astro, Vite, etc. (GitHub Issue #12). As a result, we used Lit instead of Ornament and successfully created web components.
For further details, please refer to the following links:

Lit Documentation
Astro Guide for Lit Integration


Typo in model-view-projection recipe?

From http://nalgebra.org/cg_recipes/#build-a-mvp-matrix or https://github.com/sebcrozet/nalgebra/blob/master/examples/mvp.rs:
// The combination of the model with the view is still an isometry.
let model_view = model * view;

I think this should be:
let model_view = view * model;

You were right, there was an error. Thanks!


Generate documentation inside website folder

remove unnecessary title and table of content (the doc theme generates one)
generate jekyll page header for doc markdowns

Merged manually.


[FEATURE ⭐] set FPS of video recording

When I run it, it saves a 30FPS video, but after poring over the source code, I can't figure out where to change it to change the FPS. If there is a simple way to do this, can you help, or if not, can I ask for a feature implementation?

I guess adding this to VideoEncoder::new change FPS well, but I'm not sure if it is a proper way.
        media_encoding_profile
            .Video()?
            .FrameRate()?
            .SetNumerator(60)?;
        media_encoding_profile
            .Video()?
            .FrameRate()?
            .SetDenominator(1)?;

But the error occur when I set Numerator bigger than 60; error occur in 90, 120, 144, ...
this error resolved when I use VideoEncoderType::Hevc or VideoEncoderType::Av1 (I manually implemented Av1 part), but it occur when I use VideoEncoderType::Mp4.
I have no clue about why this happen...

I have no clue about why this happen...

Seems like it's a Windows API limitation 🤔

I have no clue about why this happen...

Seems like it's a Windows API limitation 🤔

I rechecked it, and it was true.


Update Adoptium #build daily Slack status with Reproducible build results

TRSS now has a "Rebuild_Same_JDK_Reproducibility_Test_0", which reports a "Reproducibility %" :
https://trss.adoptium.net/deepHistory?testId=66b48b8dd24e1b006eaa48d5
We should add a new line to the #build daily Slack status reporting the latest EA reproducibility for the reproducible versions and platforms. So currently:

jdk21u : x64Linux, aarch64Linux, ppc64leLinux, x64Windows, x64Mac, aarch64Mac

Status script: https://github.com/adoptium/ci-jenkins-pipelines/blob/master/tools/nightly_build_and_test_stats.groovy
Comparing /home/user/jdk-21.0.4+7 with /cygdrive/c/workspace/openjdk-build/workspace/build/openjdkbuild/images/jdk ... output to file: reprotest.diff
Number of differences: 0
ReproduciblePercent = 100 %

I've been working on this task in the repository branch here.
I've set up a temporary jenkins job here to test it as I go along.
The results are sent to my Slack Member ID as a direct message, to avoid swamping the build channel.
Example of last successful output:
![image](https://github.com/user-attachments/assets/a7b54e0d-0a42-4c1a-a374-fb76092fa35a)

This was using dummy percentages, for the sake of testing the formatting.
I'm currently fixing bugs in the percentage parsing code.

Update: The code works! We now gather the correct percentages from the correct locations.
Intentionally untested comparable builds that will be tested in the future are labelled "NA".
The output is as depicted below. I'm working with Andrew Leonard to refine the output to make it smaller and most useful.
Pending tasks:

[ ] To remove the NA builds from the Slack output.
[ ] To replace NA in the breakdown (part of the groovy jenkins job output) with something more useful.
[ ] To replace "good" and "bad" with a list of platforms + percentages (? % if no percentage available).
[ ] To remove the hard-coded specific-pipeline TRSS URL, and re-test.

I did this to make sure I'm testing the new code with a pipeline that ran tests.

Also, I've added the ability for us to specify different test names + locations by platform.
https://github.com/adoptium/temurin-build/blob/master/test/system/reproducibleCompare/playlist.xml

Ok, the final changes are in and proven to work.
A PR has been raised here: https://github.com/adoptium/ci-jenkins-pipelines/pull/1113

PR 1113 is fully functional.
We have identified a good next step for this enhancement, and that work will be progressed in another issue here: https://github.com/adoptium/ci-jenkins-pipelines/issues/1132


Background color handling changed between 1.1 and 1.2

Environment
Windows build number: Microsoft Windows [Version 10.0.18363.900] and Microsoft Windows [Version 10.0.19041.450]
Windows Terminal version (if applicable):

Any other software?
PDCurses: https://github.com/wmcbrine/PDCurses @ 618e0aa
Steps to reproduce
Related to the same PDCurses based application that prompted me to report #7594 I found something else. The background handling in Windows Terminal changed between 1.1 and 1.2.
In my app I declare a custom color:
  #define SW_COLOR_DEBUG 100
  init_color(SW_COLOR_DEBUG, 500, 500, 500);
  init_pair(1, SW_COLOR_DEBUG, COLOR_BLACK);

Expected behavior
What I saw in WT 1.1 was what this:

I wasn't sure if it would work like that, since I had custom non-black background, but I had hoped the black color was remapped.
COLOR_BLACK is defined as 0 in PDCurses, I didn't find any way to set no color.
Actual behavior
In WT 1.2 I'm now seeing actual black.

I'm not 100% sure what is technically correct here, if I'd seen WT1.2 first I would have assumed my code was wrong, but since there's behaviour change between 1.1 I figured I'd report this.

https://github.com/microsoft/terminal/pull/6506 changed it so now the correct behavior is defined. So yes you need to update your code.

Yep. There's a similar issue that existed in powershell until we fixed it. It explains a bit about why this happens.
https://github.com/PowerShell/PSReadLine/issues/830#issuecomment-650508857

(thanks @WSLUser)

Thanks for the references. I'll read through that and see if I can apply it to PDCurses. I think nurses let you use -1 as "no color change" but PDCurses doesn't seem to allow that. Maybe I have to propose a change to PDCurses.

I've been reading the references, but I still don't fully understand what is going on. I made some additional tests:
#include <cassert>
#include <iomanip>
#include <iostream>

#include <curses.h>

#define ISOK(api_function_call) {\
  [[maybe_unused]] int curses_result = api_function_call;\
  if(curses_result != OK)\
    std::cout << "Curses Error: " << curses_result << "\n";\
  assert(curses_result == OK);\
}

void print_input(int input);

int main()
{
  initscr();
  start_color();
  use_default_colors();
  // assume_default_colors(-1, -1);
  raw();
  keypad(stdscr, TRUE);
  noecho();

  mousemask(BUTTON1_CLICKED, nullptr);

  move(1, 1);
  attron(A_BOLD);
  printw("PDCurses Mouse Test");
  attroff(A_BOLD);

  mvprintw(5, 1, "has_colors: %d", has_colors());
  mvprintw(6, 1, "can_change_color: %d", can_change_color());
  mvprintw(7, 1, "COLORS: %d", COLORS);
  mvprintw(8, 1, "COLOR_PAIRS: %d", COLOR_PAIRS);

  short r, g, b;
  color_content(0, &r, &g, &b);
  mvprintw(10, 1, "COLOR_BLACK: %d, %d, %d", r, g, b);

  const int kColorDefaultBg = 200;
  ISOK(init_color(kColorDefaultBg, r, g, b));

  const int kColorDebug = 210;
  ISOK(init_color(kColorDebug, r + 30, g + 20, b + 10));

  ISOK(init_pair(1, COLOR_RED, COLOR_BLACK));
  ISOK(init_pair(2, COLOR_GREEN, COLOR_BLACK));
  ISOK(init_pair(3, COLOR_BLUE, COLOR_BLACK));
  ISOK(init_pair(4, COLOR_CYAN, COLOR_BLACK));
  ISOK(init_pair(5, COLOR_MAGENTA, COLOR_BLACK));
  ISOK(init_pair(6, COLOR_YELLOW, COLOR_BLACK));

  ISOK(init_pair(10, COLOR_RED, -1));

  const int kColorGrey = 100;
  ISOK(init_color(kColorGrey, 500, 500, 500));
  ISOK(init_pair(11, kColorGrey, COLOR_BLACK));
  ISOK(init_pair(12, kColorGrey, -1));

  ISOK(init_pair(13, COLOR_RED, kColorDefaultBg));
  ISOK(init_pair(14, kColorGrey, kColorDefaultBg));
  ISOK(init_pair(15, COLOR_RED, kColorDebug));

  const int kTop = 12;
  for (int i = 0; i < 16; ++i) {
    auto result = color_set(i, NULL);
    mvprintw(kTop + i, 1, "Color Set: %d", i);

    attron(A_BOLD);
    mvprintw(kTop + i, 20, "Color Set: %d", i);
    attroff(A_BOLD);

    attron(A_DIM);
    mvprintw(kTop + i, 40, "Color Set: %d", i);
    attroff(A_DIM);

    attron(A_STANDOUT);
    mvprintw(kTop + i, 60, "Color Set: %d", i);
    attroff(A_STANDOUT);
  }

  bool run = true;
  while(run) {
    refresh();
    int input = getch();

    switch(input) {
    case 'q':
      run = false;
      break;
    default:
      print_input(input);
    }
  }

  endwin();
  return 0;
}

The result in WT 1.2 is:

Here is what I don't fully understand:
When I use only the predefined COLOR_ macros in PDCurses and COLOR_BLACK as background it looks fine. (Color set 1-6)
In color set 10 I set foreground to COLOR_RED and background to -1 which also looks fine. (-1 gets normalized to 0 so it ends up being the same as COLOR_BLACK.
But, with any custom foreground color, the background is 0, 0, 0. Set 11 and 12 both ends up passing color 0 from PDCurses, similar to line 10. But yet they render with different color?
From what I understand there are some color mapping going on, but is the logic different if either foreground or background is different from the default colors (or different from one of the indexed 0-16 colors)? Does a custom foreground color affect how the background color is mapped? (If not, why would set 11 and 12 have different background from 10 in the example above?)
I found this article: https://docs.microsoft.com/en-us/windows/console/console-virtual-terminal-sequences#extended-colors
But I'm not sure if that relate only to cmd.exe?


fix(dbm-services): fix sysint param

关联研发信息
dev_branch: fix/marsha_sysinit_param/#1405
target_branch: v1.2.0


docs: add final example for FluentDesignSystemProvider to Blazor WASM

Can you please update documentation - https://github.com/microsoft/fast/blob/master/packages/web-components/fast-foundation/docs/integrations/blazor.md
in case when using blank new project with .NET 6, Blazor, WebAssembly, like:
dotnet new blazorwasm
How to properly integrate FluentDesignSystemProvider tag into wwwroot/index.html and Pages/Index.razor and Shared/MainLayour.razor . Maybe create better dotnet template for starters, so instead of default blazorwasm to use something like fast-blazor project as a starter.
Reference for custom dotnet project template - https://docs.microsoft.com/en-us/dotnet/core/tutorials/cli-templates-create-project-template

ok, thank you for reference for new dotnet template.
In mean time, if you can also update here / FAST documentation about Blazor page and usage with clarification about mentioned  and its location (which file) needs to be put in new / empty project created with default template dotnet new blazorwasm

Hi @hkusulja, love the template idea. Pretty sure that will be picked up. In the meantime, I think you can find the instructions you need in the readme.md file of this repo

@vnbaaij The mentioned readme.md is not clear where (which file / line) to put   ...

If you follow https://github.com/microsoft/fast-blazor/blob/main/README.md#configuring-the-design-system, there is only one file in your project that you need to change (besides adding the <script> to the index.html in a wasm app) and that is `App.razor'. You replace the entire contents of the file with what is shown in the code block.

Ok, can you update then documentation saying that "Example App.razor file looks like" ...

Will do!


TextField Memory Leak on CPP and HL

TextField Memory Leak on CPP and HL
Problem : On native targets openfl TextField allocates memory as the text increments this is also exposed on haxe flixel FlxText because it extends openfl TextField.
Reproducing: Creating a simple flixel app and adding a textfield that displays an incrementing integer will show it both at the flixel level or in an openfl textfield.
Author: 47rooks
import flixel.FlxState;
import flixel.text.FlxText;
import openfl.text.TextField;
import openfl.text.TextFormat;

class PlayState extends FlxState
{
    var _textF:FlxText;
    var _textStr:String;
    var _myInt:Int;
    var _firstDone:Bool;
    var _oflText:TextField;

    override public function create()
    {
        super.create();

        _myInt = 0; // Counter to increment
        _textStr = Std.string(_myInt);
        _textF = new FlxText(20, 100, 200, _textStr, 20);
        add(_textF);

        _oflText = new openfl.text.TextField();
        _oflText.selectable = false;
        _oflText.text = _textStr;
        _oflText.defaultTextFormat = new TextFormat(null, 14, 0xffffff);
        FlxG.game.addChild(_oflText);
    }

    @:access(flixel.system.frontEnds.BitmapFrontEnd)
    override public function update(elapsed:Float)
    {
        super.update(elapsed);

        _myInt++;

        // Uncomment for a flixel level test
        // _textF.text = Std.string(_myInt);

        // Check cache size
        var numEntries = 0;
        for (k in FlxG.bitmap._cache.keys())
        {
            numEntries++;
        }
        trace('FlxG.bitmap._cache numEntries=${numEntries}');

        // Update the OpenFL text - comment out to run the flixel only test```
        _oflText.text = Std.string(_myInt);
    }
}```

Openfl Ver: 9.2.x

Expected Behavior:
TextField should not leak memory as it increments within a value.

Affected Targets: CPP, HL.

Additional context: Also occurs on Haxe Flixel with FlxText.

Here is a pure openfl  test case:
`package;
import openfl.display.Sprite;
import openfl.events.Event;
import openfl.text.TextField;
import openfl.text.TextFormat;
class Main extends Sprite
{
var _oflText:TextField;
var _myInt:Int;
public function new()
{
	super();

	_oflText = new openfl.text.TextField();
	_oflText.selectable = false;
	_oflText.text = Std.string(_myInt);
	_oflText.defaultTextFormat = new TextFormat(null, 36, 0x000000);
	_oflText.cacheAsBitmap = false;
	_oflText.x = 200;
	_oflText.y = 200;
	addChild(_oflText);

	this.addEventListener(Event.ENTER_FRAME, everyFrame);
}

function everyFrame(_):Void {
	_myInt++;
	_oflText.text = Std.string(_myInt);
}

}
`
Tested with :
haxelib list
hxcpp-debug-server: [1.2.4]
hxcpp: [4.3.2]
lime: [8.0.2]
openfl: [9.2.2]
Use an OS utility to monitor the memory. It will increase, and may at times appearing stable but then begin increasing again.

This is normal behavior due to the shape cache.

After considering this some more, I think it might make sense to only use the cache after a certain number of word breaks to avoid adverse affects of using text fields to display a counter.

After considering this some more, I think it might make sense to only use the cache after a certain number of word breaks to avoid adverse affects of using text fields to display a counter.
Or perhaps just clean up the cache on empty textfields.
I need to think about this more.
Just how bad does the memory usage peak?
I believe a counter to 1,000,000 should only use a maximum of 6 mb. If the counter is reused, it will never exceed this. A counter to 10,000,000 will use 70 mb if every number between 1 and 10,000,000 is tapped. It does get exponentially worse so I can see how it might become worrisome for some use cases.

The memory proceeds to count up past 600 megabytes of ram when the digits reach a threshold of 10 or 12. This is within a timeframe of 15 minutes the problem is worse on flixel based applications because memory problems cause performance altercations which leads to framerate dips. Small digits have no issue but if you use a line of text with score, lives, etc this quickly becomes worrysome.

Yea, I didn't consider the implications of a large number counter.
The shape cache allows us to quickly append or change text without having to calculate the positions of the entire text field repeatedly. It also helps when multiples of the same word are used in the same text field because it already has the cached measurement ready for that word. This was crucial to allow large dynamic textfields to function without severe drops in frame rate when typing or changing text programmatically.
It does even have some minor benefit for small dynamic text fields because the measurement calculations are expensive, however it should not come at the cost of exuberant memory usage even if a 10+ digit counter is kind of rare use case.
The solution is kind of tricky since resetting the cache on the text setter will void out any benefit of the cache to begin with. The cache is absolutely necessary or many general use cases for text field simply become unusable at scale.
Will think of something compromising.

Yea, I didn't consider the implications of a large number counter.
The shape cache allows us to quickly append or change text without having to calculate the positions of the entire text field repeatedly. It also helps when multiples of the same word are used in the same text field because it already has the cached measurement ready for that word. This was crucial to allow large dynamic textfields to function without severe drops in frame rate when typing or changing text programmatically.
It does even have some minor benefit for small dynamic text fields because the measurement calculations are expensive, however it should not come at the cost of exuberant memory usage even if a 10+ digit counter is kind of rare use case.
The solution is kind of tricky since resetting the cache on the text setter will void out any benefit of the cache to begin with. The cache is absolutely necessary or many general use cases for text field simply become unusable at scale.
Will think of something compromising.

Thinking of making like TextCounterField or some way to manually clear the memory buildup? You'd think if the text changes it would deallocate the prev text.

The problem is actually due to the way TextEngine internals work. Essentially, we should only be caching individual glyphs which is both memory efficient and cpu efficient, but OpenFL instead processes word breaks in their entirety.
In order to properly solve the problem, a large part of the text internals need to be rewritten. Text rendering and layout is fundamentally very complicated and there are many pitfalls. This is definitely on the todo list, but it is also going to be a long and difficult process.
In the interim, we can either provide a flag to turn the cache off entirely in the application or just avoid caching text fields with only a few word breaks.

The problem is actually due to the way TextEngine internals work. Essentially, we should only be caching individual glyphs which is both memory efficient and cpu efficient, but OpenFL instead processes word breaks in their entirety.
In order to properly solve the problem, a large part of the text internals need to be rewritten. Text rendering and layout is fundamentally very complicated and there are many pitfalls. This is definitely on the todo list, but it is also going to be a long and difficult process.
In the interim, we can either provide a flag to turn the cache off entirely in the application or just avoid caching text fields with only a few word breaks.

Okay! As long as like text like 'Score: 120000 | Combo: 3000 | Accuracy: 100%' does not leak memory when incrementing these values as one line than a solution flag like that could be beneficial!!

Currently, if you use JUSTIFY alignment it will not use the cache at all. I thought I would point that out.

The problem is actually due to the way TextEngine internals work. Essentially, we should only be caching individual glyphs which is both memory efficient and cpu efficient, but OpenFL instead processes word breaks in their entirety.
In order to properly solve the problem, a large part of the text internals need to be rewritten. Text rendering and layout is fundamentally very complicated and there are many pitfalls. This is definitely on the todo list, but it is also going to be a long and difficult process.
In the interim, we can either provide a flag to turn the cache off entirely in the application or just avoid caching text fields with only a few word breaks.

Okay! As long as like text like 'Score: 120000 | Combo: 3000 | Accuracy: 100%' does not leak memory when incrementing these values as one line than a solution flag like that could be beneficial!!

Without the cache I would recommend splitting this up into multiple text fields since the cpu usage in changing the textfield will likely cause frame rate instability if it changes frequently.

Currently, if you use JUSTIFY alignment it will not use the cache at all. I thought I would point that out.

what does justify do i don't use openfl backend that much

Currently, if you use JUSTIFY alignment it will not use the cache at all. I thought I would point that out.

what does justify do other than not using the cache i don't use openfl stuff that much

Justify alignment is a text alignment option used in typesetting, word processing, and graphic design. When text is justified, it means that the spaces between words are adjusted to make the text align evenly along both the left and right margins of a text block. In other words, the text is stretched or compressed as needed to ensure that each line of text extends from the left edge to the right edge of its containing area.
It is the same in Flixel:
https://api.haxeflixel.com/flixel/text/FlxTextAlign.html#JUSTIFY

A workaround for now could be to use multiple text fields inside a single container.
TextField(Score:) TextFieldWithJustify(120000) TextField(| Combo:) TextFieldWithJustify(3000) TextField(| Accuracy:) TextFieldWithJustify(100%)
Now, due to the nature of justify you also have to workaround the spacing by padding with 0's so score would default be 000000(max digits) combo would be 0000 and accuracy would be 000%.
It might not be ideal, but I just wanted to show that you can work around this if you're creative. I realize you shouldn't have to. I'll try to provide a solid solution before the next haxelib release.

A workaround for now could be to use multiple text fields inside a single container.
TextField(Score:) TextFieldWithJustify(120000) TextField(| Combo:) TextFieldWithJustify(3000) TextField(| Accuracy:) TextFieldWithJustify(100%)
Now, due to the nature of justify you also have to workaround the spacing by padding with 0's so score would default be 000000(max digits) combo would be 0000 and accuracy would be 000%.
It might not be ideal, but I just wanted to show that you can work around this if you're creative. I realize you shouldn't have to. I'll try to provide a solid solution before the next haxelib release.

I just tested JUSTIFY and the memory builds HOWEVER it does not stay built up, once it does an initial cache it seems to slowly increase then decrease averaging at the same memory it began its first cache at. It is no longer a LEAK but the memory does change this is viable as a temporary solution. I think for a future endeavor TextField could be changed to have minimal memory buildup without utilizing JUSTIFY as alignment ;3

Justify simply doesnt use the cache because it breaks and is rarely used for long dynamic text.
I just pushed a change allowing you to turn off the cache entirely to the dev branch using <haxedef name="skip_measurement_cache"/>.
Keep in mind that this define is likely to be removed in the future as we continue to improve TextEngine internals.

Also keep in mind that this was never a leak.
A memory leak is a situation in computer programming where a program or application fails to release memory (RAM) that it has allocated but no longer needs. In other words, memory that was allocated for a particular task or data storage is not properly deallocated or freed when it is no longer in use.
In this case, if you dispose of the textfield, it will deallocate the memory. The cache is there for a reason. It is not a leak...


Problems with PVC Storage Class in Kubeshark on a AKS cluster

Describe the bug
When running the Kubeshark v40.0 the pods wont start because of a PVC with a bad storage class.
Provide more information
Running in AKS v1.25.6.
Kubeshark in V40.0
To Reproduce
Steps to reproduce the behavior:

Run kubeshark tap
Run kubectl get pvc -n kubeshark
See PCV in pending status

Expected behavior
The PVC should use a default storage class.
Screenshots

Additional context
If possible, we can not set the storage class in the manifests. With no stg class, the PVC takes the default storage class from the cluster.

they provide command option, you can set yourself sc. for instance,  kubeshark tap -r deploy.hubert/kubeshark/ --storageclass "local-storage"

I'm having the same issue. Unfortunately changing the storage class doesn't work for me, as I don't have a storage plugin available in my cluster that supports ReadWriteMany. I guess this could be a problem for many users.

In V40.0 we've introduced the volume persistency feature to ensure no data is lost. From the reactions, we understand the current solution doesn't support all K8s distributions. Solution is in the works. We'll report asap, once a solution is available. As our workload is relatively high at this point, this is a matter of ~ 1-2 weeks.

I'm having the same issue. Unfortunately changing the storage class doesn't work for me, as I don't have a storage plugin available in my cluster that supports ReadWriteMany. I guess this could be a problem for many users.

Please see: https://github.com/kubeshark/kubeshark/issues/1337#issuecomment-1519172816

Duplicate of https://github.com/kubeshark/kubeshark/issues/1337

We have made the PVC optional (disabled by default) as of the release 40.2
The persistentstorage field in both config.yaml and values.yaml (Helm) can be set to true to enable the PVC.
The flag --persistentstorage of tap command enables the PVC.


Add tab thumbnail

Is your feature request related to a problem? Please describe.
Not a problem
https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/tabs/captureTab
Describe the solution you'd like
Add the thumbnail by either hover or create a new UI to show all available thumbnail

https://bugs.chromium.org/p/chromium/issues/detail?id=32667 The feature is not available on Chrome and Edge

Sample branch with temp work: https://github.com/xcv58/Tab-Manager-v2/compare/thumbnail?expand=1


New filter: overpass query

As a mapper of OSM I use and know something about  http://www.overpass-turbo.eu . I think it would be interesting to add the possibility to filter by overpass query, which would make the tool extremely exact to check specific kind of nodes, relations and ways.

This sounds great @yopaseopor, @willemarcel thoughts ?

It's a good idea, but I don't see a way to implement it... We don't have all OSM features in the OSMCha database, so we could only search in the suspicious features that we have. A problem is that we don't know if a feature that we have in our database is the most updated version, so the query could return a result with features that are not updated or doesn't exist any more.
As overpass doesn't return the feature version and the id of the last changeset that modified it, we cannot use it to get the data to query for features and changesets in osmcha.

I would see as one filter more, using the most updated data. People use OSMcha can know these limitations. Overpass is a "query language" well known for the OSM community and would be the best filter to find something specific in OSM. Also...Are you telling us your statistics and filters are based in not updated OSM data?? Are you telling us OSMCha is not reliable? I thank and saw OSMCha with calendar things, etc... so is this not truth?? What a disappointment :( 👎

@yopaseopor it would be great if you could describe your use case for an overpass filter. How would you use such a feature?

Nowadays in Spain we are so near of big agreements with official
adminsitrations to use their data inside OSM. One of these big tags would
be the levels of a building. So , for example I would try to find if any
people has change something about building levels in a specific zone , to
keep the stability and the realibility of the data.
With overpass...you can ever find nearly whatever you want. For example,
I'm also an enthuthiastic of traffic signs. With overpass I can find ...all
the traffic signs in a road. http://overpass-turbo.eu/s/qj5
So with this feature in OSMCha I would review an specific element (with its
code) around the country, around the world.
For me overpass is the method to find specifically some kind of item inside
the big database is OSM. And OSMCha would be the perfect tool to review it.
https://www.avast.com/sig-email?utm_medium=email&utm_source=link&utm_campaign=sig-email&utm_content=webmail
Libre
de virus. www.avast.com
https://www.avast.com/sig-email?utm_medium=email&utm_source=link&utm_campaign=sig-email&utm_content=webmail
<#DAB4FAD8-2DD7-40BB-A1B8-4E2AA1F9FDF2>

Hi @yopaseopor,
:)

Are you telling us your statistics and filters are based in not updated OSM data?? Are you telling us OSMCha is not reliable?

We have all changesets since we begin to use OSMCha, but we don't have all the OSM features (nodes, ways, relations). The features we have in our database are the ones that osm-compare consider as suspicious/wrong and each feature are listed in the changeset page that created/updated it.
As we don't delete old features, if a user fixes an error in a feature and it is not more considered as suspicious/wrong, it will continue in the osmcha database (with the osm version information).
The use cases that you described can be handled with https://github.com/osmlab/changewithin. You can also add a changed param to your overpass query and get only the objects that were modified since your last review.
Thank you very much for your suggestion!


spelling error, just a little mistake

Description
modify a simple spelling mistake.

Related Issue
nothing

Motivation and Context
Make a contribution to the commity from small things.

Screenshots (if appropriate):
Types of changes

[ ] Bug fix (non-breaking change which fixes an issue)
[ ] New feature (non-breaking change which adds functionality)
[ ] Breaking change (fix or feature that would cause existing functionality to change)
[x] Documentation Update (if none of the other choices apply)

Checklist:

[x] Code compiles correctly.
[x] My code follows the code style of this project.
[ ] My change requires a change to the documentation.
[ ] I have updated the documentation accordingly.
[x] I have read the CONTRIBUTING document.
[ ] I have added tests to cover my changes.
[ ] All new and existing tests passed.

  I have learned this from "dragonflyoss/Dragonfly". I have commited a PR about  "dragonflyoss/Dragonfly", could you also check it ? ^0^……


Question about KITTI dataset

Which KITTI dataset is used in rankings for Stereo Matching track? KITTI2012 or KITTI2015 or both of these two?

Hi,
Could you please also answer this question for optical flow? I saw that in previous years, the methods submitted to Kitti 2015 only. But it would be nice to make sure.

Yes, both Stereo and Flow use only KITTI2015 leaderboards


Longest Common Subsequence Problem

Title: Longest Common Subsequence Problem
Language: Python
Directory: Dynamic Programming
Name: Manthan Nagpurkar

☑Hacktoberfest
☑Contributor
Description:
Write the Solution code for Dynamic Problem called "Longest Common Subsequence" in python using recursion approach.
@prathimacode-hub Please assign me this issue.

Issue assigned to @manthan0227

Hi I want to work on this issue ..Please assign me @prathimacode-hub

This issue is created by me. if you are thinking about work on some issue, you can create your own issue and submit the own pull request.


Expired API secret - Causes failure on api/workspaces

Describe the bug
All our TRE Users are unable to access the TRE home page where APi call /api/workspaces is called. They are faced with a 500 error

The user is able to access their workspace, but cannot access the TRE home page.
Initially, this presented as an expired password in application insights. Log portion below:
Traceback (most recent call last):
  File "/api/services/aad_authentication.py", line 107, in __call__
    raise HTTPException(status_code=status.HTTP_403_FORBIDDEN, detail=f'{strings.ACCESS_USER_DOES_NOT_HAVE_REQUIRED_ROLE}: {self.require_one_of_roles}', headers={"WWW-Authenticate": "Bearer"})
fastapi.exceptions.HTTPException: 403: The user is missing a required role: ['TREAdmin']

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/api/api/routes/workspaces.py", line 62, in retrieve_users_active_workspaces
    user = await get_current_admin_user(request)
  File "/api/services/aad_authentication.py", line 110, in __call__
    raise HTTPException(status_code=status.HTTP_403_FORBIDDEN, detail=f'{strings.ACCESS_USER_DOES_NOT_HAVE_REQUIRED_ROLE}: {self.require_one_of_roles}', headers={"WWW-Authenticate": "Bearer"})
fastapi.exceptions.HTTPException: 403: The user is missing a required role: ['TREAdmin']

During handling of the above exception, another exception occurred:
.....
Exception: API app registration access token cannot be retrieved. invalid_client: AADSTS7000222: The provided client secret keys for app '<API app registration ID>' are expired.

In Entra, the "sp-aztre-cicd" service principal secret had expired (not the main API app reg). This was updated and added to AZURE_CREDENTIALS. Rerunning the pipeline got past the initial step that was failing. We now saw an error related to the TEST_ACCOUNT_CIENT_ID when registering bundles. Why would this secret expire?
Login Succeeded
Using TEST_ACCOUNT_CLIENT_ID to sign in to tre CLI
ClientSecretCredential.get_token failed: Azure Active Directory error '(invalid_client) AADSTS7000222: The provided client secret keys for app '***' are expired. Visit the Azure portal to create new keys for your app: https://aka.ms/NewClientSecret, or consider using certificate credentials for added security: https://aka.ms/certCreds. Trace ID: 7674e1b0-c710-4be6-aad3-50d40e5d0100 Correlation ID: dbbeeb4a-3cb3-46fe-bcc6-39d4a945498e Timestamp: 2024-10-21 15:49:56Z'

Now troubleshooting in our DEV environment
Troubleshooting steps tried:

Update the "sp-aztre-cicd" service principal secret and update AZURE_CREDENTIALS - rerun pipeline. Result: Runs past initial steps, fails at registering bundles.
Update Automation admin secret by running az ad sp credential reset --id "<ID>" --query 'password' --output tsv --only-show-errors and updating test_account_client_secret in GitHub secrets. (In DEV where error had not occurred, but no new errors raised when updating secret)
API app registration secret expired error, still present. Use command similar to above to update the password and add it into KeyVault and GitHub secrets. Re run pipeline - DEV pipeline successful. Error now does not recognise secret.

Exception: API app registration access token cannot be retrieved. invalid_client: AADSTS7000215: Invalid client secret provided. Ensure the secret being sent in the request is the client secret value, not the client secret ID, for a secret added to app '<API app ID>'

This TRE was deployed on 18th October 2023, the first failure happened on 18th October 2024. The secrets do not have an expiry in KeyVault, was a limit set on creation?
Steps to reproduce

Deploy a TRE using CICD 1 year ago
Have many users with TRE User and Workspace Researcher roles only
Try to access the main UI.

Azure TRE release version (e.g. v0.14.0 or main):
v0.19.1
Deployed Azure TRE components - click the (i) in the UI:
UI Version: 0.5.28
API Version: 0.18.11

Hi @marrobi Thank you for your quick response! I then re ran the DEV pipeline and it worked straight away.
I have followed the same steps for PROD and still see the error like below
Exception: API app registration access token cannot be retrieved. invalid_client: AADSTS7000215: Invalid client secret provided.

This was still manually running the credential reset command, so I will look into trying make auth instead (which we planned to do anyway, but wanted to try the quick fix). I'm not sure why it would make a difference in terms of recognising the secret?
I can see now that the maximum for a secret is also 2 years. We will put something in place to make sure make auth is run on a yearly basis. Thanks!

@JaimieWi  have you run the dev pipeline twice?
The secret it is complaining about is the api_client_secret which secret did you update?
app = ConfidentialClientApplication(client_id=config.API_CLIENT_ID, client_credential=config.API_CLIENT_SECRET, authority=f"{config.AAD_AUTHORITY_URL}/{config.AAD_TENANT_ID}")

@marrobi  I did run the DEV pipeline twice, that one is now successful.
I changed the secrets in PROD and have rerun it twice, no change. The error is still present for our TRE Users.

I have changed the TEST_ACCOUNT_CLIENT_SECRET (to fix the error in registering bundles).
I have also changed the API CLIENT SECRET, this is the one that is not being picked up. (I have done it twice to make sure I wasn't missing something).

@JaimieWi  hmm, seems like a recurrence of https://github.com/microsoft/AzureTRE/issues/2463
Can you try updating yourself in KeyVault? Wonder if Terraform isn't updating the secret.

Also check the value in the Web App environment variables matches the correct version of the secret in KeyVault

Hi @marrobi
Steps completed:

Run make auth
Update GitHub secrets
Manually update Key vault secrets
Run pipeline twice

Still see the error. The web app is not using the correct value. It shows the ID of the original secret, has not updated to use a later one.
How do I force the web app to recognise the new secret?

In KeyVault, copy the secret identifier:

and updated it in the App service as per the image pasted above.
Let us know how you get on.

It seems to be related to this - https://github.com/hashicorp/terraform-provider-azurerm/issues/3129 - the issue has been closed, but not sure it is properly resolved.

Hmm, we are using:
"AAD_TENANT_ID"                                  = "@Microsoft.KeyVault(SecretUri=${azurerm_key_vault_secret.auth_tenant_id.id})"
    "API_CLIENT_ID"                                  = "@Microsoft.KeyVault(SecretUri=${azurerm_key_vault_secret.api_client_id.id})"
    "API_CLIENT_SECRET"                              = "@Microsoft.KeyVault(SecretUri=${azurerm_key_vault_secret.api_client_secret.id})"

We should try changing to this format:
resource "azurerm_function_app" "function_app" {
  ...
  app_settings = {
    ...
    # this works
    "MY_SECRET" = "@Microsoft.KeyVault(SecretUri=${var.key_vault_vault_uri}secrets/MY-SECRET/${azurerm_key_vault_secret.my_secret.version})",
  }
}

That has worked! Thank you @marrobi !
Just to reiterate, steps to update Entra secrets:

Run make auth
Update GitHub secrets
Manually update Key vault secrets
Run pipeline twice (This may not be required if secrets are not updated anyway?)
Update API_CLIENT_SECRET value in web app environment variables to use latest version
Restart web app
Hard refresh TRE page (temporarily see 504 error that resolves itself within 5 minutes)

This can now be closed, but would be great if this could be an automated process (as you mentioned above).

Great. I've added this to the engineering board so will leave this issue open, along with #2463 until we make the change to how to reference the secrets.


Questions about caps lock...

Hello, excuse me
How can I keep him in lowercase
uppercase commands cannot be run
example:
Keyboard.print("hello");
But the output Notepad becomes
HELLO
或许我该使用中文
请问和键盘的大小写CapsLock冲突怎么办
大写的命令有些无法运行

如果你使用的是Windows系统的话，命令行cmd有一些可以强制调整字母大小写的快捷键，不妨试一下。
If you are using a Windows system, the command line cmd has some shortcut keys that can force the case adjustment of letters. Try it.


Product Query Page Sliver App Bar does not  look good with the two word title

What

In the Product Query Page ,for example , if the title is like "Sweetened Beverages". The Sliver App bar looks messed Up.

Steps to reproduce the behavior

Go to Scan Page.
For now, search for Fanta.
After clicking one of the products. Then click the Compare to Category button.
Then when you will scroll down. You will see the App bar clashing with Filter Icon.

Why

There may be other examples where the title will be longer. Hence, current solution  for the Sliver app bar won't work for those Sliver App Bar title.

Screenshot/Mockup/Before-After
Here is the video:
https://user-images.githubusercontent.com/83439329/160630912-fd69cf81-d988-4d22-9b9b-337f43a8e129.mp4

Hi @PrabeshPP ,
I suppose wrapping the text widget inside the sized box will fix this.

@PrabeshPP Can you fix it with fittedbox

@PrabeshPP  I too think Fitted box would work

@vik4114 @bhattabhi013 @abhay1821 I tried SizedBox and Fitted Box,but It shows the same.

@teolemon ,for now I have done the mockup for this issue. Here is the Mock-Up solution video:
Let me know what do you think about this solution.

Hi @PrabeshPP ,
It's nice but I think we can find another approach to handle overflow text.

Hi @PrabeshPP, Your Solution looks good.  So tried working on it It would look something like this. So if u find something better among these 2 below then I will suggest you my approach.
https://user-images.githubusercontent.com/55257452/161096698-be0aed38-e74e-461a-9e93-4d681549e8e3.mov
https://user-images.githubusercontent.com/55257452/161098064-6c2505a1-986c-44f4-a457-c422268d3379.mov

@PrabeshPP for the 1st one u can just wrap the text into Sized box and decide the (width:screenSize.width/1.6) as per ur choice
and for the second one you can have it like this: