[Tabs] Nav bar should paginate labels on overflow

Bug, feature request, or proposal:
Feature request
What is the expected behavior?
"md-tab-nav-bar" component to have same functionality / visual fidelity as the "md-tab-group" component.
What is the current behavior?
The 2 components are disjoint and improvements made in "md-tab-group" component won't show up in the "md-tab-nav-bar" component
What are the steps to reproduce?
See the default demo included in this repository
What is the use-case or motivation for changing an existing behavior?
I am building a large application that uses lazy loaded modules to implement specific features. I want to display specific functionality in tabs. For example we have a customer object which can contain up to 11 tabs which represent specific data pertaining to this customer.
The current "md-tab-group" implementation is already looking great (Dynamic height, scrolling, pagination when tabs exceed container width etc..) But with the "md-tab-nav-bar" component none of these features are available.
Which versions of Angular, Material, OS, browsers are affected?
Material 2.0.0-alpha.11
Is there anything else we should know?

Unlike MdTabGroup, MdTabNavBar doesn't own the body, so I'm not sure whether it should support dynamic height. However I would desperately want to have pagination/scrolling and compact mode for narrow screens to be implemented for MdTabNavBar.

Sure, pagination/scrolling would be very nice!

+1

I may be suffering from a related issue. Cant seem to get lists to be independently scrollable  within a tab.
see this plunkr for demo: http://plnkr.co/edit/h67A8ZSeH747E3oYKdv5?p=preview

+1

+1

Is there a published timeframe for pagination on MdTabNavBar?

Also desperately need this functionality.

Any news?

Also interested in updates as well.

This feature is very necessary

+1

any workarounds while we wait? ;)
I need this too.. meanwhile I'll try to write my own workaround

+1

almost one year later ... any news on that ? no wonder why most of the dev move the react ...

@anymos This is an open source project. If you need something, you can always create and use a fork or send a PR. Most projects I work with have more incoming feature requests than developers can implement. I expect this should not be a surprise to many developers.
Please try to keep comments constructive.

I have built a workaround for this issue.
I've put the nav bar in a div and I added a overflow-x: hidden and added a display: flex to it.
In the component I've taken control of the div and used it's scrollLeft property(div.nativeElement.scrollLeft)
Afterwards I added 2 buttons which constrolled the left/right scrolling.
It's an easy and quick solution until this issue is resolved fully.

@qwr1000 Hey, could you post a codepen for your quickfix?

@qwr1000 Thanks for the idea!
I created a simple component using styles form tab header. Here's the code: http://plnkr.co/edit/8locpYNLpLEDOKxWneY7

@andrewseguin do you still need help with that fork?

Here you guys go!
https://angular-material2-tab-nav.stackblitz.io
https://angular-material-priority-nav.stackblitz.io

I like https://angular-material-priority-nav.stackblitz.io/ really a lot - can we have that out of the box? pretty please!

@tommyc38 and @pgrm both of those break the material spec, which I think this repo should be against IMO. @andrewseguin I'm going to take a whack at styling those tabs. Should I just base it off the spec, or use the design that currently exists. Your branch currently has the styles based on the existing mat-tabs but just from a brief comparison, those also break the material spec.

@tommyc38 could you please provide the link to the source code. Thankyou

Any news on this?

how about this lol?
for me is working. I am surprised nobody try this? 👍

    <mat-tab-group>
    <mat-tab>
            <ng-template mat-tab-label>

            </ng-template>

    </mat-tab>
</mat-tab-group>

@everyone

@daiky00 it looks fine. but the keyboard navigation does not work

@daiky00 , the tab labels are fine, but the pagination arrows are missing.

I made tab-link directive to solve this problem.
I don't know how to attribute; so leave code here
add tabLink directive to your module.
import {Directive, ElementRef, Host, Input, OnDestroy, OnInit, Renderer2} from '@angular/core';
import {MatTab, MatTabGroup} from '@angular/material';
import {Subscription} from 'rxjs';
import {ActivatedRoute, Router, RouterLink} from '@angular/router';

@Directive({
  selector: '[tabLink]'
})
export class TabLinkDirective extends RouterLink implements OnInit, OnDestroy {
  subs = new Subscription();
  parent: MatTabGroup;

  @Input()
  tabLink;

  constructor(private host: MatTab, @Host() parent: MatTabGroup, private routerc: Router, route: ActivatedRoute, renderer: Renderer2, el: ElementRef) {
    super(routerc, route, null, renderer, el);
    this.parent = parent;
  }

  ngOnInit(): void {
    this.routerLink = this.tabLink;
    this.subs.add(this.parent.selectedTabChange.subscribe(e => {
      if (!this.host.isActive)
        return;
      const extras = {
        skipLocationChange: this.skipLocationChange,
        replaceUrl: this.replaceUrl,
      };
      this.routerc.navigateByUrl(this.urlTree, extras);
      return true;
    }));
  }

  ngOnDestroy(): void {
    this.subs.unsubscribe();
  }
}

and you can use like below
 <mat-tab-group>
   <mat-tab tabLink="/a" label="1"></mat-tab>
   <mat-tab tabLink="/b" label="1"></mat-tab>
   <mat-tab tabLink="/c" label="1"></mat-tab>
 </mat-tab-group>

@zerohouse
Hi, I tried to implement your solution but I get the following error:

ERROR in src/app/components/tabs/tabSelector/tabLink.ts(22,11): error TS2345: Argument of type 'Router' is not assignable to parameter of type 'Router'.
Property 'rootComponentType' is missing in type 'Router'.

related to:
  public constructor(private routerc: Router, private host: MatTab, @Host() parent: MatTabGroup,
                     route: ActivatedRoute, renderer: Renderer2, el: ElementRef) {
    super(routerc, route, null, renderer, el);
    this.parent = parent;
  }

I don't really understand... Any Idea why ?
Thanks!

Hey @zerohouse @Zehirlolz I get: Can't bind to 'tabLink' since it isn't a known property of 'mat-tab'.

@Zehirlolz @mhosman
i generate router-tab directive module
https://github.com/zerohouse/router-tab

@zerohouse Installed and working like charm

@zerohouse awesome!

@zerohouse thank you. Works great.  Can we get this merged into the main repo?

@aoakeson Yes. thank you for suggest

@daiky00 's workaround is longer working as of 6.4.7:
https://stackblitz.com/edit/angular-material2-issue-hzhvgp

@benedict-odonovan check the package of @zerohouse https://github.com/zerohouse/router-tab

Almost 2 years and the issue still not fixed... :/

Was zerohouse's solution ever offered as a pull-request? If so maybe add that here and if not, maybe that would be the normal way to speed up getting the fix into main? I suppose that's the whole point of having all this open-source on GitHub in the first place? ;)

My workaround for this:
// template
<mat-tab-group (selectedTabChange)="navigate($event)">
    <mat-tab *ngFor="let tab of TABS"
             [label]="tab.title"></mat-tab>
</mat-tab-group>

// TS
const TABS: Tab[] = [
    {
        route: 'routeHere',
        index: 0,
        title: 'Title',
        component: SomeComponent
    },
    ...
}

navigate($event: MatTabChangeEvent) {
    const tab = TABS[$event.index];
    this.router.navigateByUrl(tab.route);
}

Thanks, but this doesn't automatically set active tab on route change.

Thanks, but this doesn't automatically set active tab on route change.

It's not supposed to do that. You still can write simple service for your needs.

Here is a full working workaround with exactly the same behavior than mat-tab-nav-bar:
router-tab.component.ts:
import { AfterViewInit, Component, ContentChildren, Directive, Input, OnDestroy, QueryList, ViewChild, ViewChildren, ViewEncapsulation } from '@angular/core';
import { MatTab, MatTabGroup } from '@angular/material';
import { NavigationEnd, Router, RouterLink } from '@angular/router';
import { Subscription } from 'rxjs';

/**
 * Directive to retrieve mat-tab options from router-tab.component.html
 */
@Directive({
	selector: 'mat-tab[routerLink]'
})
export class RouterTab {

	@Input()
	public routerLinkActiveOptions: {
		exact: boolean;
	};

	constructor(public tab: MatTab, public routerLink: RouterLink) {
	}
}

/**
 * Directive to set tabs within app-router-tab
 */
@Directive({ selector: 'app-router-tab-item' })
export class RouterTabItem {

	@Input()
	public routerLink: RouterLink;

	@Input()
	public routerLinkActiveOptions: {
		exact: boolean;
	};

	@Input('disabled')
	public disabled: boolean;

	@Input()
	public label: string;
}

/**
 * RouterTab component with the same behavior than mat-tab-nav-bar
 */
@Component({
	selector: 'app-router-tab',
	templateUrl: './router-tab.component.html',
	styleUrls: ['./router-tab.component.scss'],
	encapsulation: ViewEncapsulation.None
})
export class RouterTabComponent implements AfterViewInit, OnDestroy {

	@ViewChild('matTabGroup')
	public matTabGroup: MatTabGroup;

	@ContentChildren(RouterTabItem)
	public routerTabItems !: QueryList<RouterTabItem>;

	@ViewChildren(RouterTab)
	public routerTabs: QueryList<RouterTab>;

	private subscription = new Subscription();

	constructor(private router: Router) {
	}

	ngAfterViewInit() {
		// Remove tab click event
		this.matTabGroup._handleClick = () => { };
		// Select current tab depending on url
		this.setIndex();
		// Subscription to navigation change
		this.subscription.add(this.router.events.subscribe((e) => {
			if (e instanceof NavigationEnd) {
				this.setIndex();
			}
		}));
	}

	ngOnDestroy(): void {
		this.subscription.unsubscribe();
	}

	/**
	 * Set current selected tab depending on navigation
	 */
	private setIndex() {
		this.routerTabs.find((tab, i) => {
			if (!this.router.isActive(tab.routerLink.urlTree, tab.routerLinkActiveOptions ? tab.routerLinkActiveOptions.exact : false))
				return false;
			tab.tab.isActive = true;
			this.matTabGroup.selectedIndex = i;
			return true;
		});
	}
}

router-tab.component.html:
<mat-tab-group #matTabGroup class="hide-tab-wrapper">
	<mat-tab *ngFor="let tab of routerTabItems" [routerLink]="tab.routerLink" [disabled]="tab.disabled" [routerLinkActiveOptions]="tab.routerLinkActiveOptions">
		<ng-template mat-tab-label>

			{{ tab.label }}
		</ng-template>
	</mat-tab>
</mat-tab-group>

router-tab.component.scss:
.hide-tab-wrapper .mat-tab-body-wrapper {
	display: none !important;
}

.router-tab-link {
	position: absolute;
	height: 100%;
	width: 100%;
}

router-tab.module.ts: (import this module in your app.module.ts or shared module, depending on your case)
import { CommonModule } from '@angular/common';
import { NgModule } from '@angular/core';
import { MatTabsModule } from '@angular/material';
import { RouterModule } from '@angular/router';
import { RouterTab, RouterTabComponent, RouterTabItem } from './router-tab.component';

@NgModule({
	imports: [
		CommonModule,
		RouterModule,
		MatTabsModule
	],
	declarations: [
		RouterTabComponent,
		RouterTabItem,
		RouterTab
	],
	exports: [
		RouterTabComponent,
		RouterTabItem,
		RouterTab
	]
})
export class RouterTabModule { }

usage:
<app-router-tab>
	<app-router-tab-item [routerLink]="tab1" label="Tab 1" [routerLinkActiveOptions]="{exact: true}"></app-router-tab-item>
	<app-router-tab-item [routerLink]="tab2" label="Tab 2"></app-router-tab-item>
	<app-router-tab-item [routerLink]="tab3" label="Tab 3"></app-router-tab-item>
</app-router-tab>

With this component, pagination works like a charm.

app-router-tab

This worked beautifully for me... Thank you very much Ben... 👍

@BenDevelopment this solution worked beautifully for our situation. I slightly modified it and made it work for us, but the use of Directives to get the routerLinkActive attribute was genius. Didn't think of it that way.

@BenDevelopment really smart solution, thank you.

 It's been surfaced as an a11y issue in Google since you can lose some of the tabs with you zoom the browser in.

Because @angular/material can't have a dependency on @angular/router

this makes complete sense but is equally as brutal

Try this

<mat-tab *ngFor="let x of [1,2,3,4,5,6,7]">

{{x}}

On style.scss
.mat-tab-body-wrapper {
display: none;
}

Caliing TabHeader's updatePagination() method manually is updating pagination.
tabGroup._tabHeader.updatePagination()
https://github.com/angular/components/blob/03a9a39c49b75b50f689a38c7dcbf52bc007f657/src/material/tabs/tab-header.ts#L321

A quick hack, works brilliantly:
.mat-tab-header-pagination {
  display: flex;
}

if your entire tabs are in a div with class .xyz then
.xyz {
  width: 100%;
}

(I'm going through the highest voted issues today an commenting on their status)
Definitely one of the issues we really should do, and AFAIK shouldn't be too large of an undertaking. It's one of those things that has consistently been just lower priority than other work. I'll see if we can find someone to contribute something here in the near future since it was recently raised as an a11y issue.

Hey guys, here is a very simple solution to this issue.
And thumbs up @akopchinskiy ; it's very simple, and just want to add on top of what he offers:
template.component.html

Add your router outlet where you want to display your content

<mat-tab-group [selectedIndex]="0" (selectedTabChange)="navigate($event)">
    <mat-tab *ngFor="let tab of navPaths" [label]="tab.label"></mat-tab>
</mat-tab-group>

<router-outlet></router-outlet>

template.component.ts

This is where the big difference is
You may use this.router.navigateByUrl(tab.path) as proposed by @akopchinskiy
But keep in mind that if doing so, the provided URL must be absolute, as per documentation
So, I think using navigate() is much better since it provides you with more flexibility:
you can provide commands with options where you want your route to start, either absolute or relative, based on the activated route, like below

import { Component, OnInit } from '@angular/core';
import { Router, ActivatedRoute } from '@angular/router';
import { MatTabChangeEvent } from '@angular/material/tabs';

@Component({
  selector: 'template',
  templateUrl: './template.component.html',
  styleUrls: ['./template.component.css']
})
export class TemplateComponent implements OnInit {

navPaths = [
   {
        label: 'First Tab'
        path: 'path-one',
        idx: 0
    },
    {
        label: 'Second Tab'
        path: 'path-two',
        idx: 1
    },
    ...
}

constructor(private activatedRoute: ActivatedRoute) {}

ngOnInit() {}

navigate(event: MatTabChangeEvent) {
    const tabData = this.navPaths[event.index];
   this.router.navigate([tabData.path], { relativeTo: this.activatedRoute });
}

Now, why is this working?
The key here is the (selectedTabChange)="navigate($event)" which captures every change event based on focus or tab selection (click event). Using this emitter, we capture the index of the selected tab (event.index), pass it to the data source and get the data of the selected tab (const tabData = this.navPaths[event.index]), and then grab the path (tabData.path) of the data to be displayed.
To display the current selected tab, we need to do two things:

first, set the selectedIndex input property to "0" ([selectedIndex]="0"), on the component
second, in the template-routing.module.ts file:

import { NgModule } from "@angular/core";
import { CommonModule } from "@angular/common";
import { RouterModule, Routes } from "@angular/router";
`

`
import { NgModule } from "@angular/core";
import { CommonModule } from "@angular/common";
import { RouterModule, Routes } from "@angular/router";

import { TemplateComponent } from "./template.component";

const routes: Routes = [
  {
    path: "",
    component: TemplateComponent,
    children: [
       // You must redirect your route, it's the key here
       { path: '', redirectTo: "path-one", pathMatch: 'full' },
       {
          path: "property-alerts",
          // This will depend on how you want to load your data: eagerly or lazily; I use lazy loading here
          loadChildren: "../../path-one/path-one.module#PathOneModule"
       },
       ...
    ]
  }
];

@NgModule({
  imports: [
    CommonModule,
    RouterModule.forChild(routes)
  ],
  exports: [RouterModule]
})
export class TemplateRoutingModule { }

That's it! Please let me know how it goes.
By the way, if this is not a feature module, please use RouterModule.forRoot(routes) instead.

Tried your last solution. Works fine for me except updating the current selected tab. I fixed this issue in a slightly different way.
In the template use a numeric variable for the selected index:
<mat-tab-group [selectedIndex]="tabIndex" (selectedTabChange)="navigate($event)">     <mat-tab *ngFor="let tab of navPaths" [label]="tab.label"></mat-tab> </mat-tab-group>
In the controller do the following (snippets):

constructor(private activatedRoute: ActivatedRoute, private router: Router) { }

ngOnInit() {
    const currentUrl = this.router.url;
    const tabData = this.navPaths.find(x => x.path === currentUrl);

    if(tabData) {
      this.tabIndex = tabData.idx;
    }
  }

I saw this issue when it was only some months old. That was more than two years ago. In that time, i moved two times, had three girlfriends, changed my name, started drinking, stopped drinking, begun some personal projects, found work, and graduated twice. It's beautiful to see a life pass around a Github issue.

@elizabeth-dev Thank you for sharing. It also looks like you opened your first GitHub issue and PR during that time (2018) as well! If you are interested in making your first contribution to Angular, I would be happy to help. You may also be interested in joining a community for Angular developers who speak Spanish.

The issue (at least in my case) was that i set "overflow: auto" in a parent component. After removing it and the arrows were back.


Proxy incorrectly relays compressed body

I'm testing via wget --no-check-certificate -e use_proxy=yes -e http_proxy=<IP_ADDRESS>:8000 http://www.google.com.
The request header includes Accept-Encoding: identity which is to say the client can't (or won't) process any encoding transformation.
Code in RequestHandler adds gzip and deflate encodings on the request, but the proxy does not seem to decode the body before passing it back to the client.  As a result, wget saves the compressed contents rather than the html as we'd want.
        private void PrepareRequestHeaders(HeaderCollection requestHeaders)
        {
            if (requestHeaders.HeaderExists(KnownHeaders.AcceptEncoding))
            {
                requestHeaders.SetOrAddHeaderValue(KnownHeaders.AcceptEncoding, "gzip,deflate");
            }

            requestHeaders.FixProxyHeaders();
        }

I don't quite understand why this code exists.
Interested in what you guys think the proper fix is.

The code here rewrites compression headers of request before sending to server, informing that we only accept these two specific types of compression. This is because we don't have any other decompression supported in our proxy other than these two.
The client will received the compressed body from server as it is, with the response headers mentioning the compression used by server based on the options we gave through request.
I see the problem here. The client mentioned that it cannot accept a compressed response. So we should not override that in this particular case.
https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Accept-Encoding

Yeah.  The problem is that the client gets to choose what set of encodings it supports.
If the client doesn't include any encodings that the proxy understands then the proxy can't really alter the body, can it!

The proxy can, by instructing the server that we only accept identity (no compression at all).
i.e, If the client sends accept-encoding that are all not understood by proxy, then we should certainly overwrite it accept-encoding:identity  before we sent it to server. In fact we should add "gzip,deflate, indentity"  for all requests in above snippet you added.

I'm not quite following you- for example
Client: Accept-Encoding: SomethingProxyDoesntKnow
As I see it, the proxy has 2 options:

do opaque pass through to the server.
reject the request

If the proxy alters the Accept-Encoding it will not be able to re-encode the response to the client.

If the proxy alters the Accept-Encoding it will not be able to re-encode the response to the client.

It will be able to sent the client the body uncompressed with Content-Encoding:identity. In fact when we overwite Accept-Encoding: SomethingProxyDoesntKnow to Accept-Encoding: identity, server have no option to pick. It will return the result uncompressed with header Content-Encoding:identity

ah, ok- got it.  so really the proxy needs to strip unknown encodings from Accept-Encoding to make sure it doesn't receive a response it can't handle.
perhaps that should only happen if the api client is interested in handling that particular request.

Yes. We don't read the body to memory unless API user requested it (we relay it directly to client). But we do overwrite the header in all cases currently.

This should be fixed now.

Reopen if any issue arise.

@justcoding121 Did you add code to strip the encoding if the client doesn't support gzip/deflate?  I didn't see that in the commit.

Yes. Correct me if the logic in referenced commit above is wrong.

hmm.... i'm not seeing the logic.  i see changes to RequestHandler.PrepareRequestHeaders to add gzip/deflate but i don't see any patches that strip the compression on the way back to the client if they don't support it.  what file/line should i be looking at?

Why do we need to strip headers on response? We let server know that we only support compressions that are both supported by client and proxy. Server will only pick from the choices we sent. Otherwise its a protocol violation on server side.

ah ok, my bad on that.  now that i understand- perhaps "identity" should be in the HashSet with deflate/gzip.  Otherwise I think you add it twice if the client sends it.

No problem. Notice that I did not implement the efficient solution discussed above, which is little bit more complicated. But this would fix the bug, which was the priority. Enhancements are welcome in future.


Support JS promises

It would be cool if you could pass a Promise to createAsyncRenderer instead of the status object. The resolved promise result should be passed to the completed successfully callback.

The renderer expects the consumer to manage the long running process and expects the consumer to either re-create the renderer when the process's status changes or change the status in the arguments reference that is passed to the renderer creator function. To pass the ongoing long running process to the renderer creator function pushes the responsibility of managing its status changes to the renderer.
I think this feature can be added to the renderer but I wonder if it makes sense given the current pattern.

That being said, a cool pattern may be to do something like this in a React + Redux environment:
function MyData(props: { id: number }) {
  const dispatch = useAppDispatch()
  const dataRenderer = createAsyncRenderer(dispatch(asyncThunks.loadData(id)))

  return dataRenderer(data => (
{data}
))
}

Actually, that doesn't make sense because you should not dispatch a thunk like that in the render function (🤦♂).

maybe something like this would make more sense
function MyData(props: { id: number }) {
  const dispatch = useAppDispatch()
  const loadMyData = useCallback(() => dispatch(asyncThunks.loadData(id)), [dispatch])
  const dataRenderer = useCreateAsyncRenderer(loadMyData)

  return dataRenderer(data => (
{data}
))
}


Don't override shell on Windows

Assume that the user set the shell options correctly before running vim-plug so that the user can use bash or powershell as their shell.
If this works, port the fix to fzf's Vim plugin to resolve related issues. If there's time, avoid the batchfile on Neovim or Vim jobs before porting to fzf.
Close https://github.com/junegunn/vim-plug/issues/815

Merged, thanks!


Stand alone autofocus attribute

[ ] - The validator throws an error when trying to use the autofocus attribute without a value. Below is the error thrown:

As I was researching about the autofocus attribute, I came across this information on Stack Overflow: "In HTML, you use boolean attributes with or without values as you like. A boolean, for W3C, like autofocus can be written like that autofocus or autofocus="autofocus" or also autofocus="".`

For reference from nick:

need to accept stuff like <input autofocus>, <input autofocus=""> and <input autofocus="autofocus"> as having an autofocus attribute with a value of true

Looking into this a bit more, this issue can be applied to any boolean type attributes. From what I could find these include:
allowfullscreen
async
autofocus
checked
compact
declare
default
defer
disabled
formnovalidate
hidden
inert
ismap
itemscope
multiple
multiple
muted
nohref
noresize
noshade
novalidate
nowrap
open
readonly
required
reversed
seamless
selected
sortable
truespeed
typemustmatch

https://github.com/codeschool/htmlTagValidator/pull/18


Autocomplete The Movie DB

Adding a method to populate VOD movie data automatically based on The Movie DB's API (www.themoviedb.org/documentation/api), this method searches the API for the name of the movie similar to what was typed in the title, and we confirm if the data is consistent.

We will consider integrating the recommended API from your side


Support Images in Messages

I have created a PR for this here
Would be great to have it reviewed @jxnl


[5.5] Fix column listing for postgres db driver.

PR for fixing issue #19496
Reminder
When postgresql database have multiple schemas, if you have the same table name in 2 different schemas then the getColumnListing() method will not return columns of the table that is in the currently used schema bu columns that are in the 2 tables.
This is due to compileColumnListing() method that does not consider the schema name of the table.
According to what was made in this PR #15535, I only consider the first schema if it's defined as an array in the configuration file.
Changes

Add getColumnListing() method in Illuminate\Database\Schema\PostgresBuilder.
Update compileColumnListing() method in Illuminate\Database\Schema\Grammars\PostgresGrammar to filter listing by schema name too.

@themsaid can you verify this doesn't cause any issues with Postgres and works as expected?

Yes I believe it'll work as expected, the breaking part is that in 5.4 a check if a table exists will pass if the table exist in any schema, in 5.5 with this PR it'll only pass if the table exists in the default schema.


player failed to load.

DotLottieAnimation(animationData: blogGif, config: AnimationConfig(autoplay: true, loop: true)).view()
let blogGif = """
{"v":"5.5.8","fr":29.9700012207031,"ip":0,"op":82.0000033399285,"w":232,"h":231,"nm":"Comp 1","ddd":0,"assets":[],"layers":[{"ddd":0,"ind":1,"ty":4,"nm":"Shape Layer 1","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[116,116,0],"ix":2},"a":{"a":0,"k":[0,-1,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.39,0.39,0.39],"y":[0,0,0]},"t":0,"s":[64,64,100]},{"i":{"x":[0.1,0.1,0.1],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":23,"s":[46,46,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.9,0.9,0.9],"y":[0,0,0]},"t":45,"s":[64,64,100]},{"t":81.0000032991976,"s":[64,64,100]}],"ix":6,"x":"var $bm_rt;\n$bm_rt = loopOut();"}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"a":0,"k":[192,192],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"nm":"Ellipse Path 1","mn":"ADBE Vector Shape - Ellipse","hd":false},{"ty":"st","c":{"a":0,"k":[1,0.823528992896,0,1],"ix":3},"o":{"a":0,"k":0,"ix":4},"w":{"a":0,"k":5,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"gf","o":{"a":0,"k":100,"ix":10},"r":1,"bm":0,"g":{"p":3,"k":{"a":0,"k":[0,0.12156862745098039,0.6352941176470588,1,0.5,0.07058823529411765,0.8470588235294118,0.9803921568627451,1,0.5529411764705883,0.8274509803921568,0.8156862745098039],"ix":9}},"s":{"a":0,"k":[0,-98],"ix":5},"e":{"a":0,"k":[0,96],"ix":6},"t":1,"nm":"Gradient Fill 1","mn":"ADBE Vector Graphic - G-Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,-1],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Ellipse 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":300.00001221925,"st":0,"bm":0},{"ddd":0,"ind":2,"ty":4,"nm":"Shape Layer 2","sr":1,"ks":{"o":{"a":0,"k":19,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[116,116,0],"ix":2},"a":{"a":0,"k":[0,-1,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1.065]},"o":{"x":[0.39,0.39,0.39],"y":[0,0,0]},"t":0,"s":[94,94,100]},{"i":{"x":[0.1,0.1,0.1],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,-0.114]},"t":23,"s":[47,47,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":63,"s":[94,94,100]},{"t":81.0000032991976,"s":[94,94,100]}],"ix":6,"x":"var $bm_rt;\n$bm_rt = loopOut();"}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"a":0,"k":[192,192],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"nm":"Ellipse Path 1","mn":"ADBE Vector Shape - Ellipse","hd":false},{"ty":"st","c":{"a":0,"k":[1,0.823528992896,0,1],"ix":3},"o":{"a":0,"k":0,"ix":4},"w":{"a":0,"k":5,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"gf","o":{"a":0,"k":100,"ix":10},"r":1,"bm":0,"g":{"p":3,"k":{"a":0,"k":[0,0.12156862745098039,0.6352941176470588,1,0.5,0.07058823529411765,0.8470588235294118,0.9803921568627451,1,0.5529411764705883,0.8274509803921568,0.8156862745098039],"ix":9}},"s":{"a":0,"k":[0,-98],"ix":5},"e":{"a":0,"k":[0,96],"ix":6},"t":1,"nm":"Gradient Fill 1","mn":"ADBE Vector Graphic - G-Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,-1],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Ellipse 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":300.00001221925,"st":0,"bm":0},{"ddd":0,"ind":3,"ty":4,"nm":"Shape Layer 4","sr":1,"ks":{"o":{"a":0,"k":12,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[116,116,0],"ix":2},"a":{"a":0,"k":[0,-1,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.39,0.39,0.39],"y":[0,0,0]},"t":0,"s":[119,119,100]},{"i":{"x":[0,0,0],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":23,"s":[27,27,100]},{"t":81.0000032991976,"s":[119,119,100]}],"ix":6,"x":"var $bm_rt;\n$bm_rt = loopOut();"}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"a":0,"k":[192,192],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"nm":"Ellipse Path 1","mn":"ADBE Vector Shape - Ellipse","hd":false},{"ty":"st","c":{"a":0,"k":[1,0.823528992896,0,1],"ix":3},"o":{"a":0,"k":0,"ix":4},"w":{"a":0,"k":5,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"gf","o":{"a":0,"k":100,"ix":10},"r":1,"bm":0,"g":{"p":3,"k":{"a":0,"k":[0,0.12156862745098039,0.6352941176470588,1,0.5,0.07058823529411765,0.8470588235294118,0.9803921568627451,1,0.5529411764705883,0.8274509803921568,0.8156862745098039],"ix":9}},"s":{"a":0,"k":[0,-98],"ix":5},"e":{"a":0,"k":[0,96],"ix":6},"t":1,"nm":"Gradient Fill 1","mn":"ADBE Vector Graphic - G-Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,-1],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Ellipse 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":300.00001221925,"st":0,"bm":0}],"markers":[]}
"""

hi @Yyilin001 It is indeed failing to load with a string, in the meantime it works if you load it as a file.
Please bundle it as an asset file, and load it like this:
struct TestBedView: View {
    let anim: DotLottieAnimation

    init() {
        anim = DotLottieAnimation(fileName: "test_animation",
                               config: AnimationConfig())
    }

    var body: some View {
        VStack {
            anim.view()
        }
    }
}

@Yyilin001 after some tests, you can load as a string however you have to remove the line breaks, all 3 "\n"s from the string, it will then load correctly.


Remove feature flag for payment link

Remove payment link feature flag and update labels and descriptions for reference number and payment links settings.

can we put 0b4ac23 into a separate PR please
then the team can test everything while the feature flag is still enabled

can we put 0b4ac23 into a separate PR please
then the team can test everything while the feature flag is still enabled

We can do this, but we will need to add a few more feature flags as the content changes affect headings/links/descriptions that are already in live. So thought we could get the team to test on the testable branch and only merge this in when we are happy for release. Happy to chat over a call


Feat: Decoupled OptimismPortal

The OptimismPortal currently enshrines the proof system in its implementation. You can observe this fact with the following links:

https://github.com/ethereum-optimism/optimism/blob/3f7a8ad1b8030a3d01d44bc57bf0553a249eae23/packages/contracts-bedrock/src/L1/OptimismPortal.sol#L71
https://github.com/ethereum-optimism/optimism/blob/3f7a8ad1b8030a3d01d44bc57bf0553a249eae23/packages/contracts-bedrock/src/L1/OptimismPortal2.sol#L90

We should move the proof system outside of the OptimismPortal and instead only enshrine the concept of an authorized caller that can pass through a Types.WithdrawalTransaction to execute. It would be assumed that this other caller did verify the proof.
This will help to reduce the size of the OptimismPortal contract, as it is right at the codesize limits. We do not want to be in a position where we need to move quickly and cannot due to the code being too large. This problem was hit when porting custom gas token to the OptimismPortal2.
This will also help to make it easier to maintain things like op-succinct. This will unblock us from removing the L2OutputOracle from the codebase without breaking other integrations.
The upgrade path can be straight forward for tooling like viem, if the semver is above a certain version then viem can grab the address of the authorized caller contract from the portal and then send its transaction to the authorized caller rather than the portal. The authorized caller can maintain the same ABI of the portal for simplicity.
The name for the authorized caller could be "verifier" as its role would be to verify proofs.

I would suggest the portal retains the same ABI but can forward to the authorised caller as needed (ie build in backwards compatibility).  Breaking the withdrawal API is a big pain in the neck and something we should avoid if possible.  Otherwise this will likely be delayed until something else needs to break the API and I'm not sure what that would be...

I would suggest the portal retains the same ABI but can forward to the authorised caller as needed (ie build in backwards compatibility). Breaking the withdrawal API is a big pain in the neck and something we should avoid if possible. Otherwise this will likely be delayed until something else needs to break the API and I'm not sure what that would be...

Yeah, we should be able to manage this for the critical path (proveWithdrawalTransaction + finalizeWithdrawalTransaction + events)
As for the administrative functions (setRespectedGameType + blacklistDisputeGame) & state vars (respectedGameType, disputeGameBlacklist, respectedGameTypeUpdatedAt), what do you think about these? These should not be consumed by anyone else, except for maybe viem. It would be very nice to move these to a different location (without a fall-through, so that people like succinct don't need to have dead code in their bridge.)

If I could wave a magic wand here, what I'd like to do (roughly) is:

Create a new interface, IProofSystem. This would have:

A view function for fetching an output proposal by index.
A view function for checking a withdrawal's validity. Things like timestamps, etc. should be passed in. It would be on the portal to pass in honest values. It should not need to call-back to reference external state.
For other, lower-level concerns (i.e. the blacklist, respected type, etc.), these can be hidden underneath the interface's function impls.

Remove DG-specific functions and state vars from the OptimismPortal2.
Add in the IProofSubmitter to the portal, re-using the slot that the DisputeGameFactory is currently stored in.
Add gaps to the respectedGameType, respectedGameTypeUpdatedAt, and disputeGameBlacklist slots.
Retain the other ABI verbatim (proveWithdrawalTransaction + finalizeWithdrawalTransaction, events, etc.)

Usage Analysis

setRespectedGameType

0 use in viem
0 use in op-challenger
1 usage in DeputyGuardianModule

blacklistDisputeGame

0 use in viem
0 use in op-challenger
1 usage in DeputyGuardianModule

respectedGameType

1 usage in viem here
0 use in op-challenger
0 use in DeputyGuardianModule

disputeGameBlacklist

0 use in op-challenger
0 use in DeputyGuardianModule
0 use in viem

respectedGameTypeUpdatedAt

0 use in op-challenger
0 use in DeputyGuardianModule
0 use in viem

checkWithdrawal

0 use in op-challenger
0 use in DeputyGuardianModule
1 usage in viem here

With this, breaking the API would not be so painful, it doesn't look like. It would also remove periphery codepaths from our most important contract, which is always good. However on the front of breaking the core withdrawal path API, we should not do that imo.

Yeah agreed the key priority is maintaining compatibility with the withdrawal flow. Moving things like respectedGameType, disputeGameBlacklist and respectedGameTypeUpatedAt is likely to break some integrations like ENS but I feel like they're digging into a lot of implementation details in a way that isn't particularly ideal for them now anyway. They really just want a function that gives the latest finalized output root which some of the proposed AnchorStateRegistry changes may give if it only updates after the air gap and has a single anchor state for all game types.
I'd expect that respectedGameType is a key part of the withdrawal workflow and we need to preserve compatibility for it. You need to know what type of game to use when proving your withdrawal.  We could deprecate it and keep something around for backwards compatibility for a while then delete later but I don't think should just break it.  That one use in viem likely translates to a lot of users depending on it.
Same for checkWithdrawal, it seems important to expose a simple way for callers to ask if a withdrawal is ready to be finalized or not. Ideally we'd have a method that makes it easy to check if a given set of params (eg a game) is suitable to be used to prove a withdrawal - it could then check the blacklist as well which viem doesn't seem to be doing and may cause issues if we ever need to blacklist games.
The other question for me is what the point of entry should be for people trying to use the ABI. Do you need to make calls to both OptimismPortal and the IProofSubmitter implementation? If so, all withdrawal code needs to support all possible proof submitter implementations separately. Ideally I think a withdrawal could be completed using only OptimismPortal and be independent of the proof submitter implementation but I'm not sure how you'd find the appropriate game. Not the end of the world if we can't make it that general but having the the main usage be agnostic to the plugin implementation buys us a lot of flexibility. e.g. Succinct could use a different IProofSubmitter implementation and not need to have a custom integration with viem and any other withdrawal tools.
For the fall-through code, I'd say that people like succinct maintaining a fork of the OP Stack can easily remove it - they're already maintaining far more complex changes in the fork.
The functions with permissioned access are fine to just move as we know they're only used in limited fashion.
For monitoring, this shouldn't affect dispute-mon since it only monitors the dispute games. It will likely require updates to our other withdrawal monitoring though and I'm not familiar with how flexible that code is. I don't see anything in this that would hide information and cause monitoring problems - should just be a matter of updating the code to adjust where it gets the info from.


#91 Greeting bot added

this closes #91

Thanks for contributing !!

@ZapeeoSheikh @tusharzalte this one is also not counted in the Gssoc
as per my observation the label must be in small case like gssoc'23
please look into that

@ZapeeoSheikh bro please remove these labels as i have added the bots in other repo also
so it will be counted in spam
Happy to contribute , will look for some other issues
just remove the labels thanks :)


Default language tweaks

Can you change the default name of the "Polling Location" tab to "Voting Location" and "Polling Hours" to "Voting Hours"?  If this could be done today, that would be great.
@alexkonrad @itsjustdanger

@acohen84 We can do that today--I'll let you know when it's updated.

This is updated.

@alexkonrad Washington State just pointed out that we missed one.  Can you change "polling location" in the map legend to "voting location"?

Updated.


Server at * requires a cluster secret. Please provide it with the env var PRISMA_MANAGEMENT_API_SECRET

Describe the bug
My first time trying Instant Prisma server deployment with  Heroku integration.  But when i run prisma deploy i get the following error Server at * requires a cluster secret. Please provide it with the env var PRISMA_MANAGEMENT_API_SECRET.  After adding the PRISMA_MANAGEMENT_API_SECRET in the .env file i get another new error cluster secret in env var PRISMA_MANAGEMENT_API_SECRET does not match for cluster default
Am running on Ubuntu 19.04 and running prisma version 1.34.8

In version 1.34.7 released some days ago there was a bug in native Scala implementation of the authentication module.
It was resolved in https://github.com/prisma/prisma/issues/4860 but I did not tested it yet.
In my case back to 1.34.6 was solution. Try come back to this version it is possible that this bug still require some work.

In version 1.34.7 released some days ago there was a bug in native Scala implementation of the authentication module.
It was resolved in #4860 but I did not tested it yet.
In my case back to 1.34.6 was solution. Try come back to this version it is possible that this bug still require some work.

@gustawdaniel It now works. Thanks mate.!


Present Segue

In this PR, we add PresentFadeSegue, PresentFadeInSegue and PresentFadeOutSegue to present viewController with Fade, FadeIn and FadeOut transition animations. Also update the transition.story to test these transitions. Now can we use segue to configure a custom present transition. Because Segue doesn't support IBInspectable, all segues have to use default duration 0.35.
Will work Transition playground to demonstrate all supported transition animations.
Relate to #19

:+1:


add support to configure healthCheckId if provided in source annotation

Hi @johngmyers  can you please review/approve this.
thanks
Rajat Jindal


unpkg @latest does not point to the latest version

Describe the bug
@latest does not point to the latest version
To Reproduce

Install signalr like this

      "provider": "unpkg",
      "library": "@microsoft/signalr@latest",
      "destination": "wwwroot/Scripts/",
      "files": [
        "dist/browser/signalr.min.js",
        "dist/browser/signalr.js"
      ]

It will install 5.0.9
But the latest version is 5.0.10

Expected behavior
Should be 5.0.10
Unpkg redirects properly: click this link https://www.unpkg.com/browse/@microsoft/signalr@latest/

I think this was a point in time issue, I tried it and it now installs 6.0.0.

@jimmylewis libman cache clean resolves this.
However I wonder how can it clean the cache faster. We publish OSS parts of our project to npm and want to update it right away, after the CDN picked up the changes

I think I understand better now.  Libman does cache the metadata results for each package for 1 day, so that if you're repeatedly querying the same data, it's already downloaded.  This behavior is intended to mitigate flakiness in the requests and is based on the assumption that most users will not need the absolute freshest data.  However, your scenario is exactly the opposite of that assumption.
I see two fixes that would both make lots of sense:

Add a setting for metadata cache timeout.  Currently it's hardcoded here.  Allowing this to be set to 0 would always request the provider metadata.
Add an option to libman cache clean to clean only cached metadata.  This would allow prompter discovery of changes such as new package versions, without removing the locally cached copies of library contents.

Revelant:  dotnet/AspNetCore.Doc#31452

@jimmylewis  When I set @microsoft/signalr@latest, it resolves to the wrong version. However<EMAIL_ADDRESS>resolves to the correct one. I just checked, so it shouldn't be related to 1-day cache but, using the CLI to clear and restore cache resolved the issue. Thanks for the detailed explanation and for showing the right way.

Oooh, I think I see the problem.  When libman caches the @latest version, it puts it into a folder named latest within the cache (as the version).  Since latest changes over time but the cache doesn't get cleared, a stale file from an older version would be used from the local cache (i.e. if you had used latest when it was 7.0.0, then when latest moves to 8.0.0, you'll still get the 7.0.0 file from the local cache).
Seems like the fix here should be to translate latest to a real version when saving files in the cache (i.e. in this case, ...@latest should save the files in a 8.0.0 folder within the cache).


Whitesource identified security issues in carbon-telemetry

Detailed description
Whitesource-ets ran on our git repo and found two vulnerabilities both because of dependencies in telemetry.  The specific issues and versions are listed below.  We are using carbon-components-angular version 4.40.1, but master still has the same telemetry dependency version.  Note that there seems to be a 0.1.0 version of telemetry, but I am not sure if it fixes these two issues.

https://github.com/advisories/GHSA-93q8-gq69-wqmw - High Severity Vulnerability

Regular expression for matching ANSI escape codes
Library home page: https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz
Dependency Hierarchy:
carbon-components-angular-4.40.1.tgz (Root Library)
telemetry-0.0.0-alpha.6.tgz
yargs-16.2.0.tgz
cliui-7.0.4.tgz
strip-ansi-6.0.0.tgz
❌ ansi-regex-5.0.0.tgz (Vulnerable Library)
Suggested Fix
Type: Upgrade version
Origin: https://huntr.dev/bounties/5b3cf33b-ede0-4398-9974-800876dfd994/
Release Date: 2021-09-17
Fix Resolution: ansi-regex - 5.0.1,6.0.1

https://github.com/advisories/GHSA-px4h-xg32-q955 - High Severity Vulnerability

Normalize a URL
Library home page: https://registry.npmjs.org/normalize-url/-/normalize-url-4.5.0.tgz
Dependency Hierarchy:
carbon-components-angular-4.40.1.tgz (Root Library)
telemetry-0.0.0-alpha.6.tgz
got-11.8.1.tgz
cacheable-request-7.0.1.tgz
❌ normalize-url-4.5.0.tgz (Vulnerable Library)
Suggested Fix
Type: Upgrade version
Origin: https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2021-33502
Release Date: 2021-05-24
Fix Resolution: normalize-url - 4.5.1,5.3.1,6.0.1

Hi team, may I know if the team has a plan to bump the version of @carbon/telemetry as this vulnerability has been detected by whitesource for 2 months?


BgOpacity on Partylist

I'm been messing around trying to make the partylist transparent, but I've been unable to fix it. I've edited .lua file in the BgOpacity slot, but it doesn't affect anything in game after reloading. Am I doing something wrong here? I've also tried editing the settings.lua in my saved layout folder but no change there either.

The BgOpacity setting is specifically for the unthemed party list.  For the themed party list, there is a background texture file in the theme folder.  If you want a transparent background, just make that file totally transparent.  (I recommend making a copy of the theme folder for any changes)


High is out of bounds for int32

WildWood always comes with error of "High is out of bounds for int32'.

Hi, can you give us some context, we have never seen this problem…
Best

Le 29 sept. 2021 à 04:31, Alim Samat @.***> a écrit :

WildWood always comes with error of "High is out of bounds for int32'.
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub, or unsubscribe.


CreateGeoJson GitHub action should invalidate the cache for index.html when we change the file

Since we don't expect to change the source for index.html often, it would be nice if the pipeline would invalidate the CloudFront cache whenever the file changes instead of having to wait a day which is how our updates get released when we complete #25.

My actual implementation on this is slightly different.  We invalidate the entire cache when we complete a pr.


[Bug report] crazyenchantments doesnt read Messages.yml

Crazyenchantments doesnt read Messages.yml, when modifying the text of the message configuration and reloading the server it is not reflected in the game.

Minecraft Server Version: [1.16.5]
Plugin Version: [v1.8 Dev Build v9 Update]

I made a spelling mistake! xD


Anticipate and counter rogue blank line between header comment lines (introduced by Prettier)

As you know, Prettier cleans .md files. One of the actions it will make it will add a an empty line between each HTML comment line. Which, in our case, results in:
...
<!-- START doctoc generated TOC please keep comment here to allow auto update -->

<!-- DON'T EDIT THIS SECTION, INSTEAD RE-RUN doctoc TO UPDATE -->
...

Now, when doctoc is ran next time, it "doesn't see" the <!-- DON'T EDIT THIS SECTION line and it erroneously adds another one. We end up with:
## Table of Contents

<!-- START doctoc generated TOC please keep comment here to allow auto update -->

<!-- DON'T EDIT THIS SECTION, INSTEAD RE-RUN doctoc TO UPDATE -->

<!-- DON'T EDIT THIS SECTION, INSTEAD RE-RUN doctoc TO UPDATE -->

Each prettier+doctoc cycle will add one more: line break +<!-- DON'T EDIT THIS SECTION, INSTEAD RE-RUN doctoc TO UPDATE --> row.
Now, I achieved that Prettier would allow comment blocks, ie. <!-- prettier-ignore-start --> and <!-- prettier-ignore-end --> to prevent this from happening.
However, we should take steps to make doctoc more intelligent too and make it tolerate the blank lines between <!-- START doctoc and <!-- DON'T EDIT THIS SECTION. doctoc should not add duplicate line because of a single line break.
Do you think it's technically achievable?

Not to derail this issue, but in the vein of making doctoc more intelligent with respect to prettier, can we add an option to auto-generate the prettier-ignore-start and prettier-ignore-end comments?

got fed up with doctoc and coded up my own solution

@revelt sounds good. Where can I find it? is it on npm?

@mkay581 it's maintenance CLI, "lect", https://www.npmjs.com/package/lect — basically, premise is that readme itself is a carcass, as long as you stick to certain pattern, existing readme content slots can be updated/replaced with new ones. That's opposed to generating from scratch or Jon Schlinkert's https://github.com/verbose/verb-generate-readme — where special template is kept.
Now, TOC is only one of components and it was quick to gather h* titles and generate slugs for each. But Lect also updates many other areas, including some files outside readme — for example, npmrc, rollup config and updates package.json.
@mkay581  Feel free to inspect the lect's source, fork it, link local CLI and tweak it to your needs.


Allow tabs to be used with react-router

Includes a storybook example
Checklist:

[x] Documentation  (Storybook example added)
[ ] Tests N/A
[x] Ready to be merged

Deploy preview for govuk-react processing.
Building with commit c163b92e39d10cfc6ca6be33af6b5a1c5b43dfdc
https://app.netlify.com/sites/govuk-react/deploys/5c8bc958ff7f0f00085b4423

Codecov Report

Merging #617 into master will increase coverage by <.01%.
The diff coverage is 100%.

@@            Coverage Diff             @@
##           master     #617      +/-   ##
==========================================
+ Coverage   99.67%   99.67%   +<.01%
==========================================
  Files         104      104
  Lines         609      610       +1
  Branches       67       67
==========================================
+ Hits          607      608       +1
  Misses          2        2

Impacted Files
Coverage Δ

components/tabs/src/atoms/title/index.js
100% <100%> (ø)
:arrow_up:

components/tabs/src/atoms/tab/index.js
100% <100%> (ø)
:arrow_up:

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update 5bc4c2e...c163b92. Read the comment docs.

Added some further comments for the storybook react-router example, and added two new examples that would be suitable for server-side rendering

Codecov Report

Merging #617 (25dfd8f) into master (788058b) will increase coverage by 0.00%.
The diff coverage is 100.00%.

:exclamation: Current head 25dfd8f differs from pull request most recent head a244368. Consider uploading reports for the commit a244368 to get more accurate results

@@           Coverage Diff           @@
##           master     #617   +/-   ##
=======================================
  Coverage   99.29%   99.30%
=======================================
  Files         121      121
  Lines         857      858    +1
  Branches      248      248
=======================================
+ Hits          851      852    +1
  Misses          6        6

Impacted Files
Coverage Δ

components/tabs/src/atoms/tab/index.js
100.00% <100.00%> (ø)

components/tabs/src/atoms/title/index.js
100.00% <100.00%> (ø)

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update 788058b...a244368. Read the comment docs.


Fix bootstrap-osg-test (SOFTWARE-2232)

The OSG release ver gets populated by positional arg with these changes. Bonus commit for minimizing the git clone sizes

@timtheisen ready for re-review. See step 6 of this doc for how to submit suggestions


chore: pin API and move it to peer dependency

move API to a peer dependency like in core repo.
Additionally pin API as rc releases tend to be breaking.
Refs: https://github.com/open-telemetry/opentelemetry-js/pull/2074
Refs: https://github.com/open-telemetry/opentelemetry-js/pull/2213

https://github.com/open-telemetry/opentelemetry-js-api/issues/74


ModelViewPanel.registerContent handler should return promise

Ran into this while writing tests over registerContent method. Every single implementation of the handler I've seen is async since it calls await modelview.InitializeModel(...), but the handler says it returns void. This makes it hard to test easily, since you can't await the result of the call.

			export interface ModelViewPanel {
				/**
				 * Register model view content for the dialog.
				 * Doesn't do anything if model view is already registered
				 */
				registerContent(handler: (view: ModelView) => void): void;

should be:
				registerContent(handler: (view: ModelView) => void | Promise<void>): void;

Closing older issues.  Please reactive if this is impacting an extension under active development.


Support for psql-like parameters (:parameter)

In order for the .sql files to be tested by a regression tool, e.g. regresql, it would be nice, if the psql-like parameters could be supported.
So, the following SQL statements should be equal:
-- name: CurrentVersion :one
select name from albums where id = pggen.arg('id');

-- name: NewVersion :one
select name from albums where id = :id;

One of the goals I'm shooting for with pggen is to limit the number of knobs and being okay with using another tool for tweaks like this.  I'll keep pggen with a single input syntax for now.
For your use case, using sed would probably work, though admittedly less convenient than if it was built into pggen.


Add the param to get the correct CID depending the agent-type

Often DevOps team don't have an access to the Falcon Console, they need a way to get important values (like the CID) to setup the falcon-sensor/falcon-container/kpagent config.
a condition was added to check if the sensor type is kpagent as there is a special format (lowercase no checksum) compared to other sensor type.

@carlosmmatos the reviewdog action is causing a check issue.


ParamResolver composition.

This is convenient to have for subcircuits (#3235), since nested circuits must be able to resolve their parameters based on the parent's parameter mapping.

Force-pushed the current version rebased to #3546 (minus some of the more recent changes). Not ready for review, but this shows the rough suite of tests I intend to use.


Request for Layer Number in Panel

Sorry if this is in the wrong section, however I can’t find the request for a feature.
I may have asked for this before, however would it be possible to have the current layer reported to the Panel page? This would be really useful when performing filament swaps for colour changes.
If it meant adding to the gcode file, like you can to report layers on the printer screen, that would still be very useful.

Hi @Neiljclements,
I really wish we could show the current z layer but that is not possible at the moment. Marlin does not give that information to OctoPrint and therefore OctoPrint cannot give it to OctoPod. At some moment, OctoPrint used to calculate this information but since it was off then it got removed.
I can imagine that OctoPrint could offer this if you are printing from OctoPrint itself but it would still not be accurate since OctoPrint can ask Marlin to move to a given Z layer but it is up to Marlin's scheduler/queue to decide when that is going to happen.

Hi @gdombiak ,
Isn't it possible to rely the DisplayLayerProgress plugin to show layer information?

Hi @TheLion,
That's an interesting idea that is probably good enough. That plugin reads the layer from the gcode that is being printed. It is not the exact layer the printer is in but it is probably enough to have an idea around which layer we are in. It will only work for slicers that have been configured to include this info in the gcode.
That plugin reads the gcode being printed and displays the info on the screen. Will look for another plugin that also reads the gcode and instead writes the layer (not the LCD message) on the websocket so OctoPod can use it.
Thanks for the hint. Will look into adding this to the next release once I found a plugin that does this.

No problem.
Octoprint-Dashboard (https://github.com/StefanCohen/OctoPrint-Dashboard) also uses the DisplayLayerProgress plugin to display layer information, so shouldn't OctoPod also be able to use that information?
(Excuse my ignorance, I have absolutely no idea what I'm talking about when it comes to programming or writing plugins ;-))

I’m liking where this is going 😊

I'm thinking, in fact, of displaying layer info if you have any of these 2 plugins: DisplayLayerProgress or LayerDisplay. Whatever you have, if the info is available then I can display it.

Surprise ......

YOU BEAUTY!!! Oh man, I’ve wanted this for soooooo long.
Thank you so much Gaston!

Thanks for the input that got this off the ground @TheLion.

@Neiljclements NP. 😉

While we are at it .....

Let's show more info exposed by the plugin. Adding current height if you are using https://plugins.octoprint.org/plugins/DisplayLayerProgress/

Cannot make https://plugins.octoprint.org/plugins/layerdisplay/ work. Seems to be abandoned that plugin. Will only add support for https://plugins.octoprint.org/plugins/DisplayLayerProgress/.


Improve warning in cargo new with parse error.

If cargo new fails to load a parent manifest (for whatever reason), it as not
displaying the reason why. Add the causes to provide more context.

r? @alexcrichton
(rust_highfive has picked a reviewer for you, use r? to override)

@bors: r+

:pushpin: Commit 3c0626270da2b73c533baf5ed60221905422c327 has been approved by alexcrichton

:hourglass: Testing commit 3c0626270da2b73c533baf5ed60221905422c327 with merge cd174723d8a91ab1e04e4dabfe3d4d82c682ccba...

:sunny: Test successful - checks-travis, status-appveyor
Approved by: alexcrichton
Pushing cd174723d8a91ab1e04e4dabfe3d4d82c682ccba to master...


Add methodology for signing using JWS

Pull Request
Checklist

[x] Have you read Digital Catapult's Code of Conduct?
[x] I have performed a self-review of my own code.
[x] I have commented my code, particularly in hard-to-understand areas.
[x] I have made corresponding changes to the documentation.
[x] My changes generate no new warnings.
[x] I have added tests that prove my fix is effective or that my feature works.
[x] New and existing unit tests pass locally with my changes.

PR Type
Please delete options that are irrelevant.

[ ] Bug Fix
[ ] Chore
[ ] Feature
[x] Documentation Update
[ ] Code style update (formatting, local variables)
[ ] Breaking Change (fix or feature that would cause existing functionality to change)

Linked tickets

High level description

This PR expands on the description of using did:key to sign Veritable responses.
Detailed description

The idea of signing responses was previously discussed for Veritable. Allowing nodes to sign responses allows them to lay claim to responses later (by signing new challenges using the same key) without compromising their privacy, provided their parent nodes do not strip off or replace signatures when passing responses upwards to the querier.
Note that these signatures do not provide non-repudiation since the signing keys are not authenticated.
The proposed data structures provide a route to enable JSON Web Encryption, which may be useful for future Veritable iterations to allow responses to be encrypted under a key provided by the 'top-level' querier.
Describe alternatives you've considered

Signing without using JWS means defining serialisation methods and appropriate data structures. This is likely to require more work to implement (with the potential for making mistakes), whereas using JWS is likely to allow third-party libraries to be used.
Operational impact

N/a. The current description is only a suggestion of how to implement signatures.
Additional context

This PR is submitted as a draft as there may be better choices for creating the signatures:

Using JWS means that payloads are base64-encoded and are therefore no longer human-readable, which may not be desirable.
The params field is now either a JWS or a 'plain' response object. There may be better ways of defining these objects to distinguish between these cases.

This makes complete sense to me. The loss in human readability is suitably offset by the improved standardisation imho. If we implement encryption on the responses this may make validation harder, but I see no reason why that would be an issue. One thing to consider is if we should somehow include a digest of the request in the response (so that a response can't be transfered over to an unrelated request)?


Fix wrong denormalization context for related resources

Fixes #303

Can you recreate your PR against 1.0 plz?

See #305


Action fails on ubuntu-jammy runner

Description
When using the action on a github runner with ubuntu-jammy (22.04) it fails with:
Error
Error: Error: error:25066067:DSO support routines:dlfcn_load:could not load the shared library

Usage
jobs:
    build:
    runs-on: ubuntu-jammy
        steps:
          - name: Generate token from github app
            id: generate_token
            uses<EMAIL_ADDRESS>            with:
              app_id: ${{ secrets.APP_ID }}
              private_key: ${{ secrets.APP_KEY }}

References

https://github.com/nodejs/node/discussions/43184

I'm also getting this error, when will the fix be merged?
Or is there any other workaround?

@hamnis is there a way to use the action from your fork? I wanted to see if it fixes the issue for me

Seems like this should be possible: https://stackoverflow.com/a/68286342

Seems like this should be possible: https://stackoverflow.com/a/68286342

Thanks for looking it up for me. This way I tried first and it didn't work producing the following error
File not found: '/runner/_work/_actions/hamnis/github-app-token/upgrade-octocat-auth-app/dist/index.js'

I tried branch, sha, and local copy - it needs to be compiled like you said in your other reply.

@prein try using the upgrade-octocat-auth-app-dist branch

@hamnis I tried with your reference, still same error.
it seems this is an issue with node 16 and openssl, see https://stackoverflow.com/questions/72104449/node-js-crypto-fails-to-sign-pem-key-string-from-file-with-error25066067dso-su fixe
      - name: Generate token
        id: generate_token
        uses<EMAIL_ADDRESS>        env:
          OPENSSL_CONF: /dev/null

fixed it for me.

@jazzlyn thanks for sharing! It worked for me too
@hamnis I got it to run with the action compiled locally, but got a different error
Error: secretOrPrivateKey must be an asymmetric key when using RS256

Sharing the code just for completeness
     - name: Get github-app-token action from forked repo
       uses: actions/checkout@v3
       with:
         repository: hamnis/github-app-token
         ref: upgrade-octocat-auth-app
         path: hamnis-github-app-token
     # Compile the action to be able to use it
     - uses: actions/setup-node@v3
       with:
         node-version: latest
     - name: Install Yarn
       run: npm install -g yarn
     - name: Install
       run: yarn install --frozen-lockfile
       working-directory: hamnis-github-app-token
     - name: Deduplicate dependencies
       run: yarn run yarn-deduplicate --fail --strategy fewer
       working-directory: hamnis-github-app-token
     - name: Build
       run: yarn run build
       working-directory: hamnis-github-app-token
     - name: Format
       run: yarn run prettier --check
       working-directory: hamnis-github-app-token
     - name: Lint
       run: yarn run xo
       working-directory: hamnis-github-app-token
     # action should now be compiled, we can use it like this:
     - name: Generate app token
       id: generate_token
       uses: ./hamnis-github-app-token
       with:
         app_id: ${{ inputs.gh_app_id }}
         private_key: ${{ inputs.gh_app_private_key }}

Can you please check if the issue still occurs with the latest version (1.8.0)?

I've tested the v1.8. Now I'm facing this error  when using the key which is created from the private keys section of the github app.
Error: Error: secretOrPrivateKey must be an asymmetric key when using RS256

Running v1.8 on ubuntu-20.04 however works fine.

Seems to work for us on ubuntu-latest / ubuntu-jammy. Runner image version 20230219.1

I'm still getting this error
Error: Error: secretOrPrivateKey must be an asymmetric key when using RS256
i tried all fixes mentioned here, but it still doesn't work : /

I'm still getting this error
Error: Error: secretOrPrivateKey must be an asymmetric key when using RS256
i tried all fixes mentioned here, but it still doesn't work. (with ubuntu-20.04 and ubuntu-latest)

...

just for completeness, github gives me a private key in this form SHA256:xxxxxxxxxxxxxxxxxxx

I faced it as well, then I realized that that value that you see above, is a hash shown on GitHub application page, rather than the key itself. The actual key is downloaded by your browser when you press "Generate private key" on GitHub aApp settings page (that's a file that ends with .private-key.pem). Using that file as the key makes it work as expected.

Can someone check if the issue still occurs with the latest version (1.9.0)?

@tibdex  i also having these issues and tested different versions. Just getting more detailed error messages:
1.8.0

2.0.0


cant connect to remote machine

Hello, I spent all day trying to get back to an AWS instance with Centos 7 installed on it, but without success.
The strange thing is that, to this day, I had no problems at all.
Every instance I launch went through the AWS procedure for GUI installation without any problems.

sudo yum install -y kernel-devel # Needed to re-build ENA driver
sudo yum groupinstall -y "Server with GUI"
sudo systemctl set-default graphical.target
sudo yum -y install epel-release
sudo rpm -Uvh http://li.nux.ro/download/nux/dextop/el7/x86_64/nux-dextop-release-0-5.el7.nux.noarch.rpm
sudo yum install -y xrdp tigervnc-server
sudo systemctl start xrdp
sudo systemctl enable xrdp
sudo systemctl disable firewalld
sudo systemctl stop firewalld

the errors :

[centos@ip-172-31-28-203 ~]$ sudo xrdp -ns
logging configuration:
LogFile:       /var/log/xrdp.log
LogLevel:      4
EnableSyslog:  1
SyslogLevel:   4
[20170917-17:17:35] [INFO ] starting xrdp with pid 3893
[20170917-17:17:36] [ERROR] xrdp_listen_main_loop: listen error, possible port already in use
[20170917-17:17:36] [DEBUG] Closed socket 11 (AF_INET <IP_ADDRESS>:0)
[20170917-17:17:36] [CORE ] shutting down log subsystem...

[centos@ip-172-31-28-203~]$ sudo xrdp-sesman -ns
starting sesman in foreground...
sesman config:
ListenAddress:            <IP_ADDRESS>
ListenPort:               3350
EnableUserWindowManager:  1
UserWindowManager:        startwm.sh
DefaultWindowManager:     startwm-bash.sh
AuthFilePath:             disabled
Xvnc parameters:
Parameter 00                   Xvnc
Parameter 01                   -bs
Parameter 02                   -nolisten
Parameter 03                   tcp
Parameter 04                   -localhost
Parameter 05                   -dpi
Parameter 06                   96
X11rdp parameters:
XOrg parameters:
Parameter 00                   Xorg
Parameter 01                   -config
Parameter 02                   xrdp/xorg.conf
Parameter 03                   -noreset
Parameter 04                   -nolisten
Parameter 05                   tcp
Parameter 06                   -logfile
Parameter 07                   .xorgxrdp.%s.log
security configuration:
AllowRootLogin:       1
MaxLoginRetry:        4
AlwaysGroupCheck:     0
No TSUsersGroup defined
No TSAdminsGroup defined
session configuration:
MaxSessions:                 50
X11DisplayOffset:            10
KillDisconnected:            0
IdleTimeLimit:               0
DisconnectedTimeLimit:       0
Policy:       0
SessionVariables parameters:
Parameter 00                   PULSE_SCRIPT=/etc/xrdp/pulse/default.pa
logging configuration:
LogFile:       /var/log/xrdp-sesman.log
LogLevel:      4
EnableSyslog:  1
SyslogLevel:   4
[20170917-17:18:10] [DEBUG] libscp initialized
[20170917-17:18:10] [INFO ] starting xrdp-sesman with pid 3903
[20170917-17:18:10] [ERROR] bind error on port '3350': 98 (Address already in use)
[20170917-17:18:10] [DEBUG] Closed socket 7 (AF_INET <IP_ADDRESS>:0)
[20170917-17:18:10] [CORE ] shutting down log subsystem...`

Please help. I tried all the tips and solutions suggested her.
This problem stops my entire product development process

As shown in your logs:
" [20170917-17:17:36] [ERROR] xrdp_listen_main_loop: listen error, possible port already in use"
something is already listening on this port
use netstat to know what

Hey moobyfr, thanks for the quick response,
But I still can not figure out who's listening to the port and why

[centos@ip-172-31-20-40 ~]$ netstat
Active Internet connections (w/o servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State
tcp        0     36 ip-172-31-20-40.eu-:ssh <IP_ADDRESS>:55449    ESTABLISHED
tcp        0    875 ip-172-31:ms-wbt-server <IP_ADDRESS>:55445    ESTABLISHED
Active UNIX domain sockets (w/o servers)
Proto RefCnt Flags       Type       State         I-Node   Path
unix  2      [ ]         DGRAM                    9784     /run/systemd/shutdownd
unix  2      [ ]         DGRAM                    9319     /run/systemd/notify
unix  2      [ ]         DGRAM                    9321     /run/systemd/cgroups-agent
unix  5      [ ]         DGRAM                    9342     /run/systemd/journal/socket
unix  26     [ ]         DGRAM                    9344     /dev/log
unix  3      [ ]         STREAM     CONNECTED     27925
unix  3      [ ]         STREAM     CONNECTED     19419
unix  3      [ ]         STREAM     CONNECTED     24821    @/tmp/dbus-LzDG29Nt6p
unix  2      [ ]         DGRAM                    19780
unix  3      [ ]         STREAM     CONNECTED     19793
unix  3      [ ]         STREAM     CONNECTED     19414
unix  3      [ ]         STREAM     CONNECTED     23176
unix  3      [ ]         STREAM     CONNECTED     18357
unix  3      [ ]         STREAM     CONNECTED     17208
unix  3      [ ]         STREAM     CONNECTED     26037    @/tmp/.X11-unix/X0
unix  3      [ ]         STREAM     CONNECTED     23301
unix  3      [ ]         STREAM     CONNECTED     2456     /run/systemd/journal/stdout
unix  3      [ ]         STREAM     CONNECTED     14995    /var/run/dbus/system_bus_socket
unix  2      [ ]         DGRAM                    20483
unix  3      [ ]         STREAM     CONNECTED     24890    @/tmp/dbus-Qfj4QGnO
unix  3      [ ]         STREAM     CONNECTED     14334    /var/run/dbus/system_bus_socket
unix  3      [ ]         STREAM     CONNECTED     13857
unix  3      [ ]         STREAM     CONNECTED     20482    /run/systemd/journal/stdout
unix  3      [ ]         DGRAM                    9898
unix  3      [ ]         STREAM     CONNECTED     13864    /run/gssproxy.sock
unix  3      [ ]         STREAM     CONNECTED     25890    @/tmp/dbus-HxXaUZ1AHw
unix  3      [ ]         STREAM     CONNECTED     20570
unix  3      [ ]         STREAM     CONNECTED     24861    @/tmp/dbus-LzDG29Nt6p
unix  3      [ ]         STREAM     CONNECTED     25725
unix  3      [ ]         STREAM     CONNECTED     23177    @/tmp/dbus-Qfj4QGnO
unix  2      [ ]         DGRAM                    18588
unix  2      [ ]         DGRAM                    26116
unix  3      [ ]         STREAM     CONNECTED     26035    /run/systemd/journal/stdout
unix  3      [ ]         STREAM     CONNECTED     22718    /var/run/dbus/system_bus_socket
unix  3      [ ]         STREAM     CONNECTED     14822
unix  3      [ ]         STREAM     CONNECTED     13847    /run/systemd/journal/stdout
unix  3      [ ]         STREAM     CONNECTED     23316    /run/systemd/journal/stdout
unix  3      [ ]         STREAM     CONNECTED     18203
unix  3      [ ]         STREAM     CONNECTED     24849    /run/systemd/journal/stdout
unix  3      [ ]         STREAM     CONNECTED     25726
unix  3      [ ]         STREAM     CONNECTED     26107
unix  3      [ ]         STREAM     CONNECTED     27649    /run/user/42/pulse/native
unix  3      [ ]         STREAM     CONNECTED     13632    /run/systemd/journal/stdout
unix  3      [ ]         STREAM     CONNECTED     23179
unix  3      [ ]         STREAM     CONNECTED     12223    /run/systemd/journal/stdout
unix  3      [ ]         STREAM     CONNECTED     25723
unix  3      [ ]         STREAM     CONNECTED     15285
unix  3      [ ]         STREAM     CONNECTED     20481
unix  3      [ ]         STREAM     CONNECTED     26695    /var/run/dbus/system_bus_socket
unix  2      [ ]         DGRAM                    19697
unix  2      [ ]         DGRAM                    9887
unix  3      [ ]         STREAM     CONNECTED     23923
unix  3      [ ]         STREAM     CONNECTED     24899    /run/user/42/pulse/native
unix  3      [ ]         STREAM     CONNECTED     13037
unix  3      [ ]         STREAM     CONNECTED     24866    /run/systemd/journal/stdout
unix  3      [ ]         STREAM     CONNECTED     3053
unix  3      [ ]         STREAM     CONNECTED     2562     /run/systemd/journal/stdout
unix  3      [ ]         STREAM     CONNECTED     28680
unix  3      [ ]         STREAM     CONNECTED     18371
unix  3      [ ]         STREAM     CONNECTED     2683
unix  3      [ ]         STREAM     CONNECTED     27654    /var/run/dbus/system_bus_socket
unix  3      [ ]         STREAM     CONNECTED     13036
unix  3      [ ]         STREAM     CONNECTED     20626
unix  2      [ ]         DGRAM                    10048
unix  3      [ ]         STREAM     CONNECTED     19471
unix  3      [ ]         STREAM     CONNECTED     23867    @/tmp/dbus-LzDG29Nt6p
unix  3      [ ]         STREAM     CONNECTED     2561     /run/systemd/journal/stdout
unix  3      [ ]         STREAM     CONNECTED     26133    @/tmp/dbus-Qfj4QGnO
unix  3      [ ]         STREAM     CONNECTED     23275
unix  3      [ ]         STREAM     CONNECTED     10072    /var/run/dbus/system_bus_socket
unix  3      [ ]         STREAM     CONNECTED     20510    /run/systemd/journal/stdout
unix  3      [ ]         STREAM     CONNECTED     25883
unix  3      [ ]         STREAM     CONNECTED     2560     /run/systemd/journal/stdout
unix  3      [ ]         STREAM     CONNECTED     13846    /run/systemd/journal/stdout
unix  2      [ ]         DGRAM                    26045
unix  2      [ ]         DGRAM                    2448
unix  2      [ ]         DGRAM                    14219
unix  3      [ ]         STREAM     CONNECTED     18356
unix  2      [ ]         DGRAM                    13904
unix  3      [ ]         STREAM     CONNECTED     27924
unix  3      [ ]         STREAM     CONNECTED     23300
unix  3      [ ]         STREAM     CONNECTED     24822    /var/run/dbus/system_bus_socket
unix  3      [ ]         DGRAM                    9897
unix  3      [ ]         STREAM     CONNECTED     12982
unix  3      [ ]         STREAM     CONNECTED     14152
unix  3      [ ]         STREAM     CONNECTED     20500    /run/systemd/journal/stdout
unix  3      [ ]         STREAM     CONNECTED     26706
unix  3      [ ]         STREAM     CONNECTED     25939    @/tmp/.X11-unix/X0
unix  2      [ ]         DGRAM                    18937
unix  3      [ ]         STREAM     CONNECTED     19852
unix  3      [ ]         STREAM     CONNECTED     2564     /run/systemd/journal/stdout
unix  2      [ ]         DGRAM                    26036
unix  3      [ ]         STREAM     CONNECTED     10069    /var/run/dbus/system_bus_socket
unix  3      [ ]         STREAM     CONNECTED     26010    @/tmp/dbus-LzDG29Nt6p
unix  3      [ ]         STREAM     CONNECTED     22716    /var/run/dbus/system_bus_socket
unix  3      [ ]         STREAM     CONNECTED     13913    /var/run/dbus/system_bus_socket
unix  2      [ ]         DGRAM                    22937
unix  3      [ ]         STREAM     CONNECTED     2673
unix  3      [ ]         STREAM     CONNECTED     26698
unix  3      [ ]         STREAM     CONNECTED     23852    @/tmp/dbus-LzDG29Nt6p
unix  3      [ ]         STREAM     CONNECTED     28678
unix  3      [ ]         STREAM     CONNECTED     26751
unix  3      [ ]         STREAM     CONNECTED     25884
unix  3      [ ]         STREAM     CONNECTED     13151
unix  3      [ ]         STREAM     CONNECTED     14710
unix  3      [ ]         STREAM     CONNECTED     3052
unix  3      [ ]         STREAM     CONNECTED     15217
unix  3      [ ]         STREAM     CONNECTED     19788
unix  3      [ ]         STREAM     CONNECTED     19416
unix  3      [ ]         STREAM     CONNECTED     17974
unix  3      [ ]         STREAM     CONNECTED     23922
unix  3      [ ]         STREAM     CONNECTED     10073    /var/run/dbus/system_bus_socket
unix  3      [ ]         STREAM     CONNECTED     23308    @/tmp/dbus-HxXaUZ1AHw
unix  3      [ ]         STREAM     CONNECTED     14229
unix  2      [ ]         DGRAM                    2674
unix  3      [ ]         STREAM     CONNECTED     14968
unix  2      [ ]         DGRAM                    26702
unix  3      [ ]         STREAM     CONNECTED     19139
unix  3      [ ]         STREAM     CONNECTED     23382    @/tmp/dbus-HxXaUZ1AHw
unix  3      [ ]         STREAM     CONNECTED     26034    /run/systemd/journal/stdout
unix  3      [ ]         STREAM     CONNECTED     14213    /run/systemd/journal/stdout
unix  3      [ ]         STREAM     CONNECTED     18372
unix  3      [ ]         STREAM     CONNECTED     2788     /run/systemd/journal/stdout
unix  3      [ ]         STREAM     CONNECTED     15120    /run/systemd/journal/stdout
unix  3      [ ]         STREAM     CONNECTED     18658    /run/systemd/journal/stdout
unix  3      [ ]         STREAM     CONNECTED     25689
unix  3      [ ]         STREAM     CONNECTED     23378
unix  3      [ ]         STREAM     CONNECTED     23889
unix  3      [ ]         STREAM     CONNECTED     24843    /run/systemd/journal/stdout
unix  3      [ ]         STREAM     CONNECTED     25732
unix  3      [ ]         STREAM     CONNECTED     25675
unix  3      [ ]         STREAM     CONNECTED     25711
unix  3      [ ]         STREAM     CONNECTED     26818    @/tmp/dbus-T25JVrJF
unix  3      [ ]         STREAM     CONNECTED     10001
unix  3      [ ]         STREAM     CONNECTED     25671
unix  3      [ ]         STREAM     CONNECTED     26694    /var/run/dbus/system_bus_socket
unix  3      [ ]         STREAM     CONNECTED     3049     @/tmp/dbus-LzDG29Nt6p
unix  3      [ ]         STREAM     CONNECTED     25677
unix  3      [ ]         STREAM     CONNECTED     25713
unix  3      [ ]         STREAM     CONNECTED     25687
unix  3      [ ]         STREAM     CONNECTED     10074    /var/run/dbus/system_bus_socket
unix  2      [ ]         DGRAM                    23690
unix  3      [ ]         STREAM     CONNECTED     25678
unix  3      [ ]         STREAM     CONNECTED     14153    /run/systemd/journal/stdout
unix  3      [ ]         STREAM     CONNECTED     25695
unix  3      [ ]         STREAM     CONNECTED     25686
unix  3      [ ]         STREAM     CONNECTED     24844    /run/systemd/journal/stdout
unix  3      [ ]         STREAM     CONNECTED     25728
unix  3      [ ]         STREAM     CONNECTED     25690
unix  2      [ ]         DGRAM                    24367
unix  3      [ ]         STREAM     CONNECTED     26041    /var/run/dbus/system_bus_socket
unix  3      [ ]         STREAM     CONNECTED     25729
unix  3      [ ]         STREAM     CONNECTED     12773    /run/systemd/journal/stdout
unix  3      [ ]         STREAM     CONNECTED     3028
unix  3      [ ]         STREAM     CONNECTED     23834
unix  3      [ ]         STREAM     CONNECTED     25717
unix  3      [ ]         STREAM     CONNECTED     25670
unix  2      [ ]         DGRAM                    21580
unix  3      [ ]         STREAM     CONNECTED     17520
unix  3      [ ]         STREAM     CONNECTED     27653
unix  3      [ ]         STREAM     CONNECTED     19149    @/tmp/.X11-unix/X0
unix  3      [ ]         DGRAM                    13630
unix  3      [ ]         STREAM     CONNECTED     25731
unix  3      [ ]         STREAM     CONNECTED     25674
unix  3      [ ]         STREAM     CONNECTED     21546
unix  3      [ ]         STREAM     CONNECTED     3050     /var/run/dbus/system_bus_socket
unix  3      [ ]         STREAM     CONNECTED     25710
unix  3      [ ]         STREAM     CONNECTED     23175    @/tmp/dbus-Qfj4QGnO
unix  3      [ ]         STREAM     CONNECTED     25681
unix  3      [ ]         STREAM     CONNECTED     17442
unix  2      [ ]         DGRAM                    22446
unix  3      [ ]         STREAM     CONNECTED     24869    @/tmp/.ICE-unix/2379
unix  3      [ ]         DGRAM                    13629
unix  3      [ ]         STREAM     CONNECTED     21981
unix  3      [ ]         STREAM     CONNECTED     25684
unix  2      [ ]         DGRAM                    17440
unix  2      [ ]         DGRAM                    2999
unix  3      [ ]         STREAM     CONNECTED     24160
unix  3      [ ]         STREAM     CONNECTED     26655    /var/run/dbus/system_bus_socket
unix  3      [ ]         STREAM     CONNECTED     18262    /var/run/dbus/system_bus_socket
unix  3      [ ]         STREAM     CONNECTED     25683
unix  3      [ ]         STREAM     CONNECTED     20228
unix  3      [ ]         STREAM     CONNECTED     17438
unix  3      [ ]         STREAM     CONNECTED     25714
unix  2      [ ]         DGRAM                    2762
unix  3      [ ]         STREAM     CONNECTED     3059     @/tmp/dbus-LzDG29Nt6p
unix  3      [ ]         STREAM     CONNECTED     17691    /run/systemd/journal/stdout
unix  3      [ ]         STREAM     CONNECTED     25696
unix  3      [ ]         STREAM     CONNECTED     13837
unix  3      [ ]         STREAM     CONNECTED     23921
unix  3      [ ]         STREAM     CONNECTED     25680
unix  3      [ ]         STREAM     CONNECTED     17750
unix  3      [ ]         STREAM     CONNECTED     25716
unix  3      [ ]         STREAM     CONNECTED     17441
unix  3      [ ]         STREAM     CONNECTED     23835    /run/systemd/journal/stdout
unix  3      [ ]         STREAM     CONNECTED     19152
unix  3      [ ]         STREAM     CONNECTED     10066
unix  3      [ ]         STREAM     CONNECTED     10037
unix  3      [ ]         STREAM     CONNECTED     23920
unix  3      [ ]         STREAM     CONNECTED     15051    /run/systemd/journal/stdout
unix  3      [ ]         STREAM     CONNECTED     1841
unix  3      [ ]         STREAM     CONNECTED     24865    /run/systemd/journal/stdout
unix  3      [ ]         STREAM     CONNECTED     24015
unix  2      [ ]         DGRAM                    10027
unix  2      [ ]         DGRAM                    21794
unix  3      [ ]         STREAM     CONNECTED     22186
unix  2      [ ]         DGRAM                    27741
unix  3      [ ]         STREAM     CONNECTED     25699
unix  3      [ ]         STREAM     CONNECTED     21735    @/tmp/.X11-unix/X0
unix  3      [ ]         STREAM     CONNECTED     25663
unix  3      [ ]         STREAM     CONNECTED     18398    @/tmp/.X11-unix/X0
unix  3      [ ]         STREAM     CONNECTED     22123
unix  3      [ ]         STREAM     CONNECTED     25661
unix  3      [ ]         STREAM     CONNECTED     25702
unix  3      [ ]         STREAM     CONNECTED     23309
unix  3      [ ]         STREAM     CONNECTED     23863
unix  3      [ ]         STREAM     CONNECTED     25660
unix  2      [ ]         DGRAM                    10086
unix  3      [ ]         STREAM     CONNECTED     23945
unix  3      [ ]         STREAM     CONNECTED     23865
unix  3      [ ]         STREAM     CONNECTED     26654    /var/run/dbus/system_bus_socket
unix  3      [ ]         STREAM     CONNECTED     21881    @/tmp/.X11-unix/X0
unix  3      [ ]         STREAM     CONNECTED     25693
unix  3      [ ]         STREAM     CONNECTED     25667
unix  3      [ ]         STREAM     CONNECTED     20168
unix  3      [ ]         STREAM     CONNECTED     24925    @/tmp/dbus-T25JVrJF
unix  3      [ ]         STREAM     CONNECTED     10051
unix  3      [ ]         STREAM     CONNECTED     10033
unix  3      [ ]         STREAM     CONNECTED     25820
unix  3      [ ]         STREAM     CONNECTED     13267
unix  3      [ ]         STREAM     CONNECTED     24848
unix  3      [ ]         STREAM     CONNECTED     25701
unix  3      [ ]         STREAM     CONNECTED     25936    @/tmp/dbus-LzDG29Nt6p
unix  3      [ ]         STREAM     CONNECTED     25719
unix  3      [ ]         STREAM     CONNECTED     14647    /run/systemd/journal/stdout
unix  3      [ ]         STREAM     CONNECTED     23850
unix  3      [ ]         STREAM     CONNECTED     22049    @/tmp/dbus-LzDG29Nt6p
unix  3      [ ]         STREAM     CONNECTED     23918
unix  3      [ ]         STREAM     CONNECTED     21963
unix  3      [ ]         STREAM     CONNECTED     25664
unix  3      [ ]         STREAM     CONNECTED     23603
unix  3      [ ]         STREAM     CONNECTED     25704
unix  3      [ ]         STREAM     CONNECTED     25821
unix  3      [ ]         STREAM     CONNECTED     18659    /run/systemd/journal/stdout
unix  3      [ ]         STREAM     CONNECTED     25889    @/tmp/dbus-HxXaUZ1AHw
unix  3      [ ]         STREAM     CONNECTED     23310
unix  3      [ ]         STREAM     CONNECTED     25722
unix  3      [ ]         STREAM     CONNECTED     10067
unix  3      [ ]         STREAM     CONNECTED     15050    /run/systemd/journal/stdout
unix  3      [ ]         STREAM     CONNECTED     19171
unix  3      [ ]         STREAM     CONNECTED     25708
unix  3      [ ]         STREAM     CONNECTED     10022
unix  3      [ ]         STREAM     CONNECTED     13724
unix  3      [ ]         STREAM     CONNECTED     23057    @/tmp/dbus-K1MeF0Je
unix  3      [ ]         STREAM     CONNECTED     18189    /var/run/dbus/system_bus_socket
unix  3      [ ]         STREAM     CONNECTED     17439
unix  3      [ ]         STREAM     CONNECTED     25720
unix  3      [ ]         STREAM     CONNECTED     18499
unix  3      [ ]         STREAM     CONNECTED     23851
unix  3      [ ]         STREAM     CONNECTED     25692
unix  3      [ ]         STREAM     CONNECTED     23146    @/tmp/.X11-unix/X0
unix  3      [ ]         STREAM     CONNECTED     25822
unix  3      [ ]         STREAM     CONNECTED     25668
unix  2      [ ]         DGRAM                    10213
unix  3      [ ]         STREAM     CONNECTED     12197    /run/systemd/journal/stdout
unix  3      [ ]         STREAM     CONNECTED     3048
unix  3      [ ]         STREAM     CONNECTED     24863
unix  3      [ ]         STREAM     CONNECTED     25705
unix  3      [ ]         STREAM     CONNECTED     10032
unix  3      [ ]         STREAM     CONNECTED     13725    /run/systemd/journal/stdout
unix  2      [ ]         DGRAM                    10000
unix  3      [ ]         STREAM     CONNECTED     18033
unix  3      [ ]         STREAM     CONNECTED     25707
unix  3      [ ]         STREAM     CONNECTED     26747    /var/run/dbus/system_bus_socket
unix  3      [ ]         STREAM     CONNECTED     10070    /var/run/dbus/system_bus_socket
unix  3      [ ]         STREAM     CONNECTED     10002
unix  3      [ ]         STREAM     CONNECTED     27651    /var/run/dbus/system_bus_socket
unix  3      [ ]         STREAM     CONNECTED     22048
unix  3      [ ]         STREAM     CONNECTED     2796     /run/systemd/journal/stdout
unix  3      [ ]         STREAM     CONNECTED     25698
unix  3      [ ]         STREAM     CONNECTED     27655    @/tmp/dbus-LzDG29Nt6p
unix  3      [ ]         STREAM     CONNECTED     3060     /run/user/42/pulse/native
unix  3      [ ]         STREAM     CONNECTED     10071    /var/run/dbus/system_bus_socket
unix  2      [ ]         DGRAM                    23894
unix  3      [ ]         STREAM     CONNECTED     21982

"lsof -i :3389" might be a better bet (needs to be run as the root user).

Hi,
I have the exact problem it look that the shell script that tiger two times which make the service running two times. We can see in the file
/etc/xrdp/sesman.ini
[Globals]
ListenAddress=<IP_ADDRESS>
ListenPort=3350
EnableUserWindowManager=1
UserWindowManager=startwm.sh
DefaultWindowManager=startwm-bash.sh
User windowManager and default windows manager both of them tiger a bash file   "startwm.sh" and "startwm-bash.sh"
if you check the "startwm-bash.sh" file
cat startwm-bash.sh
#!/bin/bash -l
. /etc/xrdp/startwm.sh
you will see it will invoke the "startwm.sh" script which will start another network binding service with the same port number.
This must be handle in the condition part in the  "startwm.sh" file. but still I don't know where (:
Thanks
Tariq


输入框看不到光标，也看不到输入的内容

我在 Ubuntu 18.04LTS 和 20.04LTS 都试了，同样的问题。

Have you solved your problem? If so, could you share about your experience with how to fix it in your case so that other users will be able to benefit from your post?
Thank you very much!

I did not solve it, i just reset back to wechat:<IP_ADDRESS>. it's workers.

@yangjian102621 Thank you very much for the feedback!


Fixed link under Installation part.

Taken from https://tweenjs.gitbook.io/es6-tween/.

Remove please version and use library name only


Adding ref to decorated component

[[connectToStore] Title: Improving the connect to store]
Description
Adding ref to decorated component, so it can be accessed from parent (for example, to get a value, or call a function)

You can also change this to use PureComponent instead of Component


Enable SVG Editing in External Text Editor?

We have some SVGs in our codebase which have been exported from Excalidraw with the "Embed scene" option checked.
This seems to be great - the best of both worlds: creating the SVG files in Excalidraw and also viewing them in any software that supports SVG 🙌 🎉 Sounds really amazing!
However, there is a problem: making small edits of the SVG text or shapes in a text editor will cause the visible SVG and the Excalidraw scene data to get out of date 😱 Eg:

Create a diagram in Excalidraw and export to SVG with "Embed scene"
Make a small edit of the text in the SVG
Review the change in an SVG viewer like the browser, works ✅
Open the diagram in Excalidraw to make a bigger change - previous data displayed 💥

This is a bit of a hidden problem, because it appears to be working on first glance at the SVG, but then when it is opened again in Excalidraw, an old version of the diagram is shown (which may or may not be recognized by the person editing, if the text editor change was small).
It would be great if the SVG and Scene data could stay in sync somehow, allowing editing the plaintext SVG in a text editor.
Some ideas for implementation, ordered according to desirability in my opinion:

Derive scene data from SVG and remove duplicated scene data - most minimal data structure, if possible
Make scene data also human-readable and editable in a text editor - shows that further changes need to be made in text editor, but requires 2x the edits
Derive scene data from SVG only if there is a conflict, don't remove duplicated scene data - simplest implementation?
Make SVG data also non-human-readable and non-editable - least desirable, would be great to be able to use a text editor

Hi. If the goal is only to sync the edits to the text nodes then that is potentially possible to implement, but I'm not sure how useful or common this use case is. And if we started using the SVG text nodes as authoritative source, it could create a false impression the SVG itself is authoritative for everything, which wouldn't be the case.


Modifying and then saving notification produces error 400

Checklist

[X ] I checked for similar existing issues (both open and closed) before posting.
[X ] I am running the latest version.

Expected behavior
To be able to save the notification
Actual behavior
Recieve: Something went wrong!
Message format incorrect: string value is None for dictionary value @ data['actions'][0]['entity_id']
Response error: 400
Please report the bug.

Steps to Reproduce
[Explain how to see the behaviour]

I'm seeing similar behavior but it's generating an Error 500 when attempting to disable/enable actions.
Log:
[code]
Logger: aiohttp.server
Source: custom_components/alarmo/store.py:171
Integration: Alarmo (documentation, issues)
First occurred: 10:04:32 AM (4 occurrences)
Last logged: 10:06:11 AM
Error handling request
Traceback (most recent call last):
File "/usr/local/lib/python3.8/site-packages/aiohttp/web_protocol.py", line 422, in _handle_request
resp = await self._request_handler(request)
File "/usr/local/lib/python3.8/site-packages/aiohttp/web_app.py", line 499, in _handle
resp = await handler(request)
File "/usr/local/lib/python3.8/site-packages/aiohttp/web_middlewares.py", line 119, in impl
return await handler(request)
File "/usr/src/homeassistant/homeassistant/components/http/security_filter.py", line 60, in security_filter_middleware
return await handler(request)
File "/usr/src/homeassistant/homeassistant/components/http/forwarded.py", line 76, in forwarded_middleware
return await handler(request)
File "/usr/src/homeassistant/homeassistant/components/http/request_context.py", line 24, in request_context_middleware
return await handler(request)
File "/usr/src/homeassistant/homeassistant/components/http/ban.py", line 78, in ban_middleware
return await handler(request)
File "/usr/src/homeassistant/homeassistant/components/http/auth.py", line 144, in auth_middleware
return await handler(request)
File "/usr/src/homeassistant/homeassistant/components/http/view.py", line 135, in handle
result = await result
File "/usr/src/homeassistant/homeassistant/components/http/data_validator.py", line 63, in wrapper
result = await method(view, request, *args, **kwargs)
File "/config/custom_components/alarmo/websockets.py", line 332, in post
coordinator.async_update_automation_config(automation_id, data)
File "/config/custom_components/alarmo/init.py", line 266, in async_update_automation_config
self.store.async_update_automation(automation_id, data)
File "/config/custom_components/alarmo/store.py", line 561, in async_update_automation
new = self.automations[automation_id] = attr.evolve(old, **parse_automation_entry(changes))
File "/config/custom_components/alarmo/store.py", line 171, in parse_automation_entry
"triggers": list(map(create_trigger_entity, data["triggers"])),
KeyError: 'triggers'
[/code]

This problem is solved in v1.6.2 i think.
Could you update and give it a try?


[Doc] correctify description for duplicate key table

Signed-off-by: hellolilyliuyi<EMAIL_ADDRESS>What type of PR is this：

[ ] BugFix
[ ] Feature
[ ] Enhancement
[ ] Refactor
[ ] UT
[x] Doc
[ ] Tool

Which issues of this PR fixes ：

Fixes #
Problem Summary(Required) ：

Checklist:

[ ] I have added test cases for my bug fix or my new feature
[ ] This pr will affect users' behaviors
[ ] This pr needs user documentation (for new or modified features or behaviors)

[ ] I have added documentation for my new feature or new function

Bugfix cherry-pick branch check:

[x] I have checked the version labels which the pr will be auto backported to target branch

[x] 2.5
[x] 2.4
[x] 2.3
[x] 2.2

run starrocks_admit_test

@mergify backport branch-2.4

@mergify backport branch-2.3

@mergify backport branch-2.3

@mergify backport branch-2.2