33 Commits

Author SHA1 Message Date
f7d0dfdfb6 feat: UI polish — AI enhancements branding, footer year, admin background fix
- Header: add "+ AI enhancements" italic subtitle below logo
- Footer: update copyright year to 2021–current, add "AI enhancements by Cloud Host" link
- Admin page: wrap all states in pageBg Box so dark-mode background shows correctly

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-10 11:21:34 +01:00
0be8b0b0f0 fix: resolve 422 from Replicate + add local Cog Docker mode
- replicate-translate: parse owner/model:hash correctly — extract only
  the hash portion for the version field, and use the model endpoint
  (POST /v1/models/{owner}/{model}/predictions) which avoids 422
  'Invalid version' errors when sending the full owner/model:hash string.

- Add local Cog mode: when replicateMode="local", calls the local Docker
  container directly (no Replicate API key needed), default endpoint
  http://localhost:5030/predictions (host port 5030 → container port 5000).

- settings-store: add replicateMode ("cloud"|"local") and localEndpoint
  fields with env var fallbacks REPLICATE_MODE and LOCAL_MODEL_ENDPOINT.

- admin panel: Radio selector for Cloud vs Local mode; shows docker run
  command snippet and local endpoint URL field when local is selected;
  hides Replicate API token field in local mode (not needed).

Local model startup:
  docker run -d -p 5030:5000 \
    r8.im/jigsawstack/text-translate@sha256:454df4c...

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-10 08:50:40 +01:00
0799101da3 feat: add admin panel, Replicate AI translation, and document translation
- Admin panel (/admin) with JWT auth: configure Replicate API token,
  JigsawStack API key, model version, enable/disable AI translation,
  change admin password. Settings persisted in data/settings.json.

- Replicate AI translation: POST /api/translate/replicate uses
  JigsawStack text-translate model via Replicate API. Main page
  switches to client-side AI translation when enabled.

- Document translation tab: supports PDF, DOCX, XLSX, XLS, CSV.
  Excel/Word formatting fully preserved (SheetJS + JSZip XML manipulation).
  PDF uses pdf-parse extraction + pdf-lib reconstruction.
  Column selector UI for tabular data (per-sheet, All/None toggles).

- Updated README with full implementation documentation.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-10 07:43:54 +01:00
David
274e7f1a4b Refactor to external scraper and update dependencies (#113) 2022-06-15 23:37:15 +02:00
David
16ab855ccc Updated to new dependencies (#95) 2022-02-24 21:33:17 +01:00
David
5856776785 Default languages with env & langcodes typed (#94) 2022-02-24 19:53:31 +01:00
David
80a925ab4d Save languages to LocalStorage (#52)
* Saving & restoring implemented
2021-10-10 21:45:14 +02:00
David
870ec2db64 Add language endpoint to developer APIs (#41)
* Added languages endpoint and its tests
2021-08-30 21:35:22 +02:00
David
5870e4b096 Add manual translate as default (#33)
* Added translate and switch auto buttons

* Tests updated

* Added hotkey & improved buttons visually
2021-07-12 17:06:27 +02:00
David
bdaced0457 Dependencies updated & small enhancements (#27)
* Dependencies updated and imports shortened

* Head tags refactored

* Final tweaks
2021-06-12 22:44:56 +02:00
David
cf0b310918 Added hotkeys + updated dependencies & webpack5 + humanetech badge (#15)
* Added language & theme switch hotkeys

* Hotkeys testing

* Language switch when equal

* Shortcut keys changed

* Dependencies updated & upgraded to webpack5

* Added HumaneTech badge

* Disabled FLoC
2021-04-30 23:11:26 +02:00
David
a80c177440 Added translator cleanup on logo click (#11) 2021-04-08 22:28:45 +02:00
David
ea8c1bad57 Blocking behaviour while typing fixed + added spinner (#6)
* Some README tweaks

* Next's staticProps blocking beheaviour while typing fixed + Added spinner

* Testing for previous fix

* Faker deprecational update
2021-04-01 15:40:25 +02:00
David
2938f780aa APIs (#3)
* Initial RESTful API

* RESTful API tests

* Scrapping error handling refactored

* Initial GraphQL API

* GraphQL API tests
2021-03-28 23:17:47 +02:00
David
7288e9ace7 Text to Speech (#2)
* Initial TTS scrapping implemented

* Audio & copy buttons added

* TTS langs mapping fix

* Webkit audio api fix

* Added TTS-related testing

* Last tweaks
2021-03-25 16:48:46 +01:00
David
fa178c3d9e SEO & PWA (#1)
* Initial SEO test

* Canonical URL added using envs

* OG & Twitter fix

* Robots.txt & meta added

* Localhost support for canonical url

* Initial PWA version

* Icons reexported & added maskable
2021-03-21 16:02:15 +01:00
David
b87953a34e Manual 'lang' 2021-03-19 00:20:28 +01:00
David
2bc931a4d3 Translation swap added 2021-03-18 23:47:12 +01:00
David
a3ae493c25 Layout extraction refactoring 2021-03-18 14:18:29 +01:00
David
eafad585fc a11y support 2021-03-17 21:30:47 +01:00
David
0646b17c9b Custom error page 2021-03-16 23:58:12 +01:00
David
75757ae5a7 Custom error management & some improvements 2021-03-16 13:23:11 +01:00
David
13877b5e11 Initial theme designed 2021-03-16 01:33:19 +01:00
David
de1aec63d9 Tests for main page 2021-03-13 12:00:41 +01:00
David
17dfdc3214 Tests for translate utils 2021-03-12 16:18:26 +01:00
David
e1fee28805 Logo designed 2021-03-11 21:33:10 +01:00
David
f7897061fc Refactor using hooks rules 2021-03-11 13:29:22 +01:00
David
27ffaa425c Language switch implemented 2021-03-10 21:31:50 +01:00
David
8f33cb92f2 State refactored using reducer 2021-03-10 19:27:36 +01:00
David
61f83278bc Language selection added 2021-03-10 18:15:57 +01:00
David
d5c87d1550 Basic SSG scrapping and client-side routing 2021-03-10 01:16:52 +01:00
David
5a512c3d7f Project setup 2021-03-09 20:34:34 +01:00
David
d39f0ccd51 Initial commit from Create Next App 2021-03-09 20:02:40 +01:00