Changelog
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.
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- BugColors
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.
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.
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.
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 changesTree 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.
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.
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.