Skip to content

Commit 9a4ec5a

Browse files
authored
Update copilot instructions for April (#2582)
Update copilot instructions
1 parent 54f77a0 commit 9a4ec5a

1 file changed

Lines changed: 53 additions & 15 deletions

File tree

.github/copilot-instructions.md

Lines changed: 53 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515

1616
### Backend
1717

18-
- **Language:** Java 11 (compatible up to Java 17)
18+
- **Language:** Java 11
1919
- **Build System:** Gradle
2020
- **Key Dependencies:**
2121
- Gson 2.9.0 (JSON serialization/deserialization)
@@ -35,10 +35,14 @@
3535
- Vue 3
3636
- Vue Router
3737
- Vuex (State management)
38+
- Zod (Runtime schema validation for JSON report files)
3839
- ESLint and Stylelint (Linting)
3940
- Cypress (E2E testing)
4041
- Highlight.js (Code highlighting)
4142
- Markdown-it (Markdown parsing)
43+
- FontAwesome (Icons)
44+
- JSZip (ZIP archive handling)
45+
- Minimatch (Glob pattern matching)
4246

4347
### DevOps & Documentation
4448

@@ -69,9 +73,11 @@ RepoSense/
6973
│ │ ├── views/ # Page-level components
7074
│ │ ├── router/ # Vue Router configuration
7175
│ │ ├── store/ # Vuex store
72-
│ │ ├── types/ # TypeScript types
76+
│ │ ├── types/ # TypeScript types (includes Zod schemas)
7377
│ │ ├── utils/ # Utility functions
78+
│ │ ├── mixin/ # Vue mixins for shared logic
7479
│ │ └── main.ts # Entry point
80+
│ ├── config-wizard/ # Standalone YAML configuration wizard app
7581
│ ├── cypress/ # E2E tests
7682
│ └── package.json
7783
├── docs/
@@ -82,7 +88,13 @@ RepoSense/
8288
│ ├── author-config.csv # Author configuration template
8389
│ ├── repo-config.csv # Repository configuration template
8490
│ ├── group-config.csv # Group configuration template
85-
│ └── report-config.yaml # Report metadata
91+
│ ├── report-config.yaml # Report metadata
92+
│ ├── author-blurbs.md # Per-author blurb descriptions
93+
│ ├── repo-blurbs.md # Per-repo blurb descriptions
94+
│ ├── chart-blurbs.md # Per-chart blurb descriptions
95+
│ ├── checks/ # CI check scripts
96+
│ ├── checkstyle/ # Checkstyle configuration
97+
│ └── gh-actions/ # GitHub Actions helper scripts
8698
├── build.gradle # Gradle build configuration
8799
└── .github/ # GitHub workflows and templates
88100
```
@@ -98,7 +110,10 @@ RepoSense follows a modular architecture with clear separation of concerns:
98110
- `ArgsParser`: Parses CLI arguments into `CliArguments` object
99111
- `CsvParser`: Abstract parser for CSV configuration files (author, group, repo configs)
100112
- `JsonParser`: Abstract parser for JSON configuration files
113+
- `YamlParser`: Abstract parser for YAML configuration files
101114
- `StandaloneConfigJsonParser`: Parses `_reposense/config.json`
115+
- `ReportConfigYamlParser`: Parses `report-config.yaml`
116+
- `BlurbMarkdownParser` and subtypes (`AuthorBlurbMarkdownParser`, `RepoBlurbMarkdownParser`, `ChartBlurbMarkdownParser`): Parse blurb Markdown files
102117

103118
2. **Git Layer** (`git/` package)
104119

@@ -211,6 +226,7 @@ RepoSense follows a modular architecture with clear separation of concerns:
211226
./gradlew test # Unit tests
212227
./gradlew systemtest # System tests
213228
./gradlew test systemtest # Both
229+
./gradlew testFrontend # Run Cypress E2E frontend tests (headless)
214230
```
215231

216232
**Code Quality:**
@@ -241,8 +257,11 @@ npm run lintfix # Auto-fix frontend lint errors (in frontend/)
241257
**Testing Frontend:**
242258

243259
```bash
244-
# Run E2E tests with Cypress
245-
./gradlew frontendTest
260+
# Run E2E tests with Cypress (headless)
261+
./gradlew testFrontend
262+
263+
# Run Cypress GUI (headed browser)
264+
./gradlew cypress
246265

247266
# Write tests in: frontend/cypress/tests/
248267
# Support file: frontend/cypress/support.js
@@ -282,6 +301,9 @@ When generating code, ensure:
282301
- `CliArguments`: Parsed command-line arguments
283302
- `RepoConfiguration`: Per-repository analysis configuration
284303
- `FileTypeManager`: File formats and custom groups
304+
- `BlurbMap` and subtypes (`AuthorBlurbMap`, `RepoBlurbMap`, `ChartBlurbMap`): Maps of blurb descriptions
305+
- `RunConfiguration` / `CliRunConfiguration` / `ConfigRunConfiguration`: Run configuration hierarchy
306+
- `reportconfig/`: Sub-package for report configuration models (`ReportConfiguration`, `ReportRepoConfiguration`, etc.)
285307

286308
**Commits Analysis** (`reposense/commits/`)
287309

@@ -313,23 +335,26 @@ When generating code, ensure:
313335

314336
**Key Directories:**
315337

316-
- `components/`: Reusable UI components (c-ramp, c-segment, etc.)
317-
- `views/`: Page-level components (c-home, c-widget, c-summary, c-authorship, c-zoom)
338+
- `components/`: Reusable UI components (c-ramp, c-segment, c-summary-charts, c-file-type-checkboxes, etc.)
339+
- `views/`: Page-level components (c-home, c-widget, c-summary, c-summary-portfolio, c-authorship, c-zoom, c-global-file-browser)
318340
- `router/`: Vue Router configuration
319341
- `store/`: Vuex state management (accessed via `window.REPOS`)
320-
- `types/`: TypeScript interfaces and types
342+
- `types/`: TypeScript interfaces, types, and Zod schemas (under `types/zod/`)
321343
- `utils/`: Utility functions including `api.ts` (data loader)
322344
- `mixin/`: Vue mixins for shared logic
345+
- `../config-wizard/`: Separate standalone app for generating YAML configuration files
323346

324347
**Core Files:**
325348

326349
- `main.ts`: Sets up plugins and 3rd party components
327350
- `app.vue`: Renders `router-view`, main application entry point
328-
- `api.ts`: Loads and parses JSON report files (summary.json, commits.json, authorship.json)
351+
- `api.ts`: Loads and parses JSON report files (summary.json, commits.json, authorship.json) with Zod schema validation
329352
- `c-home.vue`: Renders main report (resizer, summary, authorship, zoom)
330353
- `c-summary.vue`: Loads ramp charts from commits.json
354+
- `c-summary-portfolio.vue`: Portfolio mode variant of summary view
331355
- `c-authorship.vue`: Displays file-level authorship from authorship.json
332356
- `c-zoom.vue`: Filters and displays commits from selected ramp range
357+
- `c-global-file-browser.vue`: Global search panel for browsing files across repos
333358

334359
**Frontend Data Flow:**
335360

@@ -345,7 +370,7 @@ When generating code, ensure:
345370
**CSV Configuration Files** (in `config/` by default):
346371

347372
- `author-config.csv`: Maps git emails to author names and display names
348-
- `repo-config.csv`: Specifies repositories to analyze, branches, date ranges
373+
- `repo-config.csv`: Specifies repositories to analyze, branches, date ranges (supports datetime for `since`/`until`)
349374
- `group-config.csv`: Groups files by custom categories
350375

351376
**JSON Configuration** (`_reposense/config.json`):
@@ -356,9 +381,20 @@ When generating code, ensure:
356381

357382
**Report Configuration** (`report-config.yaml`):
358383

359-
- Report title and metadata
384+
- Report title, metadata, and per-repo time period overrides
360385
- Standalone configuration
361386

387+
**Blurb Files** (Markdown, optional):
388+
389+
- `author-blurbs.md`: Custom descriptions shown per author
390+
- `repo-blurbs.md`: Custom descriptions shown per repository
391+
- `chart-blurbs.md`: Custom descriptions shown per chart
392+
393+
**YAML Configuration Wizard** (`frontend/config-wizard/`):
394+
395+
- Standalone web app for interactively generating `report-config.yaml`
396+
- Built separately with Vite, served via `npm run serveConfigWizard`
397+
362398
### Multi-threading
363399

364400
- **Cloning:** Default 4 threads (configurable with `--cloning-threads`)
@@ -493,7 +529,7 @@ Refer to these essential developer guides located in `docs/dg/`:
493529
- Use JUnit 5 (Jupiter API) with appropriate assertions and parametrized tests
494530
- Mock external Git operations in unit tests to avoid slow I/O
495531
- All tests run via GitHub Actions CI/CD on Ubuntu, macOS, and Windows
496-
- Frontend tests run on separate Cypress job for parallel execution
532+
- Frontend tests run on separate Cypress job for parallel execution (`gradlew testFrontend`)
497533

498534
## Implementation Patterns by Component
499535

@@ -563,7 +599,9 @@ CommitContributionSummary summary = aggregator.aggregate(results);
563599

564600
- **Integration (`integration.yml`):** Runs unit tests, system tests, and frontend tests on JDK 11 (Ubuntu/macOS/Windows)
565601
- **Frontend Tests (`cypress`):** Separate Cypress job for parallel E2E test execution
566-
- **Surge.sh Previews:** Automatically deploys report and docs previews for pull requests
602+
- **Surge.sh Pending Build (`pending.yml`):** Collects PR info and marks previews as pending
603+
- **Surge.sh Build Preview (`surge.yml`):** Deploys report and docs previews for pull requests
604+
- **Clear Deployments (`delete-deploy.yml`):** Clears GitHub environments and posts preview links after PRs close
567605
- **GitHub Pages (`gh-pages.yml`):** Auto-deploys MarkBind docs to GitHub Pages on master commits
568606
- **Stale PRs (`stale.yml`):** Auto-closes inactive pull requests
569607

@@ -578,7 +616,7 @@ CommitContributionSummary summary = aggregator.aggregate(results);
578616
2. **Testing:**
579617

580618
- `gradlew test systemtest` - All backend tests must pass
581-
- `gradlew frontendTest` - Frontend tests must pass
619+
- `gradlew testFrontend` - Frontend tests must pass
582620
- Coverage tracked via Codecov
583621

584622
3. **Build Validation:**
@@ -622,5 +660,5 @@ For critical bugs found in production:
622660

623661
---
624662

625-
**Last Updated:** January 2025
663+
**Last Updated:** April 2026
626664
**Project:** RepoSense - Contribution Analysis Tool

0 commit comments

Comments
 (0)