🌐 Languages: 🇺🇸 English · 🇪🇹 am · 🇸🇦 ar · 🇦🇿 az · 🇧🇬 bg · 🇧🇩 bn · 🇧🇦 bs · 🇨🇿 cs · 🇩🇰 da · 🇩🇪 de · 🇬🇷 el · 🇪🇸 es · 🇪🇪 et · 🇮🇷 fa · 🇫🇮 fi · 🇫🇷 fr · 🇮🇪 ga · 🇮🇳 gu · 🇳🇬 ha · 🇮🇱 he · 🇮🇳 hi · 🇭🇷 hr · 🇭🇺 hu · 🇦🇲 hy · 🇮🇩 id · 🇳🇬 ig · 🇮🇹 it · 🇯🇵 ja · 🇬🇪 ka · 🇰🇭 km · 🇮🇳 kn · 🇰🇷 ko · 🇱🇹 lt · 🇱🇻 lv · 🇮🇳 ml · 🇮🇳 mr · 🇲🇾 ms · 🇲🇹 mt · 🇲🇲 my · 🇳🇵 ne · 🇳🇱 nl · 🇳🇴 no · 🇮🇳 or · 🇮🇳 pa · 🇵🇭 phi · 🇵🇱 pl · 🇵🇹 pt · 🇧🇷 pt-BR · 🇷🇴 ro · 🇷🇺 ru · 🇱🇰 si · 🇸🇰 sk · 🇸🇮 sl · 🇸🇪 sv · 🇰🇪 sw · 🇮🇳 ta · 🇮🇳 te · 🇹🇭 th · 🇹🇷 tr · 🇺🇦 uk-UA · 🇵🇰 ur · 🇺🇿 uz · 🇻🇳 vi · 🇳🇬 yo · 🇨🇳 zh-CN · 🇹🇼 zh-TW
OmniRoute се испоручује као Progressive Web App која се може у потпуности инсталирати. Када приступите контролној табли из било ког мобилног прегледача — Android (Chrome) или iOS (Safari) — можете да изаберете „Додај на почетни екран“ и добијете искуство налик изворној апликацији, без потребе за продавницом апликација.
Progressive Web App претвара OmniRoute веб-контролну таблу у нешто што изгледа и функционише као изворна мобилна апликација. Након инсталације, она:
- Покреће се са почетног екрана помоћу сопствене иконе
- Отвара се преко целог екрана — без адресне траке прегледача или корисничког интерфејса картица
- Ради ван мреже помоћу наменске странице за повезивање
- Кешира статичке ресурсе ради бржег учитавања
- Подржава и усправну и положену оријентацију
- Отворите OmniRoute контролну таблу у Chrome-у:
http://YOUR_IP:20128 - Chrome ће аутоматски приказати банер „Додај OmniRoute на почетни екран“, или:
- Додирните мени ⋮ (три тачке) → „Додај на почетни екран“ или „Инсталирај апликацију“
- Потврдите упит
- OmniRoute ће се појавити на почетном екрану као самостална апликација
- Отворите OmniRoute контролну таблу у Safari-ју:
http://YOUR_IP:20128 - Додирните дугме Дели (оквир са стрелицом)
- Померите се надоле и додирните „Додај на почетни екран“
- Унесите назив (подразумевано је „OmniRoute“) и додирните Додај
- OmniRoute ће се појавити на почетном екрану са иконом апликације
- Отворите OmniRoute контролну таблу
- Кликните на икону за инсталацију у адресној траци (или ⋮ → „Инсталирај OmniRoute...“)
- Потврдите упит
- OmniRoute ће се отворити као самосталан прозор — без картица и адресне траке
Манифест је конфигурисан помоћу display: "fullscreen", што значи да инсталирана апликација користи цео екран — без интерфејса прегледача и без преклапања са статусном траком. Захваљујући томе, контролна табла заиста оставља утисак изворне апликације.
OmniRoute обухвата service worker (sw.js) који обезбеђује интелигентно кеширање:
| Тип ресурса | Стратегија | Понашање |
|---|---|---|
| Оквир апликације | Прво кеш | /, /offline, манифест и иконе унапред се кеширају приликом инсталације |
| Статички ресурси (CSS, JS, слике, фонтови) | Прво мрежа, уз резервни кеш | Преузима свежу верзију са мреже; користи кеш ако нема мрежне везе |
Next.js пакети (/_next/) |
Прво мрежа, уз ажурирање кеша | Преузима са мреже и ажурира кеш; користи кеширану верзију ако нема мрежне везе |
| Навигациони захтеви | Заобилажење (никада се не пресрећу) | Прегледач управља преласком са HTTP/3 на HTTP/2; неактиван QUIC сокет не сме да постане Response.error() |
API / руте контролне табле (/api/, /a2a, /dashboard) |
Заобилажење (никада се не кеширају) | Увек иду директно ка серверу — service worker их никада не пресреће |
Када мрежа није доступна, а корисник пређе на нову страницу, service worker приказује наменску страницу /offline која:
- Приказује јасну поруку „Проблем са везом“
- Приказује живи индикатор статуса мрежне везе који се ажурира у реалном времену
- Садржи дугме „Покушај поново да се повежеш“ за поновно учитавање када се веза успостави
- Садржи везу до странице статуса ради дијагностике
OmniRoute обезбеђује иконе оптимизоване за сваку платформу:
| Датотека | Величина | Користи се за |
|---|---|---|
icon-512.png |
512×512 | Android упит за инсталацију, уводни екран |
apple-touch-icon.png |
180×180 | Икона на iOS почетном екрану |
icon-192.svg |
192×192 (векторска) | Android прилагодљива икона |
apple-touch-icon.svg |
180×180 (векторска) | Резервна икона за Apple |
favicon.svg |
Векторска | Картице прегледача |
favicon.ico |
Више величина | Старији прегледачи |
Service worker се аутоматски региструје преко компоненте <PwaRegister /> у основном распореду. Корисник не мора ништа да предузима — апликација постаје доступна за инсталацију чим прегледач открије важећи манифест и service worker.
Генерише га Next.js преко src/app/manifest.ts:
{
"name": "OmniRoute",
"short_name": "OmniRoute",
"description": "OmniRoute is an AI gateway for multi-provider LLMs. One endpoint for all your AI providers.",
"start_url": "/",
"scope": "/",
"display": "fullscreen",
"orientation": "any",
"background_color": "#0b0f1a",
"theme_color": "#0b0f1a",
"icons": [
{
"src": "/icon-512.png",
"sizes": "512x512",
"type": "image/png",
"purpose": "any maskable"
},
{ "src": "/apple-touch-icon.png", "sizes": "180x180", "type": "image/png" }
]
}Стандардни service worker (без зависности од радних оквира) са следећим функцијама:
- Фаза инсталације: Унапред кешира основу апликације (корену страницу, страницу за рад ван мреже, манифест и иконе)
- Фаза активације: Уклања старе верзије кеша и преузима контролу над свим клијентима
- Фаза добављања: Интелигентно усмеравање на основу типа захтева (навигација, статички ресурс, API)
- Верзионисање кеша:
omniroute-pwa-v3— повећајте ову верзију да бисте принудно направили нови кеш након ажурирања
Корени распоред обезбеђује све метаознаке потребне за усклађеност са PWA стандардом:
manifestвеза ка/manifest.webmanifestapple-web-app-capable: trueза самостални режим на iOS-уapple-web-app-status-bar-style: black-translucentmobile-web-app-capable: yesза Chrome на Android-уtheme-color: #0b0f1aviewport-fit: coverза приказ од ивице до ивице
Налази се у src/shared/components/PwaRegister.tsx; ова клијентска компонента:
- Покреће се при монтирању (само на клијентској страни)
- Проверава подршку за
serviceWorkerу прегледачу - Неприметно региструје
/sw.js(грешке се занемарују како не би блокирале апликацију) - Не приказује ништа (
return null) — компонента служи искључиво за споредни ефекат
Када се OmniRoute покреће на Android-у преко Termux-а, PWA ради без потешкоћа:
- Покрените OmniRoute у Termux-у:
npx omniroute - Отворите Chrome на истом телефону:
http://localhost:20128 - Инсталирајте PWA преко опције „Додај на почетни екран“
- PWA се повезује са локалним Termux сервером — све се извршава на самом уређају
Ова комбинација значи да је ваш Android телефон истовремено и сервер (Termux) и клијент (PWA) — потпуно самосталан AI мрежни пролаз.
Инсталирајте PWA на било ком уређају који преко прегледача има приступ вашем OmniRoute серверу:
- Други телефон/таблет: Идите на
http://PHONE_IP:20128и инсталирајте PWA - Лаптоп: Отворите Chrome/Edge и инсталирајте га као PWA за рачунар
- Паметни телевизор са прегледачем: Приступите контролној табли преко целог екрана
Наслов PWA апликације поштује подешавање Назив инстанце у одељку Контролна табла → Подешавања. Ако инстанцу преименујете у „Мој AI мрежни пролаз“, инсталирани PWA ће приказивати тај назив.
Ако отпремите прилагођени фавикон преко одељка Контролна табла → Подешавања, PWA икона на рачунару ће приказивати прилагођену икону. Иконе на почетном екрану мобилних уређаја користе унапред припремљене датотеке icon-512.png и apple-touch-icon.png.
- Нема push обавештења — Service worker не имплементира Push API. Уместо тога, обавештењима управља Electron апликација.
- Нема синхронизације у позадини — Радње извршене ван мреже не стављају се у ред за накнадно понављање. PWA је првенствено намењена за преглед контролне табле.
- Ограничења на iOS-у — Safari на iOS-у не подржава све PWA функције (нпр. упити за инсталацију су ручни, а service worker-и у позадини су ограничени).
- Величина кеша — Service worker кешира само статичке ресурсе. Велики садржаји одговора са
/api/рута никада се не кеширају. - Прилагођене иконе на мобилним уређајима — Промена favicon-а у подешавањима не ажурира икону на почетном екрану мобилног уређаја (за то је потребно поново генерисати PWA иконе).
| Датотека | Намена |
|---|---|
src/app/manifest.ts |
Next.js рута манифеста (генерише manifest.webmanifest) |
public/sw.js |
Service worker са логиком кеширања |
src/shared/components/PwaRegister.tsx |
Клијентска компонента која региструје service worker |
src/app/offline/page.tsx |
Резервна страница за рад ван мреже са индикатором статуса у реалном времену |
src/app/layout.tsx |
Коренски распоред са PWA метаподацима (apple-web-app, theme-color итд.) |
public/icon-512.png |
PNG икона величине 512×512 (Android, уводни екран) |
public/apple-touch-icon.png |
PNG икона величине 180×180 (почетни екран на iOS-у) |
public/icon-192.svg |
SVG икона величине 192×192 (прилагодљива икона за Android) |
public/apple-touch-icon.svg |
SVG икона величине 180×180 (резервна опција за Apple) |