aboutsummaryrefslogtreecommitdiffstats
path: root/names/translate.js
Commit message (Collapse)AuthorAgeFilesLines
* coinosv3 → 73bffd9: the services run the wallet's current Ark code; ↵Adam Soltys9 days1-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | names/vendor/ goes. The pin had stayed at 082fc2e (Sep 14) while the app's Ark manager moved on — renewals priced at a 300-sat base fee and re-priced on "insufficient refresh fee", expiry-aware coin selection, standing (scheduled) renewals merged by unlock hash, policy-aware freeing of in-flight coins — so the registrar's forwarder float was a month behind the wallets it forwards to. The manager's constructor, the methods the services call (balance, sync, refresh, send, address, createLnInvoice, driveLn, startBoard, pendingActions, htlcClaim, htlcCosignRefund, _key) and the storage contract (load → state or null, save ← state) are unchanged between the two commits, and nothing new is imported from a package the server lacks. names/translate.js imports translate-split.js from the submodule now, as feed/cache.js already did lang-guess.js: the vendored copies were byte-equal to what the pin now carries. The README's note about them goes with them. Resolve-checked every service entry (bun build --target=bun); the moved tests (registry-ownership, public-feed-cache) and the bun-test files (deepl-translate, names/store) pass. Co-Authored-By: Claude Fable 5.1 <[email protected]> Claude-Session: https://claude.ai/code/session_01J1Kon8bxJoHRpJdSzshCkp
* Make this the coinosv3-server repo: the services, with coinosv3 pinnedAdam Soltys10 days1-1/+1
| | | | | | | | | | | | | | | | Carved out of coinosv3 (names, feed, nwcpush, blossom, vmedia, bridge and their tests, with history). The shared wallet code they import (src/ark, noffer, bolt12, popular-feed) now comes from a coinosv3 submodule pinned at 082fc2e, the commit the services have actually run on, so moving here changes no behaviour; bumping it is its own commit. The two text helpers translation uses arrived on the server later than that commit and are vendored under names/vendor at the versions deployed, until the pin moves past them. Root package.json pins the npm versions installed on the server. compose.yml runs names, nwcpush and blossom from this checkout (read-only) with configs and state under $STATE, outside the repo, and pins the Bun image. Co-Authored-By: Claude Opus 5.5 <[email protected]>
* Translation: into the phone's language, and DeepL with your own key. ↵Adam Soltys2026-10-101-0/+41
| | | | | | | isolabellart saw the Translate button but nothing became Italian: the target was the app's language, coinos has no Italian UI (so it ran in English), and the language guess didn't know Italian. Posts now translate into the reader's choice (Settings → Nostr → Translation, any of 31 languages), else the phone's language when the app has no UI for it, else the app's; the guess knows Italian, Dutch and Polish. And, as Jumble offers: a DeepL API key of your own, kept on the device and sent per request as x-deepl-key — the registrar passes it to DeepL (api-free for ":fx" keys; DeepL refuses browsers) and never stores or logs it; a refused key or used-up quota says so once. names: translateDeepl (prose only, links/tags kept, detected source back, 401/402/422 statuses), CORS allows the header. Deployed to cs names. tools/translate-italian-test.js, tools/deepl-translate.test.js. Co-Authored-By: Claude Opus 5.5 <[email protected]> Claude-Session: https://claude.ai/code/session_01Vps2H27rhbG9ZqseGfMrc3
* Translation: a hashtag in a script the reader can't read gets its ↵Adam Soltys2026-10-091-5/+5
| | | | | | | translation in brackets after it — "#総合部絵チャ (…)" — the tag itself kept as the link it is. A post that is only such hashtags now counts as foreign (it was judged by its prose alone, of which it has none, so nothing ever offered to translate it), and ⋯ → Translate on a post with no words says so instead of "already in your language". The registrar's language detection reads the glossed tags too; lang-guess's scriptOf takes a minimum (a two-character tag has a script too). Co-Authored-By: Claude Opus 5.5 <[email protected]> Claude-Session: https://claude.ai/code/session_01Vps2H27rhbG9ZqseGfMrc3
* Translation: posts in another language are shown in yours — "Translated ↵Adam Soltys2026-10-091-0/+82
from Spanish · Show original" under the words, automatic by default for posts the language guess calls foreign (Settings → Nostr → Translation switches it off and leaves a Translate link instead), and ⋯ → Translate for any post. The browser's on-device Translator does it when the language pair is already installed (desktop Chrome); otherwise the registrar's new POST /translate (names/translate.js): a cached, 4-at-a-time front for a LibreTranslate container on cs (names/compose-libretranslate.yml, v1.9.6, 32 languages; none for sw/mr/ta/te, so those readers get no offer). Links, nostr: mentions, :emoji:, #tags and long codes are never sent to the model — only the prose between them, batched in one call (src/translate-split.js, shared). Translations are remembered (coinos-translations, 300). tools/translate-test.js Co-Authored-By: Claude Opus 5.5 <[email protected]> Claude-Session: https://claude.ai/code/session_01Vps2H27rhbG9ZqseGfMrc3