Changelog

What’s new in the toolbox — most recent first.
3 changes

The JSON tool is live: paste messy or pasted data (Python dicts, single quotes, trailing commas, comments, unquoted keys, NaN/Infinity, and more) and it repairs, validates, and reformats it. Choose a pretty, collapsible tree, or minified view with 2- or 4-space indentation; copy or download the result, or copy it as a literal in 13 languages. Repair runs live as you type by default (toggle it off for manual Repair / Shift+Enter), you can drop a file onto the input, and your text and settings persist between visits.

Major

1 change
  • MajorJSON

    New JSON tool: repair, validate, and beautify messy or pasted JSON, with syntax-highlighted pretty, tree, and minified views.

Minor

2 changes
  • MinorJSON

    JSON: copy the parsed value as a code literal in 13 languages (Python, TypeScript, Go, Rust, and more), plus copy/download the formatted JSON.

  • MinorJSON

    JSON: repair runs live as you type (toggle off to run manually with the Repair button or Shift+Enter), accepts dropped files, and remembers your input, view, and indentation.

6 changes

Colors workbench primary selection uses a twelve-step hue dodecagon; step 2 lists discrete solids that pass the strong-anchor bar, chosen by lightness stratum (tint → classic → deep) so options read as deliberate brand primaries—not a bland mid gradient. The Select Primary tab uses a split layout: a sticky guidance rail (live-mapped to hue → tone → committed, check-aware) next to the work area; optional presets get a stable in-page anchor. Hovering and previewing no longer recomputes anchor checks (those refresh after you commit a tone); leaving tone selection (outside the primary card, Change hue, or the floating picker if open) drops back to hue pick and restores the last committed primary. Ring segments and tone bands register clicks reliably, and you always land on the hue step when the card loads.

Minor

5 changes
  • MinorColors

    Colors: Select Primary is a two-column layout on large screens—sticky “what to do now” rail beside the anchor card, synced to the picker (hue / tone / committed) and checklist failures; mobile uses a horizontal strip; optional presets link to a stable #colors-workbench-primary-presets anchor.

  • MinorColors

    Colors: step 2 anchor wedges use a denser hue/sat sweep and stratified picks (light, classic fill, rich, deep) ranked for chroma strength—stronger “fundamental” primaries including darker options when they pass the same preset checks.

  • MinorColors

    Colors: defer “anchor checks” until a primary is committed; ring/tone hover only previews theme. Tone step cancels to the hue ring when clicking outside the primary card (popover clicks excluded) or using Change hue, reverting preview to the saved anchor.

  • MinorColors

    Colors: the hue ring uses twelve evenly spaced anchor angles (0°–330° every 30°) so every color family—including yellow—appears; step 2 still filters to anchor-ready shades so fills stay on-brand.

  • MinorColors

    Colors: step-2 fundamental tones add hard filters: yellow/chartreuse sweeps omit low-L rows, muddy RG≈/crushed-B olives are dropped, fallbacks prefer mid-L golds; hue-aware scoring unchanged; cache revision bumps.

Bug

1 change
  • Colors: hue ring and tone bands respond to clicks again (removed SVG pointer capture that blocked path clicks), outside tone step uses capture-phase pointerdown so “click off” returns to the hue ring, and the picker always opens on step 1 (hue) instead of jumping to tone because a primary was already set.

11 changes

Tree tool: 4-space indentation, smart paste (auto-detects indent style and converts pasted tree-renderer output back to outline form), Tab Lock for literal mid-row indents, and a Formatting popover that consolidates the less-used toggles. Strict trailing-slash handling and tighter name normalization. Plus a new /changelog page with per-entry sections and toolbar filters — search and tool filter focus rings now sit flush with the rounded fields.

Major

1 change
  • Major

    New /changelog page in the sidebar. Releases group into Major / Minor / Bug sections; the toolbar filters by level, tool, and free-text search.

Minor

8 changes
  • MinorTree

    Tree tool: choose 2-space or 4-space indentation via a new width toggle next to Spaces / Tabs.

  • MinorTree

    Tree tool: pasted text is auto-detected (tabs, 2/3/4/8-space) and rewritten in place to match your indent settings.

  • MinorTree

    Tree tool: pasting rendered tree output (unix `tree`, eza/lsd, the Tree tool itself, or ChatGPT) auto-converts back to editable outline form — box-drawing cleaned up, indents re-applied, "N directories" footer dropped.

  • MinorTree

    Tree tool: new Tab Lock toggle — when on, Tab inserts a literal indent at the cursor instead of indenting the row, for in-row alignment without changing nesting.

  • MinorTree

    Tree tool: pasting into an empty scratch pad auto-switches the indent width to match the paste when detection is highly confident.

  • MinorTree

    Tree tool: indent-error messages now name the active width (e.g. "expects multiples of 4 spaces").

  • MinorTree

    Tree tool: toolbar simplified to charset, indent unit, and indent width. Tab Lock, trailing slash, root “.”, and soft-wrap moved into a Formatting popover.

  • Minor

    Changelog page: search and tool filter use an inset focus ring so the highlight follows the rounded corners instead of a rectangular halo behind the field.

Bug

2 changes
  • BugTree

    Tree tool: trailing-slash setting is now strictly honored. Off → no "/" anywhere in output. On → every directory gets one, including empty directories the user explicitly marked with "/" (previously dropped).

  • BugTree

    Tree tool: node names strip any trailing combination of whitespace and path separators on parse. "MyApp /" and "MyApp " both normalize to "MyApp" — no more invisible trailing spaces.

2 changes

Migrated to React Router v7 framework mode (SSR-off prerender). Every tool page now ships its full rendered HTML, so first paint shows the real header, sidebar, and page content instead of a blank shell that hydrates a moment later. Per-route `<title>`, `<description>`, and canonical URLs are driven by each route’s `meta()` export, so search engines and the runtime stay in sync.

Major

1 change
  • Major

    Every tool page now ships its real rendered HTML — first paint shows the header, sidebar, and page content instead of a blank shell.

Minor

1 change
  • Minor

    Per-route `<title>`, description, and canonical URL are driven by each route’s `meta()` export, so search engines and the runtime title stay in sync.

4 changes

Colors workbench: per-role suggestion grid, hover swatch detail with click-to-copy hex/rgb/hsl, light/dark background tile selector, and per-palette preview URLs that ship Open Graph cards. Layout and primary selection now persist across sessions. Sharing a deep link to any tool in Slack / iMessage / Discord / etc. now shows that tool’s own Open Graph and Twitter card.

Major

2 changes
  • MajorColors

    Colors: per-role preset-card suggestion grid (with analogous and complementary hue variants for accent / ring / link), light/dark background tile selector, and per-palette preview URLs.

  • Major

    Per-route Open Graph and Twitter cards: deep links shared in Slack, iMessage, Discord, etc. now preview with that tool’s own title, description, and image.

Minor

2 changes
  • MinorColors

    Colors: each swatch opens a hover card with hex / rgb / hsl rows and click-to-copy.

  • MinorColors

    Colors: layout and primary-color selection persist across sessions.

2 changes

Tree tool indent linting got a major sharpening — the lint catches more real shape problems (mixed tabs/spaces, multi-level indent jumps, double-blank gaps) and the on-row error messaging is clearer. Tab handling cleaned up to feel right in more cursor positions.

Bug

2 changes
  • BugTree

    Tree tool: indent linting now catches mixed tabs/spaces, multi-level indent jumps, and double-blank-line gaps with clearer per-row messages.

  • BugTree

    Tree tool: Tab/Shift-Tab handling cleaned up across more cursor and selection positions.

1 change

Toolbox favicon refreshed with a Lucide-driven SVG plus pre-rendered PNGs at every standard size, with dedicated dark-scheme variants so browser tabs stay legible in both themes.

Minor

1 change
  • Minor

    New toolbox favicon with light and dark variants at 16 / 32 / 48 / 64 px plus an SVG fallback. Browser tabs read clearly in both themes.

3 changes

Initial public launch of tools.singer.cloud: a sidebar-driven toolbox shell with the Time tool (epoch parsing, time-zone conversion, live and analyze modes) and the Tree tool (prototype folder layouts in a scratch pad and watch a clean tree render in real time, with synchronized hover, indent linting, copy, and download).

Major

3 changes
  • Major

    Toolbox launched with a sidebar shell, theme menu, and home grid linking out to every tool.

  • MajorTime

    New Time tool: parse epochs and other date/time formats, convert across time zones, run live or analyze.

  • MajorTree

    New Tree tool: prototype folder layouts in a scratch pad and watch a clean tree render in real time, with synchronized hover, indent linting, and copy/download.