Skip to content

Project status and roadmap ​

SahajLipi is an early, MIT-licensed Roman Nepali to Unicode typing project. The repository contains a reusable package, a package website with developer documentation, and a static browser demo that consumes the engine. This page records what exists and what remains before a stable developer release.

Package status ​

The package includes deterministic word/text conversion, 211 starter entries, ordered alternatives, 51 recognized English-spelling loanword stems with 19 finite suffix keys, 12 full English month names and browser adapters. It has TypeScript declarations and no runtime dependencies. Experimental sahajlipi@0.1.0-alpha.4 was published and verified on 2026-10-09. The verified alpha and latest tags both select alpha.4; unversioned npm install sahajlipi selects alpha.4. Pin with npm install --save-exact sahajlipi@0.1.0-alpha.4; the release record identifies its archive, publisher and consumer checks.

AreaCurrent limit
Nepali accuracyThe lexicon is small and the fallback is deterministic. An output may look plausible while spelling the intended word incorrectly. There is no context-aware ranking or population-wide accuracy estimate.
AlternativesExplicit multi-reading entries and their recognized loanword suffix forms return candidates in stem order. The engine does not generate every valid spelling.
Mixed EnglishRecognizable links, ASCII domain-shaped hosts, and ordinary ASCII email addresses stay literal by default in text conversion and attached fields. No address-existence or language detection is performed. Arbitrary English, code, and internationalized addresses need explicit literal handling; the 51 listed loanword stems, their supported suffix forms and 12 month names still convert automatically, including मे for may. Field exclusions, mode switches, and custom entries remain available.
Input surfaceThe reusable adapter supports <textarea> and text/search inputs; one manager can cover marked fields, a page region, or all supported fields in a document, with English fields excluded. The browser guide records automated desktop-engine checks and their environment; injected paste/composition contracts are separate from keyboard flows. Real mobile keyboards, OS clipboard behavior, assistive technology, and framework-controlled fields remain unverified. contenteditable and other input types are unsupported.
Other languagesMappings and lexicon entries are Nepali-specific. No other Devanagari language profile exists yet.
EvaluationThe seed benchmark tracks selected behavior contracts. A separate external word baseline and sentence review queue and a 100-case development review batch exist. The completed source-assisted review admits 86 project development references and excludes 14 cases; there is no representative real-typing accuracy estimate.

The architecture, API reference, and typing reference describe the package as implemented.

Consonant behavior introduced in alpha.2 ​

The behavior introduced in 0.1.0-alpha.2 and retained by alpha.4 displays full bare and final fallback consonants by default: k and ka → क, kr and kra → क्र, kri → क्रि, kar → कर, and shakti → शक्ति. Internal conjuncts form automatically. Backtick or / requests an explicit half form that persists across spaces and punctuation; a following vowel remains independent. Both `= and /= support the explicit joiner behavior. Exact built-in and custom lexicon readings retain priority and supplied Unicode.

Use createEngine({ consonantMode: 'half' }) to retain alpha.1 phonetic fallback endings when adopting alpha.2 or later, passing both converters to DOM fields as shown in the migration recipe. The published npm alpha.1 artifact is unchanged and does not expose this option or the backtick shortcut. The separate dated contract report records full/default and strict half software checks and declared fixture revisions. Before publication, alpha.2 passed 317 Node tests, 160 seed contracts, 66 desktop browser checks, and 11 website checks, plus installed JavaScript and strict TypeScript consumers. These are software and integration checks, without representative linguistic accuracy or physical mobile validation. The historical results below retain their dated scope.

Desktop browser regression checks ​

A separate Playwright suite checks the reusable adapters and selected demo flows in Chromium, Firefox, and WebKit. It uses pinned development dependencies, an isolated local server, and a dedicated GitHub Actions matrix with downloadable HTML/JSON reports and failure traces. The browser compatibility guide records the first dated macOS arm64 run: 36/36 checks across 12 scenarios in Chromium, Firefox, and WebKit, with no failures, skips, flaky outcomes, or retries. Its source hashes, tested versions, commands, and limits are preserved in the desktop-001 record. The core engine remains dependency-free and its Node suite still runs on Node 18; browser tooling needs Node 20 or later.

These checks cover selected desktop keyboard flows and separately labeled injected paste/composition events. They do not establish real mobile keyboard, OS clipboard, installed Safari, assistive-technology, or framework-controlled input support. The historical linguistic benchmark records are unchanged. A separate digit follow-up records 42/42 checks across 14 scenarios per engine, adding digit editing, numeric address cues, Latin configuration, and English exclusions. It preserves the original desktop-001 record and documents its new source separately in desktop-002.

Latest reviewed native forms ​

The later 2026-10-09 native-form batch reviews all 46 word-default mismatches from the preceding spelling baseline. It adds 34 exact complete-key preferences and records 12 deferrals. The maintainer chose महिला first for mahila and शान्त first for shanta, with माहिला and शान्ता as alternatives. angrejharuko uses अङ्ग्रेजहरूको first and अंग्रेजहरूको second, preserving the explicit velar-nasal style. These are project choices, not source frequency findings. The frozen reference arrays and their unspecified preferred readings remain unchanged.

This batch is included in published alpha.4, whose source and verified registry archive have 211 starter entries. The historical alpha.3 package has 177 and excludes these later forms. The release section separates current registry verification from the dated preparation and source-development results. It adds complete forms such as karyaharuma → कार्यहरूमा and samhalnubhaeko → सम्हाल्नुभएको without inferring every native suffix or changing the 51 recognized loanword stems. Ten name-related cases, the header loanword and one printed/indexed plural mismatch remain deferred. The guide records full HTML, visual PDF evidence and indexed-only limits; independent human linguistic review remains pending.

The new comparison improves word defaults 28/74 → 62/74 and individual reference coverage 30/79 → 67/79 on unchanged development references. The same final seed scores 174/209 → 209/209, preserving 174/174 historical contracts and all 176 earlier rows. The 74-word / 79-reference and 12-sentence / 13-reference denominators remain fixed. 12 word defaults and all 12 complete sentences still differ; complete sentences remain 0/12. These selected targets guided implementation, so the result measures development progress, with no representative or independently human-reviewed accuracy claim.

Earlier reviewed native spellings ​

The 2026-10-09 follow-up adds twelve exact native-word preferences and the भाग्न alternative for bhagna, preserving its existing भग्न default. This 13-key slice is published in alpha.3; the dated development comparison below retains its original prepublication source identities. On unchanged development references, word defaults improve 16/74 → 28/74, cases covering all listed alternatives improve 15/74 → 28/74, and individual reference coverage improves 17/79 → 30/79. The same final seed scores 160/174 → 174/174, with both engines preserving all 160/160 historical contracts and all 162 prior fixture rows. Complete reviewed sentences remain 0/12, and 46 admitted word defaults still differ. The source-assisted targets guided the change; no representative accuracy or independent human result is added.

The four-word spelling review added exact aliases for halyo → हाल्यो, nabhani → नभनी, gaunle → गाउँले and dindaina → दिँदैन. Source-assisted reference spellings motivated these entries; that update kept the phonetic fallback, vowel lengths, Shift keys and half-consonant rules unchanged. Custom exact readings still take priority, and native suffix forms are not inferred. The dated report records 137/142 → 142/142 seed contracts, 11/74 → 15/74 word defaults and 12/79 → 16/79 individual candidate references on unchanged development labels; complete sentences remain 0/12. A constructed 11-word conformance sample matched 11/11 on both engines. These results are separate from independent human or representative accuracy claims and from the newer consonant-mode release.

Latest digit rendering ​

The core engine and Nepali-enabled fields now render ASCII digits as Devanagari by default: 123 → १२३, 3.14 → ३.१४, and September 27, 2026 → सेप्टेम्बर २७, २०२६. Recognized address spans retain their original digits; English mode bypasses conversion. Existing Devanagari digits remain unchanged in either configured style. Developers can use createEngine({ digits: 'latin' }) and share both engine functions across an app, page, or selected fields. This option changes digit rendering only and does not parse numbers, convert calendars, or rewrite existing field text. The API configuration, typing reference, and demo guide explain the behavior. The separate digit record scores 119/133 → 133/133 on the revised contracts, discloses seven changed numeric expectations, and verifies 125/125 historical contracts with the explicit Latin option. Older dated results and their fixtures remain reproducible from archived sources.

Earlier mixed-text improvement ​

A shared mixed-text policy now preserves recognizable HTTP(S) and www. links, ASCII domain-shaped hosts, and ordinary ASCII email addresses in whole-text conversion, live typing, paste, and completed composition. It keeps their original spelling, case, and URL suffix punctuation while Nepali around them converts. Preservation begins at http:, https:, www., an ordinary ASCII local part followed by @, or the first letter after a domain dot, without waiting for a complete address. The current raw token lets the adapter restore letters previously shown in Nepali when one of these cues appears during uninterrupted typing. Plain camera and a trailing period still convert; English mode keeps a fragment literal from its first key.

The policy accepts unfinished addresses using ASCII cues with no DNS or public-suffix validation; domain-shaped pani.paani also stays literal. It does not detect arbitrary English or code or fully parse internationalized addresses. Existing controller/manager mode switches support literal English fragments, and fixed-name custom entries provide configured spellings. createEngine({ preserveTechnicalText: false }) disables address preservation while retaining the selected digit style; choose digits: 'latin' as well to restore the earlier ASCII-digit, unprotected-text behavior. convertWord stays a single-word converter. The typing reference, architecture, and demo guide record the scope and punctuation rules. The early-address follow-up records 120/125 → 125/125 on the same expanded software-contract fixture, preserving all previous 119/119 contracts. The first mixed-text result remains a separate dated 110/119 → 119/119 record. This adds no independent linguistic labels or population-wide accuracy claim.

Earlier month-name extension ​

The 2026-09-27 month-name extension adds all 12 full English month names, including january → जनवरी, february → फेब्रुअरी and december → डिसेम्बर. Each has one source-assisted project spelling and supports normal title case. Explicit September and December aliases preserve those familiar forms while the other reserved Shift keys keep selecting sounds. Lowercase custom entries update these aliases unless a separate exact cased override is supplied.

These month entries have their own evidence and regression scope. They do not expand the original 20-loanword pilot or its 34-entry research catalogue, admit independent human-reviewed corpus labels, infer abbreviations or attached suffixes, protect English spans, or convert Gregorian dates to Bikram Sambat. May and may both use मे without context-sensitive English meaning detection. The typing guide and demo show the full list.

Latest loanword suffix update ​

The 2026-10-01 suffix review adds media → मिडिया as the 51st recognized loanword stem, and adds स्कूल as an alternative while keeping school → स्कुल first. A finite rule joins each recognized stem reading to one of 19 supported suffix keys. For example, companyharumathi → कम्पनीहरूमाथि, schoolma → स्कुलमा / स्कूलमा, and mediasanga → मिडियासँग. Exact entries retain priority; recognized custom stem readings propagate to suffix forms. Unsupported suffixes, months, native words and arbitrary new custom stems retain ordinary conversion. These are source-assisted project spelling conventions, without context-sensitive grammar selection or independent human accuracy claims. The dated comparison records 131/137 → 137/137 revised contracts and 8/74 → 11/74 word defaults on unchanged development references; complete sentences remain 0/12. Two prior suffix-fallback expectations are transparently revised, with the historical frozen fixture scored separately.

Earlier loanword expansion ​

The 2026-09-28 expansion review adds company → कम्पनी plus 29 other exact English-spelling project preferences after a source-assisted review. The built-in count at that stage was 50: the original 20 and these 30. The local demo uses the same engine. Sources attest use in specific contexts; this is not a measured frequency ranking or an independently reviewed linguistic corpus. The review also records candidates held for spelling, sense, or input-form decisions. That dated expansion used whole-word matching; the later finite suffix update adds the recognized attached forms. English-only fields and recognized addresses remain literal.

Earlier English loanword pilot ​

The 2026-09-28 loanword coverage audit is a dated pre-expansion snapshot: it checks the original 20 shipped keys and all 14 then-pending catalogue keys, records the former company gap, and defines a review path. The audit itself added no engine defaults or independent human labels.

The 2026-09-27 loanword pilot adds exactly 20 normalized English-spelling keys, including camera → क्यामेरा, computer → कम्प्युटर and school → स्कुल. These defaults are authorized source-assisted project preferences, each with one candidate. At that time, the research catalogue had 34 entries; 14 proposals and all observed variants were pending or deferred. The later expansion reviewed and added 12 of those proposals. This update also makes cha prefer च with छ as an alternative, while chha remains the single छ reading. Reserved Shift keys, custom-entry replacement and the unknown-word fallback retain their existing behavior.

The pilot adds no independent human-reviewed corpus labels, attached forms such as camerako, automatic protection for English spans, or new engine/adapter configuration options. The typing guide, source ledger and benchmark guide separate spelling preferences, evidence and regression results. Historical recorded evidence and metrics remain intact.

Earlier ra-ya improvement ​

The 2026-09-27 ra-ya update adds ten exact word spellings with explicit joiner forms and preserves reserved Shift keys during word lookup. The guide, demo and seed benchmark cover the new preferences and ordinary-conjunct controls. The external dataset result and original 100-case source-proposal agreement remain unchanged.

Following maintainer feedback, six of the original seven unresolved validation tokens are tracked as suspected source misspellings or malformed tokens; dharyo remains contextual because literary usage was found. These source-quality cases establish no converter defect and do not block the targeted change. They remain outside new spelling contracts, with the original records and reported benchmark denominators preserved. These source-assisted changes have no admitted independent human corpus labels. The published 100-case online review makes all draft recommendations and their evidence available separately from the dated benchmark scores; it admits no canonical answers.

Developer onboarding and package validation ​

The getting-started guide covers exact-version npm installation, local archives and public imports. Integration recipes link runnable JavaScript, TypeScript and React uncontrolled-field examples. Fresh alpha.4 registry consumers passed public JavaScript imports/options/isolation, all 34 native reading arrays in both consonant modes, strict TypeScript NodeNext/Bundler fixtures and core tutorial execution, with all 13 installed files checked against the official archive.

Fresh alpha.4 registry-installed vanilla and uncontrolled React examples passed 9/9 checks across Chromium, Firefox and WebKit, with no failures, retries, skips, flaky outcomes or uncaught page errors. The release record and publication JSON separate those postpublication results from alpha.4's 69-check local candidate run and the historical alpha.1/2/3 registry checks. The immutable desktop-001 through desktop-007 records retain their original environments and counts. Controlled fields, physical mobile/IME, SSR/hydration and assistive technology remain unverified.

The release policy and changelog record all published alphas and their evidence. Alpha.4 is published and its official archive and fresh registry-installed consumers are verified. Alpha.1, alpha.2 and alpha.3 remain available with their original artifacts. The 34-form update is shipped in alpha.4 and excluded from alpha.3. Original source measurements and candidate verification remain separate from registry-installed evidence. Independent real-typing review, physical mobile/IME checks and framework-controlled field validation remain outstanding.

Website status ​

The package website introduces the JavaScript library, builds searchable documentation from the existing Markdown, and preserves /demo/ as a separate interactive playground. VitePress produces static HTML, with page titles, descriptions, canonical URLs, social metadata, and a sitemap. The website guide records build commands, artifact publishing, GitHub repository discovery, and the GitHub Pages project-path limits for robots.txt.

GitHub Pages uses the Actions publishing source and the package homepage and documentation are public. The default local demo command builds the same complete website so Home and documentation navigation work. Website publishing is separate from npm publication. Search Console ownership verification and sitemap submission remain post-deployment maintainer tasks; no search ranking or indexing result is claimed. Dated evaluation reports remain unchanged.

Demo status ​

The live demo is a static playground for trying the current package behavior. It adds a candidate dropdown, Nepali/English mode control, mixed-text and form examples, Copy and Clear buttons, a character count, and an on-page typing guide. Its separate guide covers usage, local hosting, and GitHub Pages. The demo is useful for exploration; it is not a browser compatibility certification or a separate conversion engine.

Priorities ​

  1. Develop from the completed review. The source-assisted development review supplies 86 frozen references, 14 documented exclusions and a reproducible baseline. Completed slices cover recognized loanword suffixes, four original native aliases, the 13-key spelling slice shipped in alpha.3 and the 34-key native-form batch shipped in alpha.4. The latter is outside the published alpha.3 artifact and improves 34 of its preceding 46 word mismatches; 12 word defaults and all 12 complete sentences remain. The mahila, shanta and angrejharuko orders are now explicit project preferences. Continue with the deferred name/sense decisions and exact-source gaps, and investigate complete-sentence mismatches while preserving frozen references and key contracts. In parallel, collect consented real typing examples with intended Unicode, valid alternatives and independent human review, reserving a separate held-out set for representative accuracy claims.
  2. Evidence-led spelling expansion. Use the reviewed corpus and observed typing needs to choose lexical entries and broadly valid phonetic changes. Review the remaining loanwords, alternate spellings, and attached forms separately, including the visually attested header → हेडर deferred from the native-form batch. Define an explicit name-vocabulary policy before assigning the deferred proper-name defaults. Collect feedback on the shared technical-text policy before expanding its address scope; arbitrary code and English still require explicit literal handling. Report ambiguity and trade-offs when changing defaults.
  3. Browser input compatibility. Maintain the desktop engine regressions and investigate reported failures. Address the demo startup boundary separately: input entered before its controller starts can remain literal; the navigation test's explicit DOM readiness wait does not change that product behavior. Extend evidence with real mobile keyboards and IMEs, operating system clipboard behavior, assistive technology, and framework-controlled fields before claiming those surfaces are supported.
  4. Developer alpha follow-up. Alpha.4 is published and its official archive matches the retained candidate and merged source. Fresh registry-installed consumers and the GitHub prerelease are verified. Gather integration feedback and continue the 12 deferred cases and remaining sentence mismatches. The dated candidate checks retain 389 Node tests, 209 seed contracts, installed JavaScript/strict TypeScript and retained-archive checks, 69 desktop browser checks and 11 Chromium website checks. Use the release checklist for later prereleases and preserve exact-version installation, migration guidance, dated evidence and known limits.
  5. Other Devanagari languages. Separate language-specific mappings and lexicons from shared conversion and editing mechanics. Add each language with its own reviewed corpus and guide.

These are priorities, not release dates. Any future comparison with other typing tools should use the same published evaluation criteria and distinguish observed results from opinion. No competitor review is included here.

How to assess progress ​

A change is ready for review when it has a reproducible input, expected Unicode output or UI state, a focused regression test, and an explanation of its scope. The benchmark should disclose case counts, provenance, exclusions, and misses alongside any score.

Open source. Nepali first. Experimental developer alpha on npm.