0.10.1 (2026-06-19)
- correct signal scoring field mismatches and normalize component scores (737be05)
0.10.0 (2026-06-18)
0.9.0 (2026-06-18)
- align analysis page staleness with execute freshness gate (9e9242d)
- remove src→lib layer violation and constrain technical default (bca23e5)
- add technical timeframe setting (81c5949)
- audit trading decision rationale (1207e02)
- bound news card concurrency and runtime (1335e43)
- constrain technical analysis timeframes (b89fc0c)
- enforce timeframe-aware analysis freshness (4efe293)
- finalize timed out cron audit rows (83b88eb)
- migrate analysis timestamps and operational defaults (1413bb5)
- preserve source analysis timestamps (7862c86)
- remove overall analysis axis (ea90486)
0.8.0 (2026-06-17)
- 운영 효율화 (43e3dde)
0.7.0 (2026-06-17)
- 오류 로그 더 상세히 남기도록 수정 (18081ab)
0.6.0 (2026-06-16)
- analysis-api: symbol 미지정 시 전체 최신 결과 반환 (0c4225c)
- cron: 펀더멘털 스케줄 0 13 → 0 15 UTC로 이동 (24c7bb0)
- news: runNewsAnalysis에 카드 enrich 단계 통합 (2788476)
- yahoo-options: v3 default export 호환을 위한 인스턴스화 (98752c0)
- news-cards: news_cards 테이블·쿼리·마이그레이션 추가 (9943ae4)
- news-enrich: NewsItem → EnrichedNewsItem 변환 헬퍼 (8abcca7)
0.5.0 (2026-06-13)
- 매수/매도 신호 임계값 스케일 정정 — 0~100 정량 점수로 통일(기본 70/30) + 범위 검증 (1c64a5e)
- PR #15 리뷰 반영 — MobileNav 실제 컴포넌트화·시트 a11y/네비 터치·포지션 타깃 long/short 분기 통합 (ebbcaeb)
- mobile-ux: 모바일 네비 4+더보기 시트 리디자인 + iOS CSS 개선 (Part A) (51015f3)
- mobile-ux: 모바일 UX 개선 Part B — 폼 키보드·터치타깃·청산확인·포지션표 (3c4647e)
0.4.0 (2026-06-13)
- PR #13 리뷰 반영 — queryFn 내부 날짜범위 도출 + 테스트 주석 정정 (a0b202c)
- PR #13 리뷰 반영 — URLSearchParams 이중 인코딩 제거 + limit 안전 파싱 (f99afb3)
0.3.0 (2026-06-13)
- 락 owner 토큰 콜스택 전달, 승인 킬스위치, 분석 크론 TTL (H5/M8/M9) (270daae)
- 배포 전 하드닝 3건 (reconcile dry_run 게이트, crypto import, 0007 IF NOT EXISTS) (ac9f0bc)
- 분석 poll 타임아웃을 150s로 — 직렬 폴링 worst-case를 락 TTL/maxDuration 이내로 (1893362)
- 이메일 알림 ON/OFF 실동작 + 전 페이지 낙관적 업데이트 (05773a5)
- auth: Cloudflare Access JWT 검증 강화 + DISABLE_AUTH 프로덕션 가드 (436fab8)
- clear.ts에 order_tracking 추가 및 schema.ts 주석 보강 (a42d3ce)
- cron: analysis 크론 감사 로그 코드 품질 개선 (5b577c7)
- data/analysis 견고성 강화 (M10/L16/L17/L18) (c1bef06)
- db: cron 쿼리 헬퍼 코드 품질 개선 (NaN 가드, 판별 유니온, CronType) (1fed269)
- db: H7 스키마 인덱스 드리프트 수정 + M11 recovery NaN 가드 강화 (d493e47)
- execute: 매매 안전 강화 — C1/C2/H3/H4 감사 수정 (d8baec8)
- execute: 포지션 재평가 hold 결정을 decisions[]에 기록 (감사 로그 누락 수정) (7e2c17f)
- execute: semi_auto 결정을 executed:false로 기록 (감사 로그 스펙 버그 수정) (ee86352)
- getAnalysisConfig 기본값 반환 + updateAnalysisConfig upsert 전환 (9896946)
- M12/L13/L14/L15 보안·검증·UI 강화 (c1eb41d), closes #39
- PR #11 리뷰 반영 — 방어 가드 및 에러 로깅 보강 (cfc68a6)
- PR #12 리뷰 반영 — 0007 편집 되돌림 + dry_run 게이트를 브로커 호출만으로 한정(타임아웃 안전망 유지) (ca5b069)
- review: execute 오류 알림 게이트 적용 + 청산 이벤트 분기 + 타이머/빈 updates 방어 (3f30f52), closes #8
- _run-analysis-cron에 cron_runs 감사 로깅 계측 추가 (55aef5e)
- cron 감사 로그 쿼리 헬퍼 추가 (startCronRun, finishCronRun, insertCronDecisions) (cd14166)
- cron_runs, cron_decisions 테이블 추가 및 마이그레이션 생성 (0140d0a)
- execute 크론에 cron_runs/cron_decisions 감사 로깅 계측 추가 (f3b1d2d)
- reconcile 크론 감사 로그 계측 (Task 5) (3d1edbf)
0.2.2 (2026-06-12)
- API 핸들러 서명 수정 (named export로 Vercel Node 런타임 호환) (0b426bd)
0.2.1 (2026-06-12)
- ESM 모듈 해석 실패로 인한 production 500 오류 (FUNCTION_INVOCATION_FAILED) (d70cffe)
- 하드닝(킬스위치 boolean검증/락 TTL 780/Redis prod fail-closed/timeframe검증) + 마이그레이션 fresh-apply 수정 (585a150)
- add test:quiet script for pre-push hook (847138a)
- address all review findings — security, correctness, performance (c09688d)
- approve idempotency, cooldown, exposure tracking, retry, migration, graceful Redis (a8f328e)
- badge 9+ cap, mode filter with correct keys (dry_run/semi_auto/auto) (6a4776a)
- correct test:coverage script to use vitest run --coverage (c430ca3)
- CRITICAL — sell closePosition, approve no phantom trade, lock ownership, score_weights validation + HIGH tests (659d0a7)
- cron: 윈도를 13-21 UTC로 확대 (EST 세션 마지막 시간 커버, DST 양쪽 대응) (1f855c7)
- cron: 크론 스케줄을 UTC로 수정 (Vercel은 UTC 실행 — 기존 KST 시각이라 장중에 안 떴음) (055e52c)
- db: 매도별 realized_pnl 기록으로 정확한 일일 PnL + client_order_id 기반 정밀 reconcile 매칭 (d3f7dda)
- db: getTodayRealizedPnl 타입드 select로 드라이버 무관 견고화 + realizedPnlForSell 순수 헬퍼 추출(센트 반올림) (9827416)
- db: neon-serverless Pool로 전환 — db.transaction() 실제 동작 (neon-http는 트랜잭션 미지원) (99538d6)
- db: Pool max:1 (서버리스 커넥션 고갈 방지) + neon-serverless 드라이버 회귀 가드 테스트 (리뷰 반영) (73aacb9)
- db: reducePositionQuantity 옵셔널 체이닝 + 고아 마이그레이션 0004 중복 파일 제거 (리뷰 반영) (7c969cc)
- execute: partial 체결은 reconcile가 단일 기록 (execute는 즉시 기록 안 함, 이중계상 방지) (d08c25d)
- execute: pending/partial 주문 이중제출 방지(in-flight 가드+쿼리 확장) + 매수가능액 누적차감 + 분수 sellable 0주 방지 (1086e8a)
- Korean reason strings, Pretendard font, fix tests (fd03458)
- post-audit — silent catch notification, type-safe signal inputs, dedup, NaN guard (7adcaef)
- prevent duplicate watchlist symbols + add missing tests for 90%+ coverage (81b8518)
- R2 findings — transaction safety, approve tracking, no stale price fallback, mode snapshot, position averaging, GET-only retry, DB indexes (58a2765)
- R3 findings — averaging logic, atomic SQL, approve safety, auth tests, safe-extract, partial fills (8db7b11)
- R4-4 — PnL direction, estimated close price, quantity warning, invalid avgPrice alert, exclude skipped from count (ceca992)
- R5 — rejected revert, submitted tracking, support profit check, estimated price, partial fill alert (eab37b5)
- R6 — partial close, pending sell guard, per-symbol cap, phantom sell guard, price cache, invalid price/signal fixes (d575a3f)
- R7 — exposure after partial sell, break-even, reduce guard, phantom sell, avg-in cap, trade-based PnL (2f42c7e)
- R8 — approve sell partial close, no-position guard, correct PnL calculation, type cleanup (ec5ef0d)
- reconcile: dry_run에서는 holdings 정합성 비교 스킵 (시뮬레이션 포지션 vs 실계좌 오탐 방지) (8a1d638)
- remove unused gte import (0ee64ac)
- risk units, auto mode desc, yellow skipped trades, 24h alert TTL (1d1b90d)
- round 2 review — auto buy position tracking, approve execution, exposure updates, DST (e187fbd)
- round 3 review — double-approve guard, HTML escaping, auth hardening, order validation (0fdf74a)
- round 4 — missing API endpoints, order submitted status handling, config validation (a457d0f)
- round 6 — atomic approve/close with DB-level race guard, config upper bound, analysis limit (b359799)
- search uses real FMP via Vite dev middleware, MSW passthrough (aa077e3)
- sell recovery warns when no position exists + add test (753be31)
- Settings mock data structure + add favicon.ico (cab6a5f)
- split vitest.config.ts to resolve vite plugin type conflict (29bf901)
- trading: 401 재발급이 재시도 예산 미소모 + Retry-After 음수 클램프 + clientOrderId 값검사 (ebbe284)
- trading: 401/403은 비즈니스 거부 아닌 rethrow + expires_in 누락 시 기본값 (Gemini 리뷰) (45883b6)
- trading: 주문 에러 분류 정교화(일시적 4xx rethrow) + 폴링 실패 시 pending 보존 + clientOrderId 검증 (f28221b)
- trading: 체결 기록 원자화 + 실제 체결수량 검증 (소수점/단축체결은 needs_review) (41043d7)
- trading: 토큰 발급을 항상 락 내부로 (언락 fallback 제거) + dev 메모 캐시 (0eb521b)
- trading: approve clean-full-fill 가드 + holdings US 필터 + 타입/에러코드 정합 (claude 리뷰) (60787f9)
- UI feedback — layout, card design, analysis error, pending badge, Korean labels (059d284)
- use import.meta.url instead of __dirname in vite.config.ts (04f9343)
- UX — id-based watchlist ops, proper API calls, Korean labels, remove unused var (a26425b)
- UX improvements — id-based watchlist ops, proper API calls, Korean labels (3d1eccc)
- 20 pending mocks, cash balance, portfolio UX, watchlist limit, position targets (f3a576f)
- add analysis cron functions (technical, news, options, fundamental) (1769374)
- add analysis runners with polling for all 5 types (d22a7f2)
- add Analysis, Pending, Settings dashboard pages with tests (e716877)
- add cron auth, DB singleton, and query helpers (5d602bd)
- add dashboard API routes (status, positions, trades, config, pending, approve) (b79f5cb)
- add dashboard shell with routing, TanStack Query, and API client (33b304e)
- add DB seed script with mock data for dashboard preview (3a37c0c)
- add db:clear script with confirmation prompt (923cc51)
- add dev:mock script — API mock only when VITE_API_MOCK=true (9d75921)
- add Drizzle ORM schema for all tables (0f9da12)
- add email notification module with tests (293cb38)
- add execute cron — signal scoring, risk management, trade execution (dea710a)
- add fixed SL/TP toggle (default OFF) — AI-only exit by default (c206e6e)
- add FMP and Yahoo Finance data adapters (f38633c)
- add mobile bottom tab bar + responsive nav improvements (fdc63b7)
- add risk manager with position sizing and stop/take profit (b8d6446)
- add seed/migrate tests + fix React Query queryKey pattern (d041779)
- add signal scorer with comprehensive tests (cf554f2)
- add Status, Positions, Trades dashboard pages with tests (0aeaa3f)
- add ticker search autocomplete for watchlist (9e40c80)
- add Toss Securities API client with tests (53dcc01)
- add trade decision module with tests (089ee7b)
- adjust score weights, Korean reason strings, configurable timeframe, Pretendard font (57968ef)
- alert on insufficient balance — skipped trades in Status + email notification (9c04cb4)
- analysis: FMP MarketDataProvider 포팅 + 분석 runner에 주입 (캐시 미스 throw 해결) (4f0d1f9)
- approve: 비동기 OrderOutcome 매핑 (안정 clientOrderId, pending/partial 미기록) (96b4c34)
- auto-recover filled orders + compensating transaction design doc (b847823)
- color-coded watchlist/position badges, position target table with buy price (5134d0b)
- cron: 미국 정규장 시간 외 크론 로직 차단 (ac7341a)
- db: order_tracking에 client_order_id 컬럼 추가 (2f573e2)
- db: trades에 client_order_id, realized_pnl 컬럼 추가 (d431143)
- dismissable alerts with confirmation button and timestamp (5272f43)
- docs: 면책 문구 추가 (75e8352)
- enforce max_daily_loss_usd circuit breaker + expire old pending orders (3eff663)
- enhance strategy with actionRecommendation, dynamic stop/take profit, position re-evaluation (66b165a)
- execute: 비동기 OrderOutcome 매핑 + 휴장 게이팅 + 매수/매도 안전장치 가드 (e5f9e90)
- full UX audit — improvements + comprehensive interaction tests (668842c)
- MSW approve/close adds trade records + positions for full flow testing (82f8225)
- P0-1 distributed lock via Upstash Redis SETNX for cron handlers (d805a87)
- P0-2 circuit breakers — kill switch, daily trade limit (cea7ff8)
- P0-3 comprehensive input validation and NaN protection (a635500)
- P0-4 approve handler — Toss API call, dedup, compensating transactions (82f5524)
- P0-5 order lifecycle tracking with idempotency keys (8cc466a)
- P1 fixes — exposure tracking, decisions dedup, config validation, staleness, close price (9ba1282)
- P2 — pending dedup, auto mode confirmation, health check, input allowlists (c2a940a)
- position target table title + current price, doc updates (f327d8c)
- reconcile: getOrder 폴링으로 in-flight 주문 확정 + 부분체결 수동검토 라우팅 + 자동취소 + holdings 정합성 (1f11c4c)
- reconciliation cron, live price fetch, DB consistency checker (8c71d91)
- replace static Vite middleware mock with MSW for stateful dev testing (346826d)
- Settings UX — readable labels, mode descriptions, explicit save for risky settings (636bfa7)
- split risk section into 3 subsections (SL/TP toggle, investment, AI thresholds) (83821f1)
- Status page — portfolio overview + last 10 trades (acd0ccc)
- trading: 계좌·보유·매수가능·매도가능·취소·휴장 조회 API (af934b6)
- trading: 공통 tossFetch 클라이언트 (에러코드·재시도·계좌헤더) (5282ac7)
- trading: 비동기 주문 파사드 + 인라인 폴링 + getOrder (2e93e0c)
- trading: 실제 스펙 기반 도메인 타입 정의 (2ebad2a)
- trading: OAuth2 토큰 매니저 (Redis 캐싱 + 재발급 락) (fa7b36d)
- Revert "refactor: move ticker search to client-side FMP call, remove /api/search" (d66f1b2)