@qiaolei81/copilot-session-viewer 0.3.3 → 0.3.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@qiaolei81/copilot-session-viewer",
3
- "version": "0.3.3",
3
+ "version": "0.3.4",
4
4
  "description": "Web UI for viewing GitHub Copilot CLI session logs",
5
5
  "author": "Lei Qiao <qiaolei81@gmail.com>",
6
6
  "license": "MIT",
@@ -84,5 +84,28 @@
84
84
  "nyc": "^17.1.0",
85
85
  "supertest": "^7.2.2",
86
86
  "v8-to-istanbul": "^9.3.0"
87
- }
87
+ },
88
+ "files": [
89
+ "bin/",
90
+ "server.js",
91
+ "lib/",
92
+ "src/app.js",
93
+ "src/config/",
94
+ "src/controllers/",
95
+ "src/middleware/",
96
+ "src/models/",
97
+ "src/routes/",
98
+ "src/schemas/",
99
+ "src/services/",
100
+ "src/telemetry.js",
101
+ "src/utils/",
102
+ "!src/**/__tests__/",
103
+ "!src/**/*.test.js",
104
+ "views/",
105
+ "public/css/",
106
+ "public/js/*.min.js",
107
+ "public/img/",
108
+ "LICENSE",
109
+ "README.md"
110
+ ]
88
111
  }
package/.nycrc DELETED
@@ -1,29 +0,0 @@
1
- {
2
- "all": true,
3
- "include": [
4
- "server.js",
5
- "src/**/*.js",
6
- "public/**/*.js"
7
- ],
8
- "exclude": [
9
- "**/*.test.js",
10
- "**/__tests__/**",
11
- "**/node_modules/**",
12
- "coverage/**",
13
- ".nyc_output/**",
14
- "test-results/**",
15
- "scripts/**",
16
- "**/*.spec.js"
17
- ],
18
- "reporter": [
19
- "text",
20
- "text-summary",
21
- "html",
22
- "lcov"
23
- ],
24
- "report-dir": "./coverage/combined",
25
- "temp-dir": "./.nyc_output",
26
- "cache": true,
27
- "sourceMap": false,
28
- "instrument": false
29
- }
package/AGENTS.md DELETED
@@ -1,109 +0,0 @@
1
- # AGENTS.md
2
-
3
- ## Project overview
4
- Web UI for viewing and analyzing GitHub Copilot CLI session logs. Built with Express.js, EJS templates, and vanilla JavaScript (Vue 3 for session detail view).
5
-
6
- ## Setup commands
7
- - Install deps: `npm install`
8
- - Start server: `npm start`
9
- - Dev mode (auto-reload): `npm run dev`
10
- - Run all tests: `npm run test:all`
11
- - Lint code: `npm run lint`
12
- - Fix lint issues: `npm run lint:fix`
13
-
14
- ## Code style
15
- - JavaScript (Node.js 22+)
16
- - Single quotes for strings
17
- - No unused variables (prefix with `_` if intentionally unused in catch blocks)
18
- - Error handling: always include `{ cause }` when re-throwing errors
19
- - ESLint enforced (no errors, warnings acceptable)
20
-
21
- ## File structure
22
- ```
23
- server.js # Main Express app
24
- src/
25
- config.js # Configuration constants
26
- session.js # Session data model
27
- sessionRepository.js # Session loading/caching
28
- insightService.js # Copilot-based analysis
29
- processManager.js # Background process tracking
30
- fileUtils.js # File operations
31
- helpers.js # Utility functions
32
- views/
33
- index.ejs # Session list (main page)
34
- session-vue.ejs # Session detail (Vue 3)
35
- time-analyze.ejs # Timeline analysis
36
- __tests__/ # Jest unit tests
37
- __tests__/e2e/ # Playwright e2e tests
38
- ```
39
-
40
- ## Testing instructions
41
- - **Unit tests**: `npm test` (Jest)
42
- - **E2E tests**: `npm run test:e2e` (Playwright)
43
- - **Coverage**: `npm run test:coverage`
44
- - Always run `npm run lint` before committing
45
- - E2E tests expect server running on port 3838
46
- - Tests use `~/.copilot/session-state/` by default
47
-
48
- ## Common tasks
49
-
50
- ### Adding a new route
51
- 1. Add route handler in `server.js`
52
- 2. Create corresponding view in `views/`
53
- 3. Add E2E test in `__tests__/e2e/`
54
- 4. Update README if user-facing
55
-
56
- ### Modifying session parsing
57
- 1. Edit `src/session.js` or `src/fileUtils.js`
58
- 2. Run unit tests: `npm test`
59
- 3. Test with real sessions from `~/.copilot/session-state/`
60
-
61
- ### UI changes
62
- - Main page: edit `views/index.ejs` (vanilla JS)
63
- - Session detail: edit `views/session-vue.ejs` (Vue 3 CDN)
64
- - Time analysis: edit `views/time-analyze.ejs` (vanilla JS)
65
- - Restart server to see changes: `npm run dev` (auto-reload)
66
-
67
- ## Important constraints
68
-
69
- ### Security
70
- - No authentication (local-only tool)
71
- - Helmet.js for basic security headers
72
- - Rate limiting on upload endpoint
73
- - Input validation on file paths
74
- - CORS restricted to localhost origins
75
-
76
- ### Dependencies
77
- - **copilot CLI** must be in PATH (used by insightService)
78
- - Node.js 22+ (uses native fetch, improved performance)
79
- - Session files: `~/.copilot/session-state/` (configurable via SESSION_DIR env)
80
-
81
- ### Performance
82
- - Session list caches for 30 seconds
83
- - Virtual scrolling for large event lists (vue-recycle-scroller)
84
- - Compression enabled (gzip)
85
- - Static assets served via Express
86
-
87
- ## Debugging tips
88
- - Check server logs: `tail -f /tmp/copilot-session-viewer.log` (if running via nohup)
89
- - Inspect session files: `cat ~/.copilot/session-state/<session-id>/events.jsonl`
90
- - Browser DevTools console for client-side issues
91
- - Use `DEBUG=*` env var for verbose logging (if implemented)
92
-
93
- ## Commit guidelines
94
- - Use conventional commits: `feat:`, `fix:`, `refactor:`, `docs:`, `test:`, `chore:`
95
- - Run `npm run lint:fix` before committing
96
- - All tests must pass: `npm run test:all`
97
- - Keep commits atomic and focused
98
-
99
- ## Known gotchas
100
- - Vue 3 templates auto-unwrap refs - don't use `.value` in templates
101
- - `filteredEvents` vs `flatEvents` - use correct one for virtual scroller indices
102
- - Platform-specific paths: always rely on system PATH, never hardcode `/opt/homebrew` etc.
103
- - EJS escaping: use `<%- %>` for trusted HTML, `<%= %>` for user input
104
-
105
- ## PR instructions
106
- - Title format: `<type>: <description>` (e.g., `feat: add brand colors for model badges`)
107
- - Link related issues if any
108
- - Include screenshots for UI changes
109
- - Verify all tests pass locally before pushing
package/CHANGELOG.md DELETED
@@ -1,313 +0,0 @@
1
- # Changelog
2
-
3
- All notable changes to this project will be documented in this file.
4
-
5
- The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
6
- and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
-
8
- ## [0.3.3] - 2026-03-13
9
-
10
- ### Added
11
- - **Frontend Build Pipeline** - esbuild-based build system (`scripts/build.mjs`) extracts inline JS from EJS templates into standalone minified bundles
12
- - **Application Insights Telemetry** - Backend telemetry via `applicationinsights@2.9.8` (11 custom events, 3 metrics); frontend telemetry via CDN SDK (13 interaction events)
13
- - **Browser Telemetry Snippet** - `views/telemetry-snippet.ejs` partial for consistent frontend telemetry injection
14
- - **Tarball Verification in CI** - E2E tests now run against `npx`-installed tgz package, verifying the published artifact works end-to-end
15
- - **npm Publish Smoke Test** - Pre-publish step installs tgz, starts server, and verifies HTTP 200
16
-
17
- ### Changed
18
- - **Frontend Architecture** - 4642 lines of inline JS extracted from 3 EJS templates into 4 standalone bundles (net -3370 lines)
19
- - `src/frontend/homepage.js` → `public/js/homepage.min.js` (9.7K)
20
- - `src/frontend/session-detail.js` → `public/js/session-detail.min.js` (45.5K)
21
- - `src/frontend/time-analyze.js` → `public/js/time-analyze.min.js` (54.6K)
22
- - `src/frontend/telemetry-browser.js` → `public/js/telemetry-browser.min.js` (1.5K)
23
- - **Server Data Bridge** - EJS templates pass server data to external bundles via `window.__PAGE_DATA`
24
- - **CI Pipeline** - E2E tests run against packed tgz via `npx` (not source); telemetry disabled in all CI steps
25
- - **npm Package** - Source files (`src/frontend/`) excluded via `.npmignore`; only `.min.js` bundles shipped
26
-
27
- ### Fixed
28
- - **Missing Runtime Dependency** - `adm-zip` moved from devDependencies to dependencies (was causing `MODULE_NOT_FOUND` when installed from npm)
29
- - **ESLint Config** - Added frontend globals (Vue, marked, DOMPurify), excluded `public/js/*.min.js` from linting, fixed unused vars and eqeqeq warnings
30
-
31
- ## [0.3.2] - 2026-03-08
32
-
33
- ### Fixed
34
- - **VSCode Session Duration** - Duration now uses the last `terminalCommandState.timestamp` (when the agent actually executed a command) instead of a `toolCount × 3500ms` heuristic. Long-running agentic sessions that span multiple hours are now measured correctly
35
- - **VSCode Multi-Workspace Dedup** - `_findVsCodeSession` now collects candidates from all matching workspace hashes and returns the one with the latest effective end time (most complete data), instead of returning the first match found
36
- - **Session `createdAt` in CI** - `Session.fromDirectory` now reads `startTime`/`endTime` from `workspace.yaml` (in addition to `created_at`/`updated_at`), fixing `createdAt` being undefined in environments where `stats.birthtime` is unavailable
37
-
38
- ### Refactored
39
- - **`_buildVsCodeSession()`** - Extracted shared VSCode session construction logic into a single method used by both the main scan loop and `_findVsCodeSession`, eliminating duplicate `effectiveEnd2`/`toolCount2` variables
40
-
41
- ## [0.3.1] - 2026-03-07
42
-
43
- ### Fixed
44
- - **Session Deduplication** - VSCode sessions with the same ID across multiple workspaces are now deduplicated (keeps most recently updated)
45
- - **WIP Status Accuracy** - VSCode agentic sessions now also check file mtime for WIP detection; threshold increased from 5 to 15 minutes
46
- - **Timeline Bar Positioning** - UserReq rows with 0 tools no longer render at the start of the timeline
47
- - **Tag Isolation** - Tags now use filePath-based storage to prevent shared directory collisions (Claude, Pi-Mono, Copilot CLI)
48
- - **Per-Session Insight Files** - Agent review files use `{sessionId}.agent-review.md` naming to avoid collisions
49
- - **Export All Sources** - Session export works for all sources including VSCode; file-based exports include `.tags.json`
50
- - **Inline References in Markdown** - VSCode `inlineReference` items (file/folder links) now rendered as code references instead of being silently dropped, fixing broken markdown tables
51
-
52
- ### Performance
53
- - **60s Cache + Request Dedup** - `SessionRepository.findAll()` results cached for 60 seconds with concurrent request deduplication, reducing TTFB from ~11s to <100ms on cache hit
54
-
55
- ## [0.3.0] - 2026-03-07
56
-
57
- ### Added
58
- - **VSCode Copilot Chat Support** - Full support for VSCode Copilot Chat sessions as a new source (`vscode`)
59
- - Session cards show model badge + repo basename
60
- - Copilot Chat extension version badge
61
- - WIP badge for active sessions
62
- - SubAgent name badges on assistant messages (replaces generic ASSISTANT badge)
63
- - UserReq rows in Gantt timeline
64
- - Turn divider shows start time + duration
65
- - **Dynamic Source Path Hints** - Clicking filter pills shows the source directory path (cross-platform)
66
- - **Multi-Tool Branding** - Homepage wording updated to reflect multi-tool support (Copilot CLI, Claude Code, Pi-Mono, Copilot Chat)
67
-
68
- ### Changed
69
- - **Source Display Names** - `copilot` → "Copilot CLI", `vscode` → "Copilot Chat"
70
- - **Session Info Layout** - Shows Model + Repo basename instead of CWD hash path
71
- - **Tool Input Display** - URI objects simplified to filename only; edits collapsed to count
72
- - **Tool Call Width** - Truncation increased to 200 chars with flex-wrap
73
- - **SubAgent Badge** - Shows name only (no emoji prefix)
74
- - **System Messages** - System-sourced `user.message` converted to `system.notification` type with SYSTEM badge
75
-
76
- ### Fixed
77
- - Claude `tool_result` user messages filtered from display
78
- - VSCode parser: `resultDetails` iteration crash, request timestamps for subagent events
79
- - VSCode subagent dedup by `subAgentId` instead of name
80
- - VSCode `findById` uses `selectedModel` + `resolveWorkspacePath`
81
- - VSCode duration estimation fix
82
- - Session detail repo dedup, skill table width
83
- - SESSION INFO duplicate Model/label
84
- - SubAgent badge uses `agentName` from `toolSpecificData`
85
- - Source path hints from server (cross-platform Windows/macOS/Linux)
86
-
87
- ## [0.2.7] - 2026-03-05
88
-
89
- ### Added
90
- - **Session Tagging** - Add, remove, and filter sessions by custom tags from the session list and detail pages
91
- - **Unit Tests for Tagging** - 70 new tests covering `tagService` and `tagController` (608 total)
92
- - **E2E Tests for Tagging** - Playwright tests covering tagging API and UI flows
93
-
94
- ## [0.2.6] - 2026-03-05
95
-
96
- ### Fixed
97
- - **304 Caching on Live Sessions** - Disabled ETag on events API (`Cache-Control: no-store`) so active/WIP sessions always return fresh data on page refresh
98
- - **Updated Time Inaccuracy** - Session detail page now shows last event timestamp as "Updated" time instead of file mtime
99
- - **E2E CI Stability** - `#loading-indicator` is always in DOM regardless of session count; removed conditional session count check that caused false negatives
100
-
101
- ## [0.2.5] - 2026-03-04
102
-
103
- ### Fixed
104
- - **Flaky Unit Tests** - Upload directory now isolated per test via `UPLOAD_DIR` env var to prevent cross-test pollution
105
- - **Timing Variance in Tests** - `ageMs` threshold relaxed from `>= 0` to `>= -100` to tolerate clock precision on fast CI runners
106
-
107
- ## [0.2.4] - 2026-03-04
108
-
109
- ### Fixed
110
- - **E2E Skip on Empty Environment** - Tests now skip gracefully when no sessions exist in CI (no `~/.copilot/session-state/` data)
111
- - **VSCode Filter Pill** - Temporarily hidden in UI (feature in progress)
112
-
113
- ## [0.2.3] - 2026-03-04
114
-
115
- ### Fixed
116
- - **Lint Errors** - Fixed unused variable warnings in `vscode-parser.js` (`canParse`, `agentName`, `itemIdx`) and `sessionRepository.js` (unused `VsCodeParser` import)
117
- - **Stale Unit Tests** - Updated test expectations to match current API signatures (`getPaginatedSessions(1, 20, "copilot")`)
118
-
119
- ## [0.2.2] - 2026-02-27
120
-
121
- ### Fixed
122
- - **ETag Cache Bug** - `session.updated`/`session.created` field name typo (should be `updatedAt`/`createdAt`) caused ETag to always be `md5("sessionId-undefined")`, resulting in permanent 304 Not Modified responses — frontend never saw new events for WIP sessions
123
-
124
- ## [0.2.1] - 2026-02-25
125
-
126
- ### Changed
127
- - `.nyc_output/` and `coverage/` directories now properly ignored in `.gitignore`
128
-
129
- ### Removed
130
- - NYC coverage intermediate files (`.nyc_output/`, 1.6 MB) from repository
131
- - Removed 28 coverage data files that should not be committed
132
-
133
- ### Docs
134
- - Translated `lib/parsers/README.md` from Chinese to English for international contributors
135
-
136
- ## [0.2.0] - 2026-02-25
137
-
138
- ### Added
139
- - **Multi-Tool Support** - Full support for **Pi-Mono** sessions (now supports 3 tools: Copilot CLI, Claude Code, Pi-Mono)
140
- - **Agent Review for All Tools** - AI-powered session analysis now works for all 3 supported tools
141
- - **Pi-Mono Parser** - New `PiMonoSessionParser` with full strategy pattern implementation
142
- - **Unified Event Format** - All 3 tools now use consistent event schema across backend and frontend
143
- - **Backend-Generated Display Metadata** - Badge labels, source names, and display data generated in backend for consistency
144
-
145
- ### Changed
146
- - **Default Filter to Copilot** - Homepage now defaults to Copilot filter instead of "All" (matches user behavior)
147
- - **Removed "All" Filter** - Simplified UI by removing the "All" filter option
148
- - **Type Transformation Strategy** - Backend now transforms event types for unified schema (Pi-Mono `message` → `assistant.message`)
149
- - **Tool Result Merging** - Pi-Mono tool results now properly merged into parent assistant messages
150
- - **Badge Logic Moved to Backend** - Frontend no longer generates badge labels (single source of truth)
151
-
152
- ### Fixed
153
- - **Pi-Mono Agent Review Accuracy** - Fixed incorrect session data by explicitly specifying target file in prompt
154
- - **Timeline Rendering for Old Copilot Sessions** - Old CLI format now properly expands to `assistant.message` events for timeline
155
- - **Architecture Consistency** - Unified type transformation across all sources (no more "按了葫芦起了瓢")
156
- - **CI Upload Directory Race Condition** - Tests now create directories defensively before file operations
157
- - **Event Expansion Test Coverage** - Tests now verify `assistant.message` generation (frontend dependency)
158
-
159
- ### Docs
160
- - **README Multi-Tool Emphasis** - Updated subtitle and descriptions to highlight multi-tool support
161
- - **lib/parsers Documentation** - Translated Chinese README to English for international contributors
162
- - **Project Cleanup** - Removed backup files (`time-analyze-v2.ejs`, `*.bak`) and 30 failed E2E test screenshot directories
163
-
164
- ### Performance
165
- - **Agent Review Session Isolation** - Simplified from temporary directory approach to prompt-based file specification (6 lines vs 58 lines)
166
-
167
- ### Architecture
168
- - **Strategy Pattern Complete** - All 3 parsers follow unified `BaseSessionParser` interface
169
- - **Backend Normalization** - `eventNormalizer.js` handles all format differences, frontend renders uniformly
170
- - **No Frontend Source Checks** - Frontend doesn't check `source` field, only renders normalized data
171
-
172
- ## [0.1.7] - 2026-02-16
173
-
174
- ### Changed
175
- - WIP status badge moved from sidebar info table to inline with the page title on session detail page, matching the time analysis page's pattern for better visibility and consistency
176
-
177
- ### Fixed
178
- - npm provenance signing now explicitly checks out the release tag so the `SourceRepositoryRef` is available during `npm publish --provenance`
179
-
180
- ### Docs
181
- - Added screenshots to README (homepage, session detail, time analysis)
182
- - Sensitive info (session IDs, workspace paths, repo names) masked in screenshots
183
- - Switched screenshot references to absolute GitHub raw URLs for npmjs.org compatibility
184
- - Removed broken placeholder image and hardcoded version from README
185
-
186
- ## [0.1.6] - 2026-02-16
187
-
188
- ### Added
189
- - "Copy as Mermaid Gantt" button on analysis timeline for easy sharing
190
- - Sub-Agents summary card with status breakdown (completed/failed/incomplete), wall-clock time, and tool counts
191
- - WIP session status indicator — sessions without `session.end` and recent activity show a 🔄 WIP badge
192
- - WIP session cards highlighted with amber border on homepage
193
-
194
- ### Fixed
195
- - Subagent Gantt chart links now navigate to the correct occurrence when the same subagent runs multiple times
196
- - Total subagent duration no longer exceeds session duration (overlapping intervals are now merged)
197
- - Subagent tool counts no longer double-count tools from nested subagents
198
- - Mermaid sanitize function hardened against backtick/newline injection
199
- - ESLint errors in `insightService.js` (emoji regex `u` flag, regex double-spaces)
200
- - ESLint error in `sessionRepository.js` (strict equality check)
201
- - Unit test `session.test.js` updated for `sessionStatus` field
202
- - E2E API response time thresholds relaxed for CI environments
203
-
204
- ### Performance
205
- - Created shared `sortedEvents` computed property — eliminated 7 redundant O(n log n) array sorts
206
- - Optimized subagent tool counting with merged intervals and binary search (O(n log k) down from O(m×n))
207
-
208
- ## [0.1.5] - 2026-02-16
209
-
210
- ### Fixed
211
- - EPIPE crash when copilot process exits before events file is fully piped to stdin
212
- - Server no longer crashes with uncaught exception during concurrent insight generation
213
-
214
- ## [0.1.4] - 2026-02-16
215
-
216
- ### Fixed
217
- - Rate limiting configuration for insight operations - resolved 429 "Too Many Requests" errors
218
- - Removed rate limiting from insight status checks (GET requests) - status checks are now unlimited
219
- - Improved rate limiting differentiation: strict for generation (POST), lenient for access (DELETE)
220
- - Fixed "Age: NaNs" timestamp display issue in insight generation progress
221
- - Added missing `ageMs` calculation to backend insight service responses
222
- - ESLint configuration migration from deprecated `.eslintignore` to modern flat config
223
- - Minimal `.npmignore` configuration for optimized package publishing (82% size reduction)
224
-
225
- ### Changed
226
- - Insight output file renamed from `insight-report.md` to `copilot-insight.md`
227
- - Insight prompt rewritten to enforce ≤500 character output (down from ~2000 words)
228
- - Insight now focuses on three essentials: health score, top issue, key recommendation
229
- - Insight generation rate limiting: 3 requests per 5 minutes (more user-friendly window)
230
- - Insight access operations: 50 requests per minute (very lenient for status checks)
231
- - Package size optimized from 298kB to 52kB for npm publishing
232
-
233
- ### Removed
234
- - Deprecated `.eslintignore` file in favor of `eslint.config.mjs` ignores property
235
- - Verbose `.npmignore` entries - simplified to essential exclusions only
236
-
237
- ## [0.1.3] - 2026-02-16
238
-
239
- ### Added
240
- - Infinite scroll functionality for homepage session list
241
- - "Load More Sessions" button for manual session loading
242
- - Seamless scroll-triggered loading when approaching bottom of page
243
- - API endpoint `/api/sessions/load-more` for paginated session loading
244
- - Comprehensive e2e test suite expansion (45 total tests, up from 17)
245
- - New test files: `api-pagination.spec.js`, `infinite-scroll.spec.js`, `core-functionality.spec.js`
246
-
247
- ### Changed
248
- - Replaced traditional pagination with infinite scroll on homepage
249
- - Homepage now loads initial 20 sessions instead of all sessions
250
- - Session count display removed from homepage for cleaner UI
251
- - Updated JavaScript to handle dynamic session loading and rendering
252
-
253
- ### Removed
254
- - Session count display "(showing X of Y)" from homepage header
255
- - Unused logger utility (`src/utils/logger.js`) - dead code cleanup
256
- - Pagination parameters from homepage (legacy support maintained in API)
257
-
258
- ### Fixed
259
- - Updated unit tests to reflect infinite scroll functionality
260
- - Improved performance for sites with large numbers of sessions
261
- - Memory usage optimization by loading sessions progressively
262
- - E2E test reliability improvements - achieved 100% pass rate (45/45 tests)
263
- - Fixed selector issues in session detail page tests
264
- - Improved test resilience with better error handling and fallback selectors
265
-
266
- ## [0.1.2] - 2026-02-15
267
-
268
- ### Fixed
269
- - Content Security Policy configuration (removed unsafe-inline and unsafe-eval)
270
- - Missing repository URL in README installation instructions
271
- - Version inconsistencies across documentation files
272
-
273
- ### Added
274
- - Session pagination support for better performance with large session counts
275
- - API endpoint pagination with backward compatibility
276
-
277
- ## [0.1.1] - 2026-02-15
278
-
279
- ### Internal
280
- - Project improvements and bug fixes
281
-
282
- ## [0.1.0] - 2026-02-15
283
-
284
- ### Added
285
- - Initial release of Copilot Session Viewer
286
- - Web UI for viewing GitHub Copilot CLI session logs
287
- - Session list with search, filtering, and sorting
288
- - Detailed session view with Vue 3 and virtual scrolling
289
- - Time analysis view with sub-agents, turns, and tool breakdown
290
- - Copilot Insight feature (AI-generated analysis)
291
- - Model badge colors (Claude, GPT, Gemini)
292
- - E2E and unit test coverage (17 Playwright + 20 Jest tests)
293
- - AGENTS.md for AI coding agents
294
- - Security headers (Helmet.js)
295
- - Rate limiting for uploads
296
- - Compression middleware
297
-
298
- ### Security
299
- - Input validation for session IDs
300
- - XSS prevention with proper escaping
301
- - CORS restricted to localhost
302
- - File upload size limits (50MB)
303
-
304
- [0.2.6]: https://github.com/qiaolei81/copilot-session-viewer/releases/tag/v0.2.6
305
- [0.2.5]: https://github.com/qiaolei81/copilot-session-viewer/releases/tag/v0.2.5
306
- [0.2.4]: https://github.com/qiaolei81/copilot-session-viewer/releases/tag/v0.2.4
307
- [0.2.3]: https://github.com/qiaolei81/copilot-session-viewer/releases/tag/v0.2.3
308
- [0.1.7]: https://github.com/qiaolei81/copilot-session-viewer/releases/tag/v0.1.7
309
- [0.1.6]: https://github.com/qiaolei81/copilot-session-viewer/releases/tag/v0.1.6
310
- [0.1.3]: https://github.com/qiaolei81/copilot-session-viewer/releases/tag/v0.1.3
311
- [0.1.2]: https://github.com/qiaolei81/copilot-session-viewer/releases/tag/v0.1.2
312
- [0.1.1]: https://github.com/qiaolei81/copilot-session-viewer/releases/tag/v0.1.1
313
- [0.1.0]: https://github.com/qiaolei81/copilot-session-viewer/releases/tag/v0.1.0
package/CONTRIBUTING.md DELETED
@@ -1,104 +0,0 @@
1
- # Contributing to Copilot Session Viewer
2
-
3
- Thank you for your interest in contributing! This document provides guidelines for contributing to the project.
4
-
5
- ## Code of Conduct
6
-
7
- By participating in this project, you agree to maintain a respectful and collaborative environment.
8
-
9
- ## How to Contribute
10
-
11
- ### Reporting Bugs
12
-
13
- Before creating bug reports, please check existing issues. When creating a bug report, include:
14
-
15
- - **Clear title and description**
16
- - **Steps to reproduce** the behavior
17
- - **Expected vs actual behavior**
18
- - **Environment details** (Node.js version, OS, browser)
19
- - **Session file examples** (if applicable, sanitize sensitive data)
20
-
21
- ### Suggesting Enhancements
22
-
23
- Enhancement suggestions are tracked as GitHub issues. When creating an enhancement suggestion, include:
24
-
25
- - **Use case** - What problem does this solve?
26
- - **Proposed solution** - How should it work?
27
- - **Alternatives considered** - What other approaches did you think about?
28
-
29
- ### Pull Requests
30
-
31
- 1. **Fork** the repository
32
- 2. **Create a branch** from `main`:
33
- ```bash
34
- git checkout -b feature/your-feature-name
35
- ```
36
- 3. **Make your changes** following the code style guidelines
37
- 4. **Write or update tests** - maintain or improve test coverage
38
- 5. **Run all tests**:
39
- ```bash
40
- npm run lint:fix
41
- npm run test:all
42
- ```
43
- 6. **Commit** using [Conventional Commits](https://www.conventionalcommits.org/):
44
- ```
45
- feat: add new feature
46
- fix: resolve bug in session parsing
47
- docs: update README
48
- test: add e2e test for filtering
49
- ```
50
- 7. **Push** to your fork:
51
- ```bash
52
- git push origin feature/your-feature-name
53
- ```
54
- 8. **Submit a pull request** to the `main` branch
55
-
56
- **Note for fork contributors:**
57
- - CI tests will run automatically on your PR
58
- - You don't need access to secrets (NPM_TOKEN) - only maintainers publish releases
59
- - Your PR will be labeled `external-contribution` automatically
60
-
61
-
62
- ### Code Style Guidelines
63
-
64
- - **JavaScript**: Single quotes, no unused variables
65
- - **Error handling**: Always include `{ cause }` when re-throwing
66
- - **Vue 3**: Don't use `.value` in templates (auto-unwrapped)
67
- - **Comments**: Explain *why*, not *what*
68
- - **ESLint**: Zero errors, warnings acceptable
69
-
70
- ### Testing Requirements
71
-
72
- - **Unit tests** for all new logic in `src/`
73
- - **E2E tests** for user-facing features
74
- - **All tests must pass** before merging
75
-
76
- ### Development Workflow
77
-
78
- ```bash
79
- # Install dependencies
80
- npm install
81
-
82
- # Run dev server (auto-reload)
83
- npm run dev
84
-
85
- # Run tests
86
- npm run test:all
87
-
88
- # Lint and fix
89
- npm run lint:fix
90
- ```
91
-
92
- ### Project Structure
93
-
94
- See `AGENTS.md` for detailed architecture and common tasks.
95
-
96
- ### Need Help?
97
-
98
- - Check `AGENTS.md` for development guidelines
99
- - Review existing issues and pull requests
100
- - Ask questions in issue discussions
101
-
102
- ## License
103
-
104
- By contributing, you agree that your contributions will be licensed under the MIT License.