Skip to content

Release v1.2.0 - #14

Merged
brianfunk merged 2 commits into
masterfrom
dev
Oct 6, 2026
Merged

brianfunk merged 2 commits into
masterfrom
dev

Conversation

@brianfunk

Copy link
Copy Markdown
Owner

Promotes dev to master for the 1.2.0 npm release. Contains #12 (1.1.0: forgiving API, language fixes, Netlify playground) and #13 (1.2.0: casing styles, NATO/Morse, scientific, bases, bytes/bits, Unicode digit styles, ancient numerals, formal zh/ja, vinculum Roman, and more).

After merge

git checkout master && git pull
npm publish
git tag v1.2.0 && git push --tags

Checks

  • CI green on Node 18, 20, 22 on the feature branches
  • 788 tests, lint clean, tsc --strict on index.d.ts
  • npm pack --dry-run: 30 files, no site/archive/netlify files
  • Zero runtime dependencies
  • Playground live at https://numberstring.netlify.app

…12)

* feat: forgiving numberstring(), language fixes, Netlify playground (v1.1.0)

- numberstring() accepts negatives, decimals, numeric strings, BigInt and
  a lang option, delegating to negative()/decimal()/toWords(); invalid
  input still returns false
- Fix Spanish cien / un millón, French plural millions and cent mille,
  Italian ventunmila, Japanese 二万一千, Icelandic gender agreement
- Fix decimal(1e21) truncation and parse() accepting 'nineteen eighty-four'
- Add per-language spot-check table (test/languages.test.js)
- Add static playground in site/ with netlify.toml and build script
- Archive the Express server under archive/, drop express/supertest
- Update README, CHANGELOG, CLAUDE.md, AGENTS.md

* chore: npm audit fix dev deps, drop archived server lockfile

* chore: restore lockfile; audit fix pulled vitest past Node 18 engine range

* feat: TypeScript declarations, widen large numbers to BigInt, OG tags on playground

* test: replace 1e400 literal that failed no-loss-of-precision
…inculum Roman, playground polish (#13)

* chore: PNG social preview, og regen script, repo metadata

- Render site/og.png from og.svg (Slack, X, LinkedIn ignore SVG og:image)
- Point og:image / twitter:image at the PNG
- Add npm run site:og (scripts/build-og.sh, headless Chrome)
- GitHub repo description, homepage and topics set via gh repo edit

* fix(site): restore exact ASCII art header from index.js

* fix(site): stop per-line centering skewing the ASCII art

* feat: vinculum notation in roman() up to 3,999,999,999

* style(site): space out roman numerals so vinculum bars stay distinct

* feat: and option, nth(), compact(), fancy(), ancient numerals, formal zh/ja (v1.2.0)

- British 'and' option on numberstring()/ordinal()
- nth(): 1st 2nd 3rd 11th 112th
- compact(): 1.5K 2.3B, digits and long options
- fancy(): circled, superscript, subscript, fullwidth, bold, doublestruck,
  sans, monospace, keycap, braille digit styles
- numerals.js: egyptian, babylonian, mayan, greek, tally
- chinese()/japanese() formal option for 大写 / 大字 financial numerals
- Playground rows for all of the above; ASCII art links home
- Codex fixes: bahasa alias, converter option types, safe hash decode
- Types, README, CHANGELOG 1.2.0, version bump; still zero dependencies

* fix: address Codex review on 1.2.0 features

- compact(): ignore leading zeros when picking a scale; keep 1000Dc at the
  upper bound instead of returning false
- decimal(): forward the 'and' option to the integer part
- chinese(): emit 零 between a higher myriad group and a lower group that
  starts below the thousands place (一万零一), formal and plain

* chore: drop mayan() and tally(); no system font coverage on macOS

* fix(site): show the fraction row for any denominator, not just up to 1000

* fix: compact() promotes sub-thousand values that round to 1000 into K

* feat: nato()/icao/military radio numerals, morse(), telephone oh option

* feat: scientific(), radix/binary/octal/hex, bytes(), clock(); emoji alias; playground tweaks

- scientific(): exact mantissa, unicode/caret/e/words formats, digits rounding
- radix() with binary/octal/hex helpers; prefix, upper, pad options
- bytes(): decimal or binary units, long form
- clock(): clock-face emoji for hours or H:MM
- fancy('emoji') alias of keycap
- Playground: fraction row shows words only, year row from 1, new rows

* fix: Babylonian unit wedge is DIŠ (U+12079), not GESH2; nato() reads all-zero strings digit by digit

* feat: cap casing styles (camel, pascal, snake, kebab, constant, dot, sentence); bits() split from bytes()

* docs: full sweep for 1.2.0 (README at-a-glance table, AGENTS, CLAUDE, CONTRIBUTING, package metadata, site meta, OG image)

* chore: keep .netlify/ out of the npm package

* fix: nato() skips round folding on zero-padded input; bytes()/bits() keep guard digits when rounding; sync lockfile to 1.2.0

* site: single bytes row

* fix: case negative phrases once; integer rounding in bytes()/bits(); CAP_STYLES lists aliases

* feat: fancy('clock') maps each digit to a clock face; playground clocks row

* feat: year() reads years beyond 9999 as cardinals, accepts BigInt

* fix: comma()/group()/lang never throw; comma keeps decimals; add fuzz suite

* fix: clamp digits options to finite integers; formal Japanese zero is 零

* test: non-finite digits falls back to the default
@netlify

netlify Bot commented Oct 6, 2026 •

Copy link
Copy Markdown

✅ Deploy Preview for numberstring ready!

Name Link
🔨 Latest commit da37f20
🔍 Latest deploy log https://app.netlify.com/projects/numberstring/deploys/6ac487b298c4fd0008d80c9c
😎 Deploy Preview https://deploy-preview-14--numberstring.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.
🤖 Make changes Run an agent on this branch

To edit notification comments on pull requests, go to your Netlify project configuration.

@brianfunk
brianfunk merged commit 4d61688 into master Oct 6, 2026
10 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant