# Shuffle Lab Timed, randomized fullscreen image slideshows for drawing practice, presentations, and more. ## What's new in 1.0.4 ### New features - Break system — configurable break frequency, duration presets, custom break duration, fullscreen break overlay with countdown - Infinite time mode — manual-only navigation, no auto-advance, JSON-safe persistence - Settings UI groups with dividers for cleaner layout - Break timer warning color when session will expire mid-break - Disable breaks when Infinite duration is selected, with descriptive warning - Timer display uses adaptive format (s / m:s / h:m:s) ### Bug fixes - Custom duration inputs now capped at 9999s with digits-only validation - End-of-deck screen waits for user input instead of auto-advancing - Session description text updated to reflect breaks in total time calculation ## Features - Fullscreen slideshow with randomized images from any vault folder - Configurable duration per image with presets (30s, 60s, 2min, 5min, custom, infinite) - Loop toggle — choose whether to repeat images or stop when they run out - Session timer with real-time display - Break system — configurable break frequency and duration between images - Intro prompt slide (optional markdown file per folder) - Session logging to prioritize unseen images next session - Language support (desktop only) ## Usage 1. Open **Settings → Shuffle Lab** and set your **Main directory** (the root folder containing your reference image subfolders). 2. Click the shuffle icon in the ribbon or run the **New session** command. 3. Select a folder, adjust settings, and click **Start Session**. 4. Press **Space** to pause/resume, **◀/▶** to navigate, **ESC** to exit. ## Installation ### From Community Plugins (desktop) Search for "Shuffle Lab" in Community Plugins and install. ### Manual / mobile Copy `main.js`, `manifest.json`, and `styles.css` to `.obsidian/plugins/shuffle-lab/` in your vault. ## Localization (desktop only) 1. Navigate to your vault's `.obsidian/plugins/shuffle-lab/lang/` folder. 2. Copy `en.json`, rename it to your language code (e.g. `de.json`). 3. Translate all values (the text after the colons). Keep keys, `{0}` placeholders, and `\n` unchanged. 4. Reload Obsidian, then select your language in **Settings → Shuffle Lab**. The language dropdown only shows `.json` files present in the `lang/` folder. On mobile, the plugin uses English only. ## Contributing ### Bug reports & feature requests Open an issue on the [GitHub repository](https://github.com/Mars-Marcelyn/Shuffle-Lab). Include your platform (desktop/mobile), Obsidian version, and steps to reproduce. ### Translations See [Localization](#localization-desktop-only) above. Submit a pull request with your new `.json` file. ### Code The plugin is a single-file JavaScript plugin (`main.js`) with no build step. To get started: 1. Clone the repo and open in your editor. 2. Make changes to `main.js`, `styles.css`, or `lang/*.json`. 3. Copy the files to your vault's `.obsidian/plugins/shuffle-lab/` folder. 4. Reload Obsidian and test. Pull requests are welcome. Keep changes focused and rebased on the latest `main`. ## License MIT