Skip to content

Commit 2a1aaef

Browse files
authored
Merge branch 'imputnet:main' into clip
2 parents d965cf4 + 4d2c8b0 commit 2a1aaef

28 files changed

+842
-11
lines changed

docs/api.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -79,14 +79,14 @@ all keys except for `url` are optional. value options are separated by `/`.
7979
| `disableMetadata` | `boolean` | title, artist, and other info will not be added to the file | `false` |
8080
| `alwaysProxy` | `boolean` | always tunnel all files, even when not necessary | `false` |
8181
| `localProcessing` | `string` | `disabled / preferred / forced` | `disabled` |
82-
| `subtitleLang` | `string` | any valid language code, such as: `en` or `zh-CN` | *none* |
82+
| `subtitleLang` | `string` | any valid ISO 639-1 language code | *none* |
8383

8484
#### service-specific options
8585
| key | type | description/value | default |
8686
|:------------------------|:----------|:--------------------------------------------------|:--------|
8787
| `youtubeVideoCodec` | `string` | `h264 / av1 / vp9` | `h264` |
8888
| `youtubeVideoContainer` | `string` | `auto / mp4 / webm / mkv` | `auto` |
89-
| `youtubeDubLang` | `string` | any valid language code, such as: `en` or `zh-CN` | *none* |
89+
| `youtubeDubLang` | `string` | any valid ISO 639-1 language code | *none* |
9090
| `convertGif` | `boolean` | convert twitter gifs to the actual GIF format | `true` |
9191
| `allowH265` | `boolean` | allow H265/HEVC videos from tiktok/xiaohongshu | `false` |
9292
| `tiktokFullAudio` | `boolean` | download the original sound used in a video | `false` |

web/changelogs/11.2.md

Lines changed: 89 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,89 @@
1+
---
2+
title: "local processing for everyone, subtitles, audio covers, and more"
3+
date: "30 June, 2025"
4+
banner:
5+
file: "meowth_sunrise.webp"
6+
alt: "meowth plush in a forest looking at the rising sun between the trees."
7+
---
8+
9+
it's summertime! even though it's been rainy for us lately, the sun is right on the horizon, just like this cobalt update. we improved local processing, added long-awaited features, and improved a ton of other stuff. **downloading from youtube is back, btw**.
10+
11+
here's what's new since 11.0:
12+
13+
## on-device media processing
14+
local processing is now enabled for everyone by default! it allows for faster downloading, file consistency, and best media compatibility. in this update, we optimized it to work on older browsers, just so no one's missing out on cobalt due to having outdated software.
15+
16+
thanks to local processing, we were able to add **audio covers** in this update. cobalt will automatically add covers/thumbnails from youtube or soundcloud, and it'll be cropped to a square when needed. really cool stuff, and it just works!
17+
18+
please let us know if local processing doesn't work properly on your device, we'll try to improve it!
19+
20+
## video subtitles
21+
we added support for downloading videos with subtitles! in this update, we added full support for subtitles from: `youtube`, `twitter`, `tiktok`, `vimeo`, `loom`, `vk video`, and `rutube`. we'll keep adding support for more services in the future!
22+
23+
to download subtitles, just pick your preferred language in [metadata settings](/settings/metadata#subtitles)! cobalt will add subtitles in this language if they're available.
24+
25+
pro-tip: if you don't need audio, you can save a bit of storage by switching to the "mute" mode on the home page. you'll get a mute video with subtitles and the rest of the metadata!
26+
27+
don't want metadata or subtitles? just [disable metadata](/settings/metadata#metadata) in settings, and cobalt won't add anything.
28+
29+
## youtube downloading
30+
downloading from youtube on the main instance is restored! sorry that it took a bit over a week; we were trying our best to speed it up.
31+
32+
hopefully it'll last for a while, but we think downloading from youtube will get significantly more annoying/complex in next few weeks-months. **right now is the best time to download everything you've been putting off**, either with cobalt or other tools.
33+
34+
we're not trying to scare you; it's our educated guess based on what youtube has been doing lately:
35+
- roll out of SABR & related limitations for more clients. SABR is Server ABR, Google's proprietary HLS alternative, controlled by the server.
36+
- growing potoken enforcement.
37+
- various other experiments to restrict "unauthorized access".
38+
39+
we currently have no exact plan on how to handle SABR in cobalt, but we will try to figure it out. for now, we're using youtube clients that don't have it enforced, but we have no clue for how long this will last.
40+
41+
by the way, we also made it possible to [choose any preferred media container](/settings/video#youtube-container) independently from the youtube video codec. could be useful for this occasion!
42+
43+
## general service improvements
44+
- added more metadata to audio files from soundcloud.
45+
- added support for `/groups/` vimeo links.
46+
- added support for ``/v/:id` youtube links.
47+
- added support for new share links from tiktok.
48+
- added support for more vk video links.
49+
- pinterest now returns an appropriate error when a pin is unavailable.
50+
- AI dubs on youtube are no longer accidentally selected as default tracks.
51+
- youtube HLS preference is now deprecated, but can be enabled on a self-hosted instance via `ENABLE_DEPRECATED_YOUTUBE_HLS` in env.
52+
53+
## web app improvements
54+
- improved compatibility of local processing & related code with older browsers.
55+
- disabled multithreading in old mobile safari, making it possible to use local processing on iOS 15+.
56+
- local processing workers:
57+
- the fetch worker is now less sensitive to network-related errors and returns a descriptive error whenever necessary.
58+
- the ffmpeg worker now returns an appropriate error when a required stream is missing.
59+
- the generic crash error is now localized.
60+
- added a default file icon in case cobalt can't detect the file type.
61+
- made frontend compatible with static cloudflare workers.
62+
- most used languages in [subtitle](/settings/metadata#subtitles) and [audio track](/settings/audio#youtube-dub) dropdowns are now on top.
63+
- default values of subtitle/audio track dropdowns are now localized.
64+
- translated all UI strings to russian.
65+
- fixed overflow in the processing queue.
66+
- updated a bunch of localization strings.
67+
- slightly updated the update notification & fixed its location in RTL layouts.
68+
69+
## processing instance improvements
70+
- fixed HLS downloading from soundcloud that was accidentally broken in the 11.0 update.
71+
- fixed dynamic env reloading.
72+
- added console messages about dynamic env changes.
73+
- `SESSION_RATELIMIT` is now `SESSION_RATELIMIT_MAX`, but the old name remains valid until the next major update. this is a result of a typo in 11.0, sorry!
74+
- `localProcessing` is now `disabled | preferred | forced`, not a boolean. 11.2 accepts boolean values, but this will be removed in a future version.
75+
- added `subtitleLang`, which is any valid ISO 639-1 language code.
76+
- removed backwards compatibility with `twitterGif` and `tiktokH265`.
77+
- updated `local-processing` response in correlation to addition of subtitles and audio covers.
78+
- a lot of refactoring.
79+
80+
for up-to-date info about instance variables, check the docs on github:
81+
- [processing instance environment variables](https://github.com/imputnet/cobalt/blob/main/docs/api-env-variables.md).
82+
- [api documentation](https://github.com/imputnet/cobalt/blob/main/docs/api.md).
83+
84+
## all changes are on github
85+
as usual, you can check [all commits since the 11.0 release on github](https://github.com/imputnet/cobalt/compare/a52dde7...main) for even more details and exact code changes.
86+
87+
we hope that you enjoy this update and have a great rest of your day!
88+
89+
\~ your friends at imput ❤️

web/i18n/ru/a11y/dialog.json

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
{
2+
"picker.item.photo": "превью фотографии",
3+
"picker.item.video": "превью видео",
4+
"picker.item.gif": "превью gif"
5+
}

web/i18n/ru/a11y/donate.json

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
{
2+
"share.qr.expand": "qr-код. нажми, чтобы развернуть.",
3+
"share.qr.collapse": "развёрнутый qr-код. нажми, чтобы свернуть."
4+
}

web/i18n/ru/a11y/queue.json

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
{
2+
"status.completed": "очередь обработки. все задачи завершены.",
3+
"status.ongoing": "очередь обработки. есть текущие задачи.",
4+
"status.default": "очередь обработки"
5+
}

web/i18n/ru/a11y/save.json

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,12 @@
11
{
2-
"link_area": "зона вставки ссылки",
3-
"clear_input": "clear input",
2+
"link_area": "область ввода ссылки",
3+
"clear_input": "очистить поле ввода",
44
"download": "скачать",
55
"download.think": "обрабатываю ссылку...",
66
"download.check": "проверяю загрузку...",
7-
"download.done": "загрузка завершена!",
8-
"download.error": "ошибка загрузки"
7+
"download.done": "загрузка завершена",
8+
"download.error": "ошибка загрузки",
9+
"link_area.turnstile": "область ввода ссылки. проверяю, что ты не робот.",
10+
"tutorial.shortcut.photos": "добавить команду \"в фото\"",
11+
"tutorial.shortcut.files": "добавить команду \"в файлы\""
912
}

web/i18n/ru/about.json

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
{
2+
"page.general": "что такое кобальт?",
3+
"heading.general": "общие условия",
4+
"heading.saving": "скачивание",
5+
"heading.encryption": "шифрование",
6+
"heading.abuse": "сообщение о злоупотреблении",
7+
"heading.motivation": "мотивация",
8+
"heading.licenses": "лицензии",
9+
"heading.summary": "лучший способ сохранять то, что ты любишь",
10+
"page.community": "сообщество и поддержка",
11+
"page.privacy": "конфиденциальность",
12+
"page.terms": "условия и этика",
13+
"page.credits": "благодарности и лицензии",
14+
"heading.testers": "бета-тестеры",
15+
"heading.community": "открытое сообщество",
16+
"heading.local": "обработка на устройстве",
17+
"heading.plausible": "анонимная аналитика трафика",
18+
"heading.cloudflare": "веб-приватность и безопасность",
19+
"heading.responsibility": "ответственности пользователя",
20+
"support.github": "смотри исходный код кобальта, вноси свой вклад или сообщай о проблемах",
21+
"support.discord": "общайся с сообществом и разработчиками кобальта или попроси о помощи",
22+
"support.description.issue": "если ты хочешь сообщить о баге или какой-то другой повторяющейся проблеме, то делай это на github.",
23+
"support.description.help": "используй discord для любых других вопросов. чётко опиши проблему в #cobalt-support, иначе никто не сможет тебе помочь.",
24+
"support.twitter": "следи за обновлениями и разработкой кобальта в своей ленте твиттера",
25+
"support.telegram": "следи за обновлениями кобальта в телеграм-канале",
26+
"support.description.best-effort": "вся поддержка осуществляется по мере возможности и не гарантируется, а ответ может занять какое-то время.",
27+
"heading.privacy_efficiency": "лучшая приватность и эффективность",
28+
"heading.partners": "партнёры",
29+
"support.bluesky": "следи за обновлениями и разработкой кобальта в своей ленте bluesky"
30+
}

web/i18n/ru/about/credits.md

Lines changed: 94 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,94 @@
1+
<script lang="ts">
2+
import { contacts, docs, partners } from "$lib/env";
3+
import { t } from "$lib/i18n/translations";
4+
5+
import SectionHeading from "$components/misc/SectionHeading.svelte";
6+
import BetaTesters from "$components/misc/BetaTesters.svelte";
7+
</script>
8+
9+
<section id="imput">
10+
<SectionHeading
11+
title="imput"
12+
sectionId="imput"
13+
/>
14+
15+
кобальт сделан с любовью и заботой руками [imput](https://imput.net/) ❤️
16+
17+
мы маленькая команда из двух человек, но мы очень усердно работаем, чтобы делать
18+
классный софт, который приносит пользу всем. если тебе нравится то, что мы
19+
делаем, поддержи нас на [странице донатов](/donate)!
20+
</section>
21+
22+
<section id="testers">
23+
<SectionHeading
24+
title={$t("about.heading.testers")}
25+
sectionId="testers"
26+
/>
27+
28+
огромное спасибо нашим тестерам за то, что они тестировали обновления заранее и
29+
следили за их стабильностью. они ещё помогли нам выпустить cobalt 10!
30+
<BetaTesters />
31+
32+
все ссылки внешние и ведут на их личные сайты или соцсети.
33+
</section>
34+
35+
<section id="partners">
36+
<SectionHeading
37+
title={$t("about.heading.partners")}
38+
sectionId="partners"
39+
/>
40+
41+
часть инфраструктуры кобальта предоставлена нашим давним партнёром,
42+
[royalehosting.net]({partners.royalehosting})!
43+
</section>
44+
45+
<section id="meowbalt">
46+
<SectionHeading
47+
title={$t("general.meowbalt")}
48+
sectionId="meowbalt"
49+
/>
50+
51+
мяубальт — это шустрый маскот кобальта, очень выразительный кот, который любит
52+
быстрый интернет.
53+
54+
весь потрясающий арт мяубальта, который ты видишь в кобальте, был сделан
55+
[GlitchyPSI](https://glitchypsi.xyz/). он ещё и оригинальный создатель этого
56+
персонажа.
57+
58+
imput владеет юридическими правами на дизайн персонажа мяубальта, но не на
59+
конкретные арты, которые были созданы GlitchyPSI.
60+
61+
мы любим мяубальта, поэтому мы вынуждены установить пару правил, чтобы его
62+
защитить:
63+
- ты не можешь использовать дизайн персонажа мяубальта ни в какой форме, кроме
64+
фанарта.
65+
- ты не можешь использовать дизайн или арты мяубальта в коммерческих целях.
66+
- ты не можешь использовать дизайн или арты мяубальта в своих проектах.
67+
- ты не можешь использовать или изменять работы GlitchyPSI с мяубальтом ни в
68+
каком виде.
69+
70+
если ты нарисуешь фанарт мяубальта, не стесняйся делиться им в [нашем
71+
дискорд-сервере](/about/community), мы с нетерпением ждём!
72+
</section>
73+
74+
<section id="licenses">
75+
<SectionHeading
76+
title={$t("about.heading.licenses")}
77+
sectionId="licenses"
78+
/>
79+
80+
код api (сервера обработки) кобальта — open source и распространяется по
81+
лицензии [AGPL-3.0]({docs.apiLicense}).
82+
83+
код фронтенда кобальта — [source first](https://sourcefirst.com/) и
84+
распространяется по лицензии [CC-BY-NC-SA 4.0]({docs.webLicense}).
85+
86+
нам пришлось сделать фронтенд source first, чтобы грифтеры не наживались на
87+
нашем труде и не создавали вредоносные клоны для обмана людей и порче нашей
88+
репутации. кроме коммерческого использования, у этого типа лицензии те же
89+
принципы, что и у многих open source лицензий.
90+
91+
мы используем много опенсорсных библиотек, но также создаём и распространяем
92+
свои собственные. полный список зависимостей можно посмотреть на
93+
[github]({contacts.github})!
94+
</section>

0 commit comments

Comments
 (0)