harb/web-app
traddoo beefe22f90 fix(web-app): position ID, issuance earned (#96)
Bug #1: Position ID Transformation Issue (#95)

  Problem: Frontend applied incorrect byte conversion to position IDs, causing transactions to fail with "NoPermission"
  errors.

  Root Cause: formatId() function did little-endian byte conversion on already-correct numeric strings from GraphQL.

  Fix: Direct conversion BigInt(obj.id) instead of formatId(obj.id as Hex) in usePositions.ts.

  Result: Users can now successfully stake/unstake positions.

  ---
  Bug #2: Issuance Earned Calculation Error (#97)

  Problem: Frontend showed negative "Issuance Earned" values (e.g., -4,991 KRK) due to wrong mathematical formula.

  Root Cause: Formula calculated position.totalSupplyInit - currentTotalSupply (always negative when supply increases).

  Fix: Correct formula (currentTotalSupply - position.totalSupplyInit) × position.share in Vue components.

  Result: Shows realistic positive earnings and enables proper economic monitoring.

Co-authored-by: steve <steve@harberg.dev>
Co-authored-by: openhands <openhands@all-hands.dev>
Reviewed-on: https://codeberg.org/johba/harb/pulls/96
Co-authored-by: traddoo <traddoo@noreply.codeberg.org>
Co-committed-by: traddoo <traddoo@noreply.codeberg.org>
2025-11-20 19:44:10 +01:00
..
public added web-app and landing 2025-09-23 14:18:04 +02:00
src fix(web-app): position ID, issuance earned (#96) 2025-11-20 19:44:10 +01:00
.gitignore added web-app and landing 2025-09-23 14:18:04 +02:00
.lintstagedrc.json webapp - ESLint + Prettier with pre-commit hooks (#54) 2025-10-03 16:51:44 +02:00
.prettierrc webapp - ESLint + Prettier with pre-commit hooks (#54) 2025-10-03 16:51:44 +02:00
AGENTS.md improve web-app config 2025-10-11 10:55:49 +00:00
env.d.ts feat: surface stack versions in app footer 2025-10-11 17:21:45 +00:00
eslint.config.js webapp - ESLint + Prettier with pre-commit hooks (#54) 2025-10-03 16:51:44 +02:00
index.html added web-app and landing 2025-09-23 14:18:04 +02:00
package-lock.json min stake from backend (#78) 2025-10-11 15:30:08 +02:00
package.json webapp - ESLint + Prettier with pre-commit hooks (#54) 2025-10-03 16:51:44 +02:00
README.md reworked stack 2025-10-07 21:57:32 +00:00
tsconfig.app.json more logic to lib 2025-09-23 16:57:49 +02:00
tsconfig.json added web-app and landing 2025-09-23 14:18:04 +02:00
tsconfig.node.json added web-app and landing 2025-09-23 14:18:04 +02:00
vite.config.ts feat: surface stack versions in app footer 2025-10-11 17:21:45 +00:00
vitest.config.ts Extract snatch selection into reusable composable (#30) 2025-09-30 20:35:47 +02:00

harb staking

This template should help get you started developing with Vue 3 in Vite.

VSCode + Volar (and disable Vetur).

Type Support for .vue Imports in TS

TypeScript cannot handle type information for .vue imports by default, so we replace the tsc CLI with vue-tsc for type checking. In editors, we need Volar to make the TypeScript language service aware of .vue types.

Customize configuration

See Vite Configuration Reference.

Project Setup

npm install

Compile and Hot-Reload for Development

npm run dev

Type-Check, Compile and Minify for Production

npm run build

Testing

Accessibility Hooks

The staking form now exposes semantic controls that Playwright can exercise directly:

  • Slider: page.getByRole('slider', { name: 'Token Amount' })
  • Amount input: page.getByLabel('Staking Amount')
  • Tax selector: page.getByLabel('Tax')

Tests should rely on these roles and labels instead of private helpers.

E2E Tests

See INTEGRATION_TEST_STATUS.md in the repository root for complete testing documentation.