Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
25 commits
Select commit Hold shift + click to select a range
ceadaee
Fix Python SDK publish workflow (#3781)
portuu3 Feb 11, 2026
23e50b5
chore(deps-dev): bump nock from 13.5.6 to 14.0.11 (#3789)
dependabot[bot] Feb 16, 2026
960059f
chore(deps-dev): bump prettier from 3.7.4 to 3.8.1 (#3788)
dependabot[bot] Feb 16, 2026
ca7b871
Update gas price handling to use new EIP-1559 (#3787)
flopez7 Feb 16, 2026
8fbe1cf
Add SDK transaction timeout constant and apply it across services (#3…
flopez7 Feb 16, 2026
1098733
chore(deps-dev): bump @eslint/js from 9.39.0 to 10.0.1 (#3790)
dependabot[bot] Feb 16, 2026
f099932
chore(deps): bump react-router-dom from 6.30.1 to 7.13.0 (#3791)
dependabot[bot] Feb 16, 2026
92a99de
chore(deps): bump @mui/icons-material from 7.3.4 to 7.3.8 (#3792)
dependabot[bot] Feb 16, 2026
a31cfc8
[SDK] Handle subgraph errors properly (#3782)
flopez7 Feb 18, 2026
c50fc7e
[SDK][Typescript] Split domain modules (#3793)
flopez7 Feb 18, 2026
69f1bb5
fix: docker workspace build order by excluding app workspace from ear…
flopez7 Feb 18, 2026
3f58bd9
[Fix] docker compose --parallel ignored in Compose v5 (#3797)
flopez7 Feb 23, 2026
3d0faa2
chore(deps): bump actions/dependency-review-action from 4.8.2 to 4.8.…
dependabot[bot] Feb 26, 2026
2785332
chore(deps-dev): bump @nestjs/testing from 11.1.12 to 11.1.14 (#3800)
dependabot[bot] Feb 26, 2026
1d0f402
chore(deps): bump @mui/styled-engine-sc from 7.2.0 to 7.3.8 (#3802)
dependabot[bot] Feb 26, 2026
ee35e10
chore(deps): bump @nestjs/schedule from 6.1.0 to 6.1.1 (#3804)
dependabot[bot] Mar 2, 2026
9f7d3ab
[Job Launcher] remove createHcaptchaJob functionality and related co…
flopez7 Mar 6, 2026
732197c
[Dashboard] Fix transaction amounts/symbols for multi-token support (…
flopez7 Mar 10, 2026
ac50a89
[Job Launcher Server] Enable HMT on testnets add USDC and USDT token …
flopez7 Mar 10, 2026
5495f17
chore(deps): bump @wagmi/core from 2.22.1 to 3.4.0 (#3808)
dependabot[bot] Mar 11, 2026
5e66e65
chore(deps): bump vitest from 3.2.4 to 4.0.18 (#3803)
dependabot[bot] Mar 11, 2026
fe62c35
chore(deps): bump bcrypt and @types/bcrypt (#3809)
dependabot[bot] Mar 11, 2026
1c3883b
chore(deps): bump @google-cloud/storage from 7.17.2 to 7.19.0 (#3817)
dependabot[bot] Mar 11, 2026
d2e86bd
chore(deps): bump actions/dependency-review-action from 4.8.3 to 4.9.…
dependabot[bot] Mar 11, 2026
1fe9478
chore(deps): bump styled-components from 6.1.19 to 6.3.11 (#3810)
dependabot[bot] Mar 11, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions .changeset/crisp-buckets-agree.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"@human-protocol/sdk": minor
---

Added typed subgraph errors (SubgraphRequestError, SubgraphBadIndexerError) and wrapped subgraph request failures with these classes
5 changes: 5 additions & 0 deletions .changeset/shaggy-months-post.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"@human-protocol/sdk": patch
---

Split combined domain files into module folders with explicit files per responsibility.
2 changes: 1 addition & 1 deletion .github/workflows/cd-packages.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ jobs:
steps:
- uses: actions/checkout@v6
with:
token: ${{ secrets.GH_GITBOOK_TOKEN }}
token: ${{ secrets.RELEASE_GH_TOKEN }}
- name: Setup git identity
run: |
git config --global user.name "github-actions[bot]"
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/cd-python-sdk.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ jobs:
steps:
- uses: actions/checkout@v6
with:
token: ${{ secrets.GH_GITBOOK_TOKEN }}
token: ${{ secrets.RELEASE_GH_TOKEN }}
- name: Setup git identity
run: |
git config --global user.name "github-actions[bot]"
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/ci-dependency-review.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,6 @@ jobs:
steps:
- uses: actions/checkout@v6
- name: Dependency Review
uses: actions/dependency-review-action@v4.8.2
uses: actions/dependency-review-action@v4.9.0
with:
show-openssf-scorecard: false
14 changes: 11 additions & 3 deletions docker-setup/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
build-services services-up services-stop

export COMPOSE_BAKE=false
DOCKER_PARALLEL ?= 4
DOCKER_PARALLEL ?= 2

check-env-file:
@if [ ! -f "./.env.compose.local" ]; then \
Expand All @@ -17,11 +17,19 @@ infra-stop:
@docker compose --env-file .env.compose.local stop postgres redis minio minio-client

build-services: check-env-file
@docker compose --env-file .env.compose.local --parallel $(DOCKER_PARALLEL) up --no-start
@# TODO: Revisit compose-native parallel builds once Docker Compose v5 parallel limits are reliable again.
@docker compose --env-file .env.compose.local config --services | \
xargs -n $(DOCKER_PARALLEL) docker compose --env-file .env.compose.local build
@docker compose --env-file .env.compose.local up --no-start

services-up: check-env-file
@service_names="$(wordlist 2, $(words $(MAKECMDGOALS)), $(MAKECMDGOALS))"; \
docker compose --env-file .env.compose.local --parallel $(DOCKER_PARALLEL) up -d $$service_names
@# TODO: Revisit compose-native parallel builds once Docker Compose v5 parallel limits are reliable again.
if [ -n "$$service_names" ]; then \
printf '%s\n' $$service_names | xargs -n $(DOCKER_PARALLEL) docker compose --env-file .env.compose.local up -d; \
else \
docker compose --env-file .env.compose.local config --services | xargs -n $(DOCKER_PARALLEL) docker compose --env-file .env.compose.local up -d; \
fi

services-stop:
@service_names="$(wordlist 2, $(words $(MAKECMDGOALS)), $(MAKECMDGOALS))"; \
Expand Down
2 changes: 2 additions & 0 deletions packages/apps/dashboard/client/eslint.config.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,8 @@ export default tseslint.config(
},
},
rules: {
'no-useless-assignment': 'off',
'preserve-caught-error': 'off',
'react/prop-types': 'off',
'react/display-name': 'off',
'react/react-in-jsx-scope': 'off',
Expand Down
12 changes: 6 additions & 6 deletions packages/apps/dashboard/client/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -20,9 +20,9 @@
"@emotion/react": "^11.11.4",
"@emotion/styled": "^11.11.5",
"@human-protocol/sdk": "workspace:*",
"@mui/icons-material": "^7.2.0",
"@mui/icons-material": "^7.3.8",
"@mui/material": "^7.2.0",
"@mui/styled-engine-sc": "7.2.0",
"@mui/styled-engine-sc": "7.3.8",
"@mui/system": "^7.2.0",
"@mui/x-data-grid": "^8.7.0",
"@mui/x-date-pickers": "^8.26.0",
Expand All @@ -35,18 +35,18 @@
"react": "^18.3.1",
"react-dom": "^18.3.1",
"react-number-format": "^5.4.3",
"react-router-dom": "^6.23.1",
"react-router-dom": "^7.13.0",
"recharts": "^2.13.0-alpha.4",
"simplebar-react": "^3.3.2",
"styled-components": "^6.1.11",
"styled-components": "^6.3.11",
"swiper": "^11.1.3",
"use-debounce": "^10.1.0",
"vite-plugin-node-polyfills": "^0.25.0",
"zod": "^4.0.17",
"zustand": "^5.0.10"
},
"devDependencies": {
"@eslint/js": "^9.27.0",
"@eslint/js": "^10.0.1",
"@types/react": "^18.3.12",
"@types/react-dom": "^18.3.1",
"@typescript-eslint/eslint-plugin": "^7.2.0",
Expand All @@ -59,7 +59,7 @@
"eslint-plugin-react-hooks": "^5.2.0",
"eslint-plugin-react-refresh": "^0.4.11",
"globals": "^16.2.0",
"prettier": "^3.7.4",
"prettier": "^3.8.1",
"sass": "^1.89.2",
"terser": "^5.36.0",
"typescript": "^5.6.3",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ const internalTransactionSchema = z.object({
receiver: z.string().nullable(),
escrow: z.string().nullable(),
token: z.string().nullable(),
tokenSymbol: z.string().nullable().optional(),
});

const transactionDetailsSchema = z.object({
Expand All @@ -18,6 +19,7 @@ const transactionDetailsSchema = z.object({
receiver: z.string().nullable(),
block: z.number(),
value: z.string(),
tokenSymbol: z.string().nullable().optional(),
internalTransactions: z.array(internalTransactionSchema),
});

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -114,6 +114,7 @@ const TransactionsTableBody: FC<Props> = ({ data, isLoading, error }) => {
<TransactionsTableCellValue
value={elem.value}
method={elem.method}
tokenSymbol={elem.tokenSymbol}
/>
</TableCell>
</TableRow>
Expand Down Expand Up @@ -150,6 +151,7 @@ const TransactionsTableBody: FC<Props> = ({ data, isLoading, error }) => {
<TransactionsTableCellValue
value={internalTx.value}
method={internalTx.method}
tokenSymbol={internalTx.tokenSymbol}
/>
</TableCell>
</TableRow>
Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,7 @@
import HelpOutlineIcon from '@mui/icons-material/HelpOutline';
import Typography from '@mui/material/Typography';

import useHmtPrice from '@/shared/api/useHmtPrice';
import formatHmtDecimals from '@/shared/lib/formatHmtDecimals';
import formatTokenDecimals from '@/shared/lib/formatTokenDecimals';
import CustomTooltip from '@/shared/ui/CustomTooltip';

const InfoTooltip = ({ title }: { title: string }) => (
Expand All @@ -19,26 +18,24 @@ const InfoTooltip = ({ title }: { title: string }) => (
const TransactionsTableCellValue = ({
value,
method,
tokenSymbol,
}: {
value: string;
method: string;
tokenSymbol?: string | null;
}) => {
const { isError, isPending } = useHmtPrice();

if (isError) {
return <span>N/A</span>;
}

if (isPending) {
return <span>...</span>;
}

return (
<Typography variant="body2" display="flex" alignItems="center" gap={0.5}>
{formatHmtDecimals(value)}
<Typography variant="body2" component="span">
HMT
</Typography>
{Number(value) === 0 && !tokenSymbol ? (
'-'
) : (
<>
{formatTokenDecimals(value)}
<Typography variant="body2" component="span">
{tokenSymbol}
</Typography>
</>
)}
{method === 'approve' && (
<InfoTooltip title="Approved amount (not a transfer)" />
)}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,9 @@
import { formatEther } from 'ethers';
const formatTokenDecimals = (value: string) => {
const formattedValue = Number(value);

const formatHmtDecimals = (value: string) => {
const formattedValue = Number(formatEther(value));
if (Number.isNaN(formattedValue)) {
return value;
}

if (Number.isInteger(formattedValue)) {
return formattedValue.toString();
Expand All @@ -23,4 +25,4 @@ const formatHmtDecimals = (value: string) => {
: formattedValue.toString();
};

export default formatHmtDecimals;
export default formatTokenDecimals;
2 changes: 2 additions & 0 deletions packages/apps/dashboard/server/eslint.config.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,8 @@ export default tseslint.config(
jest: jestPlugin,
},
rules: {
'no-useless-assignment': 'off',
'preserve-caught-error': 'off',
'@typescript-eslint/interface-name-prefix': 'off',
'@typescript-eslint/explicit-function-return-type': 'off',
'@typescript-eslint/explicit-module-boundary-types': 'off',
Expand Down
6 changes: 3 additions & 3 deletions packages/apps/dashboard/server/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@
"@nestjs/core": "^11.1.12",
"@nestjs/mapped-types": "^2.1.0",
"@nestjs/platform-express": "^11.1.12",
"@nestjs/schedule": "^6.1.0",
"@nestjs/schedule": "^6.1.1",
"@nestjs/swagger": "^11.2.5",
"axios": "^1.3.1",
"cache-manager": "7.2.8",
Expand All @@ -51,7 +51,7 @@
"@golevelup/ts-jest": "^1.2.1",
"@nestjs/cli": "^11.0.16",
"@nestjs/schematics": "^11.0.9",
"@nestjs/testing": "^11.1.12",
"@nestjs/testing": "^11.1.14",
"@types/express": "^5.0.6",
"@types/jest": "30.0.0",
"@types/node": "22.10.5",
Expand All @@ -62,7 +62,7 @@
"eslint-plugin-jest": "^28.9.0",
"eslint-plugin-prettier": "^5.5.5",
"jest": "^29.7.0",
"prettier": "^3.7.4",
"prettier": "^3.8.1",
"source-map-support": "^0.5.20",
"ts-jest": "29.2.5",
"ts-node": "^10.0.0",
Expand Down
2 changes: 2 additions & 0 deletions packages/apps/dashboard/server/src/common/constants/chains.ts
Original file line number Diff line number Diff line change
Expand Up @@ -26,3 +26,5 @@ export const ChainIds = Object.values(
).filter((value): value is ChainId => typeof value === 'number');

export type ChainId = ProductionChainId | DevelopmentChainId;

export const TOKEN_CACHE_PREFIX = 'token';
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ import {
HttpException,
} from '@nestjs/common';
import { Request, Response } from 'express';
import { SubgraphRequestError } from '@human-protocol/sdk';

import logger from '../../logger';

Expand All @@ -23,7 +24,15 @@ export class ExceptionFilter implements IExceptionFilter {
message: 'Internal server error',
};

if (exception instanceof HttpException) {
if (exception instanceof SubgraphRequestError) {
status = HttpStatus.BAD_GATEWAY;
responseBody.message = exception.message;

this.logger.error('Subgraph request failed', {
error: exception,
path: request.url,
});
} else if (exception instanceof HttpException) {
status = exception.getStatus();
const exceptionResponse = exception.getResponse();
if (typeof exceptionResponse === 'string') {
Expand Down
Loading
Loading