# NEAR Vault Release Notes

This document records the complete NEAR Vault desktop release history. Releases are listed newest first and follow semantic versioning.

## 1.6.1 - 2026-07-16

### Added

- Added live embedded-ABI progress showing RPC retrieval, native Zstandard decoding, decoded bytes, percentage, and JSON parsing phases.
- Added a dedicated full-ABI viewer with contract metadata, decoded size, a large scrollable JSON surface, and full-document copying.
- Added a horizontally scrollable contract-output tab history for the current app session. Every successful view or change-method result remains available until its tab is closed, and each tab exposes its close control on hover or keyboard focus.

### Changed

- When **Balance auto-refresh** is Off, startup now keeps saved balances without refreshing and clearly marks them as unsynced until each wallet is refreshed or used.
- Replaced the pure-JavaScript ABI decompressor with Electron's asynchronous native Zstandard stream.
- Removed the application's previous 4 MB compressed-ABI, 16 MB decoded-ABI, and 16 MB Zstandard-window limits so large embedded ABIs can load without the former artificial rejection.
- ABI decoding now runs in native streaming chunks, allowing the renderer to remain responsive and display progress while large documents are processed.
- Sidebar navigation now keeps the selected destination highlighted throughout smooth scrolling, then returns control to the viewport-aware scroll tracker when navigation finishes or the user interrupts it.
- Most interface chrome is now non-selectable to prevent accidental highlighting while clicking, dragging, or managing wallets. Copy-worthy information such as wallet labels, account IDs, balances, credentials, contract data, activity details, and editable fields remains selectable.
- Text selection now uses a high-contrast cyan-green highlight styled to match the vault interface.
- RPC rate-limit cooldowns are now tracked separately for the direct connection and each configured proxy. Switching routes immediately wakes queued work, while returning to a previously limited route restores only the wall-clock time still remaining on that route's original cooldown.

### Fixed

- Fixed contracts exposing `__contract_abi` being forced into manual mode when their Zstandard frame required a window larger than 16 MB.
- Fixed **View full ABI** appearing to do nothing by opening the complete document in a dedicated viewer instead of silently replacing the contract-result panel.
- Fixed the empty contract-output placeholder remaining visible beside completed contract results.
- Fixed disabling or changing the proxy leaving active wallet work asleep until an obsolete RPC cooldown expired.
- Fixed clicked sidebar destinations being overwritten by intermediate scroll-spy updates during smooth navigation.
- Fixed minor section-boundary rounding that could leave the previous sidebar item selected after a navigation completed.

### Security and reliability

- ABI progress events are correlated with unique request IDs so stale downloads cannot update a newer contract selection.
- Large ABI frames are validated before native decoding, and malformed Zstandard or invalid NEAR ABI documents still fall back safely to manual contract entry.

## 1.6.0 - 2026-07-15

### Added

- Added a dedicated **Loot wallets** section for consolidating NEAR from selected non-MAIN wallets into the MAIN wallet for the chosen network.
- Added individual wallet selection and a **Select all sweepable wallets** control.
- Added a live receiving-MAIN panel with its label, account ID, network, and available balance.
- Added per-wallet consolidation details showing the live available balance, estimated amount sent to MAIN, estimated gas, and estimated remaining balance.
- Added aggregate cards for selected-wallet count, total expected MAIN receipt, total live gas estimate, average gas per transfer, and the complete safety reserve.
- Added a live estimate refresh that retrieves current balances, the current network gas price, and current protocol transfer costs.
- Added an irreversible confirmation containing the selected wallet count, estimated receipt, estimated gas, and maximum fee reserve.
- Added sticky consolidation progress with current wallet, percentage, completed, swept, failed, skipped, received-NEAR, and actual-gas totals.
- Added local activity records for each successful sweep plus the final batch result.
- Added bulk wallet recovery from a UTF-8 text file containing one private key or secret phrase per line, with optional `label=secret` entries.
- Added a recovery-file format guide, network selection, private preview token, duplicate summary, confirmation, sequential balance checks, and sticky import progress.

### Changed

- Manual NEAR sends are now tracked as exclusive wallet operations so they cannot overlap consolidation or other signed transactions.
- Balance auto-refresh pauses during manual sends and wallet consolidation, then resumes through the existing refresh schedule.
- Wallet creation, import, activation, contract transactions, donations, wallet removal, MAIN-wallet changes, backup merges, and other transfers are disabled while consolidation is active.
- Contract RPC actions and ABI loading are paused during consolidation to prioritize signed transfers and reduce rate-limit pressure.
- Application-close warnings now identify active wallet consolidation and its completed-wallet count.
- Successful Loot transactions now update both the source and MAIN wallet balances locally from the finalized transfer amount and measured transaction gas, without an extra post-transaction balance refresh.
- Recovery entries without a label now use their derived implicit account address as the local wallet label.

### Security and reliability

- Consolidation amounts are derived exclusively in the context-isolated main process; renderer-provided transfer amounts are never trusted.
- Every selected source wallet is refreshed and revalidated immediately before its transaction is signed.
- Transfer fees use live `gas_price` data and current `EXPERIMENTAL_protocol_config` transfer costs, with a documented protocol-cost fallback if a provider omits the configuration method.
- Each transfer keeps a 25% fee safety margin above the live estimate while preserving storage-staked and locked NEAR required by the source account.
- Completed batches report measured gas from finalized transaction outcomes instead of presenting the safety reserve as the amount actually spent.
- Transfers run sequentially with deliberate spacing, and the batch stops instead of looping through remaining wallets when an RPC rate limit is reached.
- Partial success is retained safely: confirmed transfers remain recorded while failed or skipped wallets are reported individually and can be retried through a fresh estimate.
- Recovery-file secrets remain inside the context-isolated main process during parsing and preview, and every new signing key is encrypted before it is written to the vault.
- A recovery file with any invalid non-empty line is rejected without importing a partial set; existing and repeated account addresses are detected and skipped safely.

## 1.5.0 - 2026-07-15

### Added

- Added a sticky bottom donation-progress surface with live checking, signing, broadcasting, confirmation, and balance-refresh phases.
- Added an optional application-wide HTTP(S) proxy for NEAR balance queries, contract requests, and signed transaction broadcasts.
- Added authenticated proxy URL support with masked credential entry in Settings.
- Added an isolated proxy connection test with latency and detected-network feedback before saving.
- Added detailed in-app proxy guidance covering supported formats, CONNECT requirements, recommended proxy characteristics, credential formatting, privacy considerations, and unsuitable proxy types.

### Changed

- Donation progress remains visible after its modal is dismissed, matching the existing bulk-creation and activation progress behavior.
- All NEAR provider traffic now shares the same proxy-aware request transport when the proxy is enabled.
- Proxy configuration is stored per operating-system user instead of being included in wallet backups.

### Security and reliability

- Proxy credentials are protected with Electron safe storage when operating-system encryption is available.
- Proxy URLs are restricted to HTTP and HTTPS endpoints without paths, query strings, or fragments.
- Proxy test errors are sanitized so credentials are not echoed into the interface.
- Changing proxy settings gracefully retires the previous connection dispatcher without interrupting unrelated application state.

## 1.4.0 - 2026-07-15

### Added

- Added a discreet bottom-right support prompt for voluntarily donating NEAR to triple7inc for continued freeware development.
- Added a dedicated mainnet donation dialog with an active-wallet selector, live available balance, customizable amount, and a `0.5 NEAR` default.
- Added local signing, live balance validation, and an estimated transaction-fee reserve check before submitting a donation.
- Added successful development donations to the local activity history without exposing internal recipient details in the interface.

### Changed

- Donation transactions now coordinate with wallet creation, activation, contract calls, balance refreshes, backup imports, wallet removal, and MAIN-wallet changes to prevent conflicting operations.
- Application-close warnings now recognize an active donation transaction.

### Security and reliability

- The donation destination is held behind the context-isolated main-process boundary rather than being sent to the renderer.
- Failed donation submissions do not update successful-donation preferences.
- Donation errors shown in the interface are sanitized so internal transaction destination details are not disclosed.

## 1.3.1 - 2026-07-15

### Added

- Added a tucked-away **All release notes** entry at the bottom of the sidebar.
- Added an in-app full-history view containing every release from the first version through the currently installed version.

### Changed

- The startup release-notes window continues to show only the current release, while the sidebar entry opens the complete history.
- Full-history mode hides the version-specific **Don't show again** action to keep its behavior unambiguous.

## 1.3.0 - 2026-07-15

### Added

- Added an automatic startup release-notes window containing the notes for the currently installed executable version.
- Added an OK action plus close-button, Escape-key, and backdrop dismissal for closing the notes for the current app session.
- Added a **Don't show again** option that suppresses only the current version and automatically allows the notes to appear after a future upgrade.
- Added the ability to reopen the current release notes at any time by clicking the version in the application footer.
- Added a separate per-user application preferences file in Electron's operating-system user-data directory.
- Added global per-user tracking for the last-used version, last-opened time, dismissed release-notes version, and dismissal time.
- Added the release-notes document to packaged and portable application builds.

### Changed

- Release-note content is selected dynamically from the section matching the executable's own version.

### Security and reliability

- Release-note Markdown is converted to interface elements using text-only DOM operations instead of inserting raw HTML.
- Application preference writes use an atomic temporary-file replacement and are kept separate from wallet backup data.
- Invalid preference files are recovered safely, with the damaged file retained for diagnosis.

## 1.2.1 - 2026-07-15

### Added

- Added this comprehensive release-notes file covering every application version from `1.0.0` onward.
- Consolidated the complete history of new features, behavior changes, reliability improvements, security protections, and interface fixes.

## 1.2.0 - 2026-07-15

### Added

- Added automatic discovery of embedded NEAR contract ABIs through the standard `__contract_abi` view method.
- Added Zstandard decompression for embedded ABI payloads through the `fzstd` dependency.
- Added guided contract interaction when an ABI is available:
  - Contract method selector populated from the ABI.
  - Automatic View Method or Change Method selection from each function's ABI kind.
  - Generated argument controls based on the contract's JSON Schema.
  - Typed controls for strings, booleans, numbers, integers, enums, objects, arrays, and arbitrary JSON values.
  - Optional-parameter and default-value handling.
  - Exact textual preservation of large JSON integer values.
  - Display of method documentation, serialization format, modifiers, callback requirements, return type, and attached-deposit support.
- Added method badges for `view`, `call`, `payable`, `private`, and `init` behavior.
- Added complete ABI inspection in the contract output panel, including metadata, functions, types, and root schema.
- Added one-click copying of the complete ABI document.
- Added a session ABI cache keyed by network and contract account to avoid unnecessary repeated RPC calls.
- Added manual raw-byte contract arguments using Base64 encoding.
- Added support for invoking Borsh ABI methods with manually serialized Base64 argument bytes.

### Changed

- Contract IDs now trigger ABI discovery automatically after entry, with a dedicated manual reload button.
- ABI-guided methods automatically lock the interaction type to the method's declared View or Change kind.
- ABI-guided non-payable methods lock attached deposit to zero.
- Payable methods clearly expose the attached-deposit control and transaction warning.
- Contracts that do not embed an ABI automatically remain fully usable through manual method and argument entry.
- Manual mode now supports either JSON serialization or exact raw Base64 bytes.
- Expanded the contract result panel to display either transaction/query output or the entire ABI document.

### Fixed

- ABI lookup failures no longer prevent manual contract interaction.
- Contracts with missing, empty, invalid, unsupported, or undecodable ABI payloads now fall back cleanly to manual mode.
- Generated ABI argument values are preserved during unrelated application state refreshes.
- Large integer arguments are no longer coerced through JavaScript floating-point serialization.
- Borsh contracts are no longer presented as if their arguments can be safely generated as JSON.

### Security and reliability

- Added a 4 MB compressed ABI payload limit.
- Added a 16 MB decompressed ABI document limit.
- Added Zstandard frame-header validation before decompression.
- Rejects oversized declared Zstandard output and window sizes before large memory allocation.
- Validates decoded ABI roots before exposing them to the renderer.
- Limits the in-memory ABI cache to twelve contracts.
- Preserves the existing context-isolated IPC boundary for all ABI retrieval.

## 1.1.2 - 2026-07-15

### Added

- Added a 30-minute Balance auto-refresh interval.
- Added a 1-hour Balance auto-refresh interval.

### Changed

- Extended Settings beyond the existing Off, 15-second, 30-second, 1-minute, 5-minute, and 15-minute refresh choices.
- Updated the synchronization status display to format long intervals as minutes or hours.

## 1.1.1 - 2026-07-15

### Added

- Added an in-app confirmation dialog whenever the user attempts to close NEAR Vault.
- Added a second, stronger confirmation when one or more processes are still active.
- Added active-process detection for:
  - Single or bulk wallet creation.
  - Wallet import.
  - Single or bulk wallet activation.
  - Contract view queries.
  - Signed contract transactions.
  - Balance refreshes.
  - NEAR transfers.
  - Settings saves.
  - Backup reading or merging.
  - Other pending vault operations.
- Added live process names and progress counts to the second close warning.

### Changed

- Window close requests are now intercepted by the main process and routed to the in-page confirmation interface.
- Confirming the first close prompt immediately closes the app only when no work is active.
- When work is active, the user must explicitly choose **Stop processes & close**.
- The close warning explains that already-submitted NEAR transactions cannot be rolled back even though local processing stops.
- Repeated operating-system close requests focus the existing confirmation instead of opening duplicate prompts.

### Fixed

- Prevented accidental application shutdown while an operation is running without a clear warning.
- Prevented the close-confirmation modal from being dismissed through unrelated modal actions.
- Reset close state correctly when a user cancels the shutdown.

## 1.1.0 - 2026-07-15

### Added

- Added a dedicated **Contracts** section to the side navigation.
- Added a complete smart-contract interaction workspace.
- Added selectable acting wallets; the selected wallet determines the network and transaction signer.
- Added read-only contract view calls.
- Added signed change-method transactions.
- Added manual contract account ID, method name, and JSON argument entry.
- Added configurable prepaid gas from 1 to 300 TGas.
- Added configurable attached NEAR deposit.
- Added signed-transaction confirmation showing contract, method, gas, deposit, and acting wallet.
- Added contract output display with:
  - Parsed return values.
  - Contract logs.
  - Final block details for view queries.
  - Transaction hashes for signed calls.
  - NEAR explorer links.
- Added contract view and contract call entries to the local activity log.
- Added a 64 KB contract-argument safety limit.

### Changed

- Signed contract transactions now participate in the global wallet-operation lock.
- Wallet creation, imports, transfers, activation, MAIN-wallet changes, and wallet removal are protected from conflicting signed contract activity.
- Automatic balance refresh pauses while a signed contract transaction is active.
- The signing wallet is refreshed after a contract transaction completes.
- Contract calls check the wallet's live available balance against attached deposit and estimated maximum gas cost before signing.
- Contract method results and errors use the existing RPC cooldown and friendly-error systems.

### Fixed

- Prevented multiple simultaneous signed contract calls.
- Prevented contract calls from wallets whose first balance refresh has not completed.
- Prevented signed calls from inactive or uninitialized wallets.
- Prevented transaction controls from remaining enabled during conflicting wallet operations.

## 1.0.1 - 2026-07-15

### Added

- Added **Activate all** for every uninitialized wallet on the selected network.
- Added a confirmation showing how many wallets will be activated, the funding total, estimated fee reserve, and total MAIN-wallet requirement.
- Added sticky activation progress outside the confirmation modal for both single-wallet and bulk activation.
- Added activation progress details for the current wallet, completed count, successful count, failed count, percentage, and estimated total cost.
- Added centralized operation-state reporting for wallet creation and activation.
- Added the executable-derived application version to the footer.

### Changed

- Single-wallet activation now performs a fresh MAIN-wallet balance check before funding.
- Bulk activation checks the full funding total plus a per-transaction fee reserve before sending anything.
- Bulk wallet creation and normal transfers now use the same centralized available-balance validation.
- Activation transactions are paced through the existing rate-limit-aware transaction queue.
- The MAIN wallet and activated target wallets refresh after funding completes.
- Wallet creation, bulk creation, restore/import, and backup import controls are disabled while activation is active.
- Activation controls are disabled while creation or another activation is active.
- Balance auto-refresh and manual refresh are coordinated with activation work.

### Fixed

- Prevented starting a second wallet activation while another activation is running.
- Prevented account creation or import through any interface while activation is running.
- Prevented NEAR transfers while activation is running.
- Prevented **Activate all** until every wallet has completed its initial balance refresh.
- Prevented activation when the MAIN wallet does not have enough available NEAR for funding and estimated fees.
- Improved activation error tracking and preserved failed-wallet details in the local activity log.
- Ensured the footer version always matches the packaged executable version.

## 1.0.0 - 2026-07-15

### Initial desktop application

- Created NEAR Vault as a full Electron desktop wallet creator and manager.
- Added a detailed responsive dark interface with overview statistics, wallet cards, network context, activity history, settings, dialogs, progress docks, and toast notifications.
- Added Mainnet and Testnet support with independent MAIN wallets and network-specific account data.
- Added custom trusted HTTPS RPC endpoints for Mainnet and Testnet.
- Added a single-instance application lock and focus restoration when the executable is opened twice.

### Wallet creation and restoration

- Added secure ed25519 key and seed-phrase generation.
- Added instant 64-character implicit account creation derived from each public key.
- Added named subaccount creation beneath the selected network's MAIN wallet.
- Added optional immediate funding/activation when creating a wallet.
- Added wallet restoration by secret recovery phrase.
- Added wallet restoration by private key.
- Added optional explicit account IDs for restored named accounts.
- Added automatic implicit account ID derivation when only an ed25519 key is supplied.
- Added duplicate account protection per network.

### Local vault and credential security

- Added persistent local PC storage for wallets, settings, activity, balances, labels, and MAIN-wallet selections.
- Added operating-system encryption through Electron `safeStorage` when available.
- Added atomic vault saves using a temporary file and replacement operation.
- Added context isolation, renderer sandboxing, disabled Node integration, navigation blocking, and popup blocking.
- Added an HTTPS hostname allowlist for external explorer, GitHub, and project website links.
- Added credential reveal with **Copy secret phrase** followed by **Copy private key**.
- Added security warnings when copying or exporting sensitive credentials.

### MAIN wallets, funding, transfers, and balances

- Added one MAIN wallet per network.
- Added configurable activation funding in NEAR.
- Added manual activation of uninitialized implicit accounts from the network MAIN wallet.
- Added normal NEAR transfers with receiver, amount, optional local memo, and maximum-amount assistance.
- Added single-wallet balance refresh.
- Added refresh-all balances.
- Added automatic periodic balance refresh.
- Added balance, available balance, locked balance, storage reserve, status, and last-update tracking.
- Added missing-account detection so unfunded implicit wallets are displayed as uninitialized instead of generic errors.
- Added first-load balance protection that disables sending funds until the wallet's initial refresh finishes.
- Added balance-refresh pausing while wallet creation or bulk funding is active.

### Bulk wallet creator

- Added bulk generation and funding for up to 100 implicit wallets.
- Added custom local label prefix, suffix, starting index, and zero-padding controls.
- Kept bulk account IDs securely random and public-key-derived; prefix and suffix affect local labels only.
- Added live label previews, validation, MAIN-wallet context, total funding preview, and warnings before submission.
- Added paced sequential wallet funding to reduce RPC rate-limit pressure.
- Added progress details for completed, created, failed, and current wallets.
- Allowed the bulk modal to be closed while work continues.
- Added a sticky bottom progress card whenever the bulk modal is closed during generation.
- Added per-wallet success and failure results without discarding successfully generated wallets when part of a batch fails.

### Backup, merge, and export tools

- Added complete local vault backup export.
- Added backup selection, validation, preview, and merge import.
- Added an explicit merge confirmation showing incoming and existing account counts.
- Added duplicate detection during backup merging.
- Preserved the existing local vault while merging new backup accounts.
- Added handling for machine-bound encrypted backup credentials.
- Added plaintext export of every non-MAIN private key as `name=key`.
- Added normalization of friendly labels for key export, such as `Moon Dude` becoming `moondude`.
- Excluded MAIN-wallet private keys from bulk plaintext key exports.

### Wallet organization

- Added wallet search and network/status filtering.
- Added grid and list wallet layouts.
- Added sorting by name, age, and balance in ascending or descending order.
- Set Age ascending as the initial sort.
- Persisted the selected sort in local browser storage and restored it on the next launch.
- Kept the MAIN wallet pinned first regardless of the chosen sort.
- Added wallet label renaming through the three-dot menu.
- Added inline label editing through an edit icon shown on label hover.
- Added automatic inline rename saving when focus leaves the label editor.
- Added wallet removal, reveal credentials, refresh balance, activate, set MAIN, and send-funds actions.

### RPC reliability and rate limiting

- Added serialized, paced RPC requests to reduce rate-limit pressure.
- Added longer delays between bulk funding transactions.
- Paused all-wallet balance refreshing during wallet creation and bulk creation.
- Added explicit HTTP 429 detection.
- Added support for server-provided `Retry-After` values.
- Added a safe fallback cooldown when the RPC omits `Retry-After`.
- Added a sticky global rate-limit banner with the network, explanation, and live retry countdown.
- Limited 429 recovery to one automatic retry so the application cannot enter a retry loop.
- Added friendly messages for network, RPC, missing-account, and rate-limit errors.

### Interface and usability fixes

- Added an opaque, high-z-index three-dot wallet menu rendered above every card.
- Added a transparent click shield so only the open menu receives clicks and nothing underneath can be activated.
- Removed the darkened visual overlay from the wallet menu while preserving click isolation.
- Fixed the wallet menu being displayed beneath cards.
- Fixed the wallet menu becoming unclickable after overlay changes.
- Fixed text clipping and overflow throughout buttons, labels, account IDs, cards, dialogs, and responsive layouts.
- Increased the Settings activation-amount unit area so `NEAR` remains on one line with adequate right spacing.
- Fixed side-navigation scrolling so target section titles are positioned below the fixed top bar.
- Added the final NEAR Vault application icon as SVG, PNG, and Windows ICO assets.
- Embedded the PNG icon as Base64 inside the HTML for in-app branding.
- Applied the icon to the application window and portable executable.
- Added triple7inc copyright attribution with GitHub and `https://dex.mba` links.
- Kept separators outside the footer URLs.

### Build and packaging

- Added the `.build.bat` one-click Windows build script.
- Added automatic dependency checks and installation when packages are missing.
- Added JavaScript syntax validation before packaging.
- Added a single-file x64 Windows portable executable target.
- Added versioned executable names in the form `NEAR-Vault-Portable-<version>-x64.exe`.
- Added cleanup of the intermediate unpacked build directory after a successful portable build.
