Commit Graph
72 Commits
Author SHA1 Message Date
Satoshi Qazi Muhammed 1978e00ad1 Run the slow specs again
- Removes the skip from Bounties and CreateAccount.
- test:slow runs only the .slow. specs.
- Each step waits up to 20s instead of the 1s default, since it waits on a
  live chain. The previous setting is restored when the file ends.
- assertDevNode fails a spec at once when no dev node answers. Without it the
  api keeps reconnecting and the spec waits until the job's timeout.
2026-10-12 01:46:05 +04:00
Satoshi Qazi Muhammed 676780874a Mark a component mounted in a layout effect
useIsMountedRef set its ref in a passive effect, which React runs some time
after the commit. In between, the component is in the DOM and can be clicked
while the ref still says it is not mounted, and useToggle drops the click.
The Accounts page showed it: an "Account" click right after the page drew
did not open the create modal. Under load in a spec this happened in one
run out of five. A layout effect runs during the commit, before an event can
reach the component; unmounting still clears the ref.
2026-10-12 01:46:05 +04:00
Satoshi Qazi Muhammed ab2eb5f80a Bump @pezkuwi/dev to 0.86.8 2026-10-11 19:06:45 +04:00
Satoshi Qazi Muhammed 428684ab28 Make the slow specs pass against a dev node
Run against a local dev node, both specs failed for reasons in the specs
themselves:

- CreateAccount looked for an "Add account" button that is now "Account",
  and that button only shows when accounts can be stored, which the spec
  never turned on. The page has to be wrapped in KeyringCtxRoot and start
  on its route. The button is awaited for up to 20s: the page draws once
  the api and keyring are ready, which takes longer than the 1s default
  on a busy machine.
- Bounties started outside its route and used a fixed title, so a node
  that already held a bounty from an earlier run had two matches.
- Neither closed its connections, so the test process never exited.

Both stay skipped until the nightly run starts a dev node.
2026-10-11 19:06:45 +04:00
Satoshi Qazi Muhammed d700f9dc07 Bump @pezkuwi/dev to 0.86.7
0.86.7 makes toBeNull, not.toHaveLength, toHaveProperty and toThrow behave as
in jest: toThrow with a string matches an error that contains it.
2026-10-11 05:22:21 +04:00
Satoshi Qazi Muhammed a03c12c02c Nightly tests: fail a hang after 20 minutes
The nightly run was cancelled at its 120-minute limit every night until
it was disabled. The cause was the Elapsed clock, which kept the test
process alive and is fixed (a909c07): test:all now completes in about
80 seconds. A 20-minute limit leaves a wide margin and turns a future
hang into a failure within the hour rather than two runner-hours.
2026-10-11 05:13:40 +04:00
Satoshi Qazi Muhammed 3767c819e3 Accounts, Contacts and Sidebar specs: follow the current table layout, run them
The three suites were skipped since the table rework. What changed under them:

- An account or contact spans three rows (main, total balance, details),
  marked from isFirst; the helpers paired rows by two and filtered on a
  row class the rows no longer carry. A collapsed details row is hidden,
  so rows are read including hidden ones.
- Accounts render one table per account group; the page object reads the
  rows of every group table in order, and the sorting fixture keeps its
  three accounts in one group, since sorting applies within a group.
- The expand toggle is the row's expand column, not a row-toggle element.
- useAccountInfo reads ownership from the keyring context, which the test
  page did not provide, so saving a name did nothing; the page now renders
  the real KeyringCtxRoot. The mock api gains consts.system.ss58Prefix.
- Badge popups (react-tooltip v6) render only while hovered; the specs
  hover the badge first. The multisig badge needs the isMultisig flag.
- Addresses are shown in full and shortened by css; the fixtures with
  shortened addresses are gone.
- The total balance, transferable and locked cards are always shown, as
  placeholders without accounts; the specs check that instead of their
  absence.
- Checks that needed matchers the runner lacks (not.toHaveLength,
  toHaveProperty, toThrow with a contained message) are written against
  the DOM directly.
2026-10-10 16:28:39 +04:00
Satoshi Qazi Muhammed 61c681567d Run the module-mocked page specs with @pezkuwi/dev 0.86.6
@pezkuwi/dev 0.86.6 passes --experimental-test-module-mocks through to
node and gives the browser env jsdom's own events, the DOM node
hierarchy and the layout observers. The test scripts pass the flag, and
the five integration specs that were excluded while they depended on
jest.mock (Accounts, Create, Contacts, Bounties, AccountSidebar) run
again.
2026-10-10 11:42:13 +04:00
Satoshi Qazi Muhammed 0c5b47ce0e Integration specs: node:test module mocks instead of jest.mock
The account, address, sidebar and bounties specs replaced hooks with
jest.mock, which the node:test runner does not have, so all five failed
to load and were excluded from yarn test. They now register mocks with
mock.module from node:test and import the page under test afterwards,
since Node only swaps a module that has not been loaded yet.

- test-support/mocks: mockPageHooks() replaces the hooks a Page reads.
  An ES module mock replaces every export, so each mock lists them all
  (useBestNumber's useBestNumberRelay included). The real useAccountInfo
  is wrapped, typed now, with the fixture identity merged in a typed
  helper.
- The page-specific mocks live with their page: useMultisigApprovals in
  page-accounts/test, useAddresses in page-addresses/test.
- jest-dom matchers were never registered for this runner; specs and
  page elements use assertHasClass, assertTextContent and assertVisible
  from test-support, with the same meaning.
- Page's mock api gains apiIdentity, which useAccountInfo reads.
- The bounties voting tooltip renders hidden and fades in, so the spec
  waits for it to become visible.
- jest/expect-expect counts the assert* helpers as assertions; the
  disable comments that only existed for that are removed.

Create and Bounties run green. Accounts, Addresses and Sidebar load and
stay skipped as upstream left them (their FIXMEs are about the reworked
tables). Needs @pezkuwi/dev 0.86.6 for the module mocks flag and the
fuller browser env.
2026-10-10 11:42:13 +04:00
Satoshi Qazi Muhammed 8539e30888 Modal and Popup specs: wait for states instead of sleeping; run them
Each test wrapped its whole sequence in waitFor() and slept 1s inside
every step, so waitFor's 1s timeout always expired ("Timed out in
waitFor"). Steps are now awaited in order, "open" is findBy* and
"closed" a single-condition waitFor, with an explicit cleanup between
tests. Both now pass (4 and 3) and exit, so they leave the yarn test
exclusions.
2026-10-10 07:38:07 +04:00
Satoshi Qazi Muhammed a909c0709b Elapsed: run the shared clock only while an Elapsed is mounted
tick() was called when the module loaded and re-armed itself every
100ms forever, on every page whether or not any Elapsed was shown. In a
test process it is the timer that never let Node exit: the Modal and
Popup specs finished in 3s and then hung until killed (the only live
timer left was Elapsed.tsx:32, traced by recording timer creation).

The first Elapsed to mount starts the clock; it stops on the next tick
after the last one unmounts.
2026-10-10 07:38:07 +04:00
Satoshi Qazi Muhammed 0599973705 Run the page and component unit specs in yarn test
`yarn test` excluded every ^page- and ^react- spec, and test:all (the
nightly) is disabled, so 21 of the 25 specs ran nowhere and had broken
unnoticed. The exclusions now name only the integration specs still
built on jest.mock (Accounts, Create, Contacts, Bounties, the account
sidebar) and the two that hang (Modal, Popup), plus the .slow. ones;
13 spec files run instead of 1 (137 tests). @pezkuwi/dev 0.86.5 brings
the dev-test fix toEqual(expect.arrayContaining(...)) needs.
2026-10-10 07:12:12 +04:00
Satoshi Qazi Muhammed 9302b4ff16 Tests: build types by the app's names; fix rebrand-broken fixtures
- The static metadata in @pezkuwi/types-support predates the rename and
  only knows Pallet* names, while the app (and the test-support creation
  helpers) use PezpalletBountiesBountyStatus, PezpalletAllianceCid, ...
  createAugmentedApi now also registers the @pezkuwi/types-augment
  lookup definitions, and createLookupRegistry gives specs a plain
  registry that knows them.
- calculateBountyBond: the description had been rewritten from
  "Kusama" (24 bytes) to "Dicle" (23 bytes) with the expected bond left
  for 24; now "Pezkuwi network UI Bounty" (25 bytes) and its value.
- page-alliance had no tsconfig.spec.json, so its spec was never
  type-checked; added, and specs are excluded from its build config.
2026-10-10 07:12:12 +04:00
Satoshi Qazi Muhammed 09fbca8121 react-tooltip 4 -> 6
react-tooltip 4 brought uuid 7 (open advisory, fixed only in 11) and
had not been maintained since 2022. Tooltip now wraps the v6 component
(no more cast); triggers use data-tooltip-id instead of data-for and
data-tip (Icon, Badge, Tag, claims payload). v6 renders the content in
.react-tooltip-content-wrapper and draws the arrow as its own element
that inherits the background, so the wrapper's child selectors point
there and the ::after arrow colours for accounts-badge are gone.

The accounts-badge block in the global styles was never closed (as
upstream); it is closed now with the same nesting, so its link colours
still apply only inside badge tooltips.

Checked in a headless browser on Zagros, the "available on all
networks" account badge: with v4 the tooltip was one 1525px line
starting off-screen at x=-260; with v6 it is 300px wide (the max-width
already in the styles), wrapped, on screen, arrow on the badge, and in
the light accounts-badge style the styles define.
2026-10-10 06:02:46 +04:00
Satoshi Qazi Muhammed 8c9ee48278 Drop the foreign chains' parameters; fix the Zagros genesis
- api/constants: only PEZKUWI_GENESIS and ZAGROS_GENESIS remain. The
  Zagros value was a placeholder from before its launch; it is now the
  live chain's genesis (0x1b0b4727…2cd5, measured).
- Inflation, proposal thresholds and governance tracks keep the Pezkuwi
  entries; the Dicle, Kulupu, Cere, Vara, Joystream, zkVerify, Dock,
  Neatcoin and NFTMart ones go, as do the dicle tracks.
- getTeleportWeight was used nowhere: removed.
- page-society: the Dicle-only "design samples" button and its canary
  drawing go, with their table column.
- page-assets: the next-id rule keyed on Polkadot's and Kusama's asset
  hub genesis never matched a Pezkuwi chain; removed, no change there.
- ParaLink: the Subscan link went to scan.pezkuwichain.io, which does
  not resolve; removed (coretime keeps the homepage link).
- typesBundle generator: no unused sort-keys directive when empty.
2026-10-10 04:54:16 +04:00
Satoshi Qazi Muhammed 66e8d6c1be apps-config: drop the foreign chains' logos, links and identity icons
- 87 chain and all 185 node logos were referenced by nothing once the
  foreign endpoints went; the images are removed and imgConvert no longer
  generates a nodes set. Pezkuwi and Zagros logos remain.
- External links: none of the 14 services serves a Pezkuwi chain. Most
  are third-party sites whose chain keys had been renamed by the rebrand
  (on Zagros they linked to commonwealth, subsquare and others for
  another chain's data); stats., statescan. and scan.pezkuwichain.io do
  not resolve, explorer.pezkuwichain.io is a placeholder and treasury./
  governance. redirect back to this app. externalLinks is empty until a
  service indexes a Pezkuwi chain; their logos are removed too.
- Identity icons: the centrifuge, joystream, litentry, dicle and paseo
  entries are removed.
2026-10-10 04:54:16 +04:00
Satoshi Qazi Muhammed 7fae8bc279 apps-config: drop the foreign chains' type bundles
typesBundle carried overrides for 140 chains inherited from upstream;
none of them is a Pezkuwi chain. The live Pezkuwi and Zagros runtimes
(pezkuwichain, asset-hub-pezkuwichain, people-pezkuwichain, zagros and
its asset hub, bridge hub, collectives, coretime and people) match no
entry and need none: they carry metadata v14+.

The spec files, the Cere chain bundle, the custom derives and the 32
npm packages they came from are removed, among them GPL-3.0-only ones
(pontem, moonbeam, subsocial, jamton) that were bundled into this
Apache-2.0 app. The spec/chain/derives mechanism stays, empty, for a
chain that ever needs one. typesBundle.ts is regenerated (15 lines).
yarn.lock loses 3250 lines, elliptic and the old @polkadot/api trees
with them.
2026-10-10 04:54:16 +04:00
Satoshi Qazi Muhammed 5b1dbd15db apps-config: list only Pezkuwi and Zagros chains
The connection list showed Pezkuwi, Zagros and Dicle; Dicle was never
launched (none of its six RPC hosts resolves). The foreign endpoint
lists inherited from upstream (prodChains, testChains, Paseo, zkVerify)
were exported but used nowhere. Both are removed; the resulting list is
the previous one without the Dicle header and its six entries.
2026-10-10 04:54:16 +04:00
Satoshi Qazi Muhammed 52da277126 Dependencies: drop unused and dead ones, close the remaining advisories
- yarn.lock refreshed within existing ranges for the open advisories.
- copy-webpack-plugin 11 -> 14 (serialize-javascript 7) and
  terser-webpack-plugin 5.6: build:www output is identical except four
  chunks where terser now emits `a ?? b` for `null == a ? b : a`.
- testcontainers (page-addresses, test-support) and devtron were never
  imported: removed (undici, @fastify/busboy, highlight.js went with
  them).
- The crypto-browserify webpack fallback was dead: build:www is
  byte-identical without it, so the fallback and the dependency are gone
  and a future `crypto` import fails the build instead of shipping a
  polyfill.
- braces resolves to @pezkuwi/braces 3.0.4, which limits nesting depth
  (CVE-2026-93687; no upstream release).
2026-10-10 04:09:47 +04:00
Satoshi Qazi Muhammed 0fd88403bd apps-config: keep logion and digitalnative type bundles as data
@logion/node-api (Apache-2.0) and @digitalnative/type-definitions (MIT)
were imported only for their type definitions, and each brought an old
@polkadot/api tree with it (util-crypto 6/7, elliptic, uuid). The
definitions are now in the spec files, with their source and license.

Checked by serialising each resulting bundle with key order and
undefined preserved: byte-identical to what the packages produced
(logion 27715 bytes, standard and opportunity 1778 each).

RegistryTypes does not model a struct's `_alias` map, which the registry
accepts; the merged latest logion types are cast at that one point.
2026-10-10 04:09:47 +04:00
Satoshi Qazi Muhammed 09f16d3549 Claims: recover the signer with @pezkuwi/util-crypto, not elliptic
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.
2026-10-10 04:09:47 +04:00
Satoshi Qazi Muhammed a5a5a6f9e0 Record the existing React Compiler findings as suppressions
react-hooks 7 rules on as errors; the 458 existing findings (309 files,
React Compiler rules only) are recorded in eslint-suppressions.json, so
any new one fails lint and fixed ones must be pruned.
2026-10-10 02:06:12 +04:00
Satoshi Qazi Muhammed a235ddbc7b PoolSize: add the private pool, not the system pool twice
privatePool was read from systemPoolSize. The storage item is an
Option<StatusRecord>, which is now the type it is read as.
2026-10-10 02:06:12 +04:00
Satoshi Qazi Muhammed e2c83baac9 InputNumber: reject decimals the unit cannot carry
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.
2026-10-10 02:06:12 +04:00
Satoshi Qazi Muhammed 45d479d2ec Move to @pezkuwi/dev 0.86.4 (eslint 10 toolchain)
- 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).
2026-10-10 02:06:12 +04:00
Satoshi Qazi Muhammed c800e9affb RoboHash: generate the import-sort directive only where it is used
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.
2026-10-10 02:06:12 +04:00
Satoshi Qazi Muhammed 00e4a2f67b Make the PR workflow a real gate
- continue-on-error is removed; lint, test, build:code and build:i18n
  each have to pass, with fail-fast off so each reports on its own
- after each step the tree must be unchanged: eslint --fix, the i18n
  catalogue and typesBundle.ts are all rewritten by these steps
- the chmod step is dropped; the scripts are run through node
2026-10-08 12:06:45 +04:00
Satoshi Qazi Muhammed 465ac76a0a Regenerate typesBundle.ts
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.
2026-10-08 12:06:45 +04:00
Satoshi Qazi Muhammed e450945f22 Move to the fixed @pezkuwi crypto stack
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.
2026-10-08 12:06:45 +04:00
SatoshiQaziMuhammedandClaude Opus 5.5 ef5d58fdea Move to react-router 7.18 (#76)
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>
2026-10-05 02:34:20 +04:00
SatoshiQaziMuhammedandClaude Opus 5.5 daa061074e Remove the inherited auto-approve and auto-merge bots (#77)
Both came with the upstream template: a pull request labelled '-auto' was
approved for an upstream maintainer's account and squash-merged once its
checks reported, through the upstream author's own actions. The label does
not exist here and neither workflow ever acted (2 runs each, both on other
labels), but the path was open: it merges without review, and the PR checks
it waited on run with continue-on-error.

Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-05 02:34:11 +04:00
Satoshi Qazi MuhammedandClaude Opus 5.5 895fa17d63 Update vulnerable web dependencies within the shipped bundle
- 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>
2026-10-04 05:43:56 +04:00
Satoshi Qazi MuhammedandClaude Opus 5.5 570586bae3 Deploy apps.pezkuwichain.io from main behind an approval
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>
2026-10-04 04:33:58 +04:00
Satoshi Qazi MuhammedandClaude Opus 5.5 f3e338df6d Remove the inherited gh-pages, IPFS and Docker Hub release tooling
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>
2026-10-04 04:33:58 +04:00
Satoshi Qazi MuhammedandClaude Opus 5.5 f72ba84aac Drop the isElectron flag from the API context
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>
2026-10-04 04:33:58 +04:00
Satoshi Qazi MuhammedandClaude Opus 5.5 d14acff1d3 Sort ApiPromise options so lint passes on main
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>
2026-10-04 04:33:58 +04:00
Satoshi Qazi MuhammedandClaude Opus 5.5 d4cc96df1f Remove the unreleased Electron desktop package
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>
2026-10-04 04:33:58 +04:00
Kurdistan Tech Ministry a663274a7e Update package versions to match root resolutions 2026-01-17 18:42:49 +03:00
Kurdistan Tech Ministry ce478eb493 Update @pezkuwi/extension packages to 0.62.18 2026-01-17 16:31:45 +03:00
Kurdistan Tech MinistryandClaude Opus 4.5 0db06287a0 feat: add landing page for network.pezkuwichain.io
- 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>
2026-01-09 13:50:44 +03:00
Kurdistan Tech Ministry 9d188e6a05 chore: update @pezkuwi/phishing to 0.25.28 2026-01-09 04:29:03 +03:00
Kurdistan Tech Ministry 331bb72166 chore: update @pezkuwi/phishing to 0.25.27 2026-01-09 04:21:30 +03:00
Kurdistan Tech Ministry d45ed809cb chore: update @pezkuwi/extension-inject to 0.62.14 2026-01-09 03:34:21 +03:00
Kurdistan Tech Ministry 01e80cafd6 fix: add extension-dapp and extension-inject to resolutions
Fixed nested node_modules chainType mismatch by adding @pezkuwi/extension-dapp
and @pezkuwi/extension-inject to resolutions to ensure consistent bizinikiwi
chainType across all packages.
2026-01-09 03:22:19 +03:00
Kurdistan Tech Ministry 6532bc136c chore: update @pezkuwi/extension-inject to 0.62.14 2026-01-09 03:12:48 +03:00
Kurdistan Tech MinistryandClaude Opus 4.5 2b3eb415f8 chore: update @pezkuwi/ui packages to 3.17.2
- 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>
2026-01-09 02:05:52 +03:00
Kurdistan Tech MinistryandClaude Opus 4.5 a9681f7c9f chore: update pezkuwi-ui dependencies to 3.17.1
- 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>
2026-01-09 01:36:18 +03:00
Kurdistan Tech MinistryandClaude Opus 4.5 2a779cc25a chore: apply eslint import sorting fixes
Automatic import ordering changes from linter.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-08 17:01:24 +03:00
Kurdistan Tech MinistryandClaude Opus 4.5 a64aeb564d fix: use correct RPC URLs for Pezkuwi production parachains
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>
2026-01-08 16:46:46 +03:00
Kurdistan Tech MinistryandClaude Opus 4.5 34d7907417 fix: add Pezkuwi networks to account address prefix options
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>
2026-01-08 16:36:30 +03:00
Kurdistan Tech MinistryandClaude Opus 4.5 7a4bbeac25 fix: update extension packages and fix type compatibility for pezkuwi-sdk
- 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>
2026-01-08 16:24:19 +03:00
Kurdistan Tech Ministry e64f846b0d fix: add eslint-disable for unsafe member access and fix webpack header 2026-01-08 11:31:54 +03:00
Kurdistan Tech Ministry ade75e7078 fix: update copyright headers in generated logo files from @polkadot/apps to @pezkuwi/apps-config 2026-01-08 11:23:30 +03:00
Kurdistan Tech Ministry 45320e6f27 refactor: remove non-Pezkuwi blockchains from menu and update external service URLs
- Remove Paseo, prodChains, testChains from sidebar menu
- Keep only Pezkuwi, Dicle, Zagros networks and their parachains
- Update external service links to use Pezkuwi domains:
  - explorer.pezkuwichain.io (block explorer)
  - scan.pezkuwichain.io (blockchain scanner)
  - statescan.pezkuwichain.io (state explorer)
  - stats.pezkuwichain.io (validator stats)
  - treasury.pezkuwichain.io (treasury dashboard)
  - governance.pezkuwichain.io (governance portal)
- Disable non-applicable external services (Subsquare, KodaDot, etc.)
- Fix eslint errors (key ordering, unsafe member access)
2026-01-08 11:16:24 +03:00
Kurdistan Tech Ministry d9eb5d9715 fix: remove unnecessary type assertions and fix key ordering in index.ts 2026-01-08 10:38:03 +03:00
Kurdistan Tech Ministry 7c1295d1d5 fix: resolve remaining eslint errors (key ordering and unsafe member access) 2026-01-08 10:27:55 +03:00
Kurdistan Tech Ministry 55d7dcb23b fix: fix key ordering in endpoint configs 2026-01-08 02:30:31 +03:00
Kurdistan Tech Ministry 7e205f6c12 fix: add eslint-disable for unsafe-assignment errors 2026-01-08 02:25:25 +03:00
Kurdistan Tech Ministry e0d25b2d3a fix: fix remaining lint errors 2026-01-08 02:11:31 +03:00
Kurdistan Tech Ministry 513dc8e57f fix: fix lint errors and update headers 2026-01-08 02:04:15 +03:00
Kurdistan Tech Ministry 0247a5238e chore: update yarn.lock for @pezkuwi/dev@0.85.3 2026-01-08 01:45:39 +03:00
Kurdistan Tech Ministry f1f5baf5f2 chore: update @pezkuwi/dev to 0.85.3 2026-01-08 01:36:37 +03:00
Kurdistan Tech Ministry 8416c121a1 chore: update copyright year to 2026 2026-01-08 00:30:05 +03:00
Kurdistan Tech MinistryandClaude Opus 4.5 d7a99488d5 chore: add workflow_dispatch trigger to push-main.yml
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-08 00:22:05 +03:00
Kurdistan Tech MinistryandClaude Opus 4.5 87854ee7a1 fix: update URLs and fix workflow authentication
- Replace pezkuwi.js.org with pezkuwichain.app domain
- Replace jacogr/pezkuwi-js-apps with pezkuwichain/pezkuwi-apps Docker image
- Fix GH_PAT_BOT secret issue by using GITHUB_TOKEN
- Update GitHub org references from pezkuwi-js to pezkuwichain
- Update issue template to point to docs.pezkuwichain.io

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-08 00:00:35 +03:00
SatoshiQaziMuhammed 6cc99ea3ea Add CodeQL analysis workflow configuration 2026-01-07 23:42:22 +03:00
Kurdistan Tech Ministry 67d71e128d feat: implement dark/light theme switching
- Add ui-settings resolution for v3.16.9
- Add CSS variables for dark/light themes in GlobalStyle
- Set default data-theme attribute on html element
- Simplify theme creation in Root.tsx
- Disable webpack error overlay for cleaner dev experience
2026-01-07 19:22:38 +03:00
Kurdistan Tech Ministry fe0e014c4e feat: add Kurdish, Turkish, and Persian language support
- Add Kurdish (Kurmanji) - ku
- Add Kurdish (Sorani) - ckb
- Add Turkish - tr
- Add Persian (Farsi) - fa
2026-01-07 16:32:36 +03:00
Kurdistan Tech Ministry a91f2cf714 fix: update URLs, logos, and package versions
- Fix GitHub URLs from pezkuwi-js/apps to pezkuwichain/pezkuwi-apps
- Fix wiki URL from wiki.pezkuwi.network to wiki.pezkuwichain.io
- Fix support/statement URLs to use pezkuwichain.io domain
- Fix chain logos import (use variables instead of strings)
- Update @pezkuwi/networks to ^14.0.9
- Update @pezkuwi/types-known to ^16.5.8
2026-01-07 16:23:36 +03:00
Kurdistan Tech Ministry 6f59b1f3e4 fix: hardcode genesis hashes for Dicle, Pezkuwi, Zagros 2026-01-07 13:20:56 +03:00
Kurdistan Tech Ministry 8679c871d1 fix: update page title to Pezkuwi/Bizinikiwi Portal 2026-01-07 13:16:52 +03:00
Kurdistan Tech Ministry d21bfb1320 feat: initial Pezkuwi Apps rebrand from polkadot-apps
Rebranded terminology:
- Polkadot → Pezkuwi
- Kusama → Dicle
- Westend → Zagros
- Rococo → PezkuwiChain
- Substrate → Bizinikiwi
- parachain → teyrchain

Custom logos with Kurdistan brand colors (#e6007a → #86e62a):
- bizinikiwi-hexagon.svg
- sora-bizinikiwi.svg
- hezscanner.svg
- heztreasury.svg
- pezkuwiscan.svg
- pezkuwistats.svg
- pezkuwiassembly.svg
- pezkuwiholic.svg
2026-01-07 13:05:27 +03:00