v0.1.88
v0.1.88 — 탭 전환 stale 이벤트 재생 fix + 마크다운 표준(GFM) 형식 + v0.2.0 plan init
변경 사항
사용자 요청 3가지
- 별도 메이저 plan 시작 — Three.js WebGL 2D 엔진 (디자인 유지, 큰 작업)
- 탭 전환 시 현재 상황 즉각 표시 — "장시간 특정 탭에 접근 안 하고있다가 접근하면, 끊긴 지점부터 추적 히스토리가 재생되는 문제"
- 마크다운 표준 보기 형식 — "표, 텍스트 굵기, 크기 등등등의 마크다운의 표준 보기 형식으로 전환되어 보여져야함"
1) v0.2.0 메이저 plan init — leerness plan 으로 5 phase 등록
- M-0002. v020-phase1 — Phase 1 — 카메라/노드 (Three.js orthographic + InstancedMesh)
- M-0003. v020-phase2 — Phase 2 — 엣지 (Line2/LineSegments2 GPU-batched)
- M-0004. v020-phase3 — Phase 3 — Hit testing (raycaster + spatial hash)
- M-0005. v020-phase4 — Phase 4 — React Flow 호환 layer (디자인 유지, panZoom 동일)
- M-0006. v020-phase5 — Phase 5 — Avatar/DataFlow GPU sprites (디자인 유지)
- 목표: 2D CPU 14~20% → 1~3% (3D 처럼 부드러움 + React Flow 디자인 그대로 유지)
2) 탭 전환 stale 이벤트 재생 fix (src/store/agentStore.ts)
- *문제 분석**:
parkedByProject[oldId]가 탭 전환 시 active events 를 백업 → swap 작동- 사용자가 5분, 30분, 1시간 후 돌아오면 옛 이벤트가 그대로 events 로 swap-in
- 옛 trail / DataFlow / 아바타 위치가 "방금 도착한 것처럼" 애니메이션 재생 → "끊긴 지점부터 추적 히스토리가 재생" 현상
- *해결**:
STALE_EVENT_CUTOFF_MS = 5 * 60_000추가 →setActiveProject의 swap-in 시 5분 이내 이벤트만 복원 - 5분 안에 돌아오면: 연속성 유지 (탭 전환이 매끄러움)
- 5분 넘게 부재 후 돌아오면: events=[] 로 시작 → 라이브 watcher 가 라이브 이벤트로 현재 상태를 다시 채움
- *5분 cutoff 의 근거**:
THRESHOLDS_BY_KIND.ai.working = 5*60_000과 일치 — working 상태로 의미 있는 이벤트만 남김- 5분 후엔 어차피 아바타가 'idle' 또는 'away' 로 떨어지므로 trail 재생이 무의미
3) 마크다운 표준(GFM) 형식 — 양쪽 viewer 강화
- *(a) FileViewer.tsx — 인앱 .md 뷰어**
- block:
# heading h1~h6+paragraph+ul/ol+ GFMtable+blockquote+hr+ fenced code block + task list checkbox - inline:
bold+*italic*++ `strikecode+[text](url)` + raw URL - CSS (Tailwind arbitrary selector): h1 18px → h6 11px 점진 축소, h1/h2 에 border-bottom, blockquote 좌측 accent 보더, table stripe (even row), del line-through, code accent-warning 컬러
- *(b) generateReleaseNotes.ts — 패치 노트 페이지(viewwork.work)**
renderItems가 history.md bullet 라인을 traverse 하면서 GFM block 인식: h1~h6, table, blockquote, hr, ol/ul, fenced codeinlineMarkdown에 strikethrough 추가parseTableRow/parseTableAlign헬퍼 —| a | b |행 +:---|---:|:---:정렬 인식- task list
[x]/[ ]checkbox 렌더 (disabled — 읽기 전용) - *(c) web/assets/styles.css — 패치 노트 페이지 스타일**
.article h4 17px/.article h5 15px uppercase tracking/.article h6 13px추가.article table— border-collapse, header bg-elevated, even row stripe, GFM 표 표준.article del— line-through + muted color.article li.md-task— list-style none + checkbox align
파일 변경
- 수정:
src/store/agentStore.ts—STALE_EVENT_CUTOFF_MS추가, swap-in 필터 - 수정:
src/components/Layout/FileViewer.tsx— mdToHtml 표준 GFM, prose 클래스 확장 - 수정:
scripts/generateReleaseNotes.ts— renderItems GFM block, parseTable 헬퍼 - 수정:
web/assets/styles.css— table/del/h4~h6/task-list 스타일 - 수정:
package.json0.1.87 → 0.1.88 - 수정:
.harness/plan.md— v0.2.0 5 phase milestones (leerness plan)
검증
npx tsc --noEmitexit=0npm run web:release-notes정상 — 20 entries + version.json 동기화- --
📦 GitHub 릴리스 노트: v0.1.88