Commit graph

56 commits

Author SHA1 Message Date
tslee
14af775f15 fix(review): reduce portal warnings 2026-05-18 17:31:02 +09:00
asyouplz
6faf546c46
style: format files for code quality check (#85) 2026-03-19 12:48:38 +09:00
asyouplz
1b0c80b0ad
fix(ui): namespace review-target css selectors (#84) 2026-03-19 12:31:42 +09:00
asyouplz
de37e9f814
fix: address obsidian review bot settings copy (#82) 2026-03-16 13:46:30 +09:00
asyouplz
90e5026386 fix(settings): normalize review bot sentence case text 2026-03-16 01:16:34 +09:00
asyouplz
98210a349f
Fix/pr8004 settings sentence case followups (#80)
* fix(ui): align settings review follow-ups

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>

* fix(ui): align sentence case for settings copy

Normalize the settings UI strings flagged by the review bot to plain sentence case
and remove emoji-prefixed labels from the affected headings and options.

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

* fix(ui): enforce sentence case for settings copy

---------

Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-15 21:57:42 +09:00
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
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
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
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
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]
a5582d33ba fix: resolve TypeScript compilation errors
- Fix error handling type issues (unknown to Error | undefined)
- Fix Error object property mismatches in logger calls
- Fix plugin manifest type issues by removing invalid overrides
- Fix property access and function signature issues
- Add proper type casting for status bar elements
- Fix FilePickerModal constructor argument count

Fixes #17

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

Co-authored-by: asyouplz <asyouplz@users.noreply.github.com>
2025-09-05 03:27:03 +00:00
asyouplz
83dea43976 feat: v1.0.0 초기 릴리즈 - Deepgram 빈 응답 문제 해결 및 언어 설정 수정
주요 개선사항:
- Deepgram API 응답 처리 문제 해결: 언어 설정이 TranscriptionService까지 전달되지 않던 문제 수정
- AudioProcessor 메타데이터 추출 개선: 파일 확장자 기반 형식 감지 추가
- Content-Type 헤더 자동화: M4A → audio/mp4, WebM → audio/webm 매핑
- 오디오 형식 감지 강화: M4A, WebM, OGG 등 추가 형식 지원
- TranscriptionService 설정 주입: 언어 옵션이 WhisperService로 정상 전달
- 상세 디버깅 로깅: 각 처리 단계별 디버그 정보 추가

버전 관리:
- manifest.json: v1.0.0으로 초기화
- README.md: 간결한 v1.0.0 초기 릴리즈 문서로 재작성
- CHANGELOG.md: v1.0.0 릴리즈 노트 및 향후 로드맵 추가
- .gitignore: docs/ 폴더 및 개발 문서 제외 설정

기술적 구현:
- AudioValidator 클래스 추가: 바이너리 헤더 기반 형식 감지
- TranscriberToWhisperAdapter 로깅 강화
- DeepgramService 응답 검증 로직 개선
- 타입 정의 확장: AudioMetadata에 format, fileSize 필드 추가

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-08-30 23:46:54 +09:00
asyouplz
fa5edd717b fix: Deepgram settings UI now properly displays in plugin settings
- Fixed import path issues in DeepgramSettings and DeepgramModelRegistry
- Added defensive programming with fallback UI when registry fails
- Refactored code following SOLID principles and clean code practices
- Created separate helper classes for UI building, validation, and cost calculation
- Added comprehensive error handling and debug logging
- Extracted all magic strings to constants
- Improved TypeScript type safety

The Deepgram settings now reliably appear when selected from the provider dropdown,
even if the model registry fails to load.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-08-30 21:37:20 +09:00
asyouplz
f1aab68a2f feat: Add comprehensive Deepgram settings UI
- Added Deepgram provider settings to plugin settings tab
- Created DeepgramModelRegistry for managing models and features
- Implemented dynamic provider selection (Auto/Whisper/Deepgram)
- Added model selection with nova-2, nova, enhanced, and base models
- Included feature toggles for all Deepgram capabilities
- Added cost estimation display for selected models
- Updated documentation with Deepgram integration guide

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-08-30 21:03:23 +09:00
asyouplz
f0f4c9ac31 fix: 옵시디언 플러그인 UI 및 사용성 문제 4가지 수정
## 🐛 해결된 문제 (v3.0.3)

### 1. 컨텍스트 메뉴 추가
- 음성 파일 우클릭 시 "Transcribe audio file" 메뉴 표시
- 지원 파일 형식: m4a, mp3, wav, mp4, webm, ogg, flac

### 2. 명령 팔레트 undefined 제거
- 명령어 ID에 "speech-to-text:" 접두사 추가
- 모든 명령어가 undefined 없이 정상 표시

### 3. StatusBar 오류 수정
- addStatusBarItem() 매개변수 제거
- 안전한 텍스트 업데이트 로직 구현
- TypeError 해결

### 4. SettingsTab 디버깅 개선
- 상세한 디버깅 로그 추가
- DOM 연결 상태 확인 로직
- 디버그 정보 섹션 추가

##  QA 테스트 결과
- 기능 테스트: 모두 PASS
- 회귀 테스트: 문제 없음
- 엣지 케이스: 정상 처리

## 📝 문서 업데이트
- CHANGELOG.md: v3.0.3 변경사항 추가
- README.md: 사용 방법 개선
- docs/USER_GUIDE.md: 종합 사용자 가이드 신규 작성

## 🤝 CLAUDE.md 원칙 준수
작업 프로세스:
1. mentor-educational-guide: 문제 분석
2. systems-architect: 아키텍처 검토
3. backend-api-infrastructure & code-refactorer: 코드 수정
4. qa-testing-expert: QA 테스트 통과
5. documentation-expert: 문서 업데이트

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-08-30 13:44:25 +09:00
asyouplz
e59813950f fix: 옵시디언 플러그인 StatusBar 및 SettingsTab 오류 수정
## 🐛 해결된 문제

### 1. StatusBar 오류 수정
- 문제: TypeError: Cannot read properties of undefined (reading 'toLowerCase')
- 원인: addStatusBarItem() 메서드의 잘못된 사용
- 해결: 안전한 텍스트 설정 메커니즘 구현 및 workspace 준비 상태 확인

### 2. SettingsTab 표시 문제 수정
- 문제: 설정 탭이 표시되지 않음
- 원인: 복잡한 컴포넌트 의존성으로 인한 초기화 실패
- 해결: 간단한 단일 파일 구조로 리팩토링

## 🏗️ 아키텍처 개선

### 새로운 컴포넌트 추가
- **PluginLifecycleManager**: 플러그인 생명주기 관리
- **DependencyContainer**: 의존성 주입 시스템
- **StatusBarManager**: StatusBar 안전 관리
- **SettingsTabManager**: SettingsTab 안전 관리
- **ErrorBoundary**: 전역 에러 처리
- **TestingFramework**: 테스트 유틸리티

## 📝 변경된 파일
- src/main.ts: StatusBar 생성 로직 개선
- src/ui/settings/SettingsTab.ts: 간소화된 설정 UI
- src/domain/models/Settings.ts: Settings 인터페이스 업데이트
- 아키텍처 관련 새 파일들 추가

##  테스트 완료
- TypeScript 컴파일: 성공 (일부 타입 경고 존재)
- ESBuild 프로덕션 빌드: 성공
- 옵시디언 플러그인 로드: 성공

## 📊 효과
- 플러그인 안정성 향상
- 에러 발생 시에도 기본 기능 유지
- 유지보수성 및 테스트 가능성 개선

CLAUDE.md의 Code and Script Work Principles에 따라
여러 전문 에이전트와 협업하여 작업 완료

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-08-30 13:11:30 +09:00
asyouplz
a92b97ca18 fix: TypeScript 타입 에러 41개 수정 및 타입 안전성 개선
## 주요 변경사항

### 타입 시스템 개선
- Unsubscribe 타입 정의 추가 (src/types/events.ts)
- 리소스 관리 패턴 표준화 (src/types/resources.ts)
- 전략 패턴 타입 정의 (src/types/strategy.ts)

### 수정된 타입 에러 (41개)
1. 이벤트 시스템 불일치 (16개)
   - SettingsAPI, NotificationManager 인터페이스 구현 수정
   - EventEmitter composition 패턴 적용

2. SelectionStrategy 타입 충돌 (10개)
   - enum과 optional 필드 타입 호환성 개선
   - undefined 처리 로직 추가

3. 인터페이스 구현 불완전 (8개)
   - removeAllListeners, destroy 메서드 추가
   - 시그니처 불일치 해결

4. 리소스 관리 불일치 (7개)
   - Disposable 패턴 일관성 확보
   - 생명주기 관리 표준화

### 문서 업데이트
- CHANGELOG.md: v3.0.1 변경사항 추가
- README.md: 빌드 상태 및 코드 품질 지표 추가
- docs/TYPESCRIPT_IMPROVEMENTS.md: 타입 시스템 개선 가이드

### 빌드 검증
- TypeScript 컴파일:  에러 없음
- ESBuild 프로덕션 빌드:  성공
- 타입 안전성: 95%+ 달성

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-08-30 10:07:09 +09:00