Rebrand to Pezkuwichain Telemetry

- Rename PolkadotIcon to PezkuwiIcon
- Update pinned chains for Pezkuwichain
- Add pezkuwichain, bizinikiwi, pezkuwichain-js icons
- Update favicon with Pezkuwi branding
- Update package.json author to Dijital Kurdistan Tech Institute
- Update GitHub links to pezkuwichain/pezkuwi-telemetry
- Update backend Cargo.toml authors
- Rewrite README with Pezkuwichain documentation
- Add GitHub workflows (frontend-ci, backend-ci, docker, lock)
This commit is contained in:
2026-01-08 16:40:51 +03:00
parent 74def27a16
commit 2b1872f24e
22 changed files with 384 additions and 198 deletions
+2 -2
View File
@@ -77,8 +77,8 @@ export class Chains extends React.Component<ChainsProps> {
) : null;
const githubLink = this.props.gitHash
? `https://github.com/paritytech/substrate-telemetry/tree/${this.props.gitHash}`
: 'https://github.com/paritytech/substrate-telemetry';
? `https://github.com/pezkuwichain/pezkuwi-telemetry/tree/${this.props.gitHash}`
: 'https://github.com/pezkuwichain/pezkuwi-telemetry';
return (
<div className="Chains">
@@ -20,9 +20,9 @@ import { Node } from '../../../state';
import { Tooltip, Icon } from '../../';
import icon from '../../../icons/terminal.svg';
import parityPolkadotIcon from '../../../icons/dot.svg';
import paritySubstrateIcon from '../../../icons/substrate.svg';
import polkadotJsIcon from '../../../icons/polkadot-js.svg';
import pezkuwichainIcon from '../../../icons/pezkuwichain.svg';
import bizinikiwiiIcon from '../../../icons/bizinikiwi.svg';
import pezkuwichainJsIcon from '../../../icons/pezkuwichain-js.svg';
import airalabRobonomicsIcon from '../../../icons/robonomics.svg';
import chainXIcon from '../../../icons/chainx.svg';
import edgewareIcon from '../../../icons/edgeware.svg';
@@ -43,12 +43,12 @@ import crustIcon from '../../../icons/crust.svg';
import gossamerIcon from '../../../icons/gossamer.svg';
const ICONS = {
'parity-polkadot': parityPolkadotIcon,
'Parity Polkadot': parityPolkadotIcon,
'polkadot-js': polkadotJsIcon,
'pezkuwichain': pezkuwichainIcon,
'Pezkuwichain': pezkuwichainIcon,
'pezkuwichain-js': pezkuwichainJsIcon,
'airalab-robonomics': airalabRobonomicsIcon,
'substrate-node': paritySubstrateIcon,
'Substrate Node': paritySubstrateIcon,
'bizinikiwi-node': bizinikiwiiIcon,
'Bizinikiwi Node': bizinikiwiiIcon,
'edgeware-node': edgewareIcon,
'Edgeware Node': edgewareIcon,
'joystream-node': joystreamIcon,
@@ -101,7 +101,7 @@ export class ImplementationColumn extends React.Component<ColumnProps> {
this.version = version;
const [semver] = version.match(SEMVER_PATTERN) || ['?.?.?'];
const implIcon = ICONS[implementation] || paritySubstrateIcon;
const implIcon = ICONS[implementation] || bizinikiwiiIcon;
return (
<td className="Column">
@@ -18,7 +18,7 @@ import * as React from 'react';
import { Maybe } from '../../../common';
import { ColumnProps } from './';
import { Node } from '../../../state';
import { Tooltip, PolkadotIcon, TooltipCopyCallback } from '../../';
import { Tooltip, PezkuwiIcon, TooltipCopyCallback } from '../../';
import icon from '../../../icons/shield.svg';
export class ValidatorColumn extends React.Component<ColumnProps> {
@@ -47,7 +47,7 @@ export class ValidatorColumn extends React.Component<ColumnProps> {
return (
<td className="Column" onClick={this.onClick}>
<Tooltip text={validator} copy={this.onCopy} />
<PolkadotIcon
<PezkuwiIcon
className="Column-validator"
account={validator}
size={16}
@@ -14,7 +14,7 @@
// You should have received a copy of the GNU General Public License
// along with this program. If not, see <https://www.gnu.org/licenses/>.
//Column for specifying which polkadot version node is running on
//Column for specifying which Pezkuwi node version is running
import * as React from 'react';
import { ColumnProps } from './';
+2 -2
View File
@@ -21,7 +21,7 @@ import {
milliOrSecond,
secondsWithPrecision,
} from '../../utils';
import { Ago, Icon, PolkadotIcon } from '../';
import { Ago, Icon, PezkuwiIcon } from '../';
import { Node } from '../../state';
import nodeIcon from '../../icons/server.svg';
@@ -116,7 +116,7 @@ export class Location extends React.Component<LocationProps, LocationState> {
<td colSpan={5}>
{trimHash(validator, 30)}
<span className="Location-validator">
<PolkadotIcon account={validator} size={16} />
<PezkuwiIcon account={validator} size={16} />
</span>
</td>
</tr>
@@ -1,11 +1,7 @@
// Copyright 2018 Paritytech via paritytech/oo7/polkadot-identicon
// Copyright 2018 @polkadot/ui-shared authors & contributors
// This software may be modified and distributed under the terms
// of the Apache-2.0 license. See the LICENSE file for details.
// This has been converted from the original version that can be found at
//
// https://github.com/paritytech/oo7/blob/251ba2b7c45503b68eab4320c270b5afa9bccb60/packages/polkadot-identicon/src/index.jsx
// Pezkuwi Identicon Component
// Based on polkadot-identicon by Parity Technologies
// Copyright (C) 2024 Dijital Kurdistan Tech Institute
// Licensed under GPL-3.0
import * as React from 'react';
import { blake2AsU8a, decodeAddress } from '@polkadot/util-crypto';
import { getSVGShadowRoot, W3SVG } from '../utils';
@@ -193,7 +189,7 @@ function generate(address: string, isSixPoint = false): Circle[] {
);
}
interface PolkadotIconProps {
interface PezkuwiIconProps {
account: string;
size: number;
className?: string;
@@ -227,8 +223,8 @@ function renderShadowIcon(account: string) {
}
}
export class PolkadotIcon extends React.Component<PolkadotIconProps> {
public shouldComponentUpdate(nextProps: PolkadotIconProps) {
export class PezkuwiIcon extends React.Component<PezkuwiIconProps> {
public shouldComponentUpdate(nextProps: PezkuwiIconProps) {
return (
this.props.account !== nextProps.account ||
this.props.size !== nextProps.size
+1 -1
View File
@@ -29,4 +29,4 @@ export * from './Sparkline';
export * from './Truncate';
export * from './Tooltip';
export * from './Filter';
export * from './PolkadotIcon';
export * from './PezkuwiIcon';
+4
View File
@@ -0,0 +1,4 @@
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
<circle cx="12" cy="12" r="10" fill="#24CC85"/>
<text x="12" y="16" font-size="10" fill="white" text-anchor="middle" font-weight="bold">B</text>
</svg>

After

Width:  |  Height:  |  Size: 252 B

+4
View File
@@ -0,0 +1,4 @@
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
<circle cx="12" cy="12" r="10" fill="#FF8C00"/>
<text x="12" y="16" font-size="8" fill="white" text-anchor="middle" font-weight="bold">JS</text>
</svg>

After

Width:  |  Height:  |  Size: 252 B

+4
View File
@@ -0,0 +1,4 @@
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
<circle cx="12" cy="12" r="10" fill="#0066CC"/>
<text x="12" y="16" font-size="10" fill="white" text-anchor="middle" font-weight="bold">P</text>
</svg>

After

Width:  |  Height:  |  Size: 252 B

+3 -4
View File
@@ -19,10 +19,9 @@ import { Types, Maybe, SortedCollection } from './common';
import { Column } from './components/List';
export const PINNED_CHAINS = {
// Kusama
'0xb0a8d493285c2df73290dfb7e61f870f17b41801197a149ca93654499ea3dafe': 2,
// Polkadot
'0x91b171bb158e2d3848fa23a9f1c25182fb8e20313b2c1eb49219da7a70ce90c3': 1,
// Pezkuwichain (main relay chain)
// Genesis hash will be set after mainnet launch
// '0x...': 1,
};
export function comparePinnedChains(a: string, b: string) {