recoverAddress used secp256k1/elliptic.js, which put elliptic (open
advisories, no fixed version) into the shipped bundle. secp256k1Recover
from @pezkuwi/util-crypto (@noble/curves, or wasm) with the 'keccak'
hash type returns the same expanded key without its 0x04 prefix.
The spec's signature vector had been broken by the rebrand: the signed
message was rewritten from "Kusama" to "Dicle", so recovery gave another
address and the test failed on the old code too (it only runs in
test:all). Restored; old and new code pass it, and changing one word of
the message makes it fail.
When an amount had more decimals than the selected unit allows, the
function set result to -1 and then overwrote it, so the conversion went
on with a negative exponent. BN computes 10 ** -n as 10 ** n: with 12
chain decimals, "1.1234567890" in milli became 13345678900 instead of
1123456789. Such input is now invalid.
The decimals were also cut to the chain's decimals, which silently
dropped digits of an asset with more decimals than the chain; the cut is
removed, and with it the api argument it was the only use of.
- dev ^0.86.4 at the root and in packages/apps; directives renamed by
pezkuwi-dev-migrate-eslint10.
- eslint --fix with the 0.86.4 config; one fix broke syntax
(typescript-eslint prefer-optional-chain turned
`(isStarted && onStart) && onStart()` into `(isStarted && onStart?.();`
in TxButton) and is corrected by hand.
- The remaining findings fixed rather than disabled: optional chains
(each suggestion reviewed), `cause` on rethrown errors, `if` instead of
`a && promise` in effects, parallel instead of sequential awaits in
Promise.all, Error rejections, no `delete` on arrays (the storage query
cache is a Map; an upload's file list no longer keeps a hole), no
`[object Object]` stringification (TFunction's second argument is text
or options), dead code removed (referenda's never-shown expand button,
react-query's unused CoreDescriptor).
The generator put `/* eslint-disable simple-import-sort/imports */` in
every generated image module, but only the two index files import
anything; eslint 10 reports the other 1533 as unused directives. It also
wrote import paths without the `.js` extension the committed index files
carry, so regenerating no longer reproduced them. Both fixed; the
generator now reproduces all 1535 committed files byte for byte.
build:code regenerates this file from the chain specs; 7a4bbea edited
it by hand and removed the zeitgeist market and court types, so every
build rewrote it and the committed copy was never what the build used.
It is the generator's output again; lint, build and tests pass on it.
The resolutions held the whole tree on wasm-crypto 7.5.17, util-crypto
14.0.25, api 16.5.36, ui 3.17.2 and extension-dapp 0.62.20, the
releases where ed25519, secp256k1, derivation and bip39 were not
implemented in wasm-crypto. Every @pezkuwi pin moves to the release
that has them: common 14.0.26, wasm 7.5.20, api 16.5.37, ui 3.17.3 and
extension 0.62.27; @pezkuwi/dev ^0.85.12. After `yarn dedupe` each
@pezkuwi package resolves to a single version.
Every 6.x release is inside both open advisories, so no 6.x update closes
them: GHSA-wrjc-x8rr-h8h6 (open redirect via a backslash in <Link> and
useNavigate) and GHSA-337j-9hxr-rhxg (SSR hydration; not reachable here,
this is a client-only HashRouter app). 7.18 in library mode keeps every API
the app imports (Routes, Route, Link, NavLink, Navigate, useLocation,
useParams, HashRouter, MemoryRouter) and bundles @remix-run/router.
The one behaviour v7 changes, relative links under splat routes, does not
occur: no route path ends in '*', tab links are absolute (basePath) and the
top level picks the page from location.pathname.
Measured: 17 routes opened in Chromium against the live 6.x build and this
build give the same URL, active tab, tab count and tab-click target, with no
page errors. Tests 89/89, lint and type check green.
Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
- react-router 6.30.6 / @remix-run/router 1.23.4 (open redirect, XSS advisories)
- styled-components 6.5.3, which brings postcss 8.5.28
- query-string 9.5.1 for decode-uri-component 0.5.0; parse() is the only API
used and is unchanged
- in-range lockfile refresh
Bundle compared against the live build of 570586b: vendor chunks and the
loader change; the one page chunk that differs only renumbers the
query-string module. Tests 89/89, lint and type check green.
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
push-main.yml now builds build:www on every push to main and, once the
production environment is approved, copies it to the web host and switches
to it. The host keeps releases side by side and serves a 'current' symlink,
so going live is one rename and rollback is a dispatch with an earlier sha.
.github/deploy/release.sh checks the switch through nginx for the public
name and restores the previous release if the new one is not served.
Ships env-config.js, which index.html loads: on a static host the request
fell through to index.html and the browser ran HTML as a script.
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
None of it could run here: the repository has no Pages site, no Pinata or
Crust credentials and no npm token, and docker/build.sh pushed to the
upstream author's Docker Hub account. Remove the release scripts, the IPFS
uploader with @pinata/sdk (axios 0.21) and @crustio/crust-pin, and
public/ipfs, whose pin.json and redirect pointed at another project's IPFS
build from this site.
README: the hosted URL is apps.pezkuwichain.io; drop the IPFS and desktop
chapters and the pull of a Docker image that does not exist. .gitignore
listed '.log' where '*.log' was meant, which let start.log in.
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Only the Electron renderer ever set isElectron to true; the web entry passed
false. With that package gone the flag is constant, so remove it from
ApiCtxRoot, the context types and its consumers, together with the
pezkuwi.js.org link base it selected. In-browser account storage and the
WebUSB ledger option now follow the settings alone, as they already did on
the web.
Runtime environment detection (getEnvironment, ExternalWarning) reads the
user agent and is left as is.
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
sort-keys has rejected packages/react-api/src/Api.tsx since signedExtensions
was added after signer, so every lint run on main stopped there.
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
packages/apps-electron was never released, and electron 28, electron-builder
and their tooling (got, tar, app-builder-lib, builder-util-runtime) were most
of the dependency advisories left in this repo. Drop the package, its scripts,
the build:electron CI step, its i18n namespace and the deps only it used
(concurrently included).
The shipped web bundle changes by one string: "apps-electron" leaves the
i18n namespace list.
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
PezkuwiChain requires AuthorizeCall as the first signed extension in
all transactions. Without this extension properly configured, transactions
fail with "bad signature" errors.
Added signedExtensions configuration to:
- ApiPromise.create() in Api.tsx
- getApi() in StakingAsync.tsx
- Test API creation functions
This fix enables proper transaction signing for PezkuwiChain mainnet
and teyrchains (Asset Hub, People Chain).
- Fix Vec type casting in nominate, kick, and multisig operations
- Update all @pezkuwi packages to latest stable versions (API 16.5.36, Common 14.0.25)
- Regenerate logo SVG files
- Update PEZKUWI_GENESIS to correct hash (0x1fc56b6a5fcd50358707f69b2b0bb0c8ab1fea2bcfc5eba7279efbcafef642af)
- Change highlight color from pink/orange to Kurdistan green (#86e62a)
- Add critical CSS in index.html to fix initial theme load issue
- Fix metadata badge showing incorrectly on every page load
- Fix block time text rendering vertically in explorer
- Update SVG logos with correct branding colors
The 0.62.19 package had a broken structure (missing types field,
wrong main entry pointing to non-existent index.js).
Version 0.62.20 has the correct package structure with:
- main: "./build/cjs/index.js"
- types: "./build/index.d.ts"
Updated resolutions in package.json to force 0.62.20 instead of
^0.62.18 which resolved to the broken 0.62.19.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Added hero landing page with Digital Kurdistan State branding
- Header with Explorer and Go to Home Page buttons
- Background image with Kurdistan map
- Landing page shows when no hash route, app loads on #/explorer
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Update resolutions to use @pezkuwi/ui-* packages 3.17.2
- Fix webpack alias for @pezkuwi/ui-shared (flat package structure)
- Regenerate yarn.lock with correct dependencies
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Update @pezkuwi/react-identicon to ^3.17.1
- Update @pezkuwi/react-qr to ^3.17.1
- Update @pezkuwi/ui-keyring to ^3.17.1
- Update @pezkuwi/ui-settings to ^3.17.1
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Changed Pezkuwi parachain endpoints from zagros-*-rpc URLs to
pezkuwi-*-rpc URLs to avoid duplicates with Zagros testnet endpoints.
This fixes the endpoint uniqueness test failures.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Add custom Pezkuwi networks to SS58 address prefix dropdown since they
are not in the upstream @substrate/ss58-registry package:
- Pezkuwi Relay Chain (prefix: 0)
- Dicle Relay Chain (prefix: 2)
- Zagros Testnet (prefix: 42)
- PezkuwiChain Development (prefix: 42)
Also filter out polkadot/kusama from the list as they are replaced
by pezkuwi/dicle in this project.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Update @pezkuwi/extension-inject to ^0.62.13 with proper /types exports
- Update @pezkuwi/extension-dapp to ^0.62.13
- Update @pezkuwi/extension-compat-metamask to ^0.62.13
- Fix IconTheme type to include 'bizinikiwi' and 'pezkuwi' themes
- Fix endpoint array issues (getTeleports -> direct array references)
- Add type assertions for external package compatibility (acala, moonbeam, parallel)
- Fix subspace.ts dynamic class typing
- Fix conviction type in page-referenda
- Update Pallet type names to Pezpallet prefix across codebase
- Define InjectedExtension types locally for module resolution
- Add styled-components DefaultTheme augmentation
- Add react-copy-to-clipboard type declaration for React 18
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>