๐Ÿ“˜ TextWhisper Features

TextWhisper is a rehearsal and performance platform for performing-arts groups. Core strengths include centralized layered PDF annotation, text and lyric learning tools, live score interaction, structured content operations, collaboration management, multi-source file integration, and ownership tracking.

๐Ÿ‘ค User Identity

  • Logged-in user shown in top-right menu
  • URL reflects selected user or list token, and item โ€” updates dynamically when browsing or sharing
  • User avatars displayed next to usernames in user lists and chat messages for better visual identification.

๐Ÿ›ก๏ธ Account Security & Validation

  • Strong password requirements (Aโ€“Z, aโ€“z, 0โ€“9, minimum 6 chars)
  • Email confirmation required before login
  • Disposable email domains blocked during registration
  • Display name validation with anti-spam filters (no gibberish, reserved words, excessive repetition)
  • Client-side and server-side input validation for consistency

๐Ÿ” Privacy Controls

  • Each list has a privacy level that controls who can access it:
  • โ€ƒ๐ŸŒ Public โ€“ open and searchable by anyone
  • โ€ƒ๐Ÿ”’ Private โ€“ visible only to you and invited list-chat members
  • โ€ƒ๐Ÿ•ต๏ธ Secret โ€“ hidden from search, but shareable via private link
  • Privacy affects list visibility, chat access, and who can view or join
  • You can change a listโ€™s privacy setting anytime from the list menu
  • Only owners or admins can invite others or adjust privacy
  • All chats are end-to-end encrypted. Only users with list-chat access can read them.

๐Ÿ—‚๏ธ List & Item Management

  • Create, rename, reorder, and delete lists
  • Add/remove items from lists (yours or others')
  • Mark lists as Public or Private
  • Favorite lists for quick access
  • Item actions: add to list, attach PDF, remove
  • List actions: offline access, add to My Lists, rename, delete

๐Ÿ’ฌ List Chat & Collaboration

  • Real-time chat scoped to each list
  • Floating chat icon (mobile/desktop-aware) or footer toggle
  • Displays messages with emoji and multi-line formatting
  • Supports invite-only list participation
  • Owners, Admins and editors can invite members via email
  • Role system: Viewer, Commenter, Editor, Admin, Paused
  • Invite UI integrated in chat panel with inline role editing
  • Access control enforced server-side for chat visibility and modification
  • Unread message count shown per list
  • Clickable badge opens the chat directly from the list
  • Only invited members can see or send messages for a list
  • Smart menu to select unread list chats (shown when clicking chat tab with unread)
  • Unread chat selector shows per-list unread counts and current list (if not already listed)
  • Chat selection clears unread state automatically (badge + backend timestamp)
  • Chat auto-scroll and "new messages" indicator work seamlessly
  • Push notifications triggered by messages containing ! or ๐Ÿ””
  • Push includes list name as title, respects sound + visibility settings
  • Only subscribed and invited users receive pushes
  • User avatars shown inline with chat messages
  • Timestamps displayed above each chat message bubble
  • All chats are end-to-end encrypted

๐Ÿงญ Sidebar & Navigation

  • Sidebar tabs: Lists / Users
  • Search box filters users/lists/items
  • Sidebar auto-collapses on small screens
  • Floating โ‹ฎ toggle button (mobile)
  • Unified sidebar toggle across header, footer, and floating button
  • Sidebar toggle preserves the current tab
  • Share Group action available in sidebar group menus

๐Ÿ“… Event Planner & Polls

  • Event Groups (with members) and Categories (label-only classification)
  • Category settings with custom color selection
  • Create recurring events per group
  • Member/admin check-in and check-out
  • Attendance reports with filters (period, group, category)
  • Built-in event polls: create, vote, and share in chat

๐Ÿ“„ PDF Viewer with annotations

  • Owner and user annotations supported (two overlays)
  • Hover or tap annotation to see who is the owner
  • Scroll and zoom while drawing or viewing
  • Annotations persist across sessions and offline use
  • Draw with mouse, finger, or stylus using pointer events
  • Pinch-to-zoom with consistent panning support
  • Line width adjusts non-linearly with zoom for visual stability
  • Base annotation overlay per owner or admin
  • Additional annotation overlay per user
  • Double-tap edges to switch to next/previous item
  • Smart margin detection automatically reduces large white borders for a cleaner view
  • Optimized screen usage โ€” PDFs expand to fill available space, especially on tablets
  • Adaptive zoom levels based on detected text area
  • Configurable navigation arrows for Continuous and Paged view modes
  • Continuous view: page up/down via arrows
  • Paged view: previous/next page via arrows
  • Boundary navigation to previous/next item (PDF) in the list

โœ๏ธ PDF Annotation Tools

  • Pen tool (uses color picker)
  • Highlighter tool draws straight lines, uses same color picker (avoids black)
  • Eraser tool (freehand erase)
  • Undo last annotation
  • Clear all annotations
  • Save annotations
  • Reload annotations
  • Print with annotations included

๐Ÿ–จ๏ธ PDF Printing

  • Print PDFs with annotations included
  • Uses subject as suggested file name

๐Ÿ“ค PDF Upload

  • PDFs stored per item and loaded on demand
  • Drag-and-drop PDF upload with automatic replacement
  • PDF File upload from PC or device
  • Support for pasting direct PDF URLs
  • PDF IMSLP search, autofills from text subject
  • Mobile-safe upload button fallback

๐Ÿ‘† Gesture Navigation

  • Swipe left/right (in center of screen, one finger) to go to next/previous item
  • Works globally when not in edit mode
  • Double-tap screen edges (PDF view) also navigates between items

๐Ÿ“ Text Editing

  • Edit mode for owners and admins
  • Rich text tools: Bold, Italic, Underline
  • Dual textareas (editable + trimmed preview on wide screens)
  • Slider to adjust text trim level
  • New, Save, Refresh, Delete, and Print controls
  • Smarter HTML-based editor for stable formatting
  • Toolbar visibility synced with edit mode and the Text tab
  • Shows owner and last editor
  • Edit history is stored

โœ๏ธ Text Annotations

  • Available to all logged-in users (private to each user)
  • Highlight text selections with color options
  • Add comments in draggable bubble markers
  • Freehand drawing directly on the text
  • Drawings appear in movable bubbles anchored to the correct word
  • Unified Undo for highlights, comments, and drawings
  • Accurate touch selection and smooth mobile drawing
  • Annotations save automatically and restore when reopening items
  • Text stays unchanged โ€” annotations float safely above it

๐ŸŽต Music Tab

  • Add music via drag-and-drop or by pasting links in the Music panel
  • Add music from This device, cloud imports, and supported links
  • Upload your own MIDI, MP3, WAV, FLAC, or M4A files per item for in-browser playback
  • Paste links from YouTube, Spotify, and Soundslice โ€” embedded players appear automatically
  • Supports built-in MIDI player with channel mute, solo (focus), per-channel volume, and editable names
  • MIDI player shows real-time activity pulses and supports seeking via progress bar
  • Channel names are editable and saved per file for consistent labeling
  • Native HTML5 audio player used for supported audio formats
  • Pin any player (YouTube, Spotify, MIDI, audio) to float outside the panel for focused playback
  • Floating players are draggable and mobile-aware โ€” reposition with drag or long-press
  • Playback continues uninterrupted when collapsing or pinning/unpinning the player
  • Only one pinned player is active at a time โ€” auto-unpins or restores as needed
  • Delete uploaded music files if you are the item owner or an admin
  • Soundslice links also open fullscreen or in-app (mobile-aware)
  • Footer music button toggles the Music panel and adapts behavior to platform

๐ŸŽถ Music Playback Enhancements

  • Loop playback: repeat the same track or automatically move to the next item
  • Set a default audio or MIDI file per item for playlist-style looping
  • Loop mode selector directly in the audio player (no loop / repeat track / loop list)
  • Player controls fully usable in pinned mode (progress, speed, skip, loop)
  • Pinned player stays active while navigating โ€” draggable on desktop and mobile
  • Cleaner right-aligned controls with pin and default checkmark

โš™๏ธ Config Menu

  • Home, Logged in as..., Login/Logout
  • Edit Mode toggle
  • About, Version, App Reset
  • Signed-in avatar indicates active identity/context

๐Ÿ“ด Offline Mode & PWA Support

  • Works as a Progressive Web App (PWA) โ€” installable like a native app on mobile or desktop
  • Offline access for marked lists: view text, PDFs, and annotations without internet
  • Service Worker caches the app shell, list metadata, PDFs, and drawing data
  • List viewer supports offline loading with a refresh fallback if partially cached
  • Version-aware cache invalidation with automatic background updates
  • Offline indicator banner shows when no connection is detected

๐Ÿง  Smart UI Behavior

  • URL updates dynamically as user switches lists or items
  • Direct links to /token/surrogate open exact content
  • Sidebar state (tab, scroll, expanded/collapsed groups) persists
  • Soundslice tab launches fullscreen or app depending on device

๐Ÿ”— Sharing

  • Share lists: https://textwhisper.com/{token}
  • Share items: https://textwhisper.com/{token}/{surrogate}
  • Supports usernames and list tokens in URLs
  • Accessible via list and item menus (โ‹ฎ โ†’ Share this list/item)
  • Opens native share options: copy link, Nearby Share, Messages, Mail, Facebook, Chat, and more (based on your device)
  • Meta tags for rich previews on social and chat apps
  • Works with offline lists too

๐Ÿ‘ฅ Friends tab

  • "My Friends" view shows all distinct chat-connected users across your lists
  • "List Chat Members" allows lazy-loaded viewing of participants per list, including roles and invited users

๐Ÿ”’ System Features

  • Session-based authentication
  • Ownership-validated inserts, edits, deletes
  • Private lists are hidden from search/guests
  • Public content accessible without login
  • Optional โ€œStay logged inโ€ with secure persistent cookie

๐Ÿงฉ Enhancements (November 2025)

  • โœ๏ธ Unified Text Annotation System โ€” highlights, comments, and drawings now share the same engine
  • ๐Ÿ–๏ธ Freehand drawing on text with accurate anchoring to the correct words
  • ๐Ÿซง Movable drawing bubbles with stable positions and automatic re-anchoring on text changes
  • โœ’๏ธ New highlight engine โ€” smoother selection, no duplicated text, better removal
  • ๐Ÿ’ฌ Improved comment bubbles โ€” cleaner editing, stable offsets, full undo of moves and text changes
  • โ†ฉ๏ธ Unified Undo System โ€” undo highlights, comments, drawings, and text edits
  • ๐Ÿ–๏ธ Touch improvements โ€” accurate highlighting and drawing on phones and tablets
  • ๐ŸŽจ New drawing palette with color pickers for pen, highlighter, and draw tools
  • ๐Ÿ…ฑ๏ธ Rich text formatting added: Bold, Italic, Underline
  • ๐Ÿ”ง New HTML-based text editor replacing old plain-text engine for stability and precision
  • ๐Ÿ”„ Refresh action now resets both text and drawing canvas, respecting active tools
  • ๐Ÿง  Edit mode permissions tightened โ€” only owners/admins can edit text; all users can annotate privately
  • ๐Ÿงฒ More consistent tool state syncing between text mode, draw mode, and palette buttons

๐Ÿงฉ Enhancements (October 2025)

  • ๐ŸŽต New audio loop system โ€” choose between no loop, repeat track, or loop entire list
  • ๐Ÿ“Œ Pinned player enhancements โ€” cleaner UI, stable playback, draggable on all devices
  • โญ Default music per item โ€” mark one audio or MIDI file as the default for automatic playlist looping
  • ๐ŸŽš๏ธ Fully interactive pinned player โ€” progress bar, speed control, loop mode all work correctly
  • ๐Ÿ” More precise click-handling โ€” player no longer collapses when adjusting controls
  • ๐Ÿงฉ Cleaner control layout โ€” default checkbox aligned next to the pin button for music and MIDI only
  • ๐Ÿ’พ Persistent defaults โ€” default pinned music stored per item for smart auto-play when looping lists
  • ๐Ÿ“„ Automatic PDF margin detection โ€” intelligently trims large white page borders for cleaner, space-efficient reading
  • ๐Ÿ“ฑ Tablet-optimized view โ€” maximizes content area so PDFs fill the screen instead of wasting space on margins
  • ๐Ÿ” Smarter zoom behavior โ€” auto-adjusts zoom levels based on detected text region, no manual fine-tuning needed
  • โšก Faster page rendering โ€” margin detection now uses optimized pixel scanning for quicker load times
  • ๐Ÿ–ฅ๏ธ Consistent layout across devices โ€” ensures PDFs look balanced on phones, tablets, and desktops

๐Ÿงฉ Enhancements (April 2025)

  • ๐Ÿ’ฌ List-based chat: one chat per list, visible only to invited members
  • ๐Ÿ‘ฅ Inline member invite interface with role control: Viewer, Commenter, Editor, Admin, Paused
  • โž• Member management is fully integrated into the chat panel UI
  • ๐Ÿ“‚ Unified sidebar toggle logic across footer, hamburger, and floating button (window.toggleSidebar())
  • ๐Ÿงญ Footer navigation bar with tab switching, fullscreen toggle, chat toggle, and Soundslice integration
  • ๐Ÿ“บ Fullscreen mode via footer button, including support for iOS Safari scroll hack
  • ๐Ÿ’ฌ Footer-based chat toggle replaces floating bubble, fixes overlap and maintains state
  • ๐ŸŽจ Edit mode toolbar logic synced across tab switches (text and PDF)
  • ๐Ÿง  Sidebar toggle and item selection preserve the current active tab
  • ๐Ÿ›ก๏ธ Registration hardened with client+server display name validation
  • ๐Ÿ“› Display names must be 3โ€“30 chars and reject gibberish, repetition, and reserved words
  • ๐Ÿšซ Disposable email addresses are now blocked at signup
  • ๐Ÿ–๏ธ New zoomable canvas with stylus/touchpad/finger drawing support
  • ๐Ÿ“ Smart line scaling: stroke thickness remains visually stable at any zoom level
  • ๐Ÿ“„ PDF annotation tools improved with eraser, box erase, and undo
  • ๐Ÿ“ค Drag-and-drop PDF upload replaces old version and updates cache
  • ๐Ÿ“ด Enhanced offline support with version-aware Service Worker caching
  • ๐Ÿ” Fully redesigned login system with session + persistent token support
  • ๐Ÿงผ Automatic cleanup of duplicate session tokens per browser/device
  • ๐Ÿ“ฒ Login sessions display OS, browser, and device type in plain English
  • ๐Ÿ—‘๏ธ Logout panel with option to revoke specific sessions or all devices
  • ๐ŸŸข Active session is visually highlighted ("This browser") and non-revocable
  • ๐Ÿ›‘ Session versioning prevents reuse after remote logout
  • ๐Ÿ” Persistent tokens auto-renew upon reuse (rotation + expiry refresh)

๐Ÿงฉ Enhancements (May 2025)

  • ๐Ÿงผ Box eraser with live preview overlay (dashed rectangle)
  • ๐Ÿง  Undo stack per page for annotation edits
  • โœ๏ธ Stylus, finger, and touchpad drawing supported across platforms
  • ๐Ÿ“„ Annotations saved per page and persist across sessions
  • ๐Ÿ“‰ Smart zoom & pan support while drawing (touch-action tuning)
  • ๐Ÿ•Š๏ธ Missing annotation files return silently โ€” avoids error logging
  • โšก Fast overlay rendering even without existing annotations
  • ๐Ÿ“ฑ Scroll-to-bottom bug fixed on long PDFs
  • ๐Ÿ“ Line width auto-scales with zoom for better visual consistency
  • ๐Ÿงญ Sidebar auto-collapses on iPads in portrait mode
  • ๐Ÿ‘“ Dual textarea display enabled for screens wider than 1000px
  • ๐Ÿ“ In edit mode, original (readonly) textarea auto-hides
  • ๐Ÿ” Sidebar and tab state preserved across navigation
  • ๐Ÿ›ก๏ธ Role-based drawing control (e.g., viewer cannot annotate)

๐Ÿงฉ Enhancements (Jun 2025)

  • ๐Ÿ” Session-based token management (temporary vs persistent) now unified
  • ๐Ÿง  Logout preserves referrer logic โ€” returns to current list or root
  • ๐Ÿ“› Improved session labeling: includes IP, device type, and expiration
  • ๐Ÿ“„ Cleaner device session rendering using parsed User-Agent summary
  • ๐Ÿงฉ Revoke session UI grouped and styled consistently with form behavior
  • ๐Ÿ”ด Unread message count shown per list โ€” updates in real time
  • ๐Ÿ”ด Clickable badge opens the chat directly from the list
  • ๐Ÿ”” 'New messages' alert shown in chat when user scrolls up
  • ๐Ÿ’ฌ Messages aligned left/right based on sender identity
  • ๐Ÿ“‹ Multi-line messages preserved with proper formatting
  • ๐Ÿ˜Š Emoji insertion via native OS picker
  • โœ๏ธ Input area supports Shift+Enter for newlines (desktop)
  • โณ Auto-scrolls to bottom when new messages arrive (unless scrolled up)
  • ๐Ÿ” Only invited members can see or send messages for a list
  • ๐Ÿฝ Smart menu to select unread list chats (shown when clicking chat tab with unread)
  • ๐Ÿ“ Unread chat selector shows per-list unread counts and current list (if not already listed)
  • โœ… Chat selection clears unread state automatically (badge + backend timestamp)
  • ๐Ÿง  Chat auto-scroll and 'new messages' indicator work seamlessly
  • ๐Ÿ”” Push notifications triggered by messages containing ! or ๐Ÿ””
  • ๐Ÿ”” Push includes list name as title, respects sound + visibility settings
  • ๐Ÿ”” Only subscribed and invited users receive pushes
  • ๐ŸŽต MIDI and MP3 file upload supported per item
  • ๐Ÿ“Œ Pin music players (MIDI or MP3) to float outside panel for persistent playback
  • ๐Ÿ“ค Drag-and-drop music file upload with file type validation and size limits
  • ๐Ÿ“ Uploaded audio filenames preserve Icelandic characters (รญ, รฆ, รถ, etc.)
  • ๐Ÿ—‘๏ธ Delete buttons for music files (visible to owner/admin only)
  • ๐Ÿ”— Soundslice links supported in text โ€” rendered in Music tab automatically
  • ๐Ÿ“ฅ Pinned music players auto-close when switching away from Music tab

๐Ÿงฉ Enhancements (July 2025)

  • ๐Ÿ“บ YouTube links now render embedded video players in the Music panel
  • ๐Ÿ“Œ Floating player logic extended to YouTube, Spotify, MIDI, and audio embeds
  • ๐Ÿง  Music panel parses and displays multiple link types with correct player format
  • ๐ŸŽ›๏ธ Built-in MIDI player redesigned with channel mute, solo (focus), volume sliders, and editable names
  • ๐ŸŒˆ Real-time channel activity pulse visualizations in MIDI player
  • ๐Ÿ“ Channel names are preserved between sessions using metadata storage
  • ๐ŸŽš๏ธ MIDI progress bar supports interactive seeking
  • ๐Ÿ“ Pinning/unpinning or collapsing players no longer interrupts playback
  • ๐Ÿ” All chats are end-to-end encrypted. Only users with list access can read them.
  • ๐Ÿ‘ฅ User avatars displayed next to usernames in user lists
  • ๐Ÿ’ฌ User avatars shown inline with chat messages
  • ๐Ÿ’ฌ Timestamps displayed above each chat message bubble
  • ๐Ÿ‘ฅ โ€œMy Friendsโ€ view shows all distinct chat-connected users across your lists
  • ๐Ÿ‘ฅ โ€œList Chat Membersโ€ allows lazy-loaded viewing of participants per list, including roles and invited users
  • ๐Ÿ”— Share option added to list and item menus, with support for native app sharing and rich previews

๐Ÿงฉ Enhancements (August 2025)

  • ๐Ÿ“„ 'No PDF found' screen redesigned with consistent layout and permission-aware options
  • ๐Ÿ“ฅ In addition to drag/drop and file upload, added support for pasting direct PDF URLs
  • ๐Ÿ” IMSLP search autofills from text subject and reuses a single browser tab

๐Ÿ”ฎ Planned Enhancements

  • Secret list tokens (no login sharing)
  • Expiring share tokens
  • Public list discovery/search
  • Market mode for selling contributions
  • User-specific annotation layers
  • Auto-optimize scanned PDFs (readability + size)
  • Import from IMSLP or public sources (curated, with metadata)
  • Music-sharing hub (public domain sheet music)