Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
21 commits
Select commit Hold shift + click to select a range
c9f0961
feat: migrate to Astro 7 + Vite 8 + Tailwind 4 + Vue 3
ronaldtse Jul 29, 2026
9ae325a
feat(site): 404 page + QuickBox inline transliteration widget
ronaldtse Jul 29, 2026
a22a36c
feat(site): AsciiDoc content collections for blog + docs (TODOs 51-52)
ronaldtse Jul 29, 2026
d9989c7
feat(site): comprehensive redesign — living type specimen direction
ronaldtse Jul 29, 2026
d999f9b
feat(site): full 287-map catalogue with per-map detail pages
ronaldtse Jul 29, 2026
0f30b35
feat: 117 bundled IR maps + rule viewer + authority pages
ronaldtse Jul 29, 2026
43664ff
feat: 257 bundled IR maps + dep aliases + Unicode boundaries
ronaldtse Jul 30, 2026
e730ca8
feat: 257 IR maps with library aliases + single-pass parallel
ronaldtse Jul 30, 2026
b720b94
feat: 290 IR maps + 97.8% parity — Infinity fix unlocks Arabic maps
ronaldtse Jul 30, 2026
31b64df
feat: redesign — scholarly ink + script mosaic
ronaldtse Jul 30, 2026
e172ea9
feat: adopt original Interscript brand mark + logo teal
ronaldtse Jul 30, 2026
ffefd42
fix: live mosaic + ISO data + broken legacy pages
ronaldtse Jul 30, 2026
b09ef2e
feat: HTTP loader, embeddable widget, compare mode, API playground, s…
ronaldtse Jul 30, 2026
82b6643
feat: Web Worker + batch + detect + scripts encyclopedia + CLI improv…
ronaldtse Jul 30, 2026
d322c2b
feat: REST API + Service Worker + diff viewer + MARC tool + enriched …
ronaldtse Jul 31, 2026
9fa05b2
feat: OpenAPI spec + interactive docs + batch API + subtitles + contr…
ronaldtse Jul 31, 2026
5ad320b
feat: Playwright E2E tests + MapExplorer reactivity + transitive dep fix
ronaldtse Aug 2, 2026
4737091
chore: add test:e2e scripts to package.json
ronaldtse Aug 2, 2026
97fc975
chore: gitignore test-results and playwright-report
ronaldtse Aug 2, 2026
8a5c182
test: add full-map validation covering 14 script families
ronaldtse Aug 3, 2026
1d6c9db
test: 11 edge case E2E tests for demo transliteration
ronaldtse Aug 3, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
4 changes: 0 additions & 4 deletions .babelrc

This file was deleted.

34 changes: 25 additions & 9 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,10 +1,26 @@
tmp
artifacts
node_modules
dist
# Build output
dist/
.astro/

# Dependencies
node_modules/

# Logs
*.log
npm-debug.log*
yarn-debug.log*
yarn-error.log
.idea
public/maps/**
!public/maps/.gitkeep
map/*
!map/.gitkeep

# Environment
.env
.env.production

# Editor / OS
.DS_Store
.idea/
.vscode/
*.swp

# Legacy react-static (kept in _legacy-content for reference)
test-results/
playwright-report/
48 changes: 48 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
# Interscript.org v2

Astro 7 + Vite 8 + Tailwind 4 + Vue 3 islands. Uses `interscript-ts` for live map exploration.

## Status

🚧 **Under active development.** Replaces the legacy `interscript/interscript.github.io` react-static site once feature parity is reached.

## Stack

- **Astro 7** — static site framework
- **Vite 8** — bundler
- **Tailwind 4** — styling (CSS-first config via `@theme` in `src/styles/global.css`)
- **Vue 3** — interactive islands (`@astrojs/vue`)
- **TypeScript 5.6** — `astro check` for type safety

## Development

```bash
npm ci
npm run dev # http://localhost:4321
npm run build # outputs to dist/
npm run preview # preview build locally
```

## Project structure

```
src/
├── layouts/
│ └── Base.astro # HTML shell, nav, footer
├── components/
│ └── MapExplorer.vue # Vue island: live transliteration
├── pages/
│ ├── index.astro # Home
│ ├── maps/index.astro # Map explorer
│ └── docs/index.astro # Docs hub
└── styles/
└── global.css # Tailwind import + theme tokens
```

## Roadmap

See [TODO.complete](https://github.com/interscript/interscript/tree/main/TODO.complete) for the migration checklist from the legacy site.

## License

BSD-2-Clause — Ribose Inc.
77 changes: 77 additions & 0 deletions TODO.complete/01-e2e-tests.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,77 @@
# 03 — E2E tests for interscript.org website

## Priority: P0

## Problem
The website has integration tests (Vitest) that test individual modules,
but no browser-based E2E tests that validate the actual user experience:
loading pages, typing in transliteration inputs, seeing output.

## Solution: Playwright

### Setup
```bash
cd interscript.org
npm install -D @playwright/test
npx playwright install
```

### Structure
```
e2e/
playwright.config.ts
home.spec.ts # Landing page loads, CTA works
detect.spec.ts # Detect panel: input → system suggestion
compare.spec.ts # Compare two systems side by side
batch.spec.ts # Batch transliteration
maps.spec.ts # Browse maps, search, filter
api-docs.spec.ts # API documentation interactive
worker.spec.ts # Web Worker loads and transliterates
```

### Key Test Cases

#### Worker transliteration (critical path)
```typescript
test("worker transliterates Ukrainian", async ({ page }) => {
await page.goto("/")
const input = page.locator("[data-testid='translit-input']")
const output = page.locator("[data-testid='translit-output']")
await input.fill("Антон")
await expect(output).toContainText("Anton")
})
```

#### Map browser
```typescript
test("browse maps by script", async ({ page }) => {
await page.goto("/maps")
await page.click("text=Cyrillic")
await expect(page.locator(".map-card")).toHaveCount.greaterThan(10)
})
```

#### API playground
```typescript
test("API playground returns JSON", async ({ page }) => {
await page.goto("/api")
await page.fill("[data-testid='api-input']", '{"system":"bgnpcgn-ukr-Cyrl-Latn-2019","input":"Київ"}')
await page.click("[data-testid='api-run']")
await expect(page.locator("[data-testid='api-output']")).toContainText("Kyiv")
})
```

### CI Integration
```yaml
# .github/workflows/e2e.yml
- name: Build site
run: npm run build
- name: Run Playwright
run: npx playwright test
- name: Upload report
if: always()
uses: actions/upload-artifact@v3
with:
name: playwright-report
path: playwright-report/
```
85 changes: 85 additions & 0 deletions _legacy-content/docs/Integration_with_Ruby_Applications.adoc
Original file line number Diff line number Diff line change
@@ -0,0 +1,85 @@
= Integration with Ruby Applications

Interscript can be used as a Ruby Gem library to be integrated with other Ruby
applications.

== Gemfile

You need to make sure your Gemfile contains the following lines:

[source,ruby]
----
source "https://rubygems.org"

gem "interscript", "~>2.0"
----

== Requiring

In your codebase, if you don't do `Bundler.require`, you will need to add the
following line:

[source,ruby]
----
require "interscript"
----

== Listing all available maps

To list all available maps, one must execute the following code:

[source,ruby]
----
maps = Interscript.maps
----

`maps` will be an array containing all Interscript maps by their name.

== Transliterating text

To transliterate test using a given map, like `bas-rus-Cyrl-Latn-2017-bss`,
one must execute:

[source,ruby]
----
cache = {}
input = "Хелло"
output = Interscript.transliterate("bas-rus-Cyrl-Latn-2017-bss",
input,
cache)
----

You should preserve the `cache` variable for performance reasons. It is optional,
you don't need to (but should) supply it.

=== Using Ruby compiler

If performance is of utmost performance for your application and you want to
sacrifice a little bit of loading time for much better performance, you can use
`Interscript::Compiler::Ruby` instead of `Interscript::Interpreter` (which is
used by default).

[source,ruby]
----
require "interscript/compiler/ruby"

cache = {}
input = "Хелло"
output = Interscript.transliterate("bas-rus-Cyrl-Latn-2017-bss",
input,
cache,
compiler: Interscript::Compiler::Ruby)
----

=== Transliterating in reverse

To reverse a given string using a map with a name of a form:
`bas-rus-Cyrl-Latn-2017-bss`, change places for Cyrl and Latn.

To reverse a given string using a map with a name of a form:
`var-swe-Latn-Latn-2021`, append `-reverse` to its name.

Please note: this only works for Ruby implementation. Other implementations
depend on the Ruby implementation for the purpose of compilation. For those,
you need to compile the map using the Ruby implementation, but the name has
to be given according to the above hint.
Loading
Loading