Skip to content

Releases: callibrity/chat-journal

0.0.6 - Improved Test Coverage and Code Quality

Choose a tag to compare

@jwcarman jwcarman released this 06 Dec 15:03

What's Changed

Test Coverage Improvements

  • ChatConfiguration: Increased coverage from 0% to 100% with new test for streamingChatClient bean
  • StreamingRequestBuilder: Increased coverage from 32.3% to 90.4% with comprehensive execute() method tests
  • ChatCompletionEmitter: Added callback registration tests and static factory method tests
  • Total test count increased from 56 to 70 tests

Code Quality Fixes

  • Fixed all 19+ SonarQube code quality issues:
    • Removed unused variables and imports
    • Replaced lambdas with method references where appropriate
    • Changed Throwable to Exception in catch blocks
    • Removed Thread.sleep() from concurrent tests
    • Chained assertions for better readability
    • Consolidated duplicate tests properly

New Features

  • Prompt History Navigation in demo UI with up/down arrow keys
  • StreamingChatClient: New high-level abstraction for SSE streaming with fluent builder API
  • Handler-based API with onStart(), onChunk(), and onComplete() callbacks
  • Support for both static and dynamic system prompts
  • Auto-generated conversation IDs when null/empty/whitespace
  • Easy SSE timeout configuration

Architecture Improvements

  • Refactored StreamingRequestBuilder.execute() to reduce cognitive complexity with 6 helper methods
  • Simplified ChatController from 14 lines to 7 lines using new streaming client
  • Removed UncheckedSseEmitter in favor of enhanced ChatCompletionEmitter
  • Improved conversation ID validation with idiomatic Java 11+ Optional pattern

Full Changelog

Commits:

  • 492246f Add prompt history navigation with up/down arrows in demo UI
  • 9d4ab7a Add comprehensive unit tests for ChatCompletionEmitter and remove UncheckedSseEmitter
  • dc5f8f3 Add StreamingChatClient wrapper for simplified SSE streaming
  • c24b033 Handle empty/whitespace conversation IDs by generating UUIDs
  • 2409d39 Refactor conversation ID validation to use ensureConversationId method
  • 52ba0fb Improve test coverage and code quality
  • 109af3b Add comprehensive tests for ChatCompletionEmitter callbacks
  • 37804b1 Fix all SonarQube code quality issues
  • 7545786 Fix: Replace fake parameterized test with single test

Full Diff: 0.0.5...0.0.6

0.0.5 - Documentation & Cleanup

Choose a tag to compare

@jwcarman jwcarman released this 28 Nov 20:00

Release 0.0.5

Documentation

  • Add Conversation History section to README documenting ChatJournalEntryRepository for querying full conversation history
  • Document pagination support and available repository methods

Improvements

  • Simplify ChatJournalEntryMapper to only handle USER and ASSISTANT messages
  • Remove ObjectMapper dependency from mapper (no longer needed without TOOL message serialization)
  • Reduce code complexity by removing unused message type handling

Internal

  • Improve release command with build verification step and javadoc goal
  • Add tag existence check to prevent duplicate releases

0.0.4 - Persistent Chat History

Choose a tag to compare

@jwcarman jwcarman released this 28 Nov 13:59

Release 0.0.4

New Features

  • Conversation Persistence in Example App: Conversations now persist across page refreshes using localStorage
  • Infinite Scroll: Load older messages automatically when scrolling up in the chat UI
  • History API Endpoint: New GET /chat/history endpoint for paginated message retrieval
  • Scroll-to-Bottom Button: Floating button appears when scrolled up for quick navigation back to latest messages

Improvements

  • Repository Layer Refactoring: Separated ChatJournalEntryRepository (general-purpose) from ChatJournalCheckpointRepository (ChatMemory-specific)
  • New Components:
    • ChatJournalEntryMapper for bidirectional Message ↔ Entry conversion
    • ChatJournalCheckpointFactory for creating checkpoint summaries
  • Simplified Checkpointer: ChatJournalCheckpointer now exposes cleaner requiresCheckpoint() and checkpoint() methods
  • Better Exception Handling: Added ConversationLimitExceededException with detailed context
  • Naming Clarity: Renamed maxEntries to maxConversationLength
  • JDBC Improvements: Added column name constants and extracted mapRow helper methods
  • TaskExecutor: Now uses Spring Boot's default TaskExecutor

Testing

  • Added comprehensive tests for ChatJournalCheckpointFactory and ChatJournalCheckpointer
  • Added tests for history endpoint in ChatController
  • Fixed duplicate test implementation

Documentation

  • Updated README with complete configuration reference and table documentation

0.0.3

Choose a tag to compare

@jwcarman jwcarman released this 27 Nov 20:16
Add syntax highlighting and copy buttons to chat UI

- Replace marked.js with markdown-it for better markdown parsing
- Add highlight.js with GitHub theme for syntax highlighting
- Add Font Awesome for icons
- Add copy buttons to code blocks and blockquotes
- Style blockquotes with GitHub-like appearance (gray background, left border)
- Style code blocks with GitHub-like appearance

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>

0.0.2

Choose a tag to compare

@jwcarman jwcarman released this 26 Nov 21:10
Add validation to JDBC repository, JTokkit calculator, and properties

- JdbcChatJournalEntryRepository: validate conversationId (not null/empty),
  entries not null, and summaryEntry not null in all methods
- JTokkitTokenUsageCalculator: validate encoding and encodingType not null
- ChatJournalProperties: add @Validated with @Positive and @NotNull annotations
- Add hibernate-validator test dependency for Bean Validation support

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>

0.0.1

Choose a tag to compare

@jwcarman jwcarman released this 26 Nov 19:25
Fixing warning message during build.