Skip to content

feat: Add COP (Colombian Peso) currency support - #521

Merged
BastiOfBerlin merged 2 commits into
spliit-app:mainfrom
albariko97:feature/cop-currency-support
Aug 13, 2026
Merged

feat: Add COP (Colombian Peso) currency support#521
BastiOfBerlin merged 2 commits into
spliit-app:mainfrom
albariko97:feature/cop-currency-support

Conversation

@albariko97

Copy link
Copy Markdown
Contributor
  • Add COP to supportedCurrencyCodes
  • Regenerate currency-data.json with COP for all 23 locales (symbol: CO$, decimal_digits: 0)
  • Fix generateCurrencyData script to output pretty-printed JSON

- Add COP to supportedCurrencyCodes
- Regenerate currency-data.json with COP for all 23 locales (symbol: CO$, decimal_digits: 0)
- Fix generateCurrencyData script to output pretty-printed JSON
BastiOfBerlin pushed a commit to BastiOfBerlin/spliit that referenced this pull request Jun 11, 2026
Port several improvements from upstream spliit-app/spliit:

- Exchange rates: migrate from api.frankfurter.app to api.frankfurter.dev/v1,
  fixing broken foreign-currency conversion (upstream spliit-app#515 / bugs spliit-app#513, spliit-app#514).
- Selectors: wrap category and currency lists in cmdk's CommandList so keyboard
  (arrow-key) navigation works again (upstream spliit-app#491).
- Group sharing: render a scannable QR code of the invite link in the share
  popover via qrcode.react (upstream spliit-app#500).
- Currencies: add COP, VND, MKD, and MYR to the supported list and regenerate
  the per-locale currency data (upstream spliit-app#486, spliit-app#507, spliit-app#516, spliit-app#521).
- React Compiler: enable Next.js 16's stable reactCompiler for automatic
  memoization, adding the babel-plugin-react-compiler dev dependency
  (upstream spliit-app#503).
- Docker build: parse package.json name/version with POSIX tools instead of
  `node -p`, so the image can be built on hosts without Node.js (upstream spliit-app#219).
- Docs: document the Docker Compose workflow and stack in the README
  (upstream spliit-app#505).
BastiOfBerlin pushed a commit to BastiOfBerlin/spliit that referenced this pull request Jun 11, 2026
Port several improvements from upstream spliit-app/spliit:

- Exchange rates: migrate from api.frankfurter.app to api.frankfurter.dev/v1,
  fixing broken foreign-currency conversion (upstream spliit-app#515 / bugs spliit-app#513, spliit-app#514).
- Selectors: wrap category and currency lists in cmdk's CommandList so keyboard
  (arrow-key) navigation works again (upstream spliit-app#491).
- Group sharing: render a scannable QR code of the invite link in the share
  popover via qrcode.react (upstream spliit-app#500).
- Currencies: add COP, VND, MKD, and MYR to the supported list and regenerate
  the per-locale currency data (upstream spliit-app#486, spliit-app#507, spliit-app#516, spliit-app#521).
- React Compiler: enable Next.js 16's stable reactCompiler for automatic
  memoization, adding the babel-plugin-react-compiler dev dependency
  (upstream spliit-app#503).
- Docker build: parse package.json name/version with POSIX tools instead of
  `node -p`, so the image can be built on hosts without Node.js (upstream spliit-app#219).
- Docs: document the Docker Compose workflow and stack in the README
  (upstream spliit-app#505).
@antonio-ivanovski

Copy link
Copy Markdown

The Colombian Peso has already landed as supported to my fork https://github.com/antonio-ivanovski/spliit-cloud give it a try on https://spliit.cloud/

image

@BastiOfBerlin
BastiOfBerlin merged commit 2e385cc into spliit-app:main Aug 13, 2026
BastiOfBerlin added a commit that referenced this pull request Aug 13, 2026
# fix: repair main after the MYR, MKD and COP merges

`main` is currently red. #486 (MYR), #507 (MKD) and #521 (COP) were each
green on their own base, but none of them was rebased onto the branch
that added the Arabic locale (#540). All three hand-edited
`src/lib/currency-data.json` for the 23 locales their branch knew about,
so after the merges `ar` has 31 currencies while every other locale has
34.

`getCurrency()` indexes the union of all locale objects with the union
of all supported codes, so the missing keys break type checking:

```
$ npm run check-types
src/lib/currency.ts(90,5): error TS7053: Element implicitly has an 'any' type because
expression of type '"USD" | "EUR" | ... | "COP"' can't be used to index type '{ ... }'.
  Property 'MKD' does not exist on type '{ USD: {...}; EUR: {...}; ... }'.
```

`npm run check-formatting` fails too, on three files:

```
[warn] src/lib/currency-data.json
[warn] src/lib/currency.ts
[warn] src/scripts/generateCurrencyData.ts
```

## What this PR changes

**1. Regenerate `src/lib/currency-data.json`** with the existing `npm
run generate-currency-data`, so every locale carries every supported
code. Verified: 24 locales × 34 currencies, no gaps.

The only entries that differ from the current `main`:

| Change | Entries |
| --- | --- |
| **added** `MKD`, `MYR`, `COP` to the `ar` locale | 3 — this is the
actual build fix |
| **changed** `MKD` in the other 23 locales | `symbol_native` `ден` →
`MKD`, `symbol` `den` → `MKD`, and `name`/`name_plural` to the
`currency-list` wording |

Worth flagging explicitly: #507 hand-wrote those MKD values rather than
taking them from `currency-list`, so regenerating replaces them. That
brings MKD in line with how every other currency in the file is produced
— after this PR the file is exactly what the generator emits. If you'd
rather keep `ден` as the native symbol, it should go through the
generator (e.g. a small override map) so the file stays reproducible;
happy to add that here if you prefer.

**2. `src/scripts/generateCurrencyData.ts`** — write a trailing newline.
Without it, a freshly generated data file always fails `prettier -c
src`; that missing newline was Prettier's only complaint about the JSON.
The `writeFileSync` call is also wrapped, since #521 left it at 86
characters.

**3. `src/lib/currency.ts`** — restore the indentation of the
`customChoice` ternary in `defaultCurrencyList`. #521 re-indented that
block by two spaces as collateral damage; the contents are unchanged, so
this is formatting only.

`supportedCurrencyCodes` is untouched — MYR, MKD and COP all stay.

## Verification

Full CI sequence from `.github/workflows/ci.yml`, on Node 24:

```
npm ci --ignore-scripts
npx prisma generate
npm run check-types        # silent
npm run lint               # 16 problems (0 errors, 16 warnings) — unchanged from before
npm run check-formatting   # All matched files use Prettier code style!
npx jest                   # 27 tests passed
```

Re-running `npm run generate-currency-data` after the commit leaves a
clean working tree, which confirms the checked-in JSON is exactly the
generator's output and that the trailing-newline fix holds.

## Suggestion

Enabling *Require branches to be up to date before merging* on `main`
would make this class of merge skew fail on the PR rather than on `main`
— all three PRs here passed individually and only conflicted
semantically once combined.

Co-authored-by: Claude <noreply@anthropic.com>
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.

3 participants