diff --git a/src/front/cobalt.css b/src/front/cobalt.css index ebc77223..8aa8e86b 100644 --- a/src/front/cobalt.css +++ b/src/front/cobalt.css @@ -107,7 +107,7 @@ a { color: var(--accent-subtext); } .switches::-webkit-scrollbar, -#popup-content::-webkit-scrollbar { +.popup-content::-webkit-scrollbar { display: none; } :focus-visible { @@ -450,23 +450,23 @@ button:active, .popup.small.visible { transform: translate(-50%, -50%); } -.popup.small #popup-header-contents, +.popup.small .popup-header-contents, .popup.small .popup-content-inner, -.popup.small #popup-header { +.popup.small .popup-header { padding: 0; } -.popup.small #popup-header { +.popup.small .popup-header { position: relative; border: none; } -.popup.small #popup-title { +.popup.small .popup-title { margin-bottom: 0.6rem; } .popup.small .explanation { margin-bottom: 0.9rem; } -#close-error { - background: var(--accent); +.popup.small .close-error.switch { + background: var(--accent)!important; color: var(--background); } .popup.scrollable { @@ -520,7 +520,7 @@ button:active, font-size: 1.1rem; padding-bottom: var(--padding-1); } -#popup-desc, +.popup-desc, .desc-error, #popup-info-desc { width: 100%; @@ -533,7 +533,7 @@ button:active, .desc-error { padding-bottom: 1.5rem; } -#popup-title { +.popup-title { font-size: 1.5rem; line-height: 1.2em; display: flex; @@ -541,11 +541,11 @@ button:active, margin-bottom: 0.4rem; margin-top: 0.4rem; } -#popup-above-title { +.popup-above-title { color: var(--accent-subtext); font-size: 0.8rem; } -#popup-content { +.popup-content { overflow-x: scroll; overflow-y: auto; height: 100%; @@ -564,7 +564,7 @@ button:active, .bullpadding { padding-left: 0.58rem; } -#popup-header { +.popup-header { position: absolute; z-index: 999; padding-top: calc(env(safe-area-inset-top)/2 + 1.7rem); @@ -646,16 +646,16 @@ button:active, .switch:focus { box-shadow: var(--inset-focus) inset; } -#popup-tabs .switch { +.popup-tabs .switch { background: none; } -.desktop #popup-tabs .switch:hover, -#popup-tabs .switch:active { +.desktop .popup-tabs .switch:hover, +.popup-tabs .switch:active { background: var(--accent-hover-transparent); box-shadow: 0 0 0 0.1rem var(--accent-highlight) inset; } .switch[data-enabled="true"], -#popup-tabs .switch[data-enabled="true"] { +.popup-tabs .switch[data-enabled="true"] { color: var(--background); background: var(--accent)!important; cursor: default; @@ -693,20 +693,20 @@ button:active, padding: var(--gap-no-icon); overflow: clip; } -#back-button { +.back-button { padding: 0; background: none; max-width: 4rem; font-size: 1rem; } -#back-button svg path, +.back-button svg path, .collapse-indicator svg path { fill: var(--accent); } .popup-tab-content[data-enabled="false"] { display: none; } -#popup-tabs { +.popup-tabs { z-index: 999; bottom: 0; position: absolute; @@ -823,7 +823,7 @@ button:active, } .popup-content-inner, .tab-content-settings, -#popup-header-contents { +.popup-header-contents { padding-left: 1rem; padding-right: 1rem; } @@ -947,15 +947,15 @@ button:active, #bottom #paste, #footer .switch, #audioMode, -#popup-content .switches, +.popup-content .switches, .checkbox, .changelog-img, .changelog-banner, -#close-error, +.close-error, .changelog-tag-version, #download-switcher .switch, #popup-about .switch, -#popup-tabs .switch, +.popup-tabs .switch, .text-to-copy, .text-to-copy.text-backdrop, #filename-preview { @@ -965,16 +965,16 @@ button:active, border-radius: 3px / 4px; } .popup, -.scrollable #popup-content { +.scrollable .popup-content { border-radius: 8px; } -#popup-header .glass-bkg { +.popup-header .glass-bkg { border-top-left-radius: 8px 9px; border-top-right-radius: 8px 9px; border-bottom: var(--accent-highlight) solid 0.1rem; top: -1px; } -#popup-tabs .glass-bkg { +.popup-tabs .glass-bkg { border-bottom-left-radius: 8px 9px; border-bottom-right-radius: 8px 9px; border-top: var(--accent-highlight) solid 0.1rem; @@ -1103,12 +1103,12 @@ button:active, padding-top: calc(env(safe-area-inset-bottom)/2 + 1rem); } .popup, - #popup-header .glass-bkg, - #popup-tabs .glass-bkg, + .popup-header .glass-bkg, + .popup-tabs .glass-bkg, .glass-bkg.small { border-radius: 0; } - #popup-tabs .glass-bkg { + .popup-tabs .glass-bkg { bottom: 0; } .switches { @@ -1141,13 +1141,13 @@ button:active, transform: none; transition: transform 210ms cubic-bezier(0.062, 0.82, 0.165, 1), opacity 130ms ease-in-out; } - .popup.small #popup-header { + .popup.small .popup-header { background: none; } .no-animation .popup.small { transition: none; } - #close-error { + .close-error { bottom: 3rem; } #picker-holder::-webkit-scrollbar { @@ -1166,13 +1166,13 @@ button:active, max-height: 100%; box-shadow: none; } - #popup-tabs { + .popup-tabs { padding-bottom: calc(env(safe-area-inset-bottom)/2 + 1.5rem); } .popup-content-inner, .tab-content-settings, .popup-tabs-child, - #popup-header-contents { + .popup-header-contents { padding-left: 0.7rem; padding-right: 0.7rem; } diff --git a/src/front/cobalt.js b/src/front/cobalt.js index de45aa3a..7da2b8e9 100644 --- a/src/front/cobalt.js +++ b/src/front/cobalt.js @@ -236,7 +236,7 @@ function popup(type, action, text) { `` + - `` + + `` + `` } break; @@ -253,7 +253,7 @@ function popup(type, action, text) { }>` + `
${text.arr[i].type}
` + `
` + - `` + + `` + `` } eid("picker-download").classList.remove("visible"); @@ -603,9 +603,9 @@ window.onload = () => { if (setUn !== null) { if (setUn) { sSet("migrated", "true") - eid("desc-migration").innerHTML += `

${loc.DataTransferSuccess}` + eid("desc-migration").innerHTML += `

${loc.DataTransferSuccess}` } else { - eid("desc-migration").innerHTML += `

${loc.DataTransferError}` + eid("desc-migration").innerHTML += `

${loc.DataTransferError}` } } } @@ -616,6 +616,11 @@ window.onload = () => { window.history.replaceState(null, '', window.location.pathname); notificationCheck(); + + // fix for animations not working in Safari + if (isIOS) { + document.addEventListener('touchstart', () => {}, true); + } } eid("url-input-area").addEventListener("keydown", (e) => { button(); diff --git a/src/front/updateBanners/shutup.png b/src/front/updateBanners/shutup.png deleted file mode 100644 index cbc80ae8..00000000 Binary files a/src/front/updateBanners/shutup.png and /dev/null differ diff --git a/src/front/updateBanners/shutup.webp b/src/front/updateBanners/shutup.webp new file mode 100644 index 00000000..e0a08a7d Binary files /dev/null and b/src/front/updateBanners/shutup.webp differ diff --git a/src/localization/languages/en.json b/src/localization/languages/en.json index b2c67263..9a1e591f 100644 --- a/src/localization/languages/en.json +++ b/src/localization/languages/en.json @@ -8,7 +8,7 @@ "LinkInput": "paste the link here", "AboutSummary": "cobalt is your go-to place for downloads from social and media platforms. zero ads, trackers, or other creepy bullshit. simply paste a share link and you're ready to rock!", "EmbedBriefDescription": "save what you love. no ads, trackers, or other creepy bullshit.", - "MadeWithLove": "made with <3 by wukko", + "MadeWithLove": "made with <3 by wukko", "AccessibilityInputArea": "link input area", "AccessibilityOpenAbout": "open about popup", "AccessibilityDownloadButton": "download button", @@ -152,6 +152,8 @@ "FilenamePreviewAudioAuthor": "Audio Author", "StatusPage": "service status page", "TroubleshootingGuide": "self-troubleshooting guide", + "DonateImageDescription": "cat sleeping on a laptop keyboard and typing letters repeatedly", + "UpdateNewYears": "new years clean up", "SettingsTwitterGif": "convert gifs to .gif", "SettingsTwitterGifDescription": "converting looping videos to .gif reduces quality and majorly increases file size. if you want best efficiency, keep this setting off.", "UpdateTwitterGif": "twitter gifs and pinterest" diff --git a/src/localization/languages/ru.json b/src/localization/languages/ru.json index 168a57c8..cae12454 100644 --- a/src/localization/languages/ru.json +++ b/src/localization/languages/ru.json @@ -8,7 +8,7 @@ "LinkInput": "вставь ссылку сюда", "AboutSummary": "кобальт - твой друг при скачивании контента из соцсетей и других сервисов. никакой рекламы, трекеров и прочего мусора. вставляешь ссылку и получаешь файл. всё. ничего лишнего.", "EmbedBriefDescription": "сохраняй то, что любишь. без рекламы, трекеров и лишней мороки.", - "MadeWithLove": "сделано с любовью <3", + "MadeWithLove": "сделано с любовью <3", "AccessibilityInputArea": "зона вставки ссылки", "AccessibilityOpenAbout": "открыть окно с инфой", "AccessibilityDownloadButton": "кнопка скачивания", @@ -154,6 +154,7 @@ "FilenamePreviewAudioAuthor": "Автор Аудио", "StatusPage": "статус серверов", "TroubleshootingGuide": "гайд по устранению проблем", + "DonateImageDescription": "кошка спит на клавиатуре ноутбука и многократно печатает буквы", "UpdateNewYears": "новогодняя уборка", "SettingsTwitterGif": "конвертировать гифки в .gif", "SettingsTwitterGifDescription": "конвертирование зацикленного видео в .gif снижает качество и значительно увеличивает размер файла. если важна максимальная эффективность, то не используй эту функцию.", diff --git a/src/localization/manager.js b/src/localization/manager.js index ce396891..2b251fe3 100644 --- a/src/localization/manager.js +++ b/src/localization/manager.js @@ -17,7 +17,7 @@ export async function loadLoc() { export function replaceBase(s) { return s - .replace(/\n/g, '
') + .replace(/\n/g, '
') .replace(/{saveToGalleryShortcut}/g, links.saveToGalleryShortcut) .replace(/{repo}/g, repo) .replace(/{statusPage}/g, links.statusPage) diff --git a/src/modules/changelog/changelog.json b/src/modules/changelog/changelog.json index 26092370..0794fafb 100644 --- a/src/modules/changelog/changelog.json +++ b/src/modules/changelog/changelog.json @@ -5,6 +5,7 @@ "title": "new years clean up! bug fixes and fresh look for the home page", "banner": { "file": "catroomba.webp", + "alt": "a cat riding a roomba vacuum", "width": 300, "height": 168 }, @@ -16,6 +17,7 @@ "title": "bugfixes and better downloads!", "banner": { "file": "meowthpolishegg.webp", + "alt": "meowth polishing a togepi egg", "width": 640, "height": 480 }, @@ -26,6 +28,7 @@ "title": "customizable file names, instagram stories, and first cobalt sponsor!", "banner": { "file": "meowthcenter.webp", + "alt": "meowth plush in a datacenter wearing a hardhat, wielding a hammer", "width": 851, "height": 640 }, @@ -36,6 +39,7 @@ "title": "support for twitch clips and rutube!", "banner": { "file": "twitchupdate.webp", + "alt": "meowth plush staring into the camera, laptop with generic purple service in the background", "width": 851, "height": 640 }, @@ -46,6 +50,7 @@ "title": "new domain, what's coming in future, bug fixes, and more!", "banner": { "file": "newdomain.webp", + "alt": "text: new domain, same cobalt", "width": 960, "height": 540 }, @@ -56,6 +61,7 @@ "title": "extended video length limit, metadata toggle, ui improvements, and more!", "banner": { "file": "meowthsnap.webp", + "alt": "cartoon meowth pointing paw dramatically and saying something", "width": 500, "height": 280 }, @@ -66,6 +72,7 @@ "title": "instagram, streamable, video metadata, and more!", "banner": { "file": "meowthproductions.webp", + "alt": "meowth roaring in a fancy circle, à la MGM studios intro", "width": 640, "height": 358 }, @@ -76,6 +83,7 @@ "title": "biggest ui refresh yet!", "banner": { "file": "meowthcooking.webp", + "alt": "meowth handling orders in a restaurant", "width": 640, "height": 360 }, @@ -86,6 +94,7 @@ "title": "all network issues have been fixed!", "banner": { "file": "meowthhammer.webp", + "alt": "meowth plush holding a hammer in real life", "width": 1280, "height": 827 }, @@ -96,6 +105,7 @@ "title": "better reliability, new infrastructure, pinterest support, and way more!", "banner": { "file": "catswitchboxes.webp", + "alt": "a cat climbing into two empty boxes of asahi beer", "width": 600, "height": 314 }, @@ -105,6 +115,7 @@ "title": "instagram support, docker, and more!", "banner": { "file": "catphonestand.webp", + "alt": "a cat holding a phone under its chin while a person plays clash of clans on it", "width": 451, "height": 272 }, @@ -114,6 +125,7 @@ "title": "better looks, better feel", "banner": { "file": "cattired.webp", + "alt": "a cat laying on a sofa face down, wiggling its tail", "width": 640, "height": 286 }, @@ -123,6 +135,7 @@ "title": "fastest one in the game", "banner": { "file": "catspeed.webp", + "alt": "a cat running very fast in an exercise wheel", "width": 640, "height": 356 }, @@ -132,6 +145,7 @@ "title": "the evil has been defeated", "banner": { "file": "happymeowth.webp", + "alt": "meowth jumping up into the sky very excitedly", "width": 500, "height": 330 }, @@ -141,6 +155,7 @@ "title": "it's all about attention to detail!", "banner": { "file": "valentines.webp", + "alt": "relaxed meowth with sakura petals falling in front of them", "width": 489, "height": 374 }, @@ -150,6 +165,7 @@ "title": "prettier than ever", "banner": { "file": "catmakeup.webp", + "alt": "a cat being brushed with a powder makeup brush", "width": 394, "height": 266 }, @@ -159,6 +175,7 @@ "title": "we're better together! thank you for bug reports.", "banner": { "file": "bettertogether.webp", + "alt": "various different pokémon jumping in happiness", "width": 640, "height": 358 }, @@ -168,6 +185,7 @@ "title": "mute videos and proper soundcloud support", "banner": { "file": "shutup.webp", + "alt": "a cat yawning, with a crossed out loudspeaker icon next to it", "width": 1024, "height": 665 }, @@ -177,6 +195,7 @@ "title": "better, faster, stronger, stable", "banner": { "file": "meowthstrong.webp", + "alt": "meowth stretching", "width": 500, "height": 280 }, @@ -186,6 +205,7 @@ "title": "over 1 million monthly requests. thank you.", "banner": { "file": "onemillionr.webp", + "alt": "cobalt logo and a confetti emoji", "width": 1441, "height": 1441 }, @@ -199,6 +219,7 @@ "title": "developers, developers, developers, developers", "banner": { "file": "developers.webp", + "alt": "steve ballmer going \"developers, developers, developers\"", "width": 640, "height": 360 }, diff --git a/src/modules/changelog/changelogManager.js b/src/modules/changelog/changelogManager.js index b267b321..b8763fb5 100644 --- a/src/modules/changelog/changelogManager.js +++ b/src/modules/changelog/changelogManager.js @@ -5,33 +5,35 @@ let changelog = loadJSON('./src/modules/changelog/changelog.json') export default function(string) { try { + const currentChangelog = changelog.current; + switch (string) { case "version": - return `v.${changelog["current"]["version"]}${ - changelog["current"]["date"] ? `· ${changelog["current"]["date"]}` : '' + return `v.${currentChangelog.version}${ + currentChangelog.date ? `· ${currentChangelog.date}` : '' }` case "title": - return replaceBase(changelog["current"]["title"]); + return replaceBase(currentChangelog.title); case "banner": - return changelog["current"]["banner"] ? { - url: `updateBanners/${changelog["current"]["banner"]["file"]}`, - width: changelog["current"]["banner"]["width"], - height: changelog["current"]["banner"]["height"] + const currentBanner = changelog.current.banner; + return currentBanner ? { + ...currentBanner, + url: `updateBanners/${currentBanner.file}` } : false; case "content": - return replaceBase(changelog["current"]["content"]); + return replaceBase(currentChangelog.content); case "history": - return changelog["history"].map((i) => { + return changelog.history.map((log) => { + const banner = log.banner; return { - title: replaceBase(i["title"]), - version: `v.${i["version"]}${ - i["date"] ? `· ${i["date"]}` : '' + title: replaceBase(log.title), + version: `v.${log.version}${ + log.date ? `· ${log.date}` : '' }`, - content: replaceBase(i["content"]), - banner: i["banner"] ? { - url: `updateBanners/${i["banner"]["file"]}`, - width: i["banner"]["width"], - height: i["banner"]["height"] + content: replaceBase(log.content), + banner: banner ? { + ...banner, + url: `updateBanners/${banner.file}` } : false, } }); diff --git a/src/modules/emoji.js b/src/modules/emoji.js index f2bab1b9..f4793cb5 100644 --- a/src/modules/emoji.js +++ b/src/modules/emoji.js @@ -62,5 +62,5 @@ export default function(emoji, size, disablePadding, fluent) { let filePath = `emoji/${names[emoji]}.svg`; if (fluent) filePath = `emoji/3d/${names[emoji]}.svg`; - return `` + return `` } diff --git a/src/modules/pageRender/elements.js b/src/modules/pageRender/elements.js index 308f9748..a677d2bc 100644 --- a/src/modules/pageRender/elements.js +++ b/src/modules/pageRender/elements.js @@ -59,27 +59,27 @@ export function popup(obj) { body = `` for (let i = 0; i < obj.body.length; i++) { if (obj.body[i]["text"].length > 0) { - classes = obj.body[i]["classes"] ? obj.body[i]["classes"] : [] + classes = obj.body[i]["classes"] ?? [] if (i !== obj.body.length - 1 && !obj.body[i]["nopadding"]) { classes.push("desc-padding") } - body += obj.body[i]["raw"] ? obj.body[i]["text"] : `` + body += obj.body[i]["raw"] ? obj.body[i]["text"] : `
${obj.body[i]["text"]}
` } } } return ` ${obj.standalone ? `