6 Commits

Author SHA1 Message Date
Burer e161237894 fix/ascii-and-http (#14)
Docker Build and Push / build-and-push (push) Successful in 47s
- Restored broken download tooltips that showed raw template placeholders instead of rendered values
- Simplified `autobuild.py` by removing unnecessary fallback/parsing complexity and reducing helper overhead
- Audited non-ASCII characters and get rid of Unicode “gremlins” that are not supported by WebView
- Converted hardcoded external template links to protocol-relative `//...` URLs so they follow the current site scheme

Reviewed-on: #14
Reviewed-by: Gleb Zaharov <risdeveau@lair.moe>
Co-authored-by: Burer <burer@kolibrios.org>
Co-committed-by: Burer <burer@kolibrios.org>
2026-04-04 17:01:36 +00:00
vladosik227 91b6443f64 Added Ukrainian localisation (#15)
Docker Build and Push / build-and-push (push) Successful in 1m41s
Co-authored-by: Vladosik227 <vlados864@gavladorias.win>
Co-authored-by: Burer <burer@kolibrios.org>
Reviewed-on: #15
Reviewed-by: Burer <burer@kolibrios.org>
Co-authored-by: vladosik227 <vladpc064@gmail.com>
Co-committed-by: vladosik227 <vladpc064@gmail.com>
2026-04-03 07:01:11 +00:00
Burer 961692241a Add Matrix and IRC to socials block (#13)
Docker Build and Push / build-and-push (push) Successful in 48s
Reviewed-on: #13
Reviewed-by: Gleb Zaharov <risdeveau@lair.moe>
Co-authored-by: Burer <burer@kolibrios.org>
Co-committed-by: Burer <burer@kolibrios.org>
2026-03-08 17:16:53 +00:00
Burer f9a07bcadd rework and update banner on main page (#11)
Docker Build and Push / build-and-push (push) Successful in 1m43s
Refactor banner code to be more universal, and updated it's content to GSoC 2026.

<img width="auto" alt="image.png" src="attachments/a9eee86a-eaf5-4a9b-b21c-8bd2bb6a7d07">

Reviewed-on: #11
Reviewed-by: Gleb Zaharov <risdeveau@lair.moe>
Co-authored-by: Burer <burer@kolibrios.org>
Co-committed-by: Burer <burer@kolibrios.org>
2026-03-02 11:09:15 +00:00
Burer d0b267f0ea fix autobuild version and date parsing
Docker Build and Push / build-and-push (push) Successful in 3m24s
2026-02-19 20:13:10 +02:00
NeoUmbreon 5d4d587d1d Fix missing spaces in text
Docker Build and Push / build-and-push (push) Successful in 2m17s
2026-01-23 12:53:19 -05:00
31 changed files with 341 additions and 143 deletions
+11 -6
View File
@@ -45,15 +45,22 @@ def before_request():
@app.context_processor
def _inject_autobuild_vers():
return {"autobuild_vers": autobuild.autobuild_vers}
return {
"autobuild_vers": autobuild.autobuild_vers,
"autobuild_sizes": autobuild.autobuild_sizes,
}
@app.context_processor
def _inject_autobuild_date():
return {
"autobuild_date": g.translations.get("downloads", {})
.get("date-format", "{DD}.{MM}.{YYYY}")
.format(**autobuild.autobuild_date)
"autobuild_date": autobuild.autobuild_date.strftime(
g.translations.get("downloads", {})
.get("date-format", "{DD}.{MM}.{YYYY}")
.replace("{YYYY}", "%Y")
.replace("{MM}", "%m")
.replace("{DD}", "%d")
)
}
@@ -65,8 +72,6 @@ def inject_translations():
template = (
g.translations.get(section, {})
.get(key, f"${section}: {key}$")
.replace("\\n", " \\n")
.replace("\n", "")
)
try:
+3
View File
@@ -0,0 +1,3 @@
[banner]
url = https://summerofcode.withgoogle.com/programs/2026/organizations/kolibrios-project-team
img = gsoc.png
+6 -5
View File
@@ -14,9 +14,10 @@ forum = Forum
wiki = Wiki
git = Git
[git]
header = KolibriOS ist zu Git gewechselt!
text = Schau dir unsere neue entwicklerfreundliche Infrastruktur an
[banner]
header = KolibriOS wurde zu GSoC 2026 angenommen!
text = Informieren Sie sich über Programmdetails und unsere Projektideen
alt = GSoC
[article]
p1 = {kolibrios} ist ein winziges, aber unglaublich leistungsfähiges und
@@ -66,10 +67,10 @@ screenshots = Bildschirmfotos
download_choice = Was soll ich wählen?
download_help = Für einen Einsteiger ist die LiveCD am besten geeignet.\n\
\n\
Im Vergleich zu einer LiveCD hat ein universelles Image den Vorteil, dass\
Im Vergleich zu einer LiveCD hat ein universelles Image den Vorteil, dass \
Sie die in KolibriOS vorgenommenen Änderungen speichern können.\n\
\n\
Das Hybrid-Image enthält Unterstützung für die UEFI-Technologie, die zum\
Das Hybrid-Image enthält Unterstützung für die UEFI-Technologie, die zum \
Booten des Systems auf neuen Computern und Laptops verwendet wird.
download_description = Auf dieser Seite können Sie die nächtlichen
+6 -5
View File
@@ -14,9 +14,10 @@ forum = Forum
wiki = Wiki
git = Git
[git]
header = KolibriOS moved to Git!
text = Check our new developers-friendly infrastructure
[banner]
header = KolibriOS accepted to GSoC 2026!
text = Check program details and our project ideas
alt = GSoC
[article]
p1 = {kolibrios} is a tiny yet incredibly powerful and fast operating system for
@@ -62,10 +63,10 @@ all_rev = All nightly builds
download_choice = Which to choose?
download_help = For a beginner, the LiveCD is best.\n\
\n\
Compared to a LiveCD, the advantage of a universal image is that you can\
Compared to a LiveCD, the advantage of a universal image is that you can \
save changes made in KolibriOS.\n\
\n\
Hybrid image includes support for UEFI technology, which is used to boot\
Hybrid image includes support for UEFI technology, which is used to boot \
the system on new computers and laptops.
download_description = On this page you can download the nightly builds
+6 -5
View File
@@ -14,9 +14,10 @@ forum = Foro
wiki = Wiki
git = Git
[git]
header = ¡KolibriOS se ha trasladado a Git!
text = Mira nuestra nueva infraestructura amigable para desarrolladores
[banner]
header = ¡KolibriOS fue aceptado en GSoC 2026!
text = Consulta los detalles del programa y nuestras ideas de proyecto
alt = GSoC
[article]
p1 = {kolibrios} es un sistema operativo diminuto, pero increíblemente potente y
@@ -64,10 +65,10 @@ all_rev = Todos los montajes nocturnos
download_choice = ¿Cuál elegir?
download_help = Para un principiante, el LiveCD es lo mejor.\n\
\n\
En comparación con un LiveCD, la ventaja de una imagen universal es que\
En comparación con un LiveCD, la ventaja de una imagen universal es que \
puedes guardar los cambios realizados en KolibriOS.\n\
\n\
Imagen híbrida incluye soporte para la tecnología UEFI, que se utiliza para\
Imagen híbrida incluye soporte para la tecnología UEFI, que se utiliza para \
arrancar el sistema en los nuevos ordenadores y portátiles.
download_description = En esta página puedes descargar la distribución de
+6 -5
View File
@@ -14,9 +14,10 @@ forum = Forum
wiki = Wiki
git = Git
[git]
header = KolibriOS a déménagé sur Git !
text = Découvrez notre nouvelle infrastructure conviviale pour les développeurs
[banner]
header = KolibriOS a été accepté au GSoC 2026 !
text = Consultez les détails du programme et nos idées de projets
alt = GSoC
[article]
p1 = {kolibrios} est un système d`exploitation minuscule, mais incroyablement
@@ -64,10 +65,10 @@ all_rev = Toutes les constructions nocturnes
download_choice = Que choisir ?
download_help = Pour un débutant, le LiveCD est le meilleur.\n\
\n\
Par rapport à un LiveCD, l`avantage d`une image universelle est que vous\
Par rapport à un LiveCD, l`avantage d`une image universelle est que vous \
pouvez sauvegarder les changements effectués dans KolibriOS.\n\
\n\
L`image hybride inclut le support de la technologie UEFI, qui est utilisée\
L`image hybride inclut le support de la technologie UEFI, qui est utilisée \
pour démarrer le système sur les nouveaux ordinateurs et portables.
download_description = Sur cette page, vous pouvez télécharger la distribution
+6 -6
View File
@@ -14,10 +14,10 @@ forum = Forum
wiki = Wiki
git = Git
[git]
header = KolibriOS si è spostato su Git!
text = Dai un`occhiata alla nostra nuova infrastruttura pensata per gli
sviluppatori
[banner]
header = KolibriOS è stato accettato al GSoC 2026!
text = Consulta i dettagli del programma e le nostre idee di progetto
alt = GSoC
[article]
p1 = {kolibrios} è un sistema operativo minuscolo, ma incredibilmente potente e
@@ -63,10 +63,10 @@ all_rev = Tutte le build notturne
download_choice = Quale scegliere?
download_help = Per un principiante, il LiveCD è la soluzione migliore.\n\
\n\
Rispetto a un LiveCD, il vantaggio di un`immagine universale è che è\
Rispetto a un LiveCD, il vantaggio di un`immagine universale è che è \
possibile salvare le modifiche apportate in KolibriOS.\n\
\n\
L`immagine ibrida include il supporto per la tecnologia UEFI, utilizzata\
L`immagine ibrida include il supporto per la tecnologia UEFI, utilizzata \
per avviare il sistema su nuovi computer e portatili.
download_description = In questa pagina puoi scaricare la distribuzione delle
+6 -5
View File
@@ -14,9 +14,10 @@ forum = Forum
wiki = Wiki
git = Git
[git]
header = KolibriOS is verhuisd naar Git!
text = Bekijk onze nieuwe, ontwikkelaarsvriendelijke infrastructuur
[banner]
header = KolibriOS is geaccepteerd voor GSoC 2026!
text = Bekijk de programmadetails en onze projectideeën
alt = GSoC
[article]
p1 = {kolibrios} is een klein maar ongelooflijk krachtig en snel
@@ -64,10 +65,10 @@ all_rev = Alle nachtelijke builds
download_choice = Welke moet ik kiezen?
download_help = Voor een beginner is de LiveCD het beste.\n\
\n\
Vergeleken met een LiveCD heeft een universeel image het voordeel dat je\
Vergeleken met een LiveCD heeft een universeel image het voordeel dat je \
wijzigingen die je in KolibriOS hebt aangebracht, kunt opslaan.\n\
\n\
Hybride image bevat ondersteuning voor UEFI-technologie, die wordt gebruikt\
Hybride image bevat ondersteuning voor UEFI-technologie, die wordt gebruikt \
om het systeem op te starten op nieuwe computers en laptops.
download_description = Op deze pagina kunt u de nightly builds-distributie
+6 -5
View File
@@ -14,9 +14,10 @@ forum = Форум
wiki = Вики
git = Git
[git]
header = КолибриОС перешла на Git!
text = Ознакомьтесь с нашей новой, удобной для разработчиков инфраструктурой
[banner]
header = KolibriOS принята в GSoC 2026!
text = Ознакомьтесь с деталями программы и нашими идеями проектов
alt = GSoC
[article]
p1 = {kolibrios} — это крошечная, но невероятно мощная и быстрая операционная
@@ -64,10 +65,10 @@ all_rev = Все ночные сборки
download_choice = Какой выбрать?
download_help = Для новичка лучше всего подойдет LiveCD.\n \
\n\
По сравнению с LiveCD преимущество универсального образа в том, что вы\
По сравнению с LiveCD преимущество универсального образа в том, что вы \
можете сохранить изменения, сделанные в КолибриОС.\n\
\n\
Гибридный образ включает поддержку технологии UEFI, которая используется\
Гибридный образ включает поддержку технологии UEFI, которая используется \
для загрузки системы на новых компьютерах и ноутбуках.
download_description = На этой странице вы можете скачать ночные сборки
+96
View File
@@ -0,0 +1,96 @@
[title]
language = Українська
index = KolibriOS
download = KolibriOS - Завантажити
[header]
index = Офіційний сайт KolibriOS
download = Завантажити KolibriOS
[menu]
kolibrios = KolibriOS
download = Завантажити
forum = Форум
wiki = Вікі
git = Git
[banner]
header = KolibriOS прийнято до GSoC 2026!
text = Ознайомтеся з деталями програми та нашими ідеями проєктів
alt = GSoC
[article]
p1 = {kolibrios} - це крихітна, але неймовірно потужна та швидка
операційна система для x86-сумісних ПК. Для її роботи достатньо
лише кількох мегабайтів місця на диску, процесора i586 та 12 МБ
оперативної пам'яті. При цьому вона містить багатий набір додатків,
таких як текстовий редактор, переглядач зображень, графічний редактор,
веб-браузер та понад 30 захопливих ігор. Є повна підтримка файлових систем
FAT12/16/32, тільки на читання доступні NTFS, exFAT, ISO9660 та Ext2/3/4,
а також присутній великий набір {drivers} для популярних звукових, мережевих
та графічних карт.
drivers = драйверів
p2 = Ви коли-небудь мріяли про систему, яка завантажується менш ніж за кілька
секунд з моменту ввімкнення до появи робочого графічного інтерфейсу? Про додатки,
які запускаються миттєво, одразу після натискання на ярлик, без набридливих
індикаторів завантаження? Така швидкість досягається завдяки тому, що основні
частини {kolibrios} (ядро та драйвери) повністю написані на асемблері {fasm}.
Спробуйте {kolibrios} і порівняйте її з такими важковаговиками, як Windows та Linux.
p3 = {kolibrios} відокремилася від MenuetOS у 2004 році й
відтоді розвивається незалежною міжнародною спільнотою.
Ваші {feedback} дуже цінуються, а ваша {help} цінується ще більше.
feedback = відгуки
help = допомога
p_subscription = Сподіваємося, вам сподобається!
[downloads]
header = Завантажити
version = Версія:
date = Дата збірки:
date-format = {DD}.{MM}.{YYYY}
img-descr = Образ дискети
iso-descr = Образ LiveCD
distr-descr = Універсальний образ Flash/Multi-boot
raw-descr = Гібридний UEFI/BIOS образ
prev_rev = Попередні випуски
all_rev = Усі нічні збірки
download_choice = Який обрати?
download_help = Для новачка найкраще підійде LiveCD.\n \
\n\
У порівнянні з LiveCD перевага універсального образу полягає в тому, що ви
можете зберегти зміни, зроблені в KolibriOS.\n
\n\
Гібридний образ містить підтримку технології UEFI, яка використовується
для завантаження системи на нових комп'ютерах та ноутбуках.
download_description = На цій сторінці ви можете завантажити нічні збірки
дистрибутива. Це означає, що вони завжди містять останні зміни в
системі, а отже можуть бути нестабільними. Усі файли стиснуті за
допомогою {zip}. {kolibrios} розповсюджується під ліцензією {gpl}, а
вихідний код доступний на нашому {git}.
git-server = Git-сервері
download_warn = Іноді антивіруси можуть помилково помічати образ {kolibrios}
як загрозу. Це помилкове спрацьовування. {kolibrios} має повністю відкритий
вихідний код, і ви завжди можете зібрати її самостійно, щоб
переконатися, що вона абсолютно безпечна.
[screenshots]
header = Скриншоти
1 = Робочий стіл KolibriOS
2 = Демки
3 = Файлові менеджери
4 = Мережеві додатки
5 = Ігри
6 = Інструменти розробника
[footer]
team = Команда KolibriOS
+4 -3
View File
@@ -14,9 +14,10 @@ forum = 论坛
wiki = 百科
git = Git
[git]
header = KolibriOS 现已拥抱 Git
text = 来看看我们全新又对开发者友好的代码仓库吧:
[banner]
header = KolibriOS 已被 GSoC 2026 录取
text = 查看项目详情和我们的项目创意
alt = GSoC
[article]
p1 = {kolibrios} 是一个体积微小、功能强大、响应迅速的,面向 x86 兼容机的操作系统。
+4 -3
View File
@@ -14,9 +14,10 @@ forum = 論壇
wiki = 百科
git = Git
[git]
header = KolibriOS 現已移入 Git
text = 來看看我們又新又友好的代碼倉庫吧:
[banner]
header = KolibriOS 已入選 GSoC 2026
text = 查看計畫詳情和我們的專案構想
alt = GSoC
[article]
p1 = {kolibrios} 是一個空間小、功能強、回應快的,面向 x86 兼容機的作業系統。
+49 -43
View File
@@ -1,23 +1,50 @@
from datetime import date
import re
import threading
import time
from urllib.request import Request, urlopen
STATUS_URL = "https://builds.kolibrios.org/status.html"
STATUS_URL = "http://builds.kolibrios.org/status.html"
STATUS_SEC = 300 # refetch each 5 minutes
DOWNLOAD_LANGS = ("en_US", "ru_RU", "es_ES")
DOWNLOAD_EXTS = ("img", "iso", "distr", "raw")
autobuild_date = {"YYYY": "YYYY", "MM": "MM", "DD": "DD"}
VER_RE = re.compile(r"\b(\d+\.\d+\.\d+\.\d+\+\d{3,8}-[0-9a-fA-F]{7,40})\b")
DATE_RE = re.compile(r"\b(\d{4})\.(\d{2})\.(\d{2})\s+\d{2}:\d{2}:\d{2}\b")
ROW_RE = re.compile(r"(<tr\b[^>]*>.*?</tr>)", flags=re.I | re.S)
autobuild_date = date.today()
autobuild_vers = "0.0.0.0+0000-0000000"
autobuild_sizes = {
lang: {ext: "?" for ext in DOWNLOAD_EXTS}
for lang in DOWNLOAD_LANGS
}
_started = False
_updater_lock = threading.Lock()
def _refresh_build_date_once():
def _refresh_build_sizes():
for lang in DOWNLOAD_LANGS:
for ext in DOWNLOAD_EXTS:
url = f"http://builds.kolibrios.org/{lang}/latest-{ext}.7z"
req = Request(
url,
method="HEAD",
headers={"User-Agent": "Mozilla/5.0"},
)
with urlopen(req, timeout=10) as r:
content_length = r.headers.get("Content-Length")
if not content_length:
continue
autobuild_sizes[lang][ext] = f"{int(content_length) / 1048576:.1f} MB"
def _refresh_autobuild_once():
global autobuild_date, autobuild_vers
try:
from urllib.request import Request, urlopen
req = Request(
STATUS_URL,
headers={
@@ -30,47 +57,26 @@ def _refresh_build_date_once():
r.headers.get_content_charset() or "utf-8", "replace"
)
rows = re.findall(r"(<tr\b[^>]*>.*?</tr>)", html, flags=re.I | re.S)
if not rows:
return
last_ver = None
last_commit_ver = None
for row in rows:
for row in ROW_RE.findall(html):
cls = re.search(r'class\s*=\s*"([^"]*)"', row, flags=re.I)
classes = cls.group(1).lower() if cls else ""
text = re.sub(r"<[^>]+>", " ", row)
if "commit" in classes:
mver = re.search(
r"\b(\d+\.\d+\.\d+\.\d+\+\d{3,8}-[0-9a-fA-F]{7,40})\b", row
)
mver = VER_RE.search(row)
if mver:
last_commit_ver = mver.group(1)
elif "success" in classes:
mts = re.search(
r"\b(\d{4})\.(\d{2})\.(\d{2})\s+\d{2}:\d{2}:\d{2}\b", text
)
if not mts:
mds = re.search(r"\b(\d{2})\.(\d{2})\.(\d{4})\b", text)
if mds:
autobuild_date["YYYY"] = mds.group(1)
autobuild_date["MM"] = mds.group(2)
autobuild_date["DD"] = mds.group(3)
else:
return
else:
(
autobuild_date["YYYY"],
autobuild_date["MM"],
autobuild_date["DD"],
) = mts.groups()
if last_commit_ver:
autobuild_vers = last_commit_ver
return
last_ver = mver.group(1)
continue
if "success" not in classes:
continue
text = re.sub(r"<[^>]+>", " ", row)
mts = DATE_RE.search(text)
if mts:
autobuild_date = date(*map(int, mts.groups()))
if last_ver:
autobuild_vers = last_ver
_refresh_build_sizes()
return
except Exception:
pass
@@ -78,7 +84,7 @@ def _refresh_build_date_once():
def _updater_loop():
while True:
_refresh_build_date_once()
_refresh_autobuild_once()
time.sleep(STATUS_SEC)
@@ -91,4 +97,4 @@ def ensure_started():
_started = True
_refresh_build_date_once()
_refresh_autobuild_once()
+50
View File
@@ -0,0 +1,50 @@
from os import path, listdir
from configparser import ConfigParser
import threading
_configs = {}
_loaded = False
_load_lock = threading.Lock()
def load_all_configs():
new_configs = {}
configs_dir = "configs"
if not path.isdir(configs_dir):
return new_configs
for filename in sorted(listdir(configs_dir)):
if not filename.endswith(".ini"):
continue
file_path = path.join(configs_dir, filename)
cp = ConfigParser()
with open(file_path, encoding="utf-8") as f:
cp.read_file(f)
for section in cp.sections():
section_data = new_configs.setdefault(section, {})
section_data.update(dict(cp[section]))
return new_configs
def ensure_loaded():
global _configs, _loaded
with _load_lock:
if _loaded:
return
_configs = load_all_configs()
_loaded = True
def get_section(name):
ensure_loaded()
return dict(_configs.get(name, {}))
def get_all_sections():
ensure_loaded()
return {section: dict(values) for section, values in _configs.items()}
+1 -1
View File
@@ -19,5 +19,5 @@ def render_localized_template(lang, template_name):
template_name,
year=date.today().year,
),
remove_empty_space=True,
remove_empty_space=False,
)
+9
View File
@@ -2,6 +2,8 @@ from os import path, listdir
from configparser import ConfigParser
import threading
from modules import configs
translations = {}
locales_name = {}
@@ -33,6 +35,13 @@ def load_all_locales():
section: dict(cp[section]) for section in cp.sections()
}
shared_sections = configs.get_all_sections()
if shared_sections:
for locale_translation in new_translations.values():
for section_name, section_values in shared_sections.items():
locale_section = locale_translation.setdefault(section_name, {})
locale_section.update(section_values)
new_locales_code = locales_code_default + tuple(sorted(locales_code_extra))
new_locales_name = {
locale_code: new_translations[locale_code]["title"]["language"]

Before

Width:  |  Height:  |  Size: 7.5 KiB

After

Width:  |  Height:  |  Size: 7.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 446 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 510 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 239 B

+22 -11
View File
@@ -16,7 +16,9 @@ $c-shadow-soft: #1C1A281F;
$c-article-bd: #C0B9C491;
$c-primary: #609A21;
$c-primary-ink: #609A21AA;
$c-banner: #F9AB00;
$c-banner-ink: #F9AB00AA;
$c-link: #0472D8;
$c-link-hover: #0053B9;
@@ -180,12 +182,21 @@ body {
text-decoration: none;
&:hover {
box-shadow: inset 0 0 0 4px $c-primary-ink;
box-shadow: inset 0 0 0 4px $c-banner-ink;
}
table {
table-layout: fixed;
}
td {
text-align: center;
vertical-align: middle;
&:first-child,
&:last-child {
width: 128px;
}
}
img {
@@ -193,7 +204,7 @@ body {
}
h1 {
color: $c-primary;
color: $c-banner;
font-size: 2.5em;
margin: 0 0 16px;
}
@@ -202,14 +213,14 @@ body {
margin: 0em;
}
.p-link {
margin-top: 16px;
color: $c-primary;
font-weight: bold;
}
a {
color: $c-primary;
display: block;
margin-top: 16px;
overflow-wrap: anywhere;
word-break: break-word;
font-weight: bold;
color: $c-banner;
border: none;
}
}
@@ -475,7 +486,7 @@ iframe {
margin-bottom: 0;
}
p, .p-link {
p {
margin-top: 0.5em;
}
}
+4 -4
View File
@@ -56,7 +56,7 @@
('es_ES', 'Español')
) %}
<a href="//builds.kolibrios.org/{{ l }}/latest-{{ ext }}.7z"
title="ver. $autobuild_cmtid_{{ l }}, $autobuild_size_{{ l }}_{{ ext }}"
title="{{ autobuild_vers }}, {{ autobuild_sizes[l][ext] }}"
class="button">
{{ lang }}
{% if l == 'en_US' %}
@@ -100,9 +100,9 @@
{{ _(
'downloads:download_description',
kolibrios="<b>{0}</b>".format(_('title:index')),
zip="<a href='http://www.7-zip.org' target='_blank'>7zip</a>",
gpl="<a href='http://www.gnu.org/licenses/gpl-2.0.html' target='_blank'>GPLv2</a>",
git="<a href='https://git.kolibrios.org'>{0}</a>".format(_('downloads:git-server'))
zip="<a href='https://7-zip.org' target='_blank'>7zip</a>",
gpl="<a href='//www.gnu.org/licenses/gpl-2.0.html' target='_blank'>GPLv2</a>",
git="<a href='//git.kolibrios.org'>{0}</a>".format(_('downloads:git-server'))
) | safe }}
</p>
+1 -1
View File
@@ -10,7 +10,7 @@
{% include 'tmpl/_menu.htm' %}
<div id="article">
{% include 'tmpl/_git.htm' %}
{% include 'tmpl/_banner.htm' %}
{% include 'tmpl/_article.htm' %}
+4 -4
View File
@@ -3,7 +3,7 @@
'article:p1',
kolibrios="<b>{0}</b>"
.format(_('menu:kolibrios')),
drivers="<a href='http://wiki.kolibrios.org/wiki/Hardware_Support'>{0}</a>"
drivers="<a href='//wiki.kolibrios.org/wiki/Hardware_Support'>{0}</a>"
.format(_('article:drivers'))
) | safe }}
</p>
@@ -19,7 +19,7 @@
'article:p2',
kolibrios="<b>{0}</b>"
.format(_('menu:kolibrios')),
fasm="<a href='http://www.flatassembler.net' target='_blank'>FASM</a>"
fasm="<a href='//flatassembler.net' target='_blank'>FASM</a>"
) | safe }}
</p>
@@ -28,9 +28,9 @@
'article:p3',
kolibrios="<b>{0}</b>"
.format(_('menu:kolibrios')),
feedback="<a href='http://board.kolibrios.org'>{0}</a>"
feedback="<a href='//board.kolibrios.org'>{0}</a>"
.format(_('article:feedback')),
help="<a href='https://git.kolibrios.org/KolibriOS/kolibrios'>{0}</a>"
help="<a href='//git.kolibrios.org/KolibriOS/kolibrios'>{0}</a>"
.format(_('article:help'))
) | safe }}
</p>
+17
View File
@@ -0,0 +1,17 @@
<a id="banner" href="{{ _('banner:url') }}" target="_blank">
<table>
<tr>
<td valign="top" width="128">
<img src="{{ url_for('static', filename='img/logo.png') }}" alt="{{ _('title:index')}}">
</td>
<td valign="top">
<h1>{{ _('banner:header') }}</h1>
<p>{{ _('banner:text') }}</p>
<a href="{{ _('banner:url') }}">{{ _('banner:url') }}</a>
</td>
<td valign="top" width="128">
<img src="{{ url_for('static', filename='img/banners/' + _('banner:img')) }}" alt="{{ _('banner:alt') }}">
</td>
</tr>
</table>
</a>
+1 -1
View File
@@ -1,7 +1,7 @@
<div id="footer">
<img src="{{ url_for('static', filename='img/logo.png') }}" alt="KolibriOS">
<p>
&copy; 2004{{ year }} <br />
&copy; 2004 - {{ year }} <br />
{{ _('footer:team') }}
</p>
</div>
-19
View File
@@ -1,19 +0,0 @@
<a id="banner" href="https://git.kolibrios.org" target="_blank">
<table>
<tr>
<td valign="top" width="128">
<img src="{{ url_for('static', filename='img/logo.png') }}" alt="KolibriOS">
</td>
<td valign="top">
<h1>{{ _('git:header') }}</h1>
<p>{{ _('git:text') }}</p>
<p class="p-link">
<a href="https://git.kolibrios.org">https://git.kolibrios.org</a>
</p>
</td>
<td valign="top" width="128">
<img src="{{ url_for('static', filename='img/gitea.png') }}" alt="Gitea">
</td>
</tr>
</table>
</a>
+1 -1
View File
@@ -4,7 +4,7 @@
<link rel="icon" type="image/x-icon" href="{{ url_for('static', filename='favicon.ico') }}">
<meta name="description" content="{{ _('header:%s' % request.url_rule.endpoint) }}">
<meta name="keywords"
content="kolibri, kolibrios, колибри, колибриос, colibri, operating system, assembler, калибри, fasm, alternate, open source">
content="kolibri, kolibrios, colibri, colibrios, колибри, колибриос, калибри, калибриос, operating system, assembler, fasm, alternate, open source">
<meta name="viewport" content="width=device-width">
<link rel="stylesheet" type="text/css" href="{{ url_for('static', filename='style.css') }}">
<script src="{{ url_for('static', filename='script.min.js') }}"></script>
+9 -7
View File
@@ -1,13 +1,13 @@
<nav id="menu">
<a href="{{ url_for('index', lang=g.locale) }}" class="{% if request.endpoint == 'index' %}a-sel{% endif %}">
<a href="{{ url_for('index', lang=g.locale) }}"{% if request.endpoint == 'index' %} class="a-sel"{% endif %}>
{% if current == 'index' %}
<font bg="lightblue">{{ _('menu:kolibrios') }}</font>
{% else %}
{{ _('menu:kolibrios') }}
{% endif %}
</a>
<a href="{{ url_for('download', lang=g.locale) }}" class="{% if request.endpoint == 'download' %}a-sel{% endif %}">
<a href="{{ url_for('download', lang=g.locale) }}"{% if request.endpoint == 'download' %} class="a-sel"{% endif %}>
{% if current == 'download' %}
<font bg="lightblue">{{ _('menu:download') }}</font>
{% else %}
@@ -15,10 +15,12 @@
{% endif %}
</a>
<a href="https://board.kolibrios.org">{{ _('menu:forum') }}</a>
<a href="https://wiki.kolibrios.org/wiki/Main_Page/{{ g.locale }}">{{ _('menu:wiki') }}</a>
<a href="https://git.kolibrios.org">Git</a>
<a href="//board.kolibrios.org">{{ _('menu:forum') }}</a>
<a href="//wiki.kolibrios.org/wiki/Main_Page/{{ g.locale }}">{{ _('menu:wiki') }}</a>
<a href="//git.kolibrios.org">Git</a>
<button onclick="dropdown_show(this)" id="lang-butt">
<img src="{{ url_for('static', filename='img/flags/%s.png' % g.locale) }}" alt="{{ g.locale }}">
</button>
+13 -3
View File
@@ -7,11 +7,21 @@
<img src="{{ url_for('static', filename='img/icons/i_discord.png') }}" alt="Discord">Discord
</a>
<br />
<a href="https://www.facebook.com/groups/kolibrios/" target="_blank">
<a href="https://facebook.com/groups/kolibrios/" target="_blank">
<img src="{{ url_for('static', filename='img/icons/i_facebook.png') }}" alt="Facebook">Facebook
</a>
<br />
<a href="https://www.reddit.com/r/KolibriOS/" target="_blank">
<a href="https://reddit.com/r/KolibriOS/" target="_blank">
<img src="{{ url_for('static', filename='img/icons/i_reddit.png') }}" alt="Reddit">Reddit
</a>
</p>
</p>
<p class="p-socials">
<a href="https://matrix.to/#/#kolibrios:lair.moe" target="_blank">
<img src="{{ url_for('static', filename='img/icons/i_matrix.png') }}" alt="Matrix">Matrix
</a>
<br />
<a href="irc://kolibrios.org" target="_blank">
<img src="{{ url_for('static', filename='img/icons/i_irc.png') }}" alt="IRC">IRC
</a>
</p>