25 Commits
Author SHA1 Message Date
Satoshi Qazi Muhammed b77006ccfc Remove the local fork
"Fork Locally" ran the selected chain in the browser through
@acala-network/chopsticks-core, which brings its own @polkadot stack
(types, rpc-provider, util-crypto 13 and 14) and @polkadot/wasm-crypto
7.5.4 with the crate versions pezkuwi-wasm 7.5.21 moved off. The app
shipped that second wasm twice, next to ours, for a developer tool;
chopsticks itself stays available from the command line.

Gone: the button, the overlay, the "Local" mock-account modal and the
chopsticks account group, the fork path in the API context, and their
69 locale strings. Mock accounts a fork left in a browser's keyring are
address-only; they now show with the test accounts.

yarn.lock: 32 @polkadot and 2 @acala-network entries -> 0.
2026-10-12 11:20:27 +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 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 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 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 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
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
github-actions[bot] fd7e4522e2 chore: migrate git dependencies to Gitea mirror (git.pezkuwichain.io) 2026-04-21 18:53:14 +03:00
github-actions[bot] b2e2798d8c feat: update branding, genesis hash, and fix UI issues
- 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
2026-01-30 11:10:18 +03:00
github-actions[bot] 9a2dca4b03 [CI Skip] bump/beta 1.0.2-1-x
skip-checks: true
2026-01-18 03:14:42 +00:00
github-actions[bot] 0e4b043848 [CI Skip] bump/beta 1.0.2-0-x
skip-checks: true
2026-01-18 01:42:49 +00:00
github-actions[bot] 4d98ae49c9 [CI Skip] release/stable 1.0.1
skip-checks: true
2026-01-18 04:24:49 +03:00
Kurdistan Tech Ministry a663274a7e Update package versions to match root resolutions 2026-01-17 18:42:49 +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 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 8416c121a1 chore: update copyright year to 2026 2026-01-08 00:30:05 +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 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 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