Files
securebit-chat/ar/manifest.json
T
lockbitchat 5e32f547b9
CodeQL Analysis / Analyze CodeQL (push) Canceled after 0s
Deploy Application / deploy (push) Canceled after 0s
Mirror to Codeberg / mirror (push) Canceled after 0s
Mirror to PrivacyGuides / mirror (push) Canceled after 0s
feat(i18n): Arabic, Hebrew, Persian and Urdu, and a layout that mirrors; release v6.4.0
Four right-to-left languages at /ar/, /he/, /fa/ and /ur/ — thirteen in all.

The layout no longer has a left and a right, it has a start and an end: the
margins, insets and corners are CSS logical properties now, so they follow
dir on <html>. Directional glyphs flip; keys, safety codes and session
descriptors are pinned left-to-right so bidi cannot reorder what two people
compare against each other's screens.

Also fixed: the Service Worker was registered as './sw.js', which 404s from
every locale subdirectory, so twelve of the thirteen pages had no worker at
all. And the bundler ran before the dictionaries were generated, so a newly
added language could reach the page ahead of the app that renders it.
2026-08-29 18:05:20 -04:00

122 lines
2.7 KiB
JSON

{
"name": "SecureBit.chat - مراسلة خاصة ومشفّرة",
"short_name": "SecureBit",
"description": "مراسلة ندٌّ لندّ محميّة بـ ECDH وDTLS وSAS، بتعمية بمستوى عسكري",
"start_url": "/ar/",
"display": "standalone",
"background_color": "#1a1a1a",
"theme_color": "#ff6b35",
"orientation": "portrait-primary",
"scope": "/",
"lang": "ar",
"dir": "rtl",
"categories": [
"communication",
"security",
"productivity"
],
"prefer_related_applications": false,
"icons": [
{
"src": "/logo/icon-72x72.png",
"sizes": "72x72",
"type": "image/png",
"purpose": "any"
},
{
"src": "/logo/icon-96x96.png",
"sizes": "96x96",
"type": "image/png",
"purpose": "any"
},
{
"src": "/logo/icon-128x128.png",
"sizes": "128x128",
"type": "image/png",
"purpose": "any"
},
{
"src": "/logo/icon-144x144.png",
"sizes": "144x144",
"type": "image/png",
"purpose": "any"
},
{
"src": "/logo/icon-152x152.png",
"sizes": "152x152",
"type": "image/png",
"purpose": "any"
},
{
"src": "/logo/icon-180x180.png",
"sizes": "180x180",
"type": "image/png",
"purpose": "any"
},
{
"src": "/logo/icon-192x192.png",
"sizes": "192x192",
"type": "image/png",
"purpose": "any"
},
{
"src": "/logo/icon-256x256.png",
"sizes": "256x256",
"type": "image/png",
"purpose": "any"
},
{
"src": "/logo/icon-384x384.png",
"sizes": "384x384",
"type": "image/png",
"purpose": "any"
},
{
"src": "/logo/icon-512x512.png",
"sizes": "512x512",
"type": "image/png",
"purpose": "any"
},
{
"src": "/logo/icon-192x192.png",
"sizes": "192x192",
"type": "image/png",
"purpose": "maskable"
},
{
"src": "/logo/icon-512x512.png",
"sizes": "512x512",
"type": "image/png",
"purpose": "maskable"
}
],
"shortcuts": [
{
"name": "Create Channel",
"short_name": "Create",
"description": "Create a new secure channel",
"url": "/ar/?action=create",
"icons": [
{
"src": "/logo/icon-96x96.png",
"sizes": "96x96",
"type": "image/png"
}
]
},
{
"name": "Join Channel",
"short_name": "Join",
"description": "Join an existing secure channel",
"url": "/ar/?action=join",
"icons": [
{
"src": "/logo/icon-96x96.png",
"sizes": "96x96",
"type": "image/png"
}
]
}
]
}