1.4.1 (2026-08-03)
- build: build the contract for wasm32v1-none everywhere (#940) (0aa6df3)
- security: stop shipping Pinata credentials in the frontend bundle (#921) (2a23cad)
1.4.0 (2026-08-01)
- contracts: close remaining FWC26 audit issues (787dc22), closes 909-#948 #1022 #910 #913 #916 #943
- frontend: fix Option encoding, map missing topics, add cap field (fb3ee73), closes #1022 #917 #1022 #943
1.3.2 (2026-07-28)
1.3.1 (2026-07-27)
- frontend: handle every sendTransaction status explicitly (#1020) (#1058) (70ebab6), closes #1056 #1057
1.3.0 (2026-07-27)
- #1024,#1023: fee-split edge cases and metadata URI validation (#1036) (e3174cb), closes #1024 #1023 #1024 #1023
- #1024,#1023: fee-split edge cases and metadata URI validation (#1037) (116d025), closes #1024 #1023 #1024 #1023
- align adm_upd topic and add CI drift detection (#1032) (872baa9)
- contracts: add distribute_fee test coverage at realistic split sizes (#918) (#1025) (f9ec953), closes #919
- contracts: charge exactly the required fee, not fee_payment (#1035) (8654767), closes #1007 #1007 #1008 #1008
- contracts: make token-factory initialize atomic with deployment (#1029) (3e12de2), closes #1005
- contracts: move per-token bookkeeping to persistent storage (#1034) (51c52bd), closes #1007 #1007
- contracts: prove multi-step migrate pattern with synthetic v2 tests (#919) (#1026) (f9ef384), closes #918 #918
- contracts: repair broken merge artifacts on main (#1041) (6524e58), closes 1034/#1035 #1033 #1034 #1025
- contracts: seed max-supply counter with initial_supply (#1006) (#1031) (4a3e90d)
- frontend: resolve token identity from contract, not events (#1018) (#1030) (66bcb19)
- security: validate uploaded image content, not client-declared M… (#1055) (ab1f253), closes #1002 #1002 #1056 #1057
- token-factory: bound fee-split recipient count to prevent resource-exhaustion griefing (#1027) (becd28f)
1.2.0 (2026-07-21)
- frontend: verify deployed token WASM hash against factory state (#986) (6d1566a), closes #925 hi#severity #982 #984 #984 #984 #982
1.1.0 (2026-07-20)
- security: add triage and waiver workflow for audit findings (#981) (aa0ceab), closes hi#or-above #939
- #741 AdminPanel restricted to admin address only (7b2b8c2)
- #854: format useTransactionHistory.ts to match project Prettier style (remove semicolons) (8e7b12b), closes #854
- #855: eliminate CSP duplication by generating index.html meta tag from policy.ts (1dc325a), closes #855
- #932: consolidate useTransactionPolling into useTransaction.ts (#956) (28a84b6), closes #932 #932
- #944: add txHash, network, contractId Sentry tagging on transaction failures (#952) (9c213d0), closes #944 #944
- #945: document batch resource limits and add frontend size cap (#953) (8555f65), closes #945 #945
- #947: add incident response runbook and break-glass recovery docs (#954) (0546342), closes #947 #9 #947
- accept decimals=0 in validateTokenParams (56cb8d9)
- add bounds validation to token metadata type guard (CWE-1236) (#964) (ab4cb5c)
- add BurnAmountExceedsBalance check in burn function (1113068)
- add CI drift check for contract ABI documentation - Closes #946 (#949) (8e67454)
- add env var validation and misconfiguration screen (f66f1d5)
- add esbuild as a direct devDependency for Storybook CI build (512b11e)
- add formula-injection guard to CSV export (CWE-1236) (#963) (bff7012)
- add missing build step to E2E job, fix sitemap script crash (535955c)
- add missing imports for mobile responsive components (0b89740)
- add standalone network support and fix E2E test mocks (a78f8de)
- analytics: add opt-out tests, CI bypass check, and compliance ADR (#965) (180f672), closes #948
- audit follow-ups — restore tx polling backoff, fix wasm target, drop orphan form (05409eb), closes #852 #732 813/#814
- ci: remove continue-on-error from fuzz steps, add PR smoke job (#937) (#966) (000458f)
- clear cargo clippy -D warnings findings in token-factory (2a27a8f)
- complete contract test suite with all error variants covered (5f8320d)
- contract: front-load batch validation and document Soroban transaction atomicity (#915) (#974) (b60868f)
- contracts: add crash-to-regression-test process with fuzz corpus infrastructure (#951) (9428b7d), closes #938
- contracts: add integer overflow protection in fee arithmetic (18622f1), closes #513
- correct useLocalStorage syntax error and variable reference (232fc52)
- dedupe token-validation rules in validation.ts (d3012c2), closes #845
- downgrade vite to v6 for Storybook compatibility (c2f071b)
- e2e: add token-list-container class and show 6 trailing address chars (9fcfff3)
- e2e: prevent watcher auto-connect by not responding to REQUEST_NETWORK_DETAILS (9649702)
- exclude fuzz crate from workspace to prevent wasm32 compilation errors (b3f09f2)
- expand .gitignore to prevent accidental commits of local artifacts (1da56fe), closes #835
- frontend: clear typecheck errors and prettier drift masked by red CI (82994b9)
- frontend: close network-mismatch signing window with a fresh pre-sign check (#961) (7619e99), closes #927
- frontend: close unclosed PR wrapper in App.tsx and remove duplicate route entries (4f9442b)
- frontend: establish transaction reconciliation policy and add phantom-entry guards (#955) (1372af1), closes #933
- frontend: filter-aware cache key, stable useCallback deps, re-fetch on filter change (62d2c8c)
- frontend: implement the CSV formula-injection guard its tests expected (59839b6), closes #963
- frontend: make token-detail routes public for deep links (#880) (971e14b)
- frontend: only mount OnboardingModal on Help click, not first-visit (87d3ce4)
- frontend: paginate factory event fetch instead of silently capping "all tokens" (#962) (b480f56), closes #35
- frontend: pay real base_fee, surface FeeDisplay in mint, block writes on network mismatch (6d5697d)
- frontend: remove exhaustive-deps suppressions, fix dep arrays (a8fcf34)
- frontend: resolve merge fallout — format, getMetadata validation, no-this-alias (4e0d770)
- frontend: source FeeDisplay fees from useFactoryState, not the singleton (e388e7a)
- frontend: stop passing a decimal XLM string to formatXLM (d23be61)
- frontend: track Horizon paging_token and pass cursor on load-more (aa6e15b)
- frontend: unify transaction poll backoff into shared utility (#960) (2ad85fc)
- frontend: wire orphaned features, fix standalone network, add typecheck gate (c14d1b1)
- ipfs: retry image upload on transient Pinata errors (26a2005), closes #743
- ipfs: validate getMetadata response shape before returning (7183346), closes #849
- make all 202 tests pass (1043432)
- pin esbuild/globals devDeps and apply npm audit fixes (6ccd8c3)
- provide VITE_TOKEN_WASM_HASH in E2E CI job (64c1a5b)
- real bugs surfaced while restoring lint/test coverage (8434f56)
- redesign fee transfer and token deployment per issue spec (e7b8c9e)
- refactor build system, fix contract errors, fix dark mode toggle (85751f8)
- release: add @actions/io to satisfy @actions/exec's undeclared import (cd21fdc)
- release: disable husky hooks in the release workflow (5429060)
- repair local Stellar network startup in E2E CI job (5aa9026)
- replace console.error with logger in CreateToken, TokenForm, MetadataUploadForm (24805af), closes #848
- replace invalid checksum address in validation test (64ac45a)
- resolve build failure blocking strict mode verification (e3370f5)
- resolve Horizon URL from active network config in useTransactionHistory (2c25a2d), closes #837
- restore ESLint v9 flat config (a85d008)
- routing: fix deep-link for /token/:address and add e2e tests (1eb308a)
- stop E2E app crash on unknown network and repair Freighter mock (232afee)
- storybook: finish the Storybook 10 migration (a66a453), closes #893
- token-factory: enforce strict clippy linting for contract code (686b143)
- token-factory: extend reentrancy guard to all state-mutating entrypoints (#972) (45a1a9c)
- token-factory: reject negative base_fee and metadata_fee (#973) (e3cdd5e)
- token-factory: store token_wasm_hash in FactoryState (7de1635), closes #543
- ui: sanitize and validate token name/symbol inputs (1e4e2e7)
- upgrade soroban-sdk to 25.x and fix wasm build (1e098e1)
- Use correct validation function name in MetadataUploadForm (b8802cf)
- use dedicated fee_token for all fee transfers in factory contract (14db340)
- use formatXLM and stroopsToXLM in FeeDisplay and add conversion test (65b5d94)
- validate hexToBytes input is exactly 64 hex chars (4165f9f), closes #836
- validate token supply before minting to prevent u128 overflow (#959) (d4027c8), closes #909
- validation: use StrKey checksum validation for Stellar addresses (c55f0f4)
- wallet: clear all state and token cache on disconnect (a2b1ed3)
- #588: Build Token Creation Form UI (b13478c), closes #588
- #589: Implement StellarService Token Deployment (b186936), closes #589
- #590: Implement IPFS Metadata Upload via Pinata (98e1fc0), closes #590
- #603: Create Token Detail Page (a1aa1ec), closes #603
- #604: Add React Router for Navigation (be195b5), closes #604
- #606: Add loading states and skeleton UI (41111e0), closes #606
- #607: Add environment variable validation on startup (5e3ff84), closes #607
- #734: Add debounced search and creator address filter to TokenExplorer (12c703b), closes #734
- #fuzz: add fuzz targets for set_metadata and mint_tokens (167432d), closes #fuzz
- a11y: accessibility audit and fixes (98eb2f7)
- add accessibility improvements (a11y) (259d1b0)
- add AddressDisplay component with copy and explorer link (2ab3bda)
- add analytics integration spec and scaffolding (#522) (e4d8902)
- add CHANGELOG.md and PR template with changelog checklist (89bb67e)
- add client-side routing with react-router-dom (fixes #471) (baee94d)
- add comprehensive error handling system (62b4348)
- add ConfirmModal before all on-chain transactions (3cef134)
- add Content-Security-Policy headers (ef28578)
- add contract event history with pagination (0425f56)
- add contract event indexing spec (#612) (5952c01)
- add CopyButton component and integrations #491 (6d16970)
- add dark mode support with localStorage persistence (24e96e5)
- add dark mode with system preference, localStorage persistence, and toggle button (5658728)
- add decimals validation for create_token (0-18 inclusive) (f88ec3c), closes #515
- add deploy-contract.sh script for automated contract deployment (f478eb2)
- add E2E coverage for network mismatch guard across all write forms Closes #935 (#970) (a644ce6)
- add env variable validation and configuration guide (98642d9), closes #8
- add ErrorBoundary component to catch render errors (d297816)
- add eslint import order rule spec (ca4bc6b)
- add export CSV functionality to TransactionHistory (637dc7c)
- add fee bump transaction support (#63) (9b2b8ea)
- add FeeDisplay component with module-level cache (e749987)
- add formatTimestamp and timeAgo utilities (#issue) (02f8f30), closes #issue
- add formatTokenAmount and parseTokenAmount utilities (1041ada)
- add French (fr) locale i18n support (4429f89), closes #740
- add friendbot banner for testnet (aece4cb)
- add frontend unit tests and fix retry unhandled rejections (ec4b78b), closes #9
- add frontend unit tests for validation utils (#609) (5ef4995)
- add get_tokens_by_creator view function (#38) (17b7ae0)
- add global toast notification system (ea22272)
- Add husky + lint-staged pre-commit hooks (#59) (b11c468)
- add Husky pre-commit and pre-push hooks (#533) (c232169)
- add i18n foundation with react-i18next (0f8c270)
- add isValidIPFSUri validation utility and SetMetadataForm (#33) (5ba129f)
- add isValidIPFSUri validation utility and SetMetadataForm (#33) (9e76fc4)
- Add mainnet deployment checklist modal (#35) (d3e8f2d)
- add MetadataAlreadySet guard in set_metadata (ebbdd65)
- add MintForm component with address validation and mintTokens service (ac9df39)
- add network switching support (#680) (60e9f3f)
- add OG tags, react-router-dom, clippy CI, and npm ci (24d091c), closes #54 #56 #68 #85
- add pause/unpause admin function to factory contract (#39) (5a5c965)
- add polling, last-updated indicator, and refresh to transaction history (ac79943), closes #752
- add Prettier, fix all TS errors, add CI/CD pipeline, add formatAddress and Checkbox UI component (a11180e)
- add PWA support with vite-plugin-pwa (#81) (547110c)
- add reentrancy guard to create_token with Error::Reentrancy variant (986de4b)
- add reusable Modal base component (#527) (e19c519)
- add reusable Modal base component (#527) (f605b53)
- add robots.txt, sitemap.xml, and meta description for SEO (de6bb1c)
- add robust useClipboard hook and refactor dashboard (7149392), closes #26
- add secure Admin Panel for factory fee management (39e28a5)
- Add security disclosure policy (#47) (096fcd7)
- Add Select UI component with accessibility and dark mode support (412420a)
- add semantic release for automated versioning (bcd42fe)
- add sitemap generation script and update prebuild script to include it (8948663)
- add skeleton loaders and a11y improvements (#475, #477) (1ea1e54)
- add skeleton loaders for TokenExplorer and Dashboard (42867fe), closes #735
- add skeleton-loaders spec (requirements, design, tasks) (ec3a9ed)
- add social sharing for newly created tokens (#521) (7e2cdcc)
- add Soroban benchmark harness for resource cost tracking (#968) (91b504f), closes #12
- add soroban-token-sdk audit spec (ae3686a)
- add stellar contract optimize to deployment workflow (4a56338)
- add stellarExplorerUrl utility and wire explorer links (d043699)
- add Storybook stories for ConfirmModal, ProgressIndicator, and InsufficientBalanceWarning (a25343e)
- add Storybook with stories for all UI components (564a5b8)
- add Terms of Service acceptance modal before first transaction (#529) (53a7bc8)
- add Terms of Service acceptance modal before first transaction (#529) (b2ddf76)
- add testnet faucet integration via Friendbot (#519) (f7c2965)
- add token event history with pagination and event details display (9196fdf)
- add token search, filter, and sort to Dashboard (a17250a)
- add token search, filter, and sort to dashboard (#64) (eb80749)
- add TokenDashboard with pagination, search, and Explorer links (d7ce574)
- add TokenExplorer component with search and pagination (4b21179)
- add TokenMetadata display component (658efc0)
- Add transaction retry logic with exponential backoff (#62) (f0d8f02)
- Add TransactionHistory component and useTransactionHistory hook for Stellar token operations (f8fed91)
- Add TransactionStatus component and tests (4637fb8)
- add transfer_admin function with tests (347d54f)
- add TTL management for all Soroban storage writes (7b34532)
- add UI barrel export and update all imports (2e4fbe0)
- add update_admin function to token factory contract (#479) (5db1fe4)
- add useDebounce hook, apply to MintForm/BurnForm/Dashboard, fix build (e8727e1)
- add useFactoryState hook, coverage thresholds, and CI workflow (15b366d)
- Add useLocalStorage hook and tests (56eac71)
- add useTokenBalance hook and fix TypeScript errors (43792b7)
- add useTokens pagination and useTokenInfo hook (a473194)
- add VITE_TOKEN_WASM_HASH to env validation and fix duplicate import (b027cc2)
- add wallet token portfolio dashboard (cc28ab9)
- add WalletButton UI component and integrate into App.tsx header (cf20f69)
- add wasm-opt post-processing for contract binary (de1f779)
- add whitelist for fee-free token creation (59c0f59)
- build token creation form UI on home page (#667) (0311381)
- Burn Tokens UI with danger-zone styling and safety confirmation (#675) (f894e11)
- burn: add data-testid attributes for balance display, Max button, and validation error (0c72f14), closes #755 #755
- ci: add reproducible WASM hash verification workflow for mainnet deployments (#950) (abcdbce), closes #940
- comprehensive contract tests + fix lib.rs compilation errors (#677) (83a8f8f)
- contract: add batch token creation (#487) (b50b182)
- contract: add optional max supply cap to tokens (#483) (dc00eb6)
- contract: add treasury fee split mechanism (#485) (d933acf)
- contract: emit events for all state-changing functions (#482) (0a375a8)
- contracts: add schema versioning and implement migrate (7293485)
- contracts: add schema versioning and implement migrate (a9fbd2e)
- create WalletConnectButton component (766c6b9)
- enable TypeScript strict mode (#531) (bb3ad84)
- enforce u128 for initial_supply and add InvalidTokenParams validation #517 (67582a3)
- enhance security, add contract upgrade support, and integrate E2E tests into CI (5695ca0)
- enhance token factory with DataKey enum and update storage access (e0c24c0)
- explorer: add Stellar Expert deep links for accounts, transactions, and contracts (6d509a4)
- extract contract error mapping to contractErrors.ts (0420e56)
- factory: add offset/limit pagination to get_tokens_by_creator (#729) (3f88aae)
- frontend: add ipfs gateway URL resolver and stabilize frontend checks (005ff3f)
- frontend: block writes on network mismatch in metadata + admin forms (#906) (f6e88f3)
- frontend: implement i18n support with es and pt translations (dcbc1b2)
- frontend: wire network-mismatch banner + FAQ page, drop dead duplicate, fix repo URLs (901021f)
- gate wallet and metadata actions behind ToS (8318679)
- global error boundary, toast system, and service error cleanup (19dbf05)
- global error boundary, toast system, and service error cleanup (6ca83ad)
- hooks: add LRU eviction to useTokens module-level cache (#967) (25ca799)
- hooks: add useTransaction hook for transaction lifecycle (#489) (18debc3)
- implement BigInt-safe formatting utilities (fc30b37)
- implement burn_enabled per-token flag (7d265e8)
- Implement Freighter Wallet Integration (b91a66e)
- implement Freighter wallet integration (#666) (8416cfd)
- implement global error boundary (#473) (d83fe50)
- implement Horizon API retry logic with exponential backoff and Retry-After handling #499 (cfd31b5)
- implement mobile-responsive design for all components (cfdf285)
- implement pagination for token dashboard (#29) (9aa41b1)
- implement Pinata IPFS upload service with tests (6b33365)
- implement Pinata IPFS upload with progress tracking and error handling (53b3684)
- implement responsive mobile layout (issue #616) (49ddf41)
- implement reusable CopyButton component with Clipboard API integration (2f8b716)
- implement Soroban contract invocation logic in StellarService (3a4af37)
- implement Soroban RPC interactions in stellar.ts (42c9d18)
- implement StellarService with full Soroban RPC integration (3f0a520)
- implement token burn UI and service (a199523)
- implement Token Dashboard page (#673) (c3b204c)
- implement token detail page (a79ef19)
- implement TokenDashboard page with TokenCard component and index-based pagination (4af373b)
- implement TokenDetail page (#470) (71ca751)
- implement TokenDetail page with IPFS metadata, mint/burn/set-metadata inline forms, and 404 state (9c7f0eb)
- implement transaction status tracking (#681) (3c0a793)
- implement update_treasury in token-factory (0c381d3)
- implement useLocalStorage for dark mode context and add tests for useDarkMode hook (f04664c)
- implement useLocalStorage hook and integrate for Dark Mode, Network, and Language #518 (9a25f84)
- implement useTokens hook with parallel fetching and cache (d9cc12d), closes #16
- implement wallet auto-reconnect and Freighter event listeners (4cba9dc)
- integrate Sentry error tracking for failed contract calls (e0cb9f9), closes #757
- ipfs: implement IPFS metadata upload via Pinata (#669) (949bcc3)
- Mint Tokens UI with RHF validation and token dropdown (#674) (223235d)
- mobile responsive design (90814c2)
- monitoring: add monitoring docs and sentry dependency (e043a5c)
- monitoring: add Sentry, uptime monitoring, and health endpoint (cee6369)
- move wallet state to global React Context (6c24340)
- network switcher with mainnet warning and localStorage persistence (5fa8531)
- pause/unpause factory already implemented; add burn-while-paused test (#480) (4dd54ca)
- provide services via StellarContext, re-init on network change (4f924de)
- security: add Content Security Policy and security headers (19f0f1f)
- security: add dependency audit and Dependabot configuration (9f404c1), closes hi#severity #502
- security: add strict CSP, X-Frame-Options, and X-Content-Type-Options headers (a625191)
- show XLM/USD equivalent in FeeDisplay component (fd3c20d), closes #733
- toast notification system already implemented (#474) (73b04c9)
- token-factory: validate create_token params and use InvalidParameters error (4e7abc4)
- ui: add DropZone drag-and-drop component and replace file input in MetadataUploadForm (fee9791)
- ui: add network-aware Stellar Expert explorer links (20dced8), closes #621
- ui: confirmation modal before every state-changing transaction (#490) (88291e3)
- ui: implement MetadataForm with IPFS upload + Stellar linking (#676) (20f5327)
- upgrade mechanism, ADRs, QR code sharing, onboarding tutorial (7b59535), closes #1 #2 #3 #4
- ux: insufficient balance warning before transaction submission (#496) (0777d93)
- wire setMetadata to StellarService in TokenDetail (04de946)
- wire up mint and burn token UI to contract (ca6b7b4), closes #541