Commit History
-
Update VOICEVOX character list and docs (#19)
Kyosuke IchikawaUnverified signature* Update VOICEVOX character list in audio generation message * Update character definitions and documentation for VOICEVOX list refreshb0a7a52 -
Improve character name fuzzy matching with detailed documentation (#18)
Kyosuke IchikawaUnverified signature- Add normalize_text() with clear examples and explanation - Implement fuzzy matching for character conversation parsing - Enhance _find_best_character_match() with similarity threshold - Add comprehensive test suite for fuzzy matching scenarios - Improve code documentation with concrete examples186b7f9
-
東北キャラクター追加とデフォルト変更 (#13)
Kyosuke IchikawaUnverified signature* feat: Update VOICEVOX Core and models versions to 0.16.1 and 0.16.0 respectively * feat: Add new characters and update speech patterns for VOICEVOX * feat: Add Tohoku characters and update default character - Add Tohoku Zunko (Style ID: 107), Tohoku Kiritan (108), Tohoku Itako (109) - All use 21.vvm model file - Update DEFAULT_CHARACTER1 from Shikoku Metan to Tohoku Kiritan - Add speech patterns for new characters in templates - Update all related tests to use new default character - Update character mappings in E2E tests - Fix code formatting issues15d8abf
-
Fix English 'A' contextual conversion to katakana (#11)
Kyosuke IchikawaUnverified signature- Remove hardcoded 'a': 'ア' from CONVERSION_OVERRIDE dictionary - Add _convert_a_contextually method with simplified logic - Convert 'a/A' to 'ア' only when used as article (followed by space + English word) - Preserve technical terms like 'AClass', 'Class A', '(A)', etc. - Add comprehensive test cases covering all conversion scenarios Tests: All 32 test cases pass including 7 specific 'A' conversion tests767dfb0
-
refactor: remove redundant browser_state update methods (#9)
Kyosuke IchikawaUnverified signature- Remove unused update_browser_state_audio_status method - Remove redundant update_browser_state_extracted_text method - Improve ensure_browser_state_completeness to handle empty app_session_id - Consolidate browser_state management to use UserSession as single source of truth - Update tests to reflect new behavior where UserSession defaults are used to complete browser_state - All unit tests and E2E tests passing This change eliminates duplicate default value definitions and improves code maintainability by centralizing browser_state management in the UserSession class.fbdb7a1
-
refactor: remove unused methods identified by vulture (#6)
Kyosuke IchikawaUnverified signature- Remove 22 unused methods with confidence 60%+ across multiple files - app.py: removed create_user_session, extract_file_text, _create_recovery_progress_html, update_audio_button_state, reset_audio_state_and_components_with_browser_state, generate_podcast_audio_streaming_with_browser_state - user_session.py: removed from_dict, save_to_file, get_session_restoration_info, prepare_network_recovery, can_resume_audio_generation, cleanup, update_audio_generation_state, is_audio_generation_active, needs_api_key_restoration, get_recovery_progress_info, _cleanup_directory, _check_audio_generation_completion, and 5 legacy wrapper methods - audio_generator.py: removed _generate_and_combine_audio - text_processor.py: removed get_current_model, get_document_type - tests: updated unused variable documentation, removed obsolete test files - All methods verified as truly unused through detailed grep analysis - Code maintains full functionality while improving maintainabilityc3b6480
-
fix: Handle None values in _create_progress_html to prevent TypeError (#3)
Kyosuke IchikawaUnverified signatureFixed TypeError: '>' not supported between instances of 'NoneType' and 'int' that occurred when estimated_total_parts was None during session restoration. Changes: - Updated _create_progress_html to accept Optional[int] for parameters - Added null safety checks converting None to 0 before arithmetic operations - Fixed all usages of current_part and total_parts in time calculations - Added comprehensive unit tests to verify None handling works correctlyd884829 -
bugfix: Remove invalid resume_from_part parameter from _create_progress_html tests (#1)
Kyosuke IchikawaUnverified signatureFixed three failing unit tests that were passing an invalid resume_from_part parameter to the _create_progress_html method, which doesn't accept this parameter. Changes: - Removed resume_from_part parameter from test method calls - Updated test documentation to clarify resume functionality is handled elsewhere - All core progress display assertions remain intact2ec4204
-
fix: Remove extracted_text from browser state updates
6b8403f -
fix: Update model names to remove preview versions
7ec6ceb
-
feat: Add comprehensive unit tests and refactor complex app methods
- Add 32 comprehensive unit tests for complex methods in app.py - Test update_audio_button_state_with_resume_check method thoroughly - Test _create_progress_html method with edge cases - Refactor update_audio_button_state_with_resume_check into smaller helper methods - Extract _check_disk_for_final_audio for file system operations - Extract _get_audio_button_state_from_browser_state for state logic - Extract _get_audio_button_state_from_session for legacy fallback - Reduce main method complexity from 68 to 28 lines (58% reduction) - Improve code maintainability and testability - All 188 unit tests pass successfully6921080
-
feat: Enhance audio generation progress visibility
80aa4b1 -
refactor: Update timeout values and remove session recovery steps
680fe5d
-
feat: Update browser state restoration for Japanese UI
9f2c09d -
feat: Add Japanese UI text mapping for document and podcast modes
253c715 -
feat: Add browser state persistence for settings changes
288f858
-
fix: Improve URL extraction handling in test mode
9225c9b -
fix: Handle empty URL extraction in test mode
4f366d3 -
fix: Resolve E2E test failures by updating textarea selectors
- Replace outdated placeholder-based selectors with stable position-based selectors - Update all E2E step files to use textarea.nth(1) for extracted text area - Fix radio component value mismatch by returning Japanese label names for UI - Update test expectations to match actual enum values - Enhance placeholder logic for whitespace handling in app.py All core E2E tests now passing: script generation, audio generation, file upload, text management, and automatic separator functionality.8ace92e
-
Revert "feat: Add browser state persistence for podcast script and terms agreement"
This reverts commit add76a94ef1b3947ccbf9b4ebc5649099fa872b1.65b4971 -
feat: Add browser state persistence for podcast script and terms agreement
- Add update_browser_state_podcast_text method for podcast script changes - Add podcast_text.change event listener to automatically save to browser state - Extend initialize_session_and_ui to restore podcast script and terms from browser state - Add comprehensive unit tests for new browser state functionality - Add E2E test scenarios for podcast script and terms state restoration - Ensure all user content is preserved across browser reloads All unit tests pass. E2E tests have some UI timing issues to be resolved separately.add76a9 -
fix: Fix E2E test failures and improve session initialization
- Increase page timeout from 10s to 30s to fix page loading issues - Replace unreliable https://example.com URLs with stable GitHub README URL - Add specific step definitions for GitHub URL extraction scenarios - Remove obsolete session recovery E2E tests that were timing out - Update progress message assertions to match actual output - Remove obsolete unit tests for deleted methods - Add missing E2E step definition imports - Fix return type signature for initialize_session_and_ui method All 214 tests now pass successfully.25f9116
-
fix: Fix lint issues in test files
Fix SIM117 lint issue by combining nested with statements. 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>d24557a
-
refactor: Remove VOICEVOX_CORE_AVAILABLE flag and assume successful import
Remove conditional import handling for VOICEVOX Core and assume it's always available. - Remove try/except blocks and VOICEVOX_CORE_AVAILABLE flag - Direct import VOICEVOX Core modules in all files - Update tests to remove availability checks2da08cf
-
refactor: Remove unused audio generation restoration methods from PaperPodcastApp
ae61e75
-
feat: Implement browser state restoration using localStorage
- Enhanced session creation to use browser localStorage for restoration - Added session data migration when session hash changes during reconnection - Implemented copy_session_data_from() method for seamless file transfer - Fixed AudioGenerator path updates during session restoration - Added comprehensive E2E tests for browser state persistence scenarios - Ensures user session continuity across network interruptions - Maintains security by excluding API keys from localStorage7140fe3 -
refactor: Optimize timeout values for improved test performance
9aaad62 -
fix: Resolve BrowserState initialization and E2E test failures
- Fix create_user_session_with_browser_state to use proper request.session_hash - Ensure consistent session ID across initialization and URL extraction - Remove redundant session creation functions - Add proper session restoration from file storage - Maintain BrowserState synchronization for network recovery - Fix linting and type issues9dd3e3a
-
style: Apply comprehensive ruff formatting across entire codebase
- Formatted 27 files with ruff formatter for consistent code style - Ensures all code follows unified formatting standards - Completes the migration from black/isort to ruff formattingdd82ad4 -
style: Complete remaining SIM108 improvements and ruff formatting
- Apply final ternary operator simplification in content_extractor.py - Include ruff formatter automatic improvements to code style - Now only 3 ruff errors remain (2 SIM117, 1 SIM108) These are all minor style improvements that can be addressed if desired.3a494fe -
fix: Address critical ruff linting issues
- Fix SIM103: Return conditions directly in detect_custom_tokens.py - Fix SIM110: Use any() instead of for loop in detect_print_statements.py - Fix B018: Assign useless attribute access to variable in test_cleanup_old_sessions.py - Fix B011: Replace assert False with raise AssertionError - Fix B904: Add 'from None' to exception chaining in test_environment.py - Fix B008: Move gr.Progress() call inside function instead of default argument - Fix SIM103: Return bool condition directly in user_session.py - Fix mypy error: Add bool() cast to regex match return - Fix some line length violations in pre-commit hooks Remaining issues are mostly line length violations (E501) and minor style improvements that can be addressed in future commits.b467a25 -
feat: Migrate from isort, black, flake8 to ruff for unified linting and formatting
- Replace isort, black, flake8, autoflake with single ruff dependency - Configure ruff with equivalent settings for formatting, import sorting, and linting - Update Makefile commands to use 'ruff check' and 'ruff format' - Update pre-commit hooks to use ruff-pre-commit - Update VS Code tasks for new ruff commands - Update requirements.in and requirements-lint.txt dependencies - Format codebase with ruff (14 files reformatted) Benefits: - 10-100x faster than previous toolchain - Unified configuration in pyproject.toml - Additional linting rules (flake8-bugbear, flake8-simplify) - Reduced dependency count and simpler setup Note: Existing line length and linting issues will be addressed in follow-up commits6a48ef2
-
fix: Update prompt manager state to use SECTION_BY_SECTION mode in session persistence tests
98cc965
-
fix: Update default podcast mode to STANDARD in PromptManager and related tests
ec1fc48 -
fix: Correct spelling of "spatial" in audio generation mappings
18b46a7
-
refactor: Update file input handling to prevent duplicate triggers and restrict to single file uploads
041d0ff -
refactor: Simplify session cleanup method call in VOICEVOX sharing steps
22bd781 -
refactor: Remove unused methods and consolidate button state logic for improved code organization
- Remove 8 unused methods from app.py and 2 from user_session.py - Consolidate button state validation logic into _check_process_button_conditions() - Inline _get_folder_modification_time() and cleanup_session_data() methods - Update tests to handle refactored code structure - Fix type annotations for mypy compliance - Maintain all existing functionality with 181/181 unit tests passinge9b9b13
-
feat: Enhance audio generation progress display with comprehensive tracking
- Add visual progress bar with gradient design and smooth animations - Display elapsed time and estimated remaining time based on current pace - Show detailed part counts (current/total) and percentage completion - Implement clean UI design that integrates with Gradio Soft theme - Remove excessive borders and visual noise from progress components - Add real-time progress updates during streaming audio generation - Support connection recovery with progress state restoration - Maintain backward compatibility with existing audio generation workflow Progress display now shows: • Visual progress bar with smooth transitions • Time tracking: "経過: 01:23 < /dev/null | 推定残り: 02:15" • Part tracking: "パート 3/7 (42.9%)" • Clean design without redundant bordersbf8911e
-
feat: Implement comprehensive session persistence system
- Add session state serialization and deserialization methods to UserSession - Implement file-based session persistence with JSON storage - Update app.py to restore existing sessions on browser reconnection - Add automatic session saving on all state changes - Exclude API keys from persistence for security - Add comprehensive session persistence test suite - Update documentation with session management architecture - Add CLAUDE.md reference to design.md - Add development rule prohibiting --no-verify5e96c67 -
refactor: Update UserSession import path and clean up related code
03fd559
-
feat: Enhance word splitting to handle plural uppercase words and update katakana conversion
ffa5f98
-
refactor: Remove deprecated audio generation progress monitoring and update related methods
b91b3a1 -
feat: Add test for converting long uppercase words to katakana
7208a32 -
feat: Add tests for UI initialization protection functionality
c28ba4a -
refactor: Integrate audio restoration into connection recovery process
ee8ad99 -
feat: Implement connection recovery and enhance audio state management
0fda308 -
fix: Update audio generation progress methods to include terms agreement and podcast text
3b21df3 -
Add audio recovery feature and enhance audio state management
5a50574
-
refactor: Update file upload and URL extraction tabs for improved clarity and functionality
8df1b32