-
Notifications
You must be signed in to change notification settings - Fork 105
feat(view): Newviz 스토리라인 시각화 #1030
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Closed
Changes from all commits
Commits
Show all changes
80 commits
Select commit
Hold shift + click to select a range
d0b75b6
feat(view): 네트워크 그래프 유틸리티
hyemimi 81f992f
refactor(view): 직관적인 변수명으로 수정
hyemimi 9c24c01
Merge pull request #878 from hyemimi/newviz
hyemimi c4ff5b6
feat(view): 네트워크 그래프 UI 구현 (#885)
hyemimi fcbb92b
feat(view): 스토리라인 차트 UI 구현
oortmealy 48d9c0e
chore(view): 모달 barrel export 변환
oortmealy 6efbcaf
chore(view): FolderActivityFlow모달 네이밍 변경
oortmealy 3631233
chore(view): App.scss에서 스타일 적용
oortmealy d8b6b16
chore(view): 핸들러 별도 함수로 분리
oortmealy 0d9b4ee
chore(view): Record-> index signature 변경, 타입 구체화
oortmealy dcb4727
refactor(view): getSubFolders 별도 파일로 분리
oortmealy 73aa1ea
chore(view): handleGoBack-> handleGoUp, back-> up 버튼으로 변경
oortmealy 8f2dddf
chore(view): key값 index-> crumb, onClick 핸들러 분리
oortmealy 32f8b1f
chore(view): totalData, topFolders의 any 타입 구체화
oortmealy d88c5de
chore(view): totalData.flat() 제거, 방어코드 정리
oortmealy 7c87e24
Merge pull request #888 from githru/feat/storyline-chart
oortmealy c7de90c
feat: Enhance FolderActivityFlow with release mode functionality
lee-kyu-hwan 80531cd
refactor: 코드 정리 및 일관성 있는 로그 메시지 포맷 적용
lee-kyu-hwan 6bf6818
feat: Release mode에서 폴더 네비게이션 기능
lee-kyu-hwan e376dde
refactor(view): Remove development logging from FolderActivityFlow
lee-kyu-hwan 8278c5e
refactor(view): Separate visualization components
lee-kyu-hwan 99204a1
refactor(view): Apply Strategy Pattern for navigation
lee-kyu-hwan faf3104
refactor(view): Improve type safety by removing 'any' types
lee-kyu-hwan cdde9cc
refactor(view): Extract navigation state to custom hook
lee-kyu-hwan 35a93d9
docs(view): Add comprehensive JSDoc comments
lee-kyu-hwan 0077e9d
refactor: 네비게이션 접근성 개선
lee-kyu-hwan 147165c
Merge pull request #925 from lee-kyu-hwan/feature/newviz-storyline-re…
lee-kyu-hwan 6de8cf2
refactor: 코드 정리 및 함수형 접근 방식으로 커밋 그룹화 개선
lee-kyu-hwan f5fd31e
refactor: groupCommitsByReleaseTags 함수형 리팩토링 및 타입 안정성 개선
lee-kyu-hwan 91859bf
refactor: non-null assertion 제거 및 안전한 타입 가드 적용
lee-kyu-hwan b9a9de7
[chore] : 차트 스타일 변경
oortmealy fb4cc9b
Merge pull request #925 from lee-kyu-hwan/feature/newviz-storyline-re…
oortmealy eefdca3
[add] : 차트 컬러 추가
oortmealy 98b38ac
[chore] : 차트 디자인 수정
oortmealy b047540
[refactor] : y축 폴더/파일명 구분
oortmealy 3071cf3
Merge pull request #943 from githru/refactor/941
oortmealy ae15287
refactor: cluster mode 제거 및 코드 포맷팅·린팅 수정 (#946)
hyemimi a001a29
fix(view): fix the header elements layout (#906) (#948)
Jxxunnn 5720716
refactor(view): 배열 업데이트 성능 최적화
lee-kyu-hwan 4f298ac
refactor(view): Map 타입 정의 일관성 개선
lee-kyu-hwan f3ac430
refactor(view): 불필요한 주석 제거
lee-kyu-hwan 6df8971
Merge pull request #940 from lee-kyu-hwan/931-refactor/group-commits-…
lee-kyu-hwan 2c8ddd9
feat(view): 스토리라인 차트 표시 버튼에 MUI 적용 (#951)
Jxxunnn af4b0b7
[chore] : 툴팁 디자인 변경
oortmealy e318029
[refactor] : 노드 호버이벤트 수정 및 툴립 UI 수정
oortmealy efe9505
[refactor] : 툴팁 위치 계산 변경
oortmealy 3d65cf4
Merge branch 'newviz' of https://github.com/githru/githru-vscode-ext …
oortmealy f503b9f
[chore] : 툴팁 초기화 변경
oortmealy 33ef89f
[del] : 클러스터 모드 파일 삭제
oortmealy 4422be7
[add] : 툴팁 스타일 인라인 -> scss 선언
oortmealy b635b48
[chore] : 툴팁 scss 적용
oortmealy ccd91ee
Merge pull request #958 from githru/refactor-tooltip/956
oortmealy a64647c
refactor: 클러스터 모드 관련 불필요한 파일 및 모듈 삭제 (#964)
hyemimi 7c91993
chore: FolderActivityFlow.test.ts -> FolderActivityFlow.releaseAnalyz…
lee-kyu-hwan 9e81b75
test(view): FolderActivityFlow releaseAnalyzer 테스트 수정 및 mock 데이터 추가
lee-kyu-hwan 537d2fe
refactor: 테스트에서 사용하지 않는 mock 데이터 제거 및 import 정리
lee-kyu-hwan 64868e2
[refactor] : 브레드크럼 컴포넌트 변경
oortmealy 8fe971b
[refactor] : 차트 위치 고정을 위한 동적 높이 추가
oortmealy d0fa662
[fix] : contributor activity가 없는 폴더/파일은 차트에서 삭제
oortmealy 2414b97
Merge pull request #973 from lee-kyu-hwan/963-refactor/release-analyz…
lee-kyu-hwan 9573171
[chore] : 차트 크기 변경
oortmealy 704556b
[del] : 중복 스타일 제거
oortmealy 20f8f69
[del] : 불필요한 변수 제거
oortmealy cc5e94f
[del] : 차트 반응형 제거
oortmealy 89bb57f
[del] : navigateUp 함수 제거
oortmealy 739cce9
[add] : 타이틀 추가
oortmealy 4c7408b
[add] : 서브타이틀 추가
oortmealy 60f26c2
Merge pull request #976 from githru/refactor-breadcrumb/956
oortmealy 195ce15
[chore] : 브레드크럼 정렬 수정
oortmealy 70bbf0d
[chore] : 아이콘 변경
oortmealy 1a77946
[chore] : cursor: "pointer" 인라인 스타일 옮김
oortmealy 421c640
Merge pull request #980 from githru/feat-title/959
oortmealy a3ca1d6
[refactor] : Storyline Chart 반응형
oortmealy 0c7d56d
[chore] : insertions/deletions 컬러팔레트 적용
oortmealy dec6749
Merge pull request #985 from githru/refactor-chart-responsive/960
oortmealy 40439f0
fix(view): 스토리라인 차트 툴팁이 간헐적으로 나타나는 현상 해결 (#1005)
hyemimi 173eb85
feat(view): 스토리라인 차트 모달 개선 (#1006)
Jxxunnn e05483a
refactor(view): FolderActivityFlow -> StorylineChart 변경, 네트워크 그래프 삭제 …
hyemimi 29600f0
feat(view): 스토리라인 필터 릴리즈/기여자 필터링 UI, 기능 구현 (#1027)
hyemimi c81de72
feat(view): 스토리라인 애니메이션 추가 (#1028)
hyemimi File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,151 @@ | ||
| # CLAUDE.md | ||
|
|
||
| This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository. | ||
|
|
||
| ## Project Overview | ||
|
|
||
| githru-vscode-ext is a VSCode extension that provides Git visualization and analytics. It's a monorepo with three main packages: | ||
|
|
||
| - **analysis-engine**: Core Git analysis engine that parses git logs and GitHub data | ||
| - **view**: React-based UI components for visualization (uses D3.js, Material-UI) | ||
| - **vscode**: VSCode extension wrapper that bridges the engine and view | ||
|
|
||
| ## Development Commands | ||
|
|
||
| ### Root Level | ||
| ```bash | ||
| # Install dependencies for all packages | ||
| npm install | ||
|
|
||
| # Build all packages | ||
| npm run build:all | ||
|
|
||
| # Test all packages | ||
| npm run test:all | ||
|
|
||
| # Lint all packages | ||
| npm run lint | ||
| npm run lint:fix | ||
|
|
||
| # Format code | ||
| npm run prettier | ||
| npm run prettier:fix | ||
| ``` | ||
|
|
||
| ### Package-Specific Commands | ||
|
|
||
| #### Analysis Engine (packages/analysis-engine) | ||
| ```bash | ||
| # Build with type declarations | ||
| npm run build | ||
|
|
||
| # Run specific tests | ||
| npm run test:stem | ||
| npm run test | ||
|
|
||
| # Lint | ||
| npm run lint | ||
| ``` | ||
|
|
||
| #### View (packages/view) | ||
| ```bash | ||
| # Start development server | ||
| npm run start | ||
|
|
||
| # Build for production | ||
| npm run build | ||
|
|
||
| # Run tests | ||
| npm run test | ||
|
|
||
| # Run E2E tests | ||
| npm run test:e2e | ||
| ``` | ||
|
|
||
| #### VSCode Extension (packages/vscode) | ||
| ```bash | ||
| # Build extension (also builds view package) | ||
| npm run build | ||
|
|
||
| # Watch mode for development | ||
| npm run watch | ||
|
|
||
| # Package extension | ||
| npm run package | ||
|
|
||
| # Debug: F5 in VSCode or Run > Start Debugging | ||
| ``` | ||
|
|
||
| ### Debugging the Extension | ||
| 1. Run `npm run build:all` from root | ||
| 2. Open the `packages/vscode` folder in VSCode | ||
| 3. Press F5 or use Run > Start Debugging | ||
| 4. In the Extension Development Host, use Command Palette > "Open Githru View" | ||
|
|
||
| ## Architecture | ||
|
|
||
| ### Data Flow | ||
| 1. **VSCode Extension** captures git repository context | ||
| 2. **Analysis Engine** processes git log and GitHub API data: | ||
| - Parses raw git commits (`parser.ts`) | ||
| - Builds commit dictionary (`commit.util.ts`) | ||
| - Creates stem/branch structure (`stem.ts`) | ||
| - Generates cluster summary map (`csm.ts`) | ||
| 3. **View** renders interactive visualizations using the processed data | ||
|
|
||
| ### Key Components | ||
|
|
||
| #### Analysis Engine Core Classes | ||
| - `AnalysisEngine`: Main orchestrator class | ||
| - `PluginOctokit`: GitHub API integration with retry/throttling | ||
| - Dependency injection using `tsyringe` | ||
|
|
||
| #### View Architecture | ||
| - **State Management**: Zustand stores in `src/store/` | ||
| - **Components**: Modular React components with D3.js integration | ||
| - **IDE Adapter Pattern**: `VSCodeIDEAdapter` bridges VSCode API | ||
| - Component structure: `ComponentName/index.ts` exports, separate `.const.ts`, `.type.ts`, `.util.ts` files | ||
|
|
||
| #### VSCode Extension | ||
| - Extension activation on git repositories | ||
| - Webview integration for React UI | ||
| - Command palette integration | ||
| - GitHub authentication management | ||
|
|
||
| ## Code Conventions | ||
|
|
||
| ### Commit Messages | ||
| Follow conventional commits with these scopes: | ||
| - `feat(engine)`: Analysis engine features | ||
| - `feat(view)`: UI/visualization features | ||
| - `feat(vscode)`: VSCode extension features | ||
| - `fix(scope)`: Bug fixes | ||
| - `refactor(scope)`: Code refactoring | ||
|
|
||
| ### Code Style | ||
| - ESLint configuration with Prettier | ||
| - TypeScript strict mode | ||
| - 2-space indentation, 120 character line width | ||
| - Single quotes disabled, trailing commas on ES5 | ||
|
|
||
| ### Testing | ||
| - Jest for unit testing | ||
| - Playwright for E2E testing (view package) | ||
| - Test files: `*.spec.ts` or `*.test.ts` | ||
|
|
||
| ## Development Environment Setup | ||
|
|
||
| ### Prerequisites | ||
| - Node.js >= 16 | ||
| - npm >= 8 | ||
| - VSCode with ESLint extension | ||
|
|
||
| ### TypeScript Configuration | ||
| In VSCode, activate workspace TypeScript: | ||
| 1. Open a TypeScript file | ||
| 2. Ctrl/Cmd + Shift + P | ||
| 3. "Select TypeScript Version" | ||
| 4. "Use Workspace Version" | ||
|
|
||
| ### Package Structure | ||
| The project uses npm workspaces. Each package has its own dependencies and build configuration but shares root-level linting and formatting rules. | ||
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Oops, something went wrong.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
26 changes: 26 additions & 0 deletions
26
packages/view/src/components/InsightsButton/InsightsButton.tsx
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,26 @@ | ||
| import { Badge, IconButton, IconButtonProps } from "@mui/material"; | ||
| import InsightsIcon from "@mui/icons-material/Insights"; | ||
|
|
||
| type InsightsButtonProps = { | ||
| isNew?: boolean; | ||
| } & IconButtonProps; | ||
|
|
||
| const InsightsButton = ({ isNew = false, ...props }: InsightsButtonProps) => { | ||
| return ( | ||
| <IconButton {...props}> | ||
| <Badge | ||
| badgeContent="NEW" | ||
| invisible={!isNew} | ||
| sx={{ | ||
| "& .MuiBadge-badge": { | ||
| fontSize: "0.625rem", | ||
| }, | ||
| }} | ||
| > | ||
| <InsightsIcon /> | ||
| </Badge> | ||
| </IconButton> | ||
| ); | ||
| }; | ||
|
|
||
| export default InsightsButton; |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1 @@ | ||
| export { default as InsightsButton } from "./InsightsButton"; |
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
클로드 memory bank?? 가 repo로 들어왔군요 ㅎㅎ
이런 것들도 잘 관리되면 좋긴 하겠습니다!