|
| 1 | +# Changelog |
| 2 | + |
| 3 | +All notable changes to the Copilot SDK for Java will be documented in this file. |
| 4 | + |
| 5 | +The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/), |
| 6 | +and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). |
| 7 | + |
| 8 | +## [1.0.7] - 2026-02-05 |
| 9 | + |
| 10 | +### Added |
| 11 | + |
| 12 | +#### Session Lifecycle Hooks |
| 13 | +Extended the hooks system with three new hook types for session lifecycle control: |
| 14 | +- **`onSessionStart`** - Called when a session starts (new or resumed) |
| 15 | +- **`onSessionEnd`** - Called when a session ends |
| 16 | +- **`onUserPromptSubmitted`** - Called when the user submits a prompt |
| 17 | + |
| 18 | +New types: |
| 19 | +- `SessionStartHandler`, `SessionStartHookInput`, `SessionStartHookOutput` |
| 20 | +- `SessionEndHandler`, `SessionEndHookInput`, `SessionEndHookOutput` |
| 21 | +- `UserPromptSubmittedHandler`, `UserPromptSubmittedHookInput`, `UserPromptSubmittedHookOutput` |
| 22 | + |
| 23 | +#### Session Lifecycle Events (Client-Level) |
| 24 | +Added client-level lifecycle event subscriptions: |
| 25 | +- `client.onLifecycle(handler)` - Subscribe to all session lifecycle events |
| 26 | +- `client.onLifecycle(eventType, handler)` - Subscribe to specific event types |
| 27 | +- `SessionLifecycleEventTypes.CREATED`, `DELETED`, `UPDATED`, `FOREGROUND`, `BACKGROUND` |
| 28 | + |
| 29 | +New types: `SessionLifecycleEvent`, `SessionLifecycleEventMetadata`, `SessionLifecycleHandler` |
| 30 | + |
| 31 | +#### Foreground Session Control (TUI+Server Mode) |
| 32 | +For servers running with `--ui-server`: |
| 33 | +- `client.getForegroundSessionId()` - Get the session displayed in TUI |
| 34 | +- `client.setForegroundSessionId(sessionId)` - Switch TUI display to a session |
| 35 | + |
| 36 | +New types: `GetForegroundSessionResponse`, `SetForegroundSessionResponse` |
| 37 | + |
| 38 | +#### New Event Types |
| 39 | +- **`SessionShutdownEvent`** - Emitted when session is shutting down, includes reason and exit code |
| 40 | +- **`SkillInvokedEvent`** - Emitted when a skill is invoked, includes skill name and context |
| 41 | + |
| 42 | +#### Extended Event Data |
| 43 | +- `AssistantMessageEvent.Data` - Added `id`, `isLastReply`, `thinkingContent` fields |
| 44 | +- `AssistantUsageEvent.Data` - Added `outputReasoningTokens` field |
| 45 | +- `SessionCompactionCompleteEvent.Data` - Added `success`, `messagesRemoved`, `tokensRemoved` fields |
| 46 | +- `SessionErrorEvent.Data` - Extended with additional error context |
| 47 | + |
| 48 | +#### Documentation |
| 49 | +- New **[hooks.md](src/site/markdown/hooks.md)** - Comprehensive guide covering all 5 session hooks with examples for security gates, logging, result enrichment, and lifecycle management |
| 50 | +- Expanded **[documentation.md](src/site/markdown/documentation.md)** with all 33 event types, `getMessages()`, `abort()`, and custom timeout examples |
| 51 | +- Enhanced **[advanced.md](src/site/markdown/advanced.md)** with session hooks, lifecycle events, and foreground session control |
| 52 | +- Added **[.github/copilot-instructions.md](.github/copilot-instructions.md)** for AI assistants |
| 53 | + |
| 54 | +#### Testing |
| 55 | +- `SessionEventParserTest` - 850+ lines of unit tests for JSON event deserialization |
| 56 | +- `SessionEventsE2ETest` - End-to-end tests for session event lifecycle |
| 57 | +- `ErrorHandlingTest` - Tests for error handling scenarios |
| 58 | +- Enhanced `E2ETestContext` with snapshot validation and expected prompt logging |
| 59 | +- Added logging configuration (`logging.properties`) |
| 60 | + |
| 61 | +#### Build & CI |
| 62 | +- JaCoCo 0.8.14 for test coverage reporting |
| 63 | +- Coverage reports generated at `target/site/jacoco-coverage/` |
| 64 | +- New test report action at `.github/actions/test-report/` |
| 65 | +- JaCoCo coverage summary in workflow summary |
| 66 | +- Coverage report artifact upload |
| 67 | + |
| 68 | +### Changed |
| 69 | + |
| 70 | +- **Copilot CLI**: Minimum version updated from 0.0.400 to **0.0.404** |
| 71 | +- Refactored `ProcessInfo` and `Connection` to use records |
| 72 | +- Extended `SessionHooks` to support 5 hook types (was 2) |
| 73 | +- Renamed test methods to match snapshot naming conventions with Javadoc |
| 74 | + |
| 75 | +### Fixed |
| 76 | + |
| 77 | +- Improved timeout exception handling with detailed logging |
| 78 | +- Test infrastructure improvements for proxy resilience |
| 79 | + |
| 80 | +## [1.0.6] - 2026-01-28 |
| 81 | + |
| 82 | +### Added |
| 83 | + |
| 84 | +- Initial public release of the Copilot SDK for Java |
| 85 | +- Core classes: `CopilotClient`, `CopilotSession`, `JsonRpcClient` |
| 86 | +- Session configuration with `SessionConfig`, `ResumeSessionConfig` |
| 87 | +- Custom tools with `ToolDefinition` and `ToolHandler` |
| 88 | +- Event system with 30+ event types extending `AbstractSessionEvent` |
| 89 | +- Pre-tool and post-tool hooks with `SessionHooks` |
| 90 | +- Permission handling with `PermissionHandler` |
| 91 | +- User input handling with `UserInputHandler` |
| 92 | +- BYOK (Bring Your Own Key) support with `ProviderConfig` |
| 93 | +- MCP server integration |
| 94 | +- Infinite sessions with `InfiniteSessionConfig` |
| 95 | +- Skills configuration with `skillDirectories` and `disabledSkills` |
| 96 | +- System message customization with `SystemMessageConfig` |
| 97 | +- File attachments support |
| 98 | +- Streaming responses with delta events |
| 99 | + |
| 100 | +### Documentation |
| 101 | + |
| 102 | +- Getting started guide |
| 103 | +- Basic usage documentation |
| 104 | +- Advanced usage guide |
| 105 | +- MCP servers guide |
| 106 | +- Generated Javadoc |
| 107 | + |
| 108 | +[1.0.7]: https://github.com/copilot-community-sdk/copilot-sdk-java/compare/v1.0.6...v1.0.7 |
| 109 | +[1.0.6]: https://github.com/copilot-community-sdk/copilot-sdk-java/releases/tag/v1.0.6 |
0 commit comments