The Advanced Settings panel (containing the OpenRouter API key input)
was outside the Vue app scope due to an extra </div> on line 122 that
prematurely closed the #app div. This meant:
- The API key input's Vue bindings (:value, @input) were inert
- The Save Key button's @click="saveApiKey" never fired
- The key never reached localStorage or Vue data
- Translation/PromptCraft always saw an empty key
Fix: Remove the duplicate closing </div> (labeled "End of .tabs div"
but .tabs already closed earlier at line 77). Also switch API key input
from manual :value/@input to v-model for reliable two-way binding.
https://claude.ai/code/session_01DjqbQB8WcZoGVe78sjvh72
- Implement tool registry system with individual tool modules
- Reorganize transformers into categorized source modules
- Remove emojiLibrary.js, consolidate into EmojiUtils and emojiData
- Fix mobile close button and tooltip functionality
- Add build system for transforms and emoji data
- Migrate from Python backend to pure JavaScript
- Add comprehensive documentation and testing
- Improve code organization and maintainability
- Ignore generated files (transforms-bundle.js, emojiData.js)