Releases: atomantic/EscapeMint
Releases · atomantic/EscapeMint
v1.2.0
Release v1.2.0 - Dependency Updates & Bug Fixes
Released: 2026-03-21
Overview
Major dependency upgrades (vite 8, plugin-react 6, jsdom 29, vitest 4.1) along with several bug fixes for derivatives funds, fund size calculations, and export filtering.
Added
- Re-invest toggle to backtest — recycle sell proceeds into cash pool
- Privacy policy and terms of use for App Store submission
Changed
- Upgraded vite from 7.3.1 to 8.0.1 (main + pages)
- Upgraded @vitejs/plugin-react from 5.1.4 to 6.0.1 (main + pages)
- Upgraded jsdom from 28.1.0 to 29.0.0
- Upgraded vitest group (vitest + @vitest/coverage-v8) to 4.1.0
- Upgraded typescript-eslint from 8.56.1 to 8.57.0
- Upgraded lint-staged from 16.3.1 to 16.4.0
- Upgraded @types/node from 25.3.3 to 25.5.0 (main + pages)
- Upgraded flatted from 3.4.1 to 3.4.2
- Upgraded recharts from 3.7.0 to 3.8.0
- Upgraded postcss from 8.5.6 to 8.5.8 (main + pages)
- Updated manualChunks config to function syntax for vite 8/Rolldown compatibility
Fixed
- Fund size calculation for manage_cash=false accumulate funds
- Use derivatives engine values for closed fund Net Gain/Loss
- Zero out fund size/value for closed derivatives funds
- Use tracked fund_size for harvest mode funds on platform dashboard
- Only count margin_borrowed from cash funds to prevent double-counting
- Exclude test/demo funds from export, add demo prefix to isTestPlatform
- Update undici to resolve WebSocket overflow and HTTP smuggling vulnerabilities
Full Changelog
Full Diff: v1.1.0...v1.2.0
v1.1.0
Release v1.1.0
Released: 2026-03-05
Security
- Restrict CORS origins and validate CDP URL to localhost
- Restrict HTTP status codes, fix IPv6 SSRF in import/export routes
Fixes
- Address remaining audit items: toasts, stale closure, cleanup, logging
- Use React Router navigate instead of window.location.href
- Add meaningful error logging to swallowed catch blocks
- Guard null lock release, add missing await, abort timeout, and error logging
- Handle result.error in API fetch handlers
- Wrap fetchAllEntries in try/catch, add toast to CreateFundModal catch
- Add concurrency limit to fetchAllEntries, reset state on fetch errors in Layout
- Include fund ID in rejection log, clear corrupt sessionStorage
- Move connectRef assignment into useEffect to avoid render-time side effect
- Fix connectRef type, add fetchPlatforms error handling, pass error object to logger
Refactoring
- Standardize error responses in backup and export routes
Full Changelog
Full Diff: v1.0.0...v1.1.0
v1.0.0
Release v1.0.0
Released: 2026-03-01
Added
- Dependabot grouping for React ecosystem (
react,react-dom,@types/react,@types/react-dom) and Vitest ecosystem (vitest,@vitest/*) to prevent version mismatches - Dependabot coverage for
pages/directory (has its ownpackage-lock.jsonoutside workspace) - Peer dependency check (
npm ls) in CI to catch version mismatches before merge .nvmrcpinned to Node 20 (matching CI andenginesconstraint)
Changed
- Upgraded all dependencies to latest versions: Express 4→5, React 18→19, UUID 11→13, Tailwind CSS 3→4 (web), react-router-dom 6→7 (pages), Vite 6→7 (pages), @vitejs/plugin-react 4→5, TypeScript 5.7→5.9, and all type packages
- Migrated web package from Tailwind CSS 3 to 4 (CSS-based config with
@import "tailwindcss"and@theme) - Removed
@types/uuid(uuid v13 ships its own types) - Version bumps and changelog finalization now happen only during
/release, not on every commit /camappends to.changelogs/NEXT.mdinstead of creating per-version changelog files- Consolidated unreleased changelogs (v0.42.18-21) into
NEXT.mdand reset version to v0.42.17 - Removed project-level
/prand/gitupcommands (redundant with global/releaseand standard git) - Pages CI workflow uses
npm ciinstead ofnpm installfor reproducible builds
Fixed
- Aggregate projected annual return now uses portfolio-level time-weighted realized APY instead of summing individually-compounded per-fund projections (short-duration funds with modest returns were getting exponentially inflated APYs)
- Dashboard cache projected return uses same portfolio-level formula for consistency
@vitest/coverage-v8aligned with vitest 4.x across all packages- Dashboard table shows actual fund size (
latestFundSize) instead of static config value (config.fund_size_usd) - Aggregate API now uses
fundSizefromcomputeFundFinalMetrics()instead of config override
Full Changelog
Full Diff: v0.42.17...v1.0.0
v0.42.17
Release v0.42.17
Released: 2026-03-01
Overview
Fixes aggregate realized APY and liquid APY to use a dollar-weighted compound formula instead of linearly averaging per-fund compound APYs. The old approach produced wildly inaccurate aggregate APY when funds had varying timelines (e.g., a fund with 50% return over 30 days would annualize to ~12,875% and dominate the weighted average even with tiny portfolio weight).
Bug Fixes
- Aggregate realized APY uses compound formula: Replaced weighted average of per-fund compound APYs with a portfolio-level dollar-weighted compound calculation:
totalDollarDays = sum(TWFS_i * daysActive_i),avgCapital = totalDollarDays / portfolioDays, thenAPY = (1 + totalReturn/avgCapital)^(365/portfolioDays) - 1 - Aggregate liquid APY uses compound formula: Same compound formula applied to liquid APY (realized + unrealized gains), replacing the linear annualization
- Time-series chart APY uses compound formula: Dashboard history and filtered time-series APY calculations now use the compound formula for consistency
- Added
portfolioDaysto aggregate metrics: Computed from earliest-to-latest entry dates across all funds, passed through engine, server, and client for accurate annualization
Installation
git clone https://github.com/atomantic/EscapeMint.git
cd EscapeMint
npm run setup
npm run devFull Changelog
Full Diff: v0.42.16...v0.42.17
v0.41.0
Release v0.41.0
Changes
- feat: serve production UI from Express server, make CDP browser on-demand
- chore: add Dependabot configuration for vulnerability scanning
- ci: switch branching to main+release, drop dev branch
Installation
git clone https://github.com/atomantic/EscapeMint.git
cd EscapeMint
npm run setup
npm run devv0.40.8
Release v0.40.8
Changes
- address review: fix coverage command and recharts version note
- address review: fix typo and coverage command name
- chore: bump version to 0.40.8
- address review: fix documentation accuracy issues
- update GOALS
- docs: create roadmap (5 phases)
- docs: define v1 requirements
- docs: replan — resolve known issues, remove outdated sections, update priorities
- docs: complete project research
- chore: add project config
- docs: initialize project
- docs: map existing codebase
Installation
git clone https://github.com/atomantic/EscapeMint.git
cd EscapeMint
npm run setup
npm run devv0.40.7
Release v0.40.7
Changes
- chore: bump version to v0.40.7
- address review: safe platform cleanup on fund creation failure
- chore: bump version to v0.40.6
- address review: try/finally for loading state, platform rollback, a11y fixes
- chore: bump version to v0.40.5
- address review: idempotent platform creation, test prefix guard, cancel restore
- feat: allow creating new platforms inline in Add Fund form
- fix: install pages deps in setup and dev:backtest scripts
Installation
git clone https://github.com/atomantic/EscapeMint.git
cd EscapeMint
npm run setup
npm run devv0.40.4
Release v0.40.4
Changes
- address review: consolidate duplicate Changed sections in changelog
- chore: bump version to v0.40.4
- address review: remove unused jsonwebtoken, update changelog
- fix: migrate CI from pnpm to npm for workspace:* compatibility
- fix: replace pnpm workspace:* protocol with npm-compatible * refs
- remove excess claude command
- docs: replan PLAN.md — condense archive, deduplicate with GOALS.md, add next actions
- docs: add GOALS.md with project mission, milestones, and non-goals
- fix: remove automatic version bumping from CI workflows
Installation
git clone https://github.com/atomantic/EscapeMint.git
cd EscapeMint
npm run setup
npm run devv0.39.9
Release v0.39.9
Changes
- address review: add lock failure logging, clarify DEPOSIT/WITHDRAW comment
- fix: restore trailing newline in Modal.tsx
- fix: DRY streaming functions, remove dead code, harden sessionStorage parsing
- fix: code review fixes for SOLID/DRY/YAGNI and bug prevention
- refactor(web): simplify favicon to clean bold dollar sign
- fix: remove artificial APY upper-bound clamps, fix display formatting
- fix: add APY clamping to remaining unclamped calculations
- fix: align derivatives APY between server and client
- fix: clamp derivatives APY and client-side APY to prevent overflow
- fix: derivatives integrity check and deposit edit fund size doubling
- fix: clamp trading fund APY to prevent exponential overflow
Installation
git clone https://github.com/atomantic/EscapeMint.git
cd EscapeMint
npm run setup
npm run devv0.38.7
Release v0.38.7
Changes
- fix: consolidate changelog to minor version level
- fix: add missing changelog entries for v0.38.3 and v0.38.4
- fix: align day precision between server and client
- fix: address second round of PR review feedback
- fix: address PR review feedback
- fix: test platform detection misses platforms like test2, test-del-*
- feat: use TWAP denominator for trading fund APY calculations
- feat: remove start_date from config, track active days for APY
Installation
git clone https://github.com/atomantic/EscapeMint.git
cd EscapeMint
npm run setup
npm run dev