tools.mathspp.com colophon

The tools on tools.mathspp.com were mostly built using AI-assisted programming. This page lists 28 tools and their development history.

This page lists the commit messages for each tool.

#

html-to-markdown-clipboard

View code

Turn rich HTML from your clipboard into clean Markdown. Click the paste button to pull HTML or plain text from the clipboard, and the tool immediately converts it to Markdown with a one-click copy button.

Development history (1 commit)
3446272 January 15, 2026 09:31

Add Clipboard HTML → Markdown tool (#111)

Motivation

  • Provide a simple standalone tool that lets users paste rich HTML from the clipboard and get equivalent Markdown, with one-click paste and copy actions.

Description

  • Add html-to-markdown-clipboard.html, a self-contained UI that uses the turndown CDN to convert HTML to Markdown and exposes Paste from clipboard and Copy Markdown buttons that use navigator.clipboard.read and navigator.clipboard.writeText respectively.
  • Add html-to-markdown-clipboard.docs.md with a short description for the new tool.

Codex Task

#

vscode-to-beehiiv

View code

Convert Markdown copied from VS Code into Beehiiv-ready rich HTML, with a one-click clipboard copy.

Development history (2 commits)
87c511e January 11, 2026 16:01

Add VS Code to Beehiiv conversion tool (#109)

Motivation

  • Provide a small standalone HTML tool that converts Markdown pasted from VS Code into the rich HTML Beehiiv expects so it can be pasted directly into the Beehiiv editor.
  • Support common Markdown features such as links, bold, italics, inline code, and fenced code blocks while preserving language classes for syntax highlighting.
  • Offer a one-click Copy to clipboard action that writes both text/plain and text/html clipboard representations for seamless pasting into Beehiiv.

Description

  • Add vscode-to-beehiiv.html implementing a UI with a Markdown input, Beehiiv HTML preview, and an output textarea, and add vscode-to-beehiiv.docs.md documenting the tool.
  • Convert Markdown to HTML with marked.parse, parse it with DOMParser, and assemble Beehiiv-ready blocks that include data-id, optional data-pm-slice on the first paragraph, and a style string (BLOCK_STYLE).
  • Normalize anchors to include target="_blank", rel="noopener noreferrer nofollow", and class="link", and normalize code classes by replacing language-py with language-python.
  • Implement clipboard copy via navigator.clipboard.write with a ClipboardItem containing both text/html and text/plain, and handle paste events by reading text/plain from the clipboard into the editor.

Testing

  • Started a local server with python -m http.server 8000 to serve the new HTML file, which successfully began serving files.
  • Attempted to use Playwright to open the page and capture a screenshot, but the Playwright runs timed out and did not complete (failed).
  • No other automated tests were executed against the static HTML tool; clipboard interaction could not be validated due to browser automation timeouts.

Codex Task

ea6b99a January 15, 2026 09:21

Fix beehiiv heading conversion (#110)

  • Beehiiv expects real heading tags with anchor metadata instead of paragraphs containing bold text for headings.
  • The previous conversion produced <p><strong>…</strong></p> for #/##/... headings, which did not match Beehiiv rich media output.

Description

  • Update vscode-to-beehiiv.html to emit actual heading tags (<h1><h6>) instead of paragraph wrappers for markdown headings.
  • Add HEADING_STYLE derived from BLOCK_STYLE and set Beehiiv-specific attributes on headings: data-id, id, data-anchor, data-anchor-title, data-anchor-id, data-anchor-title-sync, and data-anchor-id-sync.
  • Preserve heading content with innerHTML and set data-pm-slice="1 1 []" on the first block to match Beehiiv slice behavior.
  • Keep existing handling for paragraphs, lists, code blocks, and link attributes unchanged.

Codex Task

#

brainfuck-interpreter

View code

Write and run brainfuck programs in the browser with a CodeMirror editor. Provide input as ASCII or comma-separated integers, then view the ASCII output and raw byte values after execution.

Development history (9 commits)
16223f3 December 19, 2025 00:13

Add brainfuck editor and interpreter tool (#92)

  • add a CodeMirror-based UI card for writing and running brainfuck programs with configurable input modes
  • implement a browser brainfuck interpreter that wraps cell values, extends the tape, and handles EOF input as zero while showing ASCII and byte outputs
  • document the new brainfuck interpreter tool

Codex Task

f86e94a December 19, 2025 14:26

Add save button and empty default for brainfuck editor (#95)

  • load and save brainfuck programs in local storage with autosave and an explicit Save button
  • default to an empty editor when no stored program exists
  • show status messaging when programs load from storage or when saving fails

Codex Task

cea47cb December 19, 2025 16:49

Stop altering cell value on EOF in brainfuck input (#96)

  • replace the single-line program input with a multiline textarea so inputs can include new lines
  • update helper copy and placeholders to reflect the multiline ASCII input support
  • avoid changing the current cell when no further input is available (EOF)

Codex Task

1fb7fed December 19, 2025 17:13

Fix radio alignment in brainfuck interpreter (#97)

  • prevent brainfuck input-mode radio buttons from inheriting full-width input styles
  • keep the radio controls sized to their content so labels align correctly

Codex Task

85d56b1 December 20, 2025 19:24

Add sharing and copy actions to brainfuck editor (#98)

  • add Copy code and Copy permalink buttons alongside Save and Run
  • allow encoding the editor program into the URL hash and restore it into local storage on load
  • provide clipboard helpers for copying code and shareable URLs from the editor

Codex Task

8f2f56b December 28, 2025 15:07

Add timeout safeguard and debug info to brainfuck runner (#103)

  • add a 3-second execution timeout to the brainfuck runner
  • surface debug info (tape length, pointer position, nearby cells) when a timeout occurs
  • preserve status formatting for multiline debug messages

Codex Task

0cc0bac December 28, 2025 15:21

Add configurable fail-safe controls to brainfuck interpreter (#104)

  • add a fail-safe settings card with configurable timeout, tape length limit, and a disable toggle
  • persist fail-safe preferences in localStorage and apply them on load
  • enforce the configurable guard rails during program execution with clearer error reporting

Codex Task

43184f5 January 03, 2026 22:09

Show output live in brainfuck runner (#107)

  • stream output directly to the UI on each . instruction without buffering or yielding

Codex Task

fe1b57d January 04, 2026 14:54

Make brainfuck interpreter updates asynchronous (#108)

  • allow the interpreter loop to yield to the browser for live UI updates
  • clear status messages and outputs before each run so the UI refreshes cleanly

Codex Task

#

gif-rounded-corners

View code

Upload a square GIF, set a corner radius, and download the animation with transparent rounded corners. The tool masks each frame so anything outside the radius becomes fully transparent while preserving the GIF's timing.

Development history (3 commits)
eab173d December 30, 2025 10:12

Add GIF rounded corners tool (#105)

  • add a standalone GIF Rounded Corners tool with upload, radius selection, and download
  • process GIF frames to apply a transparent rounded mask while keeping animation timing
  • document the new tool for the site index

Codex Task

e6566fa December 30, 2025 10:25

Update gif-rounded-corners.html

15f7da7 December 30, 2025 23:46

Fix gifuct loading for rounded GIF tool (#106)

  • switch the GIF rounded-corners tool to the gifuct-js dist build to avoid the exports reference error in browsers
  • add a runtime guard that surfaces a clear error if the gifuct parsing globals fail to load

Codex Task

#

image-alt-text-extractor

View code

Surface the original ALT text that came with an image you paste, drop, or grab directly from your clipboard, and let you know when no ALT metadata is available.

Development history (2 commits)
aafc365 December 22, 2025 18:38

Read ALT metadata from clipboard instead of generating captions (#101)

  • update Image Alt Text Extractor to surface existing ALT metadata from pasted or clipboard images
  • remove on-device caption generation and report when no ALT text is present
  • improve status messages and clipboard paste handling while keeping image preview and copy actions

Codex Task

086d1db December 28, 2025 15:04

Show alt text above image preview (#102)

  • reorder the preview layout so the ALT text textarea sits above the image preview
  • keep copy and clear actions paired with the ALT text block while maintaining existing functionality

Codex Task

#

erepublik-air-damage-calculator

View code

Calculate expected air battle damage in eRepublik with inputs for rank, energy, weapons, boosters, protector level, and relevant bonuses.

Development history (19 commits)
b53a2a6 December 12, 2025 16:32

Add eRepublik air damage calculator (#68)

  • add standalone eRepublik air damage calculator tool following repository template
  • implement responsive form for energy, rank, weapon, protector level, boosters, and bonuses
  • display live damage totals with breakdown of calculation factors

Codex Task

c0e2bd0 December 12, 2025 18:10

Use hits label in damage breakdown (#69)

  • replaced the rank options with the full official eRepublik air ranks, shown in descending order with Air Commodore selected by default.
  • updated the damage calculation to use each rank’s official influence percentage and reflect it in the breakdown.
  • updated weapon damage multipliers so each weapon tier (none through Q5) applies the correct official bonus and integrates into the damage calculation.
  • update the damage breakdown to describe the hit count instead of energy chunks

Codex Task

2de318c December 12, 2025 19:07

Fix air rank damage multiplier (#70)

  • fix computation of damage increase by rank

Codex Task

6cc5b27 December 12, 2025 19:14

Tweak rank formula.

458e696 December 12, 2025 22:37

Add manual energy status indicator for consumables card (#71)

  • add a status banner to the consumables card that communicates when manual energy entry disables consumable inputs
  • show a warning style when energy is set directly and clear consumable inputs to reflect that state

Codex Task

803fd36 December 12, 2025 22:45

Update UI.

691a587 December 12, 2025 23:49

Add influence calculations to air damage tool (#72)

ed80777 December 12, 2025 23:57

Add rank indicator and booster selection (#73)

  • add rank readout below the damage indicator that scales from 10% of damage with an optional booster
  • provide a rank booster dropdown alongside other multipliers in the calculator form
  • compute boosted rank totals while keeping influence and damage calculations intact

Codex Task

2e67463 December 13, 2025 09:55

Swap influence and rank outputs (#75)

  • swap the influence and rank sections in the result display so influence appears before rank
  • use native title tooltips for formulas

Codex Task

0d7f1a8 December 13, 2025 13:11

Persist rank and level 100 selections (#78)

  • add safe localStorage helpers to persist user rank and level 100 selections
  • load saved rank and level 100 preferences on page load to override defaults
  • save updated values back to storage when the user changes their selections

Codex Task

44b93d3 December 13, 2025 13:28

Add dynamic formula tooltips for air damage results (#79)

  • replace inline formula breakdowns with dynamic tooltips tied to the latest calculations
  • add a popover tooltip triggered by the question mark icon for readable formula details
  • keep tooltips updated on each input change for final damage, influence, and rank points

Codex Task

ad8bac0 December 13, 2025 13:44

Update air damage calculator.

More compact UI.

2e2afe5 December 16, 2025 08:55

Add time estimate and damage accelerator options (#87)

  • show an estimated time to deal damage with matching tooltip behaviour
  • allow selecting a damage accelerator that speeds up hit rate for the time estimate

Codex Task

d3e08d4 December 16, 2025 09:37

Add snow fight token bonus option (#88)

  • add checkbox to toggle the active snow fight token bonus
  • apply a 10% multiplier to damage calculations when the token is active
  • include the new bonus in the displayed damage formula breakdown

Codex Task

6c33919 December 16, 2025 09:43

Add contact card to air damage calculator (#89)

  • add a short contact card to the air damage calculator with a link to rodrigogs' profile

Codex Task

05866d9 December 16, 2025 09:51

Update time estimate label and rounding (#90)

351f1ff December 20, 2025 19:26

Rearrange calculator results layout (#99)

  • add reusable formatter to display deploy time with approximate prefix
  • show sub-minute deploy times in seconds and longer durations in minutes:seconds
  • update tooltip text to reflect the new formatting
  • rearrange the calculator results so final damage is highlighted first, with time, rank, and influence in a responsive row using compact styling

Codex Task

42e3124 December 20, 2025 19:47

Add contextual info panel to air damage results (#100)

  • add a result info section beneath the calculator outputs with smaller helper text
  • compute required weapons or stingers based on selected quality and energy entered
  • surface booster and damage accelerator needs when deploy times exceed their durations

Codex Task

863a06b December 20, 2025 19:59

Update erepublik-air-damage-calculator.html

Number of weapons is computed based on hits.

#

testimonial-card-generator

View code

Generate elegant testimonial cards from text, name, affiliation, and a photo link, then download a transparent PNG sized for social media sharing. Highlight key phrases directly from the testimonial input to emphasize them in the preview and exported image.

Development history (9 commits)
c6544ca December 13, 2025 15:22

Add testimonial card image generator tool (#80)

  • add a testimonial card generator UI that supports text highlights and avatar previews
  • allow rendering the preview to a transparent PNG sized for social platforms and download with a descriptive filename
  • document the tool purpose and capabilities

Codex Task

5d3472c December 13, 2025 15:43

Remove redundant card styling (#81)

  • made the UI look more consistent with other tools
  • remove inline testimonial card styles already covered by the shared stylesheet

Codex Task

414e923 December 13, 2025 16:00

Remove html-to-image attribution text (#82)

  • simplify the UI to have a single “download” button that renders and downloads the image

Codex Task

2d36bb8 December 13, 2025 16:07

Fix script tag for dependency.

bca1d00 December 13, 2025 16:53

Revert inline testimonial changes but keep https for html-to-image (#83)

  • stack UI cards vertically

Codex Task

79ed95d December 13, 2025 18:02

Make testimonial preview responsive (#84)

  • adjust testimonial preview surface to respect responsive widths while keeping the social-media aspect ratio
  • make the inner card width clamp so it scales down on narrow screens

Codex Task

8fae462 December 16, 2025 11:44

Fix testimonial preview sizing (#91)

  • set the testimonial preview surface to a fixed 1200x630 size for social media exports
  • add a scrollable preview container so the form stays responsive even when the preview is wider
  • widen the page shell on large screens to better accommodate the fixed-size preview

Codex Task

c191d8b December 19, 2025 11:00

Stack testimonial generator sections vertically (#93)

  • ensured avatar preview requests use anonymous CORS with no referrer to avoid cross-origin 403 errors when loading external photos.
  • added shared fetch options (CORS mode, no-referrer policy, image-friendly Accept headers) so html-to-image fetches avatars successfully during export.
  • set avatar preview to request images anonymously without referrers to avoid cross-origin 403s
  • provide html-to-image with fetch options and image-friendly Accept headers for rendering
  • arrange the testimonial form above the preview so inputs appear first and the image card sits below

Codex Task

ac7da06 December 19, 2025 11:08

Allow testimonial photo upload or paste (#94)

  • replace the photo URL input with a file picker and paste zone for avatar images
  • add client-side handling for uploaded or pasted images and update preview rendering
  • provide placeholder handling and status messaging for image selection methods
    (not provided)

Codex Task

#

markdown-preview

View code

Create and preview Markdown with live rendering, auto-saved drafts in local storage, copyable permalinks, and quick markdown export.

Development history (3 commits)
ede4c62 December 13, 2025 10:38

Add markdown preview tool (#76)

  • add a markdown drafting tool with preview/edit toggle using marked and DOMPurify
  • enable permalink sharing via base64-encoded query strings and clipboard copy helpers
  • provide quick markdown copying and status feedback

Codex Task

cba583b December 13, 2025 12:15

Adjust markdown preview toolbar layout (#77)

  • Move the markdown preview controls to the top of the editor area
  • Keep the control buttons on a single responsive row with smaller sizing on small screens

Codex Task

598d267 December 16, 2025 08:54

Use URL hash for markdown preview permalinks (#86)

  • load base64-encoded markdown and Python code from the URL hash on page load
  • generate permalinks using the URL hash instead of query parameters

Codex Task

#

python-pastebin

View code

Write or paste Python code into a syntax-highlighted editor with line numbers, then copy a shareable permalink or copy the code itself to your clipboard.

Development history (2 commits)
6c7c7ec December 13, 2025 00:23

Add Python pastebin tool (#74)

  • add a Python pastebin tool with a CodeMirror editor for syntax highlighting and line numbers
  • support copying permalinks by base64-encoding the editor content into the URL
  • add a copy code shortcut for quickly sending the full snippet to the clipboard

Codex Task

598d267 December 16, 2025 08:54

Use URL hash for markdown preview permalinks (#86)

  • load base64-encoded markdown and Python code from the URL hash on page load
  • generate permalinks using the URL hash instead of query parameters

Codex Task

#

workout-exercise-record

View code

Review and update personal-best records for any exercise via the Cloudflare Worker API. Fetch the existing list of best sets, then append new weight and rep combinations to overwrite the record list in one step.

Development history (10 commits)
8f7f9f9 November 27, 2025 17:51

Add workout settings tool and shared navigation (#55)

  • Rebuilt the workouts Cloudflare Worker to follow the provided REST specification with bearer authentication, validated exercise/template/session endpoints, session indexing, and automatic personal-record updates.
  • Added a workout template manager tool that stores API credentials, lists templates, previews details, and creates or deletes templates through the worker API.
  • Introduced new client tools for exercise administration, session logging, session history viewing, and personal-record editing to operate against the updated API.
  • Updated the session viewer to capture API base URLs and bearer tokens, refresh templates, step through session history, and choose comparison sessions using the new navigation and settings controls.
  • Rendered each session with metadata chips, session notes, exercise blocks, and set-by-set delta comparisons to mirror the prior Workout History capabilities on top of the new API responses.
  • Rebuilt the workout template manager UI with stored API settings, template listing and previewing, time estimates, deletion controls, and structured exercise details powered by the Cloudflare Worker API.
  • Enhanced template creation with reorderable exercise blocks, AMRAP/min-max inputs, validation, and refresh after creation to mirror legacy manager capabilities on the new API.
  • Updated documentation to note that the refreshed template manager replaces the legacy Workout Manager tool.
  • Documented that the modern session viewer replaces the old Workout History tool and removed the legacy files accordingly.
  • add a dedicated Workout Settings tool to capture the API base URL and bearer token for all workout utilities
  • remove per-tool authentication inputs in the workout tools while reusing stored credentials (with legacy key fallback) and add consistent cross-links
  • embed a shared navigation card across the workout suite for quick access between tools

Codex Task

ca43b7a November 28, 2025 14:36

Use unified workout API settings (#56)

  • Save and clear the workout API base URL and bearer token only under the shared keys managed by the Workout Settings tool
  • Update all workout tools to read the unified settings without legacy key fallbacks, ensuring they depend on Workout Settings for configuration

Codex Task

7806fc5 November 28, 2025 19:50

Add shared header and footer to workout exercise tools (#59)

  • add the standard tools header and footer to the workout exercise manager page
  • add the standard tools header and footer to the workout exercise records page
  • align introductory text styling with the shared template styles

Codex Task

81c3974 November 28, 2025 21:24

Prune workout exercise records and guard submissions (#61)

  • prevent manual exercise record submissions when an existing record dominates or matches the new one
  • prune exercise record lists in the worker whenever records are updated, keeping only the non-dominated frontier
  • document the pruning requirement explicitly in the worker specification

Codex Task

28b5411 November 28, 2025 22:37

Tweak exercise record form behavior (#62)

  • prevent the exercise dropdown from stretching to fill its grid row
  • reset record inputs when changing exercises
  • simplify record form labels

Codex Task

0573e36 November 29, 2025 17:44

Adjust workout record layout and controls (#64)

  • reorganize the records card with inline dropdown/actions and viewing label
  • show exercise display names only and fetch records via explicit button

Codex Task

a00076d November 29, 2025 18:26

Improve records card layout (#65)

  • realign the Records card header area so the exercise dropdown sits left and the action buttons sit right without wrapping labels
  • wrap the records table in a dedicated row and add a caption that updates to show when records exist or are missing for the selected exercise

Codex Task

e6c07c0 November 29, 2025 18:53

Improve add record layout (#66)

  • restructure the Add record card into dedicated rows for heading, inputs/actions, and status
  • style the form row so weight, reps, and Add record button align neatly while remaining responsive
  • adjust button labeling to better reflect the action

Codex Task

75df87e November 30, 2025 23:39

Add autocomplete datalist for exercise selection (#67)

  • replace the exercise dropdown with a text input backed by a datalist for selection or typing
  • populate the datalist with alphabetised exercise names and retain display names for captions
  • resolve typed exercises when loading or adding records while keeping status updates

Codex Task

357cc76 December 14, 2025 10:36

Improve exercise selection input (#85)

  • add a helper-documented exercise input paired with a datalist dropdown
  • populate both autocomplete options and a browseable select list from exercises
  • keep the manual browse select in sync with the main exercise input for record actions

Codex Task

#

workout-exercise-manager

View code

Create, list, and delete exercises maintained by the Cloudflare Worker workouts API. Store your API settings once, quickly add new exercises by typing their names, and prune entries you no longer use. The tool now turns your typed exercise name into a URL-safe slug automatically while keeping the display name exactly as written.

Development history (6 commits)
8f7f9f9 November 27, 2025 17:51

Add workout settings tool and shared navigation (#55)

  • Rebuilt the workouts Cloudflare Worker to follow the provided REST specification with bearer authentication, validated exercise/template/session endpoints, session indexing, and automatic personal-record updates.
  • Added a workout template manager tool that stores API credentials, lists templates, previews details, and creates or deletes templates through the worker API.
  • Introduced new client tools for exercise administration, session logging, session history viewing, and personal-record editing to operate against the updated API.
  • Updated the session viewer to capture API base URLs and bearer tokens, refresh templates, step through session history, and choose comparison sessions using the new navigation and settings controls.
  • Rendered each session with metadata chips, session notes, exercise blocks, and set-by-set delta comparisons to mirror the prior Workout History capabilities on top of the new API responses.
  • Rebuilt the workout template manager UI with stored API settings, template listing and previewing, time estimates, deletion controls, and structured exercise details powered by the Cloudflare Worker API.
  • Enhanced template creation with reorderable exercise blocks, AMRAP/min-max inputs, validation, and refresh after creation to mirror legacy manager capabilities on the new API.
  • Updated documentation to note that the refreshed template manager replaces the legacy Workout Manager tool.
  • Documented that the modern session viewer replaces the old Workout History tool and removed the legacy files accordingly.
  • add a dedicated Workout Settings tool to capture the API base URL and bearer token for all workout utilities
  • remove per-tool authentication inputs in the workout tools while reusing stored credentials (with legacy key fallback) and add consistent cross-links
  • embed a shared navigation card across the workout suite for quick access between tools

Codex Task

ca43b7a November 28, 2025 14:36

Use unified workout API settings (#56)

  • Save and clear the workout API base URL and bearer token only under the shared keys managed by the Workout Settings tool
  • Update all workout tools to read the unified settings without legacy key fallbacks, ensuring they depend on Workout Settings for configuration

Codex Task

3ffd9fd November 28, 2025 15:07

Auto-generate workout exercise slugs (#57)

  • derive exercise slugs automatically from the provided exercise name and display the generated slug preview
  • ensure the API receives the slug plus the original exercise name as the display value, with input validation
  • update documentation to describe the automatic slug creation

Codex Task

eb3c76b November 28, 2025 17:22

Improve exercise list layout (#58)

  • make exercise list items more compact
  • sort exercises alphabetically by display name and hide slugs
  • update delete messaging to reference display names

Codex Task

7806fc5 November 28, 2025 19:50

Add shared header and footer to workout exercise tools (#59)

  • add the standard tools header and footer to the workout exercise manager page
  • add the standard tools header and footer to the workout exercise records page
  • align introductory text styling with the shared template styles

Codex Task

874bdc7 November 29, 2025 17:30

Tighten exercise list spacing (#63)

  • reduce spacing and padding in the exercise list to fit many items comfortably
  • shrink and soften delete buttons to be less intrusive while keeping clarity

Codex Task

#

workout-session-logger

View code

Log workouts from existing templates served by the Cloudflare Worker. With the API base URL and bearer token saved once in Workout Settings, refresh and choose a template, prefill weights/reps from the latest session, jot progression notes and RIR targets, autosave drafts locally per template, and submit the finished session (with date and overall notes) back to the new /api/templates and /api/sessions endpoints. This replaces the legacy Workout Logger tool that relied on the old API.

Development history (2 commits)
8f7f9f9 November 27, 2025 17:51

Add workout settings tool and shared navigation (#55)

  • Rebuilt the workouts Cloudflare Worker to follow the provided REST specification with bearer authentication, validated exercise/template/session endpoints, session indexing, and automatic personal-record updates.
  • Added a workout template manager tool that stores API credentials, lists templates, previews details, and creates or deletes templates through the worker API.
  • Introduced new client tools for exercise administration, session logging, session history viewing, and personal-record editing to operate against the updated API.
  • Updated the session viewer to capture API base URLs and bearer tokens, refresh templates, step through session history, and choose comparison sessions using the new navigation and settings controls.
  • Rendered each session with metadata chips, session notes, exercise blocks, and set-by-set delta comparisons to mirror the prior Workout History capabilities on top of the new API responses.
  • Rebuilt the workout template manager UI with stored API settings, template listing and previewing, time estimates, deletion controls, and structured exercise details powered by the Cloudflare Worker API.
  • Enhanced template creation with reorderable exercise blocks, AMRAP/min-max inputs, validation, and refresh after creation to mirror legacy manager capabilities on the new API.
  • Updated documentation to note that the refreshed template manager replaces the legacy Workout Manager tool.
  • Documented that the modern session viewer replaces the old Workout History tool and removed the legacy files accordingly.
  • add a dedicated Workout Settings tool to capture the API base URL and bearer token for all workout utilities
  • remove per-tool authentication inputs in the workout tools while reusing stored credentials (with legacy key fallback) and add consistent cross-links
  • embed a shared navigation card across the workout suite for quick access between tools

Codex Task

ca43b7a November 28, 2025 14:36

Use unified workout API settings (#56)

  • Save and clear the workout API base URL and bearer token only under the shared keys managed by the Workout Settings tool
  • Update all workout tools to read the unified settings without legacy key fallbacks, ensuring they depend on Workout Settings for configuration

Codex Task

#

workout-session-viewer

View code

Browse and compare logged workout sessions for any template using the Cloudflare Worker API. Store your API base URL and token, pick a template, move through sessions with previous/next controls, and optionally overlay set-by-set differences against another date to track progress. This replaces the old Workout History tool while using the new API endpoints.

Development history (2 commits)
8f7f9f9 November 27, 2025 17:51

Add workout settings tool and shared navigation (#55)

  • Rebuilt the workouts Cloudflare Worker to follow the provided REST specification with bearer authentication, validated exercise/template/session endpoints, session indexing, and automatic personal-record updates.
  • Added a workout template manager tool that stores API credentials, lists templates, previews details, and creates or deletes templates through the worker API.
  • Introduced new client tools for exercise administration, session logging, session history viewing, and personal-record editing to operate against the updated API.
  • Updated the session viewer to capture API base URLs and bearer tokens, refresh templates, step through session history, and choose comparison sessions using the new navigation and settings controls.
  • Rendered each session with metadata chips, session notes, exercise blocks, and set-by-set delta comparisons to mirror the prior Workout History capabilities on top of the new API responses.
  • Rebuilt the workout template manager UI with stored API settings, template listing and previewing, time estimates, deletion controls, and structured exercise details powered by the Cloudflare Worker API.
  • Enhanced template creation with reorderable exercise blocks, AMRAP/min-max inputs, validation, and refresh after creation to mirror legacy manager capabilities on the new API.
  • Updated documentation to note that the refreshed template manager replaces the legacy Workout Manager tool.
  • Documented that the modern session viewer replaces the old Workout History tool and removed the legacy files accordingly.
  • add a dedicated Workout Settings tool to capture the API base URL and bearer token for all workout utilities
  • remove per-tool authentication inputs in the workout tools while reusing stored credentials (with legacy key fallback) and add consistent cross-links
  • embed a shared navigation card across the workout suite for quick access between tools

Codex Task

ca43b7a November 28, 2025 14:36

Use unified workout API settings (#56)

  • Save and clear the workout API base URL and bearer token only under the shared keys managed by the Workout Settings tool
  • Update all workout tools to read the unified settings without legacy key fallbacks, ensuring they depend on Workout Settings for configuration

Codex Task

#

workout-settings

View code

Set the Cloudflare Worker API base URL and bearer token once for the workout tool suite. Save or clear the stored values in your browser so the template manager, session logger/viewer, and exercise utilities can call the API without duplicating settings.

Development history (2 commits)
8f7f9f9 November 27, 2025 17:51

Add workout settings tool and shared navigation (#55)

  • Rebuilt the workouts Cloudflare Worker to follow the provided REST specification with bearer authentication, validated exercise/template/session endpoints, session indexing, and automatic personal-record updates.
  • Added a workout template manager tool that stores API credentials, lists templates, previews details, and creates or deletes templates through the worker API.
  • Introduced new client tools for exercise administration, session logging, session history viewing, and personal-record editing to operate against the updated API.
  • Updated the session viewer to capture API base URLs and bearer tokens, refresh templates, step through session history, and choose comparison sessions using the new navigation and settings controls.
  • Rendered each session with metadata chips, session notes, exercise blocks, and set-by-set delta comparisons to mirror the prior Workout History capabilities on top of the new API responses.
  • Rebuilt the workout template manager UI with stored API settings, template listing and previewing, time estimates, deletion controls, and structured exercise details powered by the Cloudflare Worker API.
  • Enhanced template creation with reorderable exercise blocks, AMRAP/min-max inputs, validation, and refresh after creation to mirror legacy manager capabilities on the new API.
  • Updated documentation to note that the refreshed template manager replaces the legacy Workout Manager tool.
  • Documented that the modern session viewer replaces the old Workout History tool and removed the legacy files accordingly.
  • add a dedicated Workout Settings tool to capture the API base URL and bearer token for all workout utilities
  • remove per-tool authentication inputs in the workout tools while reusing stored credentials (with legacy key fallback) and add consistent cross-links
  • embed a shared navigation card across the workout suite for quick access between tools

Codex Task

ca43b7a November 28, 2025 14:36

Use unified workout API settings (#56)

  • Save and clear the workout API base URL and bearer token only under the shared keys managed by the Workout Settings tool
  • Update all workout tools to read the unified settings without legacy key fallbacks, ensuring they depend on Workout Settings for configuration

Codex Task

#

workout-template-manager

View code

Manage workout templates stored in the Cloudflare Worker API: configure your API base and token, list all templates, preview their blocks with time estimates, reorder and edit exercise blocks, create new templates, and delete ones you no longer need. This replaces the legacy Workout Manager tool.

Development history (2 commits)
8f7f9f9 November 27, 2025 17:51

Add workout settings tool and shared navigation (#55)

  • Rebuilt the workouts Cloudflare Worker to follow the provided REST specification with bearer authentication, validated exercise/template/session endpoints, session indexing, and automatic personal-record updates.
  • Added a workout template manager tool that stores API credentials, lists templates, previews details, and creates or deletes templates through the worker API.
  • Introduced new client tools for exercise administration, session logging, session history viewing, and personal-record editing to operate against the updated API.
  • Updated the session viewer to capture API base URLs and bearer tokens, refresh templates, step through session history, and choose comparison sessions using the new navigation and settings controls.
  • Rendered each session with metadata chips, session notes, exercise blocks, and set-by-set delta comparisons to mirror the prior Workout History capabilities on top of the new API responses.
  • Rebuilt the workout template manager UI with stored API settings, template listing and previewing, time estimates, deletion controls, and structured exercise details powered by the Cloudflare Worker API.
  • Enhanced template creation with reorderable exercise blocks, AMRAP/min-max inputs, validation, and refresh after creation to mirror legacy manager capabilities on the new API.
  • Updated documentation to note that the refreshed template manager replaces the legacy Workout Manager tool.
  • Documented that the modern session viewer replaces the old Workout History tool and removed the legacy files accordingly.
  • add a dedicated Workout Settings tool to capture the API base URL and bearer token for all workout utilities
  • remove per-tool authentication inputs in the workout tools while reusing stored credentials (with legacy key fallback) and add consistent cross-links
  • embed a shared navigation card across the workout suite for quick access between tools

Codex Task

ca43b7a November 28, 2025 14:36

Use unified workout API settings (#56)

  • Save and clear the workout API base URL and bearer token only under the shared keys managed by the Workout Settings tool
  • Update all workout tools to read the unified settings without legacy key fallbacks, ensuring they depend on Workout Settings for configuration

Codex Task

#

b64-encode

View code

Convert any text into Base64 in the browser. Paste content, click encode to generate the Base64 string, and copy the result with a dedicated button.

Development history (2 commits)
3423d2b November 23, 2025 23:52

Add Base64 encoder tool (#39)

  • add a standalone Base64 encoder tool with textarea input and encode/clear controls
  • display encoded output with clipboard copy button and status updates
  • document the tool in b64-encode.docs.md

Codex Task

a824644 November 25, 2025 14:35

Add shared header and footer to tool pages (#53)

  • add shared site link header and attribution footer to every tool page
  • define reusable header and footer styles in the global stylesheet
  • captured updated screenshots for each tool page

Codex Task

#

colour-translator

View code

Choose a colour through the picker or by typing any supported format and see it instantly translated to hex, RGB, HSL, HSV/HSB, CMYK, CSS/X11 keyword matches, and ANSI names. The ANSI and CSS name fields both auto-complete as you type.

Development history (2 commits)
45d78d1 November 24, 2025 18:41

Refine CSS colour naming inputs (#49)

  • simplify colour input labels and remove extra helper text to tighten form spacing
  • add CSS/X11 colour name datalist autocomplete alongside ANSI suggestions
  • relabel the CSS name field and keep form rows aligned without extra gap

Codex Task

a824644 November 25, 2025 14:35

Add shared header and footer to tool pages (#53)

  • add shared site link header and attribution footer to every tool page
  • define reusable header and footer styles in the global stylesheet
  • captured updated screenshots for each tool page

Codex Task

#

dmarc-analyser

View code

This tool allows quick inspection of a DMARC report so that I can check if my emails are being delivered properly or not.

Development history (4 commits)
ac94cfc November 05, 2025 18:44

Add DMARC analyser.

547e788 November 05, 2025 18:58

Add shared styling and template for tools

2cef1bc November 05, 2025 19:24

Refine shared stylesheet to match mathspp aesthetic

a824644 November 25, 2025 14:35

Add shared header and footer to tool pages (#53)

  • add shared site link header and attribution footer to every tool page
  • define reusable header and footer styles in the global stylesheet
  • captured updated screenshots for each tool page

Codex Task

#

gumroad-links

View code

This tool lets you generate a Gumroad link with query parameters that let the user directly go to checkout, have a pre-selected variant or discount code applied, pick a quantity, and more.

Development history (12 commits)
494b0b3 November 11, 2025 23:04

Add Gumroad link builder tool (#14)

3d840c3 November 11, 2025 23:22

Improve Gumroad link builder inputs (#15)

74e4020 November 12, 2025 00:07

Tweak form.

14b0031 November 12, 2025 00:26

Add Gumroad profile product fetcher (#16)

  • add a fetch button that loads products from a Gumroad profile and surfaces them in the builder UI
  • parse profile pages for product cards to populate a dropdown and sync the selection back into the form
8377e37 November 12, 2025 00:57

Use Cloudflare worker to fetch Gumroad products.

b840639 November 12, 2025 01:03

Update link

4572827 November 12, 2025 01:18

Avoid firing requests in quick succession.

a153035 November 12, 2025 20:13

Fix Gumroad product select names (#17)

  • ensure fetched Gumroad products populate the select option label
  • filter out any products missing a slug when building the dropdown
d96897d November 14, 2025 11:32

Use worker-served HTML to populate Gumroad products (#19)

  • update the Gumroad Cloudflare worker to return cached profile HTML for a username
  • adjust the Gumroad link builder to fetch that HTML and extract product links client-side

Codex Task

ad111e6 November 14, 2025 13:30

Simplify Gumroad links tool and remove fetch worker (#20)

  • simplify the Gumroad link builder UI to synchronise between username, product id, and product URL without fetching
  • remove the gumroad-products Cloudflare Worker and adjust deployment workflow and documentation accordingly

Codex Task

7657b92 November 14, 2025 13:58

Tweak interface.

a824644 November 25, 2025 14:35

Add shared header and footer to tool pages (#53)

  • add shared site link header and attribution footer to every tool page
  • define reusable header and footer styles in the global stylesheet
  • captured updated screenshots for each tool page

Codex Task

#

image-resizer

View code

Resize any PNG, JPEG, or WebP image directly in the browser. Drop or upload a picture, then pick from quick scale presets (0.5×, 1×, 2×) or enter exact width and height targets. The tool keeps the aspect ratio locked by default, pre-fills the inputs with the uploaded image's real dimensions, and lets you download the resized PNG instantly.

Development history (2 commits)
1684f43 November 18, 2025 23:10

Add browser-based image resizer tool (#24)

Summary

  • add a new Image Resizer tool that accepts drag-and-drop uploads
  • provide quick scale presets and manual width/height controls that stay synced with the original dimensions
  • render a live preview and allow downloading the resized PNG output

Codex Task

a824644 November 25, 2025 14:35

Add shared header and footer to tool pages (#53)

  • add shared site link header and attribution footer to every tool page
  • define reusable header and footer styles in the global stylesheet
  • captured updated screenshots for each tool page

Codex Task

#

lifting-max

View code

Estimate your one-repetition maximum from any set by entering the weight lifted in kilograms and the reps completed. The tool applies seven popular strength formulas (Epley, Brzycki, Lander, Lombardi, Mayhew et al., O'Conner, and Wathan), then highlights the median estimate and interquartile range to give a stable suggested 1RM.

Development history (2 commits)
f9b6954 November 19, 2025 23:03

Add lifting max estimator tool (#25)

Summary

  • add a lifting max estimator tool to calculate 1RM using multiple common formulas
  • present median-based suggested 1RM with quartile range and per-formula table
  • include helper copy and documentation entry

Codex Task

a824644 November 25, 2025 14:35

Add shared header and footer to tool pages (#53)

  • add shared site link header and attribution footer to every tool page
  • define reusable header and footer styles in the global stylesheet
  • captured updated screenshots for each tool page

Codex Task

#

pre-fill-testimonial

View code

This tool allows pre-filling the mathspp testimonial form and generate the corresponding URL to make it easier to share pre-filled forms.

Development history (4 commits)
6bc37da October 25, 2025 13:59

Add tool to pre-fill my testimonial form.

547e788 November 05, 2025 18:58

Add shared styling and template for tools

2cef1bc November 05, 2025 19:24

Refine shared stylesheet to match mathspp aesthetic

a824644 November 25, 2025 14:35

Add shared header and footer to tool pages (#53)

  • add shared site link header and attribution footer to every tool page
  • define reusable header and footer styles in the global stylesheet
  • captured updated screenshots for each tool page

Codex Task

#

qr

View code

Create custom QR codes with your own colours and styles. Paste a URL or any text, pick foreground and background colours using hex, RGB, or the built-in picker, and preview the result instantly. The QR code can be downloaded as an SVG or square PNG at 256px, 512px, or 1024px resolutions.

Development history (7 commits)
74b10da October 24, 2025 17:41

Delete Simon's tools.

2fec6e0 November 06, 2025 16:11

Sync colour preview backgrounds

a7e019f November 06, 2025 16:40

Only sync colour picker's background colour with current colour being used.

36444d0 November 06, 2025 17:56

Improve QR tool input handling and downloads

762318b November 07, 2025 21:24

Adjust QR preview layout for mobile and desktop (#8)

On mobile, the QR code preview will now be shown first and then the form to edit the QR code details.

a7876a6 November 07, 2025 22:05

Avoid normalizing QR hex input

As the user was typing a hex code, e.g., abc, the normalisation would automatically update the input field to #aabbcc, preventing you from writing a hex value from start to finish.

a824644 November 25, 2025 14:35

Add shared header and footer to tool pages (#53)

  • add shared site link header and attribution footer to every tool page
  • define reusable header and footer styles in the global stylesheet
  • captured updated screenshots for each tool page

Codex Task

#

social-link-preview

View code

Social Link Preview Inspector audits a URL for metadata that powers link unfurls across major social platforms. Enter a page address and the tool sends the request to a dedicated Cloudflare Worker, which fetches the HTML server-side, extracts the key metadata, and returns a ready-made health report. The frontend renders the worker’s results, listing each guideline with a pass/fail indicator and simulated previews for LinkedIn, X, Facebook, Mastodon, and BlueSky. When served from tools.mathspp.com you can paste site-relative paths and they will be resolved against mathspp.com automatically, making it easy to audit pages from the same domain.

Development history (6 commits)
6674b01 November 08, 2025 21:23

Add social link metadata inspector tool (#10)

f5a0319 November 10, 2025 13:58

Support site-relative URLs in social link inspector (#11)

2f1a62e November 13, 2025 14:37

Route social link preview fetches through Cloudflare worker (#18)

  • add a social-link-preview Cloudflare Worker that fetches page HTML, extracts metadata, and returns guideline results
  • rework the social link preview frontend to call the worker API and render the returned reports
  • document the new worker and hook it into the deployment workflow

Codex Task

98d9453 November 14, 2025 19:20

Fix metadata report row rendering (#22)

Summary

  • render metadata health table cells with DOM APIs instead of innerHTML
  • prevent HTML-like guideline text from breaking general and platform reports

Codex Task

8853a39 November 15, 2025 17:00

Add shareable query support to social preview tool (#23)

Summary

  • add a share button that copies a shareable analysis URL and updates the browser history with the analysed link
  • restore analyses automatically when visiting with a query parameter and keep share controls in sync

Codex Task

a824644 November 25, 2025 14:35

Add shared header and footer to tool pages (#53)

  • add shared site link header and attribution footer to every tool page
  • define reusable header and footer styles in the global stylesheet
  • captured updated screenshots for each tool page

Codex Task

#

url-encode

View code

Use this tool to convert any text into a URL-encoded string. Paste your content, click the encode button, and then copy the encoded output for safe use in query strings or path segments.

Development history (2 commits)
6a2c59d November 23, 2025 23:52

Add URL encoder tool (#40)

  • add standalone URL encoder page with input form and encode action
  • show encoded output with clipboard copy support in a second card
  • document the tool's purpose and usage

Codex Task

a824644 November 25, 2025 14:35

Add shared header and footer to tool pages (#53)

  • add shared site link header and attribution footer to every tool page
  • define reusable header and footer styles in the global stylesheet
  • captured updated screenshots for each tool page

Codex Task

#

video-to-gif

View code

Convert uploaded or dropped video files to GIFs entirely in your browser using FFmpeg.wasm. The resulting GIF keeps the original filename (with a .gif extension) and can be downloaded instantly without any server-side processing.

Development history (7 commits)
b16944a November 24, 2025 16:05

Add video to GIF converter tool (#43)

  • add a standalone video-to-gif tool using ffmpeg.wasm for in-browser conversion
  • allow drag-and-drop uploads, fps/width controls, progress feedback, and downloads using the original filename

Codex Task

6244f3c November 24, 2025 16:13

Update ffmpeg CDN source (#44)

  • switch ffmpeg.wasm loader to the provided cdnjs script with SRI
  • align ffmpeg core path to the matching cdnjs version

Codex Task

c9e87a8 November 24, 2025 16:37

Fix FFmpeg loading and preview cleanup (#45)

  • ensure the FFmpeg core file loads from the correct CDN path so conversions can start
  • manage preview object URLs safely so Safari/WebKit no longer throws blob resource errors

Codex Task

9496303 November 24, 2025 17:25

Refactor video-to-gif for new FFmpeg API (#46)

  • switch the video-to-gif tool to the new class-based FFmpeg API
  • load ffmpeg core assets from the updated jsdelivr CDN path and use the new utility helpers

Codex Task

e42947b November 24, 2025 17:32

Load FFmpeg util via ESM module (#48)

  • load FFmpeg and util packages via ESM imports instead of unavailable UMD CDN bundles
  • simplify FFmpeg initialization to use the imported helpers

Codex Task

b97ba5b November 24, 2025 18:43

Fix ffmpeg imports to use cdnjs (#50)

  • switch the video-to-gif tool to load @ffmpeg/ffmpeg and utils from the cdnjs ESM distribution instead of the failing jsDelivr +esm endpoint
  • reuse the ffmpeg version constant when building the core loader URLs

Codex Task

a824644 November 25, 2025 14:35

Add shared header and footer to tool pages (#53)

  • add shared site link header and attribution footer to every tool page
  • define reusable header and footer styles in the global stylesheet
  • captured updated screenshots for each tool page

Codex Task

#

what-time-is-it-for-me

View code

This tool helps compare a chosen moment across timezones and share it with others. On load, the visitor's timezone is detected via their IP address and falls back to the browser's reported timezone.

By selecting a date, time, and timezone, you can compare it across different timezones. You can also share a link to a fixed date/time/timezone combo so others can see it in their own timezone.

Development history (6 commits)
406566b November 11, 2025 18:03

Add timezone comparison link generator (#12)

9df69f5 November 11, 2025 18:26

Update luxon

3be958f November 11, 2025 18:48

Improve timezone inference and documentation (#13)

baf7475 November 22, 2025 12:48

Revamp time zone cards for sharing view (#31)

Summary

  • Rework the tool into a set of cards including a shared-link preview, base timezone selector, sharing form, and preview table
  • Allow changing the detected base timezone with notes about how it was inferred and update shared conversions accordingly
  • Keep the comparison table empty until populated and improve shareable link presentation

Codex Task

51a3a92 November 23, 2025 09:44

Improve timezone preview controls (#33)

  • remove the shareable link preview card
  • move the add-timezone control so new preview rows can be added
  • keep the comparison table hidden until zones are added

Codex Task

a824644 November 25, 2025 14:35

Add shared header and footer to tool pages (#53)

  • add shared site link header and attribution footer to every tool page
  • define reusable header and footer styles in the global stylesheet
  • captured updated screenshots for each tool page

Codex Task

#

word-counter

View code

Count paragraphs, lines, words, and characters in any pasted text. Paragraph and line totals only appear when there are at least two of each, making it easy to scan longer passages.

Development history (3 commits)
74b10da October 24, 2025 17:41

Delete Simon's tools.

211ad5e November 24, 2025 00:19

Add word counter tool (#41)

  • add a word counter tool with live paragraph, line, word, and character counts
  • hide paragraph and line counts until at least two are present
  • document the new tool

Codex Task

a824644 November 25, 2025 14:35

Add shared header and footer to tool pages (#53)

  • add shared site link header and attribution footer to every tool page
  • define reusable header and footer styles in the global stylesheet
  • captured updated screenshots for each tool page

Codex Task