Skip to content

v1.4.0

Latest

Choose a tag to compare

@Darknetzz Darknetzz released this 06 Jul 03:18

[v1.4.0] (2026-07-06)

Major Features

  • Output typography – Tool result text is larger app-wide via --rand-output-font-size (1.2rem) on .responseDiv and .copyable-content; redundant per-module inline output font sizes removed.

  • Copyable outputs – Copy/action buttons sit on the right of output text (stacked for multi-action boxes); large split-pane outputs keep a footer bar with right-aligned actions.

  • Demo URL – Centralized DEMO_URL (https://rand.demo.roste.org/) in includes/config.php; dashboard hero, About panel, and README.md point to the live demo host (replacing roste.org/rand).

  • About modal – Navbar About opens a combined modal with About (php-rand version, Docker vs native, PHP version/SAPI, OS, server software, key extension status, full loaded extension list) and Changelog tabs (lazy-loaded on tab switch). Data from about.php / includes/about_info.php. Fixed stuck loading state: discard accidental PHP output in about.php, removed trailing ?> from includes/functions.php, moved Bootstrap modal trigger to the About nav link, and hardened JSON parsing in js/rand.js.

  • String toolsTitlecase / Camelcase use mb_convert_case so all-caps input title-cases correctly; CRLF→LF, LF→CRLF, and Format normalize real line endings (old crlf2lf stripped all breaks); Custom characters remove is implemented; Regex opens the Regex Tester with the current input; case tools use mb_* where appropriate.

  • Docker CI – Fixed invalid secrets usage in step if conditions in .github/workflows/docker-release.yml and .github/workflows/docker-dev.yml by detecting Docker Hub credentials in a shell step and gating publish steps on steps.dockerhub.outputs.enabled.

  • Docker (rolling dev images) – Pushes to the dev branch republish rolling dev and develop tags to Docker Hub and GHCR via .github/workflows/docker-dev.yml (no per-commit image tags). The Dockerfile copies the build context instead of cloning GitHub so CI images match the checked-out branch/tag; .dockerignore excludes local secrets and VCS metadata.

  • jQuery 4.0 – Upgraded CDN dependency from jQuery 3.7.1 to 4.0.0 (full build) in index.php and test_random_buttons.html; updated SRI hash. Migrate 4 audit (test_jquery4_migrate_audit.html) found no compatibility warnings across js/rand.js and modules with inline jQuery handlers.

  • Tool page descriptions – Moved per-tool information alerts into each card as muted description text across tool modules (networking, units, crontab, serialization, shellcheck, validators, text/data tools, crypto, and others); dashboard “what’s new” banner unchanged.

  • Theme and UI scale preferences – Navbar Settings → Theme (dark/light) and Interface size (compact through extra large) persisted via randUiPrefs (js/rand_ui_boot.js, includes/navbar.php); light-theme polish in style.css.

  • Global UI spacing preference + release guidance – Navbar Settings → Item spacing (Tight/Dense/Standard/Comfortable/Relaxed) persisted via randUiPrefs (spaceScale) and applied app-wide in style.css by scaling common spacing utilities (m-*, p-*, gap-*, g*/gx*/gy*) plus card spacing. Added repository agent guidance in AGENTS.md covering core architecture, mandatory changelog policy, scripted release flow (scripts/release.sh, scripts/extract_changelog_section.sh, scripts/update-release-descriptions.php), and a quick release checklist. Also added an inline quick release checklist comment block at the top of scripts/release.sh.

  • Spin the wheel – Per-item weights with optional even distribution; sector building supports item slicing for long lists; item rows honor the global spacing preference (modules/spin_the_wheel.php, handle_spinwheel()).

  • Clipboard UX – Copy buttons reflect Clipboard API availability (disabled state + tooltip when copy is unavailable); complements the copyable-output layout refresh (index.php, style.css).

  • Syntax validators (many languages) – New Miscellaneous → Validators checks pasted content without executing it. Kinds: JSON (json_decode + JSON_THROW_ON_ERROR), YAML (symfony/yaml), XML (DOM parse), INI (parse_ini_string), JSON Lines (per-line JSON, capped line count), cron (shared cron_parse_expression_fields() with the Crontab tool / dragonmantank/cron-expression), PHP (php -l, optional <?php prepend for snippets), Python (ast.parse via python3/python), Ruby (ruby -c), JavaScript (node --check), shell (bash -n / sh -n when available). Handler handle_syntax_validate, logic in includes/syntax_validate.php, UI in modules/syntax_validate.php and embed modules/validators.php. Layout/help copy refined for clarity; help panel aligned with sibling cards.

  • Navigation (Misc)ShellCheck and Validators are separate items under Miscellaneous. ShellCheck stays modules/shellcheck.php; Validators is syntax-only and embeds the validator section.

  • Text & Data toolsURL encoding (RFC 3986 via rawurlencode / decode preview), HTML entities (encode, decode, both, or auto from content), Levenshtein distance with tunable insertion/replacement/deletion costs (PHP length limits documented in UI), Metaphone (word keys), Minify JS/CSS via matthiasmullie/minify plus light HTML whitespace cleanup. Handlers and navbar entries in includes/handlers_functional.php / includes/navbar.php; modules urlencoding.php, htmlentities.php, levenshtein.php, metaphone.php, minify.php.

  • Logo generatorCircle / rounded-rectangle output uses logo_apply_shape_alpha_mask() so transparency matches the shape (fixes incorrect white fill from the old merge path). Font picker uses logo_discover_font_files() (.ttf and .otf under fonts/); bundled DejaVu TTFs; labels strip extensions. Font size 12–400 px with number + range slider kept in sync; presets call syncFontSizeUi(). Default background #000000; border row and “Text transform” section reorganized in modules/gen_image.php.

  • Logo generator (follow-up)Export as PNG / WebP / JPEG (logo_build_raster_data_uri(), JPEG flattened onto background color). Multiline text (textarea, 500 chars), word-wrap, optional autofit (binary-search font size to inner box), nudge X/Y offsets, per-color shuffle buttons beside each swatch, instant preview (0 ms debounce + textarea in delegated events). Layout helpers: logo_wrap_paragraph, logo_build_wrapped_lines, logo_autofit_font_size, logo_draw_ttf_text_block in includes/handlers_functional.php.

  • Crontabcron_parse_expression_fields() in includes/tooling_helpers.php centralizes expression validation, @reboot, and CronExpression construction for both the explorer and syntax validator. UI: layout tweaks and diff output styling (modules/crontab.php, style.css).

  • Docker – Image installs python3 so Python (and related CLI checks where applicable) work in containers.

  • Random data (syntax validator)js/rand.js: shuffle for language (#syntaxValidateKind) vs sample textarea; samples follow the active kind with avoid-repeat keys.

  • Config & repo hygieneAPP_ROOT set with dirname(__FILE__, 2) in includes/config.php. .gitignore no longer ignores scripts/ (release tooling tracked). README.md feature list reorganized (e.g. cryptography, text & data, misc tools).

  • Release automationscripts/release.sh rotates [Unreleased], bumps docker-image.config, optional commit/tag/push, GitHub release, Docker publish; scripts/extract_changelog_section.sh and scripts/update-release-descriptions.php support changelog/release descriptions.

📋 Detailed Changes (click to expand)

Syntax validation

  • Dependenciescomposer require symfony/yaml (^7.x); YAML lint binary under vendor/ as shipped by the package.
  • Registrysyntax_validatehandle_syntax_validate() in includes/handlers_functional.php (lazy-loads includes/syntax_validate.php).
  • Limits – Input length capped (e.g. 200k characters); JSON Lines capped per syntax_validate_jsonl_max_lines().
  • Privacy copyindex.php privacy modal lists server-processed tools without a separate “validators” top-level line (validators under Misc).

Navigation and modules

  • includes/navbar.php – Misc: shellcheck, validators; Text & Data entries for new tools as applicable.
  • modules/validators.php#validators shell; embeds syntax validator via $validatorsEmbed so nested panels are not hidden by global .content toggling in js/rand.js.
  • modules/syntax_validate.php – Embed mode (<section class="validators-block">) vs standalone #syntax_validate for load_module.php?module=syntax_validate.

Random data (js/rand.js)

  • SYNTAX_VALIDATE_KIND_OPTIONS – Language-only shuffle pool.
  • SYNTAX_VALIDATE_SCENARIOS – Per-kind samples; textarea shuffle uses the selected kind (syntaxValidateContent_<kind>, avoid-repeat).
  • addRandomDataButtons – Includes #syntaxValidateKind; titles distinguish language vs sample actions.

Docker

  • Dockerfileapt-get install adds python3 alongside shellcheck and openssh-client.

Dependencies (composer.json)

  • symfony/yaml, matthiasmullie/minify (and transitive path-converter) for the features above.

Styling

  • style.css – Adjustments including Crontab / diff presentation, light theme, copy-button tooltips, and spacing scale utilities.

Spin the wheel

  • modules/spin_the_wheel.php – Weight inputs, even-distribution toggle, weighted random selection, and canvas sector layout for large item sets.
  • includes/handlers_functional.phphandle_spinwheel() returns weighted pick results aligned with client-side animation.

UI preferences

  • js/rand_ui_boot.js – Early-load randUiPrefs (theme, uiScale, spaceScale) applied before paint.
  • includes/navbar.php – Settings dropdown for theme, interface size, and item spacing.

Other

  • modules/currency.php, modules/units.php – Minor copy or wiring updates where touched for consistency.

Add entries here during development; rotate into a dated release section when tagging.