Commit graph

65 commits

Author SHA1 Message Date
asyouplz
e7f4139979
fix(ui): use lowercase openai key placeholders (#78)
Match the OpenAI API key placeholders to the actual lowercase sk- prefix in the settings UI.

Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-15 01:17:40 +09:00
asyouplz
1686d84e85
fix(ui): align settings review follow-ups (#73)
Standardize remaining runtime settings copy to English, namespace provider settings selectors,
and apply the sentence-case cleanup flagged in review.

Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-13 17:30:33 +09:00
asyouplz
0f6c3ac218
fix(ui): address pr 8004 human review feedback (#70)
Standardize reviewed UI copy to English, namespace plugin CSS selectors,
and replace ad hoc SVG creation with shared Obsidian-friendly icons.
Also remove the empty fundingUrl field and start tracking styles.css
so the review fixes ship with the plugin.

Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-10 15:16:31 +09:00
asyouplz
f62f8eec5a
refactor(ui): consolidate settings architecture and wave3 fixes (#67)
* refactor(ui): consolidate settings architecture and review fixes

Remove redundant settings/provider implementations to reduce maintenance overhead and align the UI with Obsidian helpers and English-only labels. Also ignore local review docs and update the release guide header section to English.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* chore(repo): ignore local claude and changelog docs

---------

Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-02-19 10:38:05 +09:00
asyouplz
e28c350581
fix: address obsidian review findings (#65)
Normalize stringification of status/validation values and apply sentence-case UI text to satisfy review requirements. Update the review documentation to the latest comment.

Co-authored-by: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-02-04 16:11:43 +09:00
asyouplz
2bcaa6a07e
fix(ui): align emoji labels with sentence case (#64)
* fix: address reviewbot feedback and update tests

Align request handling with Obsidian requestUrl and clean up UI text/lint directives while updating tests for the new mocks.

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

* chore: ignore release_log.txt

Add release_log.txt to gitignore to keep local release logs out of version control.

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

* fix: align requesturl handling with review feedback

centralize requesturl availability errors, bind provider defaults once, and stabilize timeout test.

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

* fix: address reviewbot required issues

Normalize UI sentence case and tighten error/string handling to satisfy Obsidian reviewbot checks.

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

* fix(ui): restore brand casing in settings

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

* fix(ui): apply sentence case to provider labels

Align provider labels and descriptions with sentence case rules and add updated Obsidian review notes.

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

* fix(ui): align emoji labels with sentence case

Normalize emoji-led provider labels to sentence case and add latest Obsidian review notes.

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

---------

Co-authored-by: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-02-03 18:00:49 +09:00
asyouplz
3645309b5f
fix(ui): apply sentence case to provider labels (#63)
* fix: address reviewbot feedback and update tests

Align request handling with Obsidian requestUrl and clean up UI text/lint directives while updating tests for the new mocks.

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

* chore: ignore release_log.txt

Add release_log.txt to gitignore to keep local release logs out of version control.

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

* fix: align requesturl handling with review feedback

centralize requesturl availability errors, bind provider defaults once, and stabilize timeout test.

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

* fix: address reviewbot required issues

Normalize UI sentence case and tighten error/string handling to satisfy Obsidian reviewbot checks.

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

* fix(ui): restore brand casing in settings

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

* fix(ui): apply sentence case to provider labels

Align provider labels and descriptions with sentence case rules and add updated Obsidian review notes.

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

---------

Co-authored-by: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-02-03 15:32:17 +09:00
asyouplz
a87dc8f9d9
fix: address reviewbot required issues (#62)
* fix: address reviewbot feedback and update tests

Align request handling with Obsidian requestUrl and clean up UI text/lint directives while updating tests for the new mocks.

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

* chore: ignore release_log.txt

Add release_log.txt to gitignore to keep local release logs out of version control.

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

* fix: align requesturl handling with review feedback

centralize requesturl availability errors, bind provider defaults once, and stabilize timeout test.

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

* fix: address reviewbot required issues

Normalize UI sentence case and tighten error/string handling to satisfy Obsidian reviewbot checks.

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

* fix(ui): restore brand casing in settings

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

---------

Co-authored-by: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-02-03 12:06:55 +09:00
asyouplz
eefd7f136d
fix: address reviewbot feedback and update tests (#61)
* fix: address reviewbot feedback and update tests

Align request handling with Obsidian requestUrl and clean up UI text/lint directives while updating tests for the new mocks.

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

* chore: ignore release_log.txt

Add release_log.txt to gitignore to keep local release logs out of version control.

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

* fix: align requesturl handling with review feedback

centralize requesturl availability errors, bind provider defaults once, and stabilize timeout test.

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

---------

Co-authored-by: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-02-02 23:09:49 +09:00
asyouplz
2d8bc68615
fix: address review feedback and stabilize tests (#60)
* fix(review): resolve obsidian bot validation errors (metadata, lint, ui)

* feat(release): prepare version 4.1.0

* fix(ci): add semantic-release configuration

* fix(review): address pr feedback and stabilize tests

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

* fix(types): resolve typecheck regressions

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

---------

Co-authored-by: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-01-29 23:33:20 +09:00
asyouplz
c6df377362
fix(review): resolve obsidian bot validation errors (metadata, lint, ui) (#58) 2026-01-28 13:39:14 +09:00
asyouplz
192f336187 fix: address review bot issues
- add eslint-enable directive to SettingsTab.ts
- replace console.group/time with debug-based alternatives
- fix deprecated substr with slice
- fix function order for DOM_AVAILABLE check
- replace style.setProperty with setAttribute
- change settings error heading
2026-01-27 12:49:22 +09:00
asyouplz
d03121ca0c
fix: comprehensive sentence case violations - Phase 2 (#53)
Fixed UI text sentence case issues per ObsidianReviewBot feedback:

**SettingsTab.ts:**
- 'Speech Note' → 'Speech note'
- 'Openai' → 'OpenAI' (brand name)

**EnhancedSettingsTab.ts:**
- 'Speech Note' → 'Speech note'

**ProviderSettingsContainer.ts:**
- 'Configuration' → 'configuration'
- Fixed unsafe any assignment in JSON.parse

**FormatOptions.ts:**
- '(Dash)' → '(dash)'
- '(Asterisk)' → '(asterisk)'
- '(Plus)' → '(plus)'
- '(Bullet)' → '(bullet)'

**main.ts:**
- 'Speech-to-Text plugin' → 'Speech-to-text plugin'

Total: 10 sentence case fixes + 1 type safety fix across 5 files
2026-01-23 11:52:25 +09:00
asyouplz
c60ee25a95
fix: resolve ObsidianReviewBot issues - Phase 1 (#52)
* chore: help release automation and bump version to 3.0.13 (#51)

* test: verify Claude Code Review with new OAuth token

* chore: remove dev artifacts and update .gitignore

- Remove lint output files from tracking
- Remove Claude Code local settings
- Remove agent documentation files
- Update .gitignore to prevent future tracking

* chore: bump version to 3.0.12 for release

* chore: bump version to 3.0.13 and automate styles.css generation

* fix: address code review feedback

- Improved CSS build script for cross-platform compatibility
- Removed test comment from README
- Added EOF newlines to JSON files per POSIX standards

Co-authored-by: chatgpt-codex-connector <codex@chatgpt.com>

---------

Co-authored-by: chatgpt-codex-connector <codex@chatgpt.com>
2026-01-23 11:38:11 +09:00
asyouplz
fc3ac57026 Comprehensive Refactoring & Type Safety Fixes (#48)
* refactor: address PR #8004 review comments and fix lint errors

* fix: address CI failures and code review feedback

* Refactor: comprehensive fix for lint errors and type safety regressions

* chore: trigger CI and Claude Code Review workflows
2026-01-20 10:41:22 +09:00
asyouplz
5cf1effdeb Address PR #8004 Review Feedback and Improve Compliance (#44)
* fix: address PR #8004 review feedback and improve type safety

* fix: restore legacy password factors and fix formatting

* fix: finalize PR feedback following Obsidian review compliance

* fix: finalize PR feedback with technical refinements and obsidian compliance

* fix: finalize PR refinements following Claude Code feedback and repo cleanup

* fix: remove legacy migration logic and further simplify codebase for obsidian compliance

* refactor: final cleanup of unused variables and improved type safety for PR #44

* style: fix formatting issues to resolve CI pipeline error
2026-01-19 17:23:06 +09:00
asyouplz
e436b94a97 fix(settings): Convert createEl('h*') to Setting.setHeading() API
- SettingsTab.ts: Convert 10 heading elements to Setting API
- EnhancedSettingsTab.ts: Convert 17 heading elements to Setting API
- Add eslint-disable for legacy async/await patterns

This follows Obsidian plugin review guidelines for settings UI construction.
2026-01-19 03:37:26 +09:00
asyouplz
cf7a3a1c75 fix(lint): Add eslint-disable comments to Encryptor.ts
- Add file-level eslint-disable for no-unsafe-assignment, no-unsafe-member-access,
  no-unsafe-argument, no-unsafe-return, and no-explicit-any
- These are required because Obsidian's loadLocalStorage API returns 'any'
- Replace invalid obsidianmd/platform rule with descriptive comment
- Add explanation for legacy navigator/screen API usage
2026-01-19 03:21:41 +09:00
asyouplz
1d57a3e3f8 refactor: Replace Node.js events module with SimpleEventEmitter
- Create SimpleEventEmitter.ts as a browser-compatible EventEmitter replacement
- Update AsyncTaskCoordinator.ts to use SimpleEventEmitter
- Update NotificationManager.ts to use SimpleEventEmitter
- Update ProgressTracker.ts to use SimpleEventEmitter
- Add eslint-plugin-obsidianmd to devDependencies

Fixes ObsidianReviewBot error: 'Do not import Node.js builtin module events'
2026-01-19 02:26:46 +09:00
asyouplz
d16c04883e lint: Fix Obsidian plugin review bot errors (#43)
* lint: Fix console.info usage for Obsidian compliance

- Replace console.info with console.debug in Logger.ts
- Replace console.info with console.debug in DeepgramLogger.ts

Required for ObsidianReviewBot compliance - only console.warn, console.error, console.debug are allowed.

* lint: Add ESLint configuration and auto-fix

- Add .eslintrc.json with Obsidian-compliant rules
- Run eslint --fix on all TypeScript files
- Configure console usage rules (warn, error, debug only)
- Enable prefer-const and no-var rules
- Add typescript-eslint recommended rules

Remaining: 162 warnings (0 errors)
All warnings are non-blocking (mostly @typescript-eslint/no-explicit-any)

Part of PR #8004 lint fixes for Obsidian Review Bot compliance.

* lint: Replace deprecated substr() with slice()

- NotificationSystem.ts: substr(2,9) → slice(2,11)
- NotificationManager.ts: substr(2,9) → slice(2,11)

Obsidian plugin review guideline compliance - substr is deprecated.

Part of PR #8004 lint fixes.

* lint: Replace confirm() with ConfirmationModal (1/5)

- SettingsTabOptimized.ts: Replace window.confirm with ConfirmationModal
- Add ConfirmationModal import

Obsidian plugin review guideline compliance - no window.confirm allowed.
Using Obsidian Modal API instead.

Remaining: 4 more confirm() calls to replace

Part of PR #8004 lint fixes.

* lint: Replace all confirm() calls with ConfirmationModal (5/5)

- AdvancedSettings.ts: 2 confirm() → ConfirmationModal
- SettingsTab.ts: 1 confirm() → ConfirmationModal
- StatisticsDashboard.ts: 1 confirm() → ConfirmationModal
- SettingsTabOptimized.ts: 1 confirm() → ConfirmationModal (previous commit)

All window.confirm() calls now use Obsidian Modal API.
Build successful.

Part of PR #43 - Obsidian lint fixes.

* lint: Fix UI text sentence case (49 instances)

Automated conversion to sentence case for UI text:
- .setName(), .setDesc(), .setButtonText(), .setPlaceholder()
- First letter capitalized, rest lowercase (except acronyms)
- Acronyms preserved: API, URL, HTTP, JSON, XML, ID, UI, CSS, HTML, TTL, SDK, CSV

Files modified (10):
- FormatOptions.ts: 4 changes
- EnhancedSettingsTab.ts: 6 changes
- SettingsTab.ts: 7 changes
- SettingsTabOptimized.ts: 1 change
- SettingsTabRefactored.ts: 1 change
- SimpleSettingsTab.ts: 4 changes
- DeepgramSettings.ts: 6 changes
- ProviderSettings.ts: 8 changes
- ProviderSettingsContainer.ts: 6 changes
- AdvancedSettingsPanel.ts: 6 changes

Build successful.

Part of PR #43 - Obsidian lint fixes.

* fix: Apply Prettier formatting to resolve CI errors

* chore: enhance CI/CD with Obsidian-level linting and release automation

- Consolidated ESLint config with TypeScript strict rules
- Added Obsidian plugin review bot compatible linting checks
- Fixed 45 TypeScript strict mode errors for type safety
- Implemented automatic version bump workflow via PR labels
- Created manual release script for local version management
- Added pre-commit hooks with Husky and lint-staged
- Updated release pipeline with tag-based trigger
- Enhanced documentation (LINT_RULES.md, RELEASE.md, BRANCH_PROTECTION.md)
- Updated README with comprehensive contributing and release guidelines

* fix(ci): Improve ESLint error detection in CI workflow

- Change grep pattern from 'error' to '[1-9][0-9]* error'
- Prevents false positive from '0 errors' string in lint output
- Fixes CI failure for PR #43
2026-01-19 02:08:56 +09:00
asyouplz
07ff830a53 fix: Apply prettier formatting for CI compliance
- Format all TypeScript files to pass CI format check
- Bump version to 3.0.8
2026-01-18 14:14:00 +09:00
asyouplz
df9c5b003d fix: Resolve Obsidian Plugin Review Lint Issues (#41)
* fix: Resolve all linting issues for Obsidian Plugin Review

* fix: Address PR code review feedback

- Add legacy password migration for encrypted API keys
- Prevent duplicate event listeners in SettingsAPI
- Add error handling to ConfirmationModal callbacks
- Improve type safety (any[] → unknown[])

* fix: Address second round of PR review feedback

- Implement per-vault unique salt for encryption security
- Add UI notices for migration status and errors
- Add destroy() method to SettingsAPI for memory cleanup
- Add Notice feedback to ConfirmationModal callback errors

* fix: Address critical security and data safety issues

- Remove weak encryption fallback, force salt initialization
- Add security documentation to encryption code
- Add retry mechanism (2 attempts) for API key retrieval
- Backup corrupted data before deletion for potential recovery
- Update ConfirmationModal for async callback support
- Prevent unhandled promise rejections in modal callbacks

* fix: Address final review suggestions

- Add deprecation comment for legacy platform API usage (target: v4.0.0)
- Add error logging before legacy migration attempt
- Move migration notice after successful save
- Change any[] to unknown[] for better type safety
- Add lifecycle documentation to destroy() method

* fix: Address latest PR review feedback

- Add feature detection for platform APIs in legacy migration (Encryptor.ts)
  - Check for navigator, screen, Intl availability before using
  - Graceful degradation when APIs not available in some environments

- Wrap listener execution in try-catch in SettingsAPI.emit()
  - Prevents cascade failures when a listener throws
  - Logs errors without stopping other listeners

- Add double-click prevention to ConfirmationModal
  - Disable buttons during async operations
  - Prevent multiple callback invocations

- Update test file to use correct class name (Encryptor vs AESEncryptor)

- Add comprehensive JSDoc documentation for SecureApiKeyManager
  - Document custom encryptor requirements
  - Add usage examples
  - Document initialization behavior
2026-01-18 13:57:45 +09:00
asyouplz
9840a0e178 chore(format): fix remaining prettier diff
Align WhisperService formatting with Prettier output.

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-01-15 00:13:50 +09:00
asyouplz
07d8f3cdce chore(format): run prettier
Apply repository formatting to satisfy CI format check.

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-01-15 00:10:37 +09:00
asyouplz
70334cfa10 fix: address reviewbot required issues (#40)
Resolve ReviewBot required findings to prepare for PR8004 rescan and release.

Co-authored-by: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-01-14 17:31:20 +09:00
asyouplz
a19d8c4de0 Revert "fix: address reviewbot required issues"
This reverts commit 04b81e0c32.
2026-01-14 17:13:54 +09:00
asyouplz
04b81e0c32 fix: address reviewbot required issues
Resolve ReviewBot required findings to prepare for PR8004 rescan and release.

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-01-14 17:04:47 +09:00
asyouplz
c455f7ffa2 fix: address reviewbot lint issues (#39)
* fix: address reviewbot lint issues

Resolve lint findings to satisfy ObsidianReviewBot checks.

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

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

* fix: address reviewbot typecheck feedback

Restore required typing, narrow DOM queries, and move deepgram SDK to devDependencies.

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

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

---------

Co-authored-by: Claude Sonnet 4.5 <noreply@anthropic.com>
2025-12-26 11:21:47 +09:00
asyouplz
78380adc1a Revert "fix: address reviewbot lint issues (#38)"
This reverts commit 6dd679a228.
2025-12-26 10:56:52 +09:00
asyouplz
6dd679a228 fix: address reviewbot lint issues (#38)
Resolve lint findings to satisfy ObsidianReviewBot checks.

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

Co-authored-by: Claude Sonnet 4.5 <noreply@anthropic.com>
2025-12-26 10:54:03 +09:00
asyouplz
b65c5a8af6 fix: stabilize plugin settings and deepgram refactor (#37)
* feat: migrate Deepgram to Nova 3

* fix: address reviewbot style issues and bump 3.0.3

* feat: finalize deepgram refactor and stabilize settings
2025-12-24 10:09:53 +09:00
asyouplz
daa575efd3 fix: address reviewbot style issues and bump 3.0.3 (#36)
* feat: migrate Deepgram to Nova 3

* fix: address reviewbot style issues and bump 3.0.3
2025-12-16 11:11:56 +09:00
Taesun Lee
410546ef90 refactor: move inline styles to CSS classes for theme compatibility
ObsidianReviewBot required changes - inline styles removal:

- Moved pulse loader animation delays to CSS classes (pulse-dot--1/2/3)
- Moved skeleton loader height/spacing options to CSS modifier classes
- Moved chart bar styles to CSS classes (chart-bar--whisper/deepgram)
- Moved notice button layout to CSS classes (notice-action-row)
- Updated CSS files with new modifier classes following BEM methodology

Verification:
- Bundle size: 149KB (within 150KB target)
- Removed patterns in main.js:
  * .style. usage: 0 instances
  * innerHTML: 0 instances
  * console.log: 0 instances (removed by build process)

Note: Dynamic width calculations remain (4 instances in AdvancedSettingsPanel)
as they require runtime percentage calculations.

Related: obsidian-releases PR #8004

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-20 12:32:22 +09:00
Taesun Lee
c49e75e157 chore: merge main and resolve conflicts
- Merged latest main branch changes
- Resolved conflicts in main.js, SettingsTab.ts, styles.css
- Added Support Section from main (createSupportSection method)
- Preserved review bot fixes (console.debug, DOM API)
- Combined utility classes and support separator styles
- Rebuilt bundle: 148.51 KB

Changes:
- SettingsTab: Added createSupportSection while keeping debug method
- styles.css: Combined sn-* utilities with speech-to-text-separator
- main.js: Rebuilt with all changes

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-09 14:49:44 +09:00
Taesun Lee
82a4af22ac fix: address Obsidian community plugin review requirements
Required fixes:
- Replace innerHTML/outerHTML with DOM API methods for XSS prevention
- Move inline styles to CSS classes for theme compatibility
- Add instanceof type guards for TFile/TFolder handling
- Remove console.log statements from production code
- Convert fetch() to requestUrl() for cross-platform support

Technical changes:
- Security: All innerHTML/outerHTML replaced with createEl/createDiv/createSvg
  - StatisticsDashboard: DOM-based table/chart rendering
  - UI components: SVG icons built programmatically
  - Error/notification systems: Safe DOM construction

- Styling: Inline styles migrated to CSS classes
  - Added utility classes: .sn-hidden, .sn-fade, .sn-info-box
  - Preserved dynamic styles for progress bars and charts
  - Enhanced theme compatibility

- Type safety: Added file/folder type guards
  - New: src/utils/fs/typeGuards.ts with assertTFile helper
  - Replaced unsafe casts with instanceof checks
  - Improved test mocking with structural typing

- Logging: Cleaned up console statements
  - Removed production console.log calls
  - Preserved console.debug for debug mode
  - Routed logs through Logger class

- Networking: fetch() → requestUrl() migration
  - APIKeyManager: 2 API validation calls converted
  - BatchRequestManager: Updated for Obsidian compatibility

Test improvements:
- E2E: Implemented settings flow mocking (15/15 tests passing)
- Fixed: Settings migration for legacy language codes (korean→ko)
- Fixed: NotificationManager duplicate prevention (timer-based)
- Fixed: WhisperService cancellation logging
- Fixed: FileUploadManager compression fallback
- Fixed: EditorService workspace.off guard

Build verification:
- Bundle size: 148KB (within 150KB target)
- Console statements: Removed from production build
- All 222 tests passing
- Lint:  (167 warnings, no errors)
- TypeCheck: 

Ready for Obsidian review bot re-check.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-09 13:53:54 +09:00
asyouplz
67d05c9239 feat: add support section to settings page (#30)
Add a dedicated support section at the bottom of the settings page that includes:
- Visual separator to distinguish from other settings
- Thank you message to users
- "Buy me a coffee" button with CTA styling
- Opens support link in new tab

This provides users with an easy way to support the plugin development while maintaining a non-intrusive placement.

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

Co-authored-by: Claude <noreply@anthropic.com>
2025-10-03 00:04:02 +09:00
Taesun Lee
41d61c09d2 fix(critical): address PR review critical issues
1. **FileUploadManager - Remove audio corruption risk**
   - Removed forceReduceSize() method that corrupted audio
   - Method naively skipped bytes without understanding audio format
   - Now throws clear error with user guidance instead
   - Prevents unplayable audio files from being created

2. **Jest Config - Restore test timeouts**
   - Unit tests: 10s timeout
   - Integration tests: 15s timeout
   - E2E tests: 30s timeout
   - Prevents flaky test failures from default 5s timeout

3. **EditorService - Fix memory leak**
   - Store event listener references in eventRefs array
   - Properly clean up workspace event listeners in destroy()
   - Prevents memory leaks when plugin is unloaded
   - workspace.off() called for all registered listeners

All critical security and stability issues from PR review addressed.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-01 15:30:37 +09:00
Taesun Lee
5def10584c security(whisper): add API key sanitization to WhisperService
Apply the same security improvements from DeepgramAdapter PR review:
- Add sanitizeForLogging() method to redact sensitive data
- Apply sanitization to options logging (line 289)
- Apply sanitization to error body logging (line 410)
- Prevent API keys and tokens from leaking to logs

This brings WhisperService security up to par with DeepgramAdapter
and completes the security hardening for the public 3.0.1 release.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-01 15:19:55 +09:00
Taesun Lee
930da6bab9 fix(types): resolve TypeScript build errors
- Add cleanupText to FormatOptions interface
- Fix PluginSettings -> SpeechToTextSettings imports
- Fix getMetrics return type to match parent class
- Add type casting for FormData in WhisperService
- Add type casting for abTesting forceProvider access

These fixes resolve all TypeScript compilation errors and allow
the build to succeed.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-01 14:49:16 +09:00
Taesun Lee
0012187572 chore(release): finalize public 3.0.1 build
- Add .jest-cache to .gitignore for cleaner repo
- Export DeepgramAdapterRefactored as DeepgramAdapter for compatibility
- Refactor TranscriberFactory with improved error handling and logging
- Enhance NotificationManager with better user feedback
- Update test infrastructure (jest.config, testSetup)
- Improve EditorService, TextFormatter, TranscriptionService type safety
- Enhance FileUploadManager and WhisperService error handling

Related PR feedback addressed:
- API key sanitization in logs (sanitizeForLogging)
- DEFAULT_TIER constant consistency
- Partial chunk failure flagging in metadata
- Auth error differentiation in API key validation

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-01 14:31:23 +09:00
Taesun Lee
d7b86645a8 fix(deepgram): differentiate auth failures during key validation 2025-10-01 13:14:30 +09:00
Taesun Lee
5e405384d5 fix(deepgram): redact logging and flag partial chunk results 2025-10-01 13:04:30 +09:00
Taesun Lee
3db2cd0d16 fix(deepgram): sanitize logging and align tier defaults 2025-10-01 13:02:59 +09:00
Taesun Lee
ca5b7198ef fix(deepgram): harden release build for public launch 2025-10-01 12:55:59 +09:00
Taesun Lee
fd53019e7a fix(release): bundle main.js and sync metadata 2025-10-01 12:43:06 +09:00
claude[bot]
e4a6192f41 Fix Deepgram timeout issues for large audio files
- Improved dynamic timeout calculation with more aggressive scaling for large files
- Added automatic audio chunking for files over 50MB
- Implemented AudioChunker utility to split large files into manageable chunks
- Added UI settings for enabling/disabling auto-chunking and configuring chunk size
- Enhanced error messages with file size info and specific recommendations
- Updated timeout limits to 90 minutes for very large files
- Added chunking configuration options to Settings model

This should resolve the gateway timeout (504) errors experienced with large audio files on Windows 11.

Fixes #22

Co-authored-by: asyouplz <asyouplz@users.noreply.github.com>
2025-09-17 06:52:01 +00:00
Claude AI
2da0aaa749 Add comprehensive Deepgram infrastructure enhancements
- Added new Deepgram model support and capability management system
- Implemented advanced diarization formatting with speaker detection
- Enhanced error handling with user-friendly messages
- Added model migration service for backward compatibility
- Improved audio validation and reliability utilities
- Added comprehensive testing scripts and documentation
- Updated model registry with latest Deepgram models (nova-3 support)
- Enhanced configuration management with JSON-based model definitions
- Added agent-based documentation in Korean and English
- Improved timeout handling for large audio files
- Added circuit breaker pattern for API resilience

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-09-10 18:16:20 +09:00
claude[bot]
b65f05e770 Fix Deepgram 504 timeout errors for large audio files
- Implement dynamic timeout calculation based on file size (30s per MB minimum)
- Add configurable timeout support from requestTimeout setting
- Improve 504 error handling with user-friendly guidance
- Cap maximum timeout at 20 minutes for very large files
- Add 50% buffer time for network/processing delays

For 58MB files: timeout increases from 30s to ~44 minutes
Fixes server timeouts while maintaining diarization functionality

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

Co-Authored-By: asyouplz <asyouplz@users.noreply.github.com>
2025-09-08 08:58:12 +00:00
asyouplz
d451873286 Merge pull request #20 from asyouplz/claude/issue-19-20250905-0535
Fix Deepgram Speaker Diarization not working
2025-09-06 20:04:09 +09:00
claude[bot]
d992db02ac Fix Deepgram Speaker Diarization not working
- Add ISettingsManager import and parameter to DeepgramAdapter constructor
- Update convertOptions method to read UI feature settings (diarization, punctuation, smartFormat, numerals)
- Fix main.ts factory settings manager to pass through transcription.deepgram.features
- Ensure UI toggle settings are properly mapped to API parameters

The issue was that the UI feature toggles were saved to plugin.settings.transcription.deepgram.features
but the DeepgramAdapter convertOptions method was not accessing these settings, causing the
diarization toggle to have no effect on the actual API calls.

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

Co-Authored-By: asyouplz <asyouplz@users.noreply.github.com>
2025-09-05 05:42:07 +00:00