Status Trio
Status Trio is a native macOS menu bar application that integrates Wi-Fi, battery, and volume into a single compact, configurable menu bar icon. It allows for various custom appearance configurations.
AI translation
Transliterate Bohairic Coptic into Latin or Arabic letters, following Greco-Bohairic pronunciation.
Translation pending
OtherTypeScript · CSSGitHub @markrofailOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
Transliterate coptic text phonetically into english
Translation pending
Taken from the repository README
Loading the full README.
Read the full README ↗Paste Bohairic Coptic and get it back in Latin or Arabic letters, spelled the way it's said in church.
Three readings, one text. Each transliteration runs three Gemini calls in parallel: one at temperature 0 and two sampled at 0.7. lib/merge-readings.ts aligns them word by word and marks only the words they disagree on. The reader taps a mark to choose the version that sounds right.
The jinkim, handled in code. In Latin, the model kept dropping the e that a jinkim stands for, so lib/jinkim.ts writes it into the Coptic before the request is sent (ⲛ̀ⲧⲉ becomes ⲉⲛⲧⲉ, read ente). Arabic skips this step: the marks reach the model untouched, and its instruction writes a jinkim as إ starting a new word.
Measured, not guessed. data/reference.json holds example pairs, which go into the prompt, and held-out pairs, which never do. npm run eval scores every prompt or model change against the held-out set. For Latin, the current setup gets 63% of the held-out lines exactly right and 98.4% of characters. In that run, 4 of its 5 marks landed where the first reading was wrong. Arabic has its own held-out set, 30 pairs taken from the Coptish datastore, and the merged text scores about 90% of characters. That is below the 95% the spec aimed for, and Arabic ships at that level.
Long hymns, bite by bite. A paste of up to 16,000 characters is split into parts of at most 4,000, at a stanza break first, then a line break, then punctuation (lib/split-parts.ts). The reader settles one part and moves on to the next.
Latin or Arabic letters. A switch on the output brings the same Coptic back in Arabic letters, spelled the way Egyptian service books print them.
Free and private. Next.js on Vercel's free tier, gemini-3.5-flash-lite on Gemini's free tier, and no database. The API key stays on the server, and nothing a reader types is stored or logged.
Greco-Bohairic pronunciation, the one used in Coptic Orthodox liturgy, written with plain Latin letters and no accents. The full rules are in lib/prompt.ts. The Arabic spelling follows the Egyptian service books, with its rules in lib/prompt-arabic.ts.
| Coptic | Latin | Example |
|---|---|---|
| ⲏ | ee | ϣⲏⲣⲓ → sheeri |
| ⲱ | o | ⲑⲱⲕ → thok |
| ϧ | kh | ⲉⲧϧⲉⲛ → etkhen |
| ϭ | ch | Ⲡ̀ϭⲟⲓⲥ → Epchois |
| ϫ | j before ⲉ, ⲓ or ⲏ, otherwise g | ϩⲓϫⲉⲛ → hijen, ϯϫⲟⲙ → tigom |
| ⲃ | v, but b at the end of a word | ⲉ̀ⲃⲟⲗ → evol, ⲉⲑⲟⲩⲁⲃ → ethouab |
| ⲭ | k in Coptic words, kh in Greek ones | ⲭⲁ → ka, Ⲡⲓⲭ̀ⲣⲓⲥⲧⲟⲥ → Pikhristos |
| a jinkim on a consonant | an e before it | ⲛ̀ⲧⲉ → ente |
| an overlined name | spelled out in full | Ⲡⲭ̅ⲥ̅ → Pikhristos |
You need Node 20.9 or later and a free Gemini API key from Google AI Studio.
npm install
echo "GEMINI_API_KEY=your-key" > .env.local
npm run dev # http://localhost:3000
npm test # unit tests
npm run eval # scores the held-out pairs with real Gemini calls, so it uses quota
npm run eval -- arabic # the same for the Arabic held-out pairs, also real calls
npm run eval -- three arabic # three Arabic readings, merged, also real calls
npm run extract:arabic # rebuilds data/reference-arabic.json; needs coptish-datastore checked out beside this repo
Found a word spelled wrong? Open an issue with the Coptic, what came back and what you expected.
You can also add it to data/reference.json as a pair: { "coptic": "…", "latin": "…", "split": "heldout" }. Held-out pairs are only used to score changes, so they never leak into the prompt. Mark a pair "example" only when it should teach the model a pattern. Arabic pairs are different: data/reference-arabic.json is generated by npm run extract:arabic, so a hand edit is lost on the next extraction. Put corrections in EXAMPLE_OVERRIDES or EXCLUDED_IDS in scripts/extract-arabic-pairs.ts instead.
Our Coptic heritage, made accessible. Coptish is a project to make Coptic more accessible, so anyone in church can read along, pray along and learn. This transliterator is one part of it.
The code is under the MIT licence. Two things in this repository are not covered by it:
app/fonts/, used with permission, with all rights remaining with its authorspublic/coptish-logo.png and docs/readme/coptish-logo-*.png)