From c306e9d0fd8c97c1a074fea94c387ff29ac6287c Mon Sep 17 00:00:00 2001 From: EP Date: Wed, 20 Aug 2025 16:26:34 -0700 Subject: [PATCH] UI: Add global Advanced Unicode panel + header toggle; remove duplicate from decoder; wire Apply to steganography options; minor UI polish --- README.md | 10 ++ css/style.css | 93 ++++++++++++ index.html | 103 +++++++++++++ js/app.js | 45 +++++- js/steganography.js | 91 ++++++++---- js/transforms.js | 346 +++++++++++++++++++++++++++++++++++++++++++- 6 files changed, 656 insertions(+), 32 deletions(-) diff --git a/README.md b/README.md index 1cb4f7a..ff60d68 100644 --- a/README.md +++ b/README.md @@ -14,6 +14,8 @@ A powerful web-based text transformation and steganography tool that can encode/ #### **Encoding & Decoding** - **Base64** - Standard base64 encoding/decoding - **Base32** - RFC 4648 compliant base32 encoding/decoding +- **Base58** - Bitcoin alphabet encoding/decoding +- **Base62** - 0-9A-Za-z compact encoding/decoding - **Binary** - Convert text to/from binary representation - **Hexadecimal** - Convert text to/from hex format - **ASCII85** - Advanced ASCII85 encoding/decoding @@ -26,6 +28,8 @@ A powerful web-based text transformation and steganography tool that can encode/ - **ROT47** - Extended rotation cipher for ASCII 33-126 - **Morse Code** - International Morse code with proper spacing - **NATO Phonetic** - NATO phonetic alphabet +- **Vigenère Cipher** - Polyalphabetic cipher (default key "KEY") +- **Rail Fence (3 Rails)** - Zig-zag transposition cipher #### **Visual Transformations** - **Upside Down** - Flip text upside down using Unicode characters @@ -43,6 +47,11 @@ A powerful web-based text transformation and steganography tool that can encode/ - **Double-Struck** - Mathematical double-struck characters - **Greek Letters** - Greek alphabet characters - **Wingdings** - Symbol font characters +- **Fraktur** - Mathematical Fraktur alphabet +- **Cyrillic Stylized** - Latin letters mapped to similar Cyrillic glyphs +- **Katakana** - Romaji to Katakana (approximate, reversible) +- **Hiragana** - Romaji to Hiragana (approximate, reversible) +- **Roman Numerals** - Numbers to Roman numerals (reversible) #### **Fantasy Languages** 🧙‍♂️ - **Quenya (Tolkien Elvish)** - High Elvish language from Lord of the Rings @@ -128,6 +137,7 @@ streamlit run parsel_app.py ### **New Features** - 🆕 **50+ New Languages**: Added fantasy, ancient, and technical scripts +- 🆕 **More Encodings/Ciphers**: Base58, Base62, Vigenère, Rail Fence, Roman Numerals - 🆕 **Category Organization**: Better organized transform categories - 🆕 **Enhanced Styling**: New color schemes for each category - 🆕 **Improved Decoder**: Better detection and fallback mechanisms diff --git a/css/style.css b/css/style.css index f099d67..00321d8 100644 --- a/css/style.css +++ b/css/style.css @@ -1848,3 +1848,96 @@ button:hover { 30% { box-shadow: 0 0 18px rgba(156,39,176,0.6); } 100% { box-shadow: 0 0 0 rgba(156,39,176,0); } } + +/* Steganography split layout */ +.steg-split-layout { + display: grid; + grid-template-columns: 280px 1fr; + gap: 16px; +} + +.steg-advanced-sidebar { + position: sticky; + top: 8px; + height: max-content; + background: var(--main-bg-color); + border: 1px solid var(--input-border); + border-radius: 8px; + padding: 12px; +} + +.steg-adv-panel label { + display: flex; + flex-direction: column; + gap: 6px; + margin-bottom: 8px; +} + +.steg-adv-panel select, .steg-adv-panel input[type=number] { + background: var(--input-bg); + color: var(--text-color); + border: 1px solid var(--input-border); + border-radius: 4px; + padding: 6px 8px; +} + +.steg-note { + display: block; + margin-top: 8px; + color: var(--text-muted); + font-size: 0.8rem; +} + +@media (max-width: 900px) { + .steg-split-layout { grid-template-columns: 1fr; } + .steg-advanced-sidebar { position: relative; top: 0; } +} + +/* Global Unicode options panel (subtle, like copy history) */ +.unicode-options-panel { + position: fixed; + right: -360px; + top: 0; + width: 340px; + height: 100vh; + background: var(--secondary-bg); + border-left: 1px solid var(--input-border); + z-index: 200; + box-shadow: -5px 0 15px rgba(0,0,0,0.3); + transition: right 0.3s ease-in-out; + display: flex; + flex-direction: column; +} + +.unicode-options-panel.active { right: 0; } + +.unicode-panel-header { + padding: 12px; + border-bottom: 1px solid var(--input-border); + display: flex; + align-items: center; + justify-content: space-between; +} + +.unicode-panel-header h3 { margin: 0; color: var(--accent-color); font-size: 1rem; } + +.unicode-panel-content { padding: 12px; overflow-y: auto; } + +/* Fluid UX: reduce scroll fatigue during repeated actions */ +html { + scroll-behavior: smooth; +} + +.transform-layout { + position: relative; +} + +/* Keep the transform input visible while scrolling */ +.transform-layout .input-section { + position: sticky; + top: 8px; + z-index: 20; + background: var(--secondary-bg); + border: 1px solid var(--input-border); + box-shadow: 0 2px 8px rgba(0,0,0,0.15); +} diff --git a/index.html b/index.html index 3171d2d..530c816 100644 --- a/index.html +++ b/index.html @@ -44,6 +44,14 @@ > + @@ -141,6 +149,7 @@

Paste any encoded text to try all decoding methods at once

+