diff --git a/package.json b/package.json index 90e4b68f..18e575b2 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "cobalt", "description": "save what you love", - "version": "7.0-dev2", + "version": "7.0-dev3", "author": "wukko", "exports": "./src/cobalt.js", "type": "module", diff --git a/src/config.json b/src/config.json index ef591525..6337654f 100644 --- a/src/config.json +++ b/src/config.json @@ -25,7 +25,8 @@ "crypto": { "bitcoin": "bc1q59jyyjvrzj4c22rkk3ljeecq6jmpyscgz9spnd", "ethereum": "0x4B4cF23051c78c7A7E0eA09d39099621c46bc302", - "litecoin": "ltc1qvp0xhrk2m7pa6p6z844qcslfyxv4p3vf95rhna" + "litecoin": "ltc1qvp0xhrk2m7pa6p6z844qcslfyxv4p3vf95rhna", + "monero": "4B1SNB6s8Pq1hxjNeKPEe8Qa8EP3zdL16Sqsa7QDoJcUecKQzEj9BMxWnEnTGu12doKLJBKRDUqnn6V9qfSdXpXi3Nw5Uod" }, "links": { "boosty": "https://boosty.to/wukko/donate" diff --git a/src/front/cobalt.css b/src/front/cobalt.css index 3e715f17..5fe20137 100644 --- a/src/front/cobalt.css +++ b/src/front/cobalt.css @@ -339,7 +339,7 @@ button:active, .text-backdrop { background: var(--accent); color: var(--background); - padding: 0 0.2rem; + padding: 0 0.3rem; } .text-backdrop.link { text-decoration: underline; @@ -641,7 +641,7 @@ button:active, -webkit-user-select: text; background: var(--accent-button); padding: var(--gap-no-icon); - overflow: auto; + overflow: clip; } #back-button { padding: 0; @@ -788,7 +788,7 @@ button:active, display: none; } #about-donate-footer { - box-shadow: 0 0 0 .1rem var(--red) inset, 0 0 1rem 0 var(--red); + box-shadow: 0 0 0 0.1rem var(--red) inset, 0 0 0.6rem 0 var(--red); z-index: 1; } .popup-content-inner, @@ -864,6 +864,16 @@ button:active, user-select: none; color: var(--accent); } +.loader { + text-align: center; +} +#home { + opacity: 0; +} +#home.visible { + opacity: 1; + transition: opacity 0.2s ease-out; +} /* rounded corners */ #bottom #paste, #footer .switch, @@ -877,7 +887,8 @@ button:active, #download-switcher .switch, #popup-about .switch, #popup-tabs .switch, -.text-to-copy { +.text-to-copy, +.text-to-copy.text-backdrop { border-radius: 5px / 6px; } [type=checkbox] { @@ -907,19 +918,22 @@ button:active, } .collapse-list.first, .collapse-list.first .collapse-header { - border-top-left-radius: 7px 8px; - border-top-right-radius: 7px 8px; + border-top-left-radius: 6px 7px; + border-top-right-radius: 6px 7px; } .collapse-list.last, .collapse-list.last .collapse-header { - border-bottom-left-radius: 7px 8px; - border-bottom-right-radius: 7px 8px; + border-bottom-left-radius: 6px 7px; + border-bottom-right-radius: 6px 7px; } .collapse-list.last.expanded .collapse-header { border-radius: 0; } -.loader { - text-align: center; +@media all and (display-mode: standalone) { + /* prevent resizing fliecker on ios if web app is installed as standalone */ + #home.visible { + transition-delay: 0.1s; + } } /* adapt the page according to screen size */ @media screen and (max-width: 1550px) { diff --git a/src/front/cobalt.js b/src/front/cobalt.js index 90dd018b..f05b1320 100644 --- a/src/front/cobalt.js +++ b/src/front/cobalt.js @@ -477,16 +477,17 @@ window.onload = () => { loadSettings(); detectColorScheme(); changeDownloadButton(0, '>>'); - eid("cobalt-main-box").style.visibility = 'visible'; - eid("footer").style.visibility = 'visible'; - if (eid("urgent-notice")) eid("urgent-notice").style.visibility = 'visible'; - eid("url-input-area").value = ""; notificationCheck(); loadCelebrationsEmoji(); if (isIOS) { sSet("downloadPopup", "true"); eid("downloadPopup-chkbx").style.display = "none"; } + eid("url-input-area").value = ""; + + eid("home").style.visibility = 'visible'; + eid("home").classList.toggle("visible"); + let urlQuery = new URLSearchParams(window.location.search).get("u"); if (urlQuery !== null && regex.test(urlQuery)) { eid("url-input-area").value = urlQuery; @@ -502,7 +503,7 @@ eid("url-input-area").addEventListener("keyup", (e) => { document.onkeydown = (e) => { if (!store.isPopupOpen) { if (e.ctrlKey || e.key === "/") eid("url-input-area").focus(); - if (e.key === "Escape" || e.key === "Clear" || e.key === "Delete") clearInput(); + if (e.key === "Escape" || e.key === "Clear") clearInput(); // top buttons if (e.key === "D") pasteClipboard(); diff --git a/src/front/emoji/boring_document.svg b/src/front/emoji/boring_document.svg new file mode 100644 index 00000000..ec3e642f --- /dev/null +++ b/src/front/emoji/boring_document.svg @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/src/localization/languages/en.json b/src/localization/languages/en.json index e17e1016..fa819624 100644 --- a/src/localization/languages/en.json +++ b/src/localization/languages/en.json @@ -7,7 +7,7 @@ "AppTitleCobalt": "cobalt", "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 without ads, trackers, or other creepy bullshit.", + "EmbedBriefDescription": "save what you love. no ads, trackers, or other creepy bullshit.", "MadeWithLove": "made with <3 by wukko", "AccessibilityInputArea": "link input area", "AccessibilityOpenAbout": "open about popup", @@ -92,7 +92,7 @@ "ChangelogPressToHide": "collapse", "Donate": "donate", "DonateSub": "help it stay online", - "DonateExplanation": "cobalt does not (and will never) serve ads or sell your data, meaning that it's completely free to use. turns out developing and keeping up a web service used by over 300,000 people is not that easy.\n\nif you ever found cobalt useful and want to help continue its development and maintenance consider chipping in! if you want to thank the developer, you can also do that via donations. every cent helps and is VERY appreciated!\n\ncobalt's usage worldwide grows daily and i need to make up for it. as you can imagine, hosting costs grow progressively too. as a year 1 university student, i was not prepared for such expenses :(\n\ni am yet to earn anything from cobalt, everything goes back to users, so you're helping everyone who uses cobalt.\n\nyour help is more appreciated than ever!", + "DonateExplanation": "cobalt doesn't shove ads in your face and doesn't sell your personal data, and thus is completely free to use for everyone. but development and maintenance of a media-heavy service used by over 350k people is quite costly. both in terms of time and money. as a student, it's rather difficult for me to handle such expenses on my own.\n\nif cobalt has helped you in the past and you want to keep it growing and evolving, you can do so by making a donation!\n\nby donating you're helping everyone who uses cobalt: teachers, students, musicians, content creators, artists, lecturers, and many, many more!\n\nin past few months donations have let me:\n*; increase stability and uptime to nearly 100%.\n*; speed up ALL downloads, especially heavier ones.\n*; open cobalt api for free public use.\n*; withstand several huge user influxes with 0 downtime.\n*; move to a reliable and trustworthy cloud infrastructure provider.\n*; separate frontend and api for resilience and future decentralization.\n\nevery cent matters and is extremely appreciated, you can truly make a difference!", "DonateVia": "donate via", "DonateHireMe": "...or you can hire me :)", "SettingsVideoMute": "mute audio", @@ -105,7 +105,7 @@ "FollowSupport": "keep in touch with cobalt for support, polls, news, and more:", "SupportNote": "please note that response may take a while, there's only one person managing everything.", "SourceCode": "report issues, explore source code, star or fork the repo:", - "PrivacyPolicy": "cobalt's privacy policy is simple: no data about you is ever collected or stored. zero, zilch, nada, nothing.\nwhat you download is your business, not mine.\n\nsome non-backtraceable data does get temporarily stored when requested download requires live render. it's necessary for that feature to function.\n\nin that case, information about requested stream is temporarily stored in server's RAM for 20 seconds. as 20 seconds have passed, all previously stored information is permanently removed.\nno one (even me) has access to this data, because official cobalt codebase doesn't provide a way to read it outside of processing functions.\n\nyou can check cobalt's github repo yourself and see that everything is as stated.", + "PrivacyPolicy": "cobalt's privacy policy is simple: no data about you is ever collected or stored. zero, zilch, nada, nothing.\nwhat you download is solely your business, not mine or anyone else's.\n\nif your download requires live render, some non-backtraceable data is temporarily stored in server's RAM. it's necessary for this feature to function.\n\nin this case info about requested content is stored for 20 seconds and then permanently removed.\nno one (even me) has access to this data. official cobalt codebase doesn't provide a way to read it outside of processing functions.\n\nyou can check cobalt's source code yourself and see that everything is as stated.", "ErrorYTUnavailable": "this youtube video is unavailable, it could be region or age restricted. try another one!", "ErrorYTTryOtherCodec": "i couldn't find anything to download with your settings. try another codec or quality!\n\nnote: youtube api sometimes acts unexpectedly. blame google for this, not me.", "SettingsCodecSubtitle": "youtube codec", @@ -130,9 +130,11 @@ "SupportSelfTroubleshooting": "experiencing issues? try self-troubleshooting guide first!", "AccessibilityGoBack": "go back and close the popup", "CollapseKeyboard": "keyboard shortcuts", - "KeyboardShortcutsIntro": "you can use cobalt even faster with keyboard shortcuts:", + "KeyboardShortcutsIntro": "use cobalt even faster with keyboard shortcuts:", "KeyboardShortcutQuickPaste": "paste the link", "KeyboardShortcutClear": "clear link input area", - "KeyboardShortcutClosePopup": "close all popups" + "KeyboardShortcutClosePopup": "close all popups", + "CollapseLegal": "legal stuff", + "FairUse": "cobalt is a tool for easing content downloads from internet and takes zero liability. you are responsible for what you download, how you use and distribute that content.\n\ncobalt does not log any info about you, it's impossible for me to snitch on you, but please be mindful when using content of others and always credit original creators!\n\nwhen used in education purposes (lecture, homework, etc) please attach the source link.\n\nfair use and credits benefit everyone." } } diff --git a/src/localization/languages/ru.json b/src/localization/languages/ru.json index 6eb9d05f..66f34af1 100644 --- a/src/localization/languages/ru.json +++ b/src/localization/languages/ru.json @@ -93,7 +93,7 @@ "ChangelogPressToHide": "скрыть", "Donate": "задонатить", "DonateSub": "ты можешь помочь!", - "DonateExplanation": "кобальт не пихает рекламу тебе в лицо и не продаёт твои личные данные, а значит работает совершенно бесплатно. но оказывается, что разработка и поддержка сервиса, которым пользуются более 300 тысяч людей, обходится довольно затратно.\n\nесли кобальт тебе помог и ты хочешь, чтобы он продолжал работать, то это можно сделать через донаты!\n\nиспользование кобальта по всему миру растёт с каждым днём, а в след за ним и стоимость хостинга. мне, как первокурснику, оплачивать такое в одиночку довольно трудно.\n\nя еще ничего не заработал на кобальте, всё возвращается обратно пользователям, так что ты помогаешь всем, кто использует кобальт.\n\nтвой донат на вес золота, ценится как никогда!", + "DonateExplanation": "кобальт не пихает рекламу тебе в лицо и не продаёт твои личные данные, а значит работает совершенно бесплатно для всех. но разработка и поддержка медиа сервиса, которым пользуются более 350 тысяч людей, обходится довольно затратно. мне, как студенту, оплачивать такое в одиночку довольно трудно.\n\nесли кобальт тебе помог и ты хочешь, чтобы он продолжал работать и развиваться, то это можно сделать через донаты!\n\nделая донат ты помогаешь всем, кто пользуется кобальтом: преподавателям, студентам, музыкантам, художникам, контент-мейкерам и многим-многим другим!\n\nза последние несколько месяцев благодаря донатам я смог:\n*; повысить стабильность и аптайм почти до 100%.\n*; ускорить ВСЕ загрузки, особенно наиболее тяжёлые.\n*; открыть api кобальта для свободного публичного использования.\n*; выдержать несколько огромных наплывов пользователей без перебоев.\n*; перейти к надёжному поставщику облачной инфры.\n*; разделить фронтенд и api для обеспечения отказоустойчивости и децентрализации в будущем.\n\nкаждый донат невероятно ценится и помогает кобальту развиваться!", "DonateVia": "открыть", "DonateHireMe": "...или же ты можешь пригласить меня на работу :)", "SettingsVideoMute": "убрать аудио", @@ -106,7 +106,7 @@ "FollowSupport": "оставайтесь на связи с кобальтом для новостей, поддержки, участия в опросах, и многого другого:", "SupportNote": "так как я один занимаюсь разработкой и поддержкой в одиночку, время ожидания ответа может достигать нескольких часов. но я отвечаю всем, так что не стесняйся.", "SourceCode": "пиши о проблемах, шарься в исходнике, или же форкай репозиторий:", - "PrivacyPolicy": "политика конфиденциальности кобальта довольно проста: ничего не хранится об истории твоих действий или загрузок. совсем. даже ошибки.\nто, что ты скачиваешь - только твоё личное дело.\n\nв случаях, когда твоей загрузке требуется лайв-рендер, временно хранится неотслеживаемая информация. это необходимо для работы такого типа загрузок.\n\nв этом случае данные о запрошенном стриме хранятся в ОЗУ сервера в течение 20 секунд. по истечении этого периода всё стирается. ни у кого (даже у меня) нет доступа к временно хранящимся данным, так как официальный код кобальта не предоставляет такой возможности.\n\nты всегда можешь посмотреть исходный код кобальт и убедиться, что всё так, как описано.", + "PrivacyPolicy": "политика конфиденциальности кобальта довольно проста: никакие данные о тебе никогда не собираются и не хранятся. нуль, ноль, нада, ничего.\nто, что ты скачиваешь, - твоё личное дело, а не чьё-либо ещё.\n\nесли твоей загрузке требуется живой рендер, то некоторые неотслеживаемые данные временно держатся в ОЗУ сервера. это необходимо для работы данной функции.\n\nв этом случае данные о запрошенном контенте хранятся в течение 20 секунд. по истечении этого времени всё стирается. ни у кого (даже у меня) нет доступа к временно хранящимся данным, так как официальная кодовая база кобальта не предусматривает возможности их чтения вне функций обработки.\n\nты всегда можешь посмотреть исходный код кобальта и убедиться, что всё так, как заявлено.", "ErrorYTUnavailable": "это видео недоступно, возможно оно ограничено по региону или доступу. попробуй другое!", "ErrorYTTryOtherCodec": "я не нашёл того, что мог бы скачать с твоими настройками. попробуй другой кодек или качество!", "SettingsCodecSubtitle": "кодек для видео с youtube", @@ -131,9 +131,11 @@ "SupportSelfTroubleshooting": "возникли проблемы? попробуй сначала исправить всё сам по этому гиду!", "AccessibilityGoBack": "вернуться назад и закрыть окно", "CollapseKeyboard": "горячие клавиши", - "KeyboardShortcutsIntro": "ты можешь пользоваться кобальтом ещё быстрее с горячими клавишами:", + "KeyboardShortcutsIntro": "пользуйся кобальтом ещё быстрее с горячими клавишами:", "KeyboardShortcutQuickPaste": "вставить ссылку", "KeyboardShortcutClear": "очистить зону вставки ссылки", - "KeyboardShortcutClosePopup": "закрыть все окна" + "KeyboardShortcutClosePopup": "закрыть все окна", + "CollapseLegal": "правовые штучки", + "FairUse": "кобальт - это инструмент для облегчения скачивания контента из интернета, и он не несёт никакой ответственности. ты несёшь ответственность за то, что скачиваешь, как используешь и распространяешь скачанный контент.\n\nкобальт не собирает никакой информации о тебе, и не может донести на тебя, но, пожалуйста, будь сознателен при использовании чужого контента и всегда указывай авторов!\n\nпри использовании в образовательных целях (лекции, домашние задания и т.д.), пожалуйста, прикладывай ссылку на источник.\n\nчестное использование и указание авторства выгодно всем." } } diff --git a/src/modules/api.js b/src/modules/api.js index 94ed5040..f4b1e294 100644 --- a/src/modules/api.js +++ b/src/modules/api.js @@ -12,12 +12,15 @@ export async function getJSON(originalURL, lang, obj) { let patternMatch, url = decodeURIComponent(originalURL), hostname = new URL(url).hostname.split('.'), host = hostname[hostname.length - 2]; + if (!url.startsWith('https://')) return apiJSON(0, { t: errorUnsupported(lang) }); switch(host) { case "youtu": - host = "youtube"; - url = `https://youtube.com/watch?v=${url.replace("youtu.be/", "").replace("https://", "")}`; + if (url.startsWith("https://youtu.be/")) { + host = "youtube"; + url = `https://youtube.com/watch?v=${url.replace("https://youtu.be/", "")}`; + } break; case "goo": if (url.substring(0, 30) === "https://soundcloud.app.goo.gl/") { @@ -25,6 +28,12 @@ export async function getJSON(originalURL, lang, obj) { url = `https://soundcloud.com/${url.replace("https://soundcloud.app.goo.gl/", "").split('/')[0]}` } break; + case "x": + if (url.startsWith("https://x.com/")) { + host = "twitter"; + url = url.replace("https://x.com/", "https://twitter.com/") + } + break; case "tumblr": if (!url.includes("blog/view")) { if (url.slice(-1) === '/') url = url.slice(0, -1); diff --git a/src/modules/changelog/changelog.json b/src/modules/changelog/changelog.json index 41f21075..99efe017 100644 --- a/src/modules/changelog/changelog.json +++ b/src/modules/changelog/changelog.json @@ -1,14 +1,14 @@ { "current": { - "version": "7.0-dev2", - "date": "August 11, 2023", - "title": "wip: better experience all around!", + "version": "7.0", + "date": "August 13, 2023", + "title": "everything is coming along nicely", "banner": { "file": "cattired.webp", "width": 640, "height": 286 }, - "content": "hey beta testers, this changelog isn't final but i do want to highlight some changes here just to keep track of them. make sure to report all issues in the testing discord channel!\n\n(this changelog is not sorted as it usually is)\n\nnew in 7.0-dev2:\n*; rounded corners everywhere! cobalt is now safe for everyone who can't handle sharp objects. i really want your feedback on this.\n*; proper banner loading. no more jumping text!\n*; proper banner error handling. if banner wasn't loaded, it'll simply go grey instead of disappearing.\n*; links are no longer italic and are instead underlined.\n*; collapsible lists now have corresponding emoji.\n*; donate button is now highlighted with magenta instead of white.\n*; added a list of keyboard shortcuts to about tab.\n*; proper dropdown arrow.\n\nwon't be in final changelog:\n*; popup tabs now get highlighted on hover instead of being hollow.\n*; small popup is now animated on mobile. it slides from bottom to top.\n*; back arrow is now centered.\n\n\neverything from previous version of this changelog:\n\nservice improvements:\n*; fixed unexpected stream drop when downloading a silent reddit video with mute mode on.\n*; added support for new reddit audio link type.\n\nweb improvements:\n*; removed 6.0 api fallback.\n*; moved on demand blocks to web server, now changelog can be updated independently from preferred api server.\n*; all-new matte glass aesthetic, applied to revamped popup headers, tab selectors, and also small popups.\n*; optimized installed web app to look and act like a native app, especially on ios. !!!!please try this!!!!\n*; added ability to attach a date to changelog.\n*; refreshed the look of entire changelog tab: separated title and version/commit, made title bigger, evened out all paddings.\n*; popups now work without any weird workarounds, especially on mobile. they're clean and nice.\n*; homescreen now also works without any weird workarounds. it is also clean and nice.\n*; replaced close button with back button, moved it to left. it makes more sense.\n*; (kinda old but not in older changelog) absolutely reimagined error and download popups, consistent with the rest of refreshed design.\n*; reduced spacing, optimized css of almost all ui elements. should be even more consistent across platforms now.\n*; added interaction animations.\n*; added more accessibility options, put them all into one category. you can disable animations and transparency if you want to.\n*; added a link to self-troubleshooting guide to support expand list in about popup.\n*; renamed 2160p and 4320p to 4k and 8k respectfully for better clarity.\n*; cobalt now lets you know if your browser doesn't support clipboard api and helps you fix it.\n*; added ability to translate \"cobalt\" for twitter-like localization. in russian cobalt is now кобальт, that's the style i will be going with from now on.\n*; updated some localization strings.\n*; removed ability to change the app name dynamically in all locations. cobalt is a sustained product name.\n*; added more keyboard shorcuts.\n*; added a list of keyboard shortcuts to about tab.\n\nyour keyboard slightly represents cobalt's ui. let me know if you like these.\n\ninternal web improvements:\n*; cleaned up all related frontend modules, especially page.js. will add more in final changelog, i'm very tired.\n\napi improvements:\n*; now catching all json api related errors.\n*; moved on demand blocks to web server.\n*; now sending standard rate limiting headers.\n*; better readability in source.\n\nother improvements:\n*; renamed docker-compose.yml.example to docker-compose.example.yml for linting in code editors.\n*; added a wiki with wip troubleshooting guide on github.\n\nwhat doesn't work or works poorly:\n*; tiktok/twitter media pickers look like shit, they haven't been worked on yet. they also might not work at all on ios.\n*; unknown if scrolling within popups works properly on ios 16 (when installed as web app).\n*; \"ask how to save\" toggle is pressable on ios devices even though it shouldn't be." + "content": "this changelog isn't final but i do want to highlight some changes here just to keep track of them. make sure to report all issues in the testing discord channel!\n\n(this changelog is not sorted as it usually is)\n\nnew in 7.0-dev3:\n*; added support for x.com urls.\n*; removed del shortcut for clearing url input area because it was causing regular typing issues.\n*; added info about no liability.\n*; fixed donate button glow and text backdrop padding.\n*; updated donation and privacy policy texts for more clarity in both english and russian.\n*; made cors question in setup script to take yes as answer, not just \"y\".\n*; text-to-copy now has proper rounding when highlighted.\n*; home screen now smoothly fades in instead of popping in.\n\nnew in 7.0-dev2:\n*; rounded corners everywhere! cobalt is now safe for everyone who can't handle sharp objects. i really want your feedback on this.\n*; proper banner loading. no more jumping text!\n*; proper banner error handling. if banner wasn't loaded, it'll simply go grey instead of disappearing.\n*; links are no longer italic and are instead underlined.\n*; collapsible lists now have corresponding emoji.\n*; donate button is now highlighted with magenta instead of white.\n*; added a list of keyboard shortcuts to about tab.\n*; proper dropdown arrow.\n*; fixed celebrations emoji.\n\nwon't be in final changelog:\n*; popup tabs now get highlighted on hover instead of being hollow.\n*; small popup is now animated on mobile. it slides from bottom to top.\n*; back arrow is now centered.\n\n\neverything from previous version of this changelog:\n\nservice improvements:\n*; fixed unexpected stream drop when downloading a silent reddit video with mute mode on.\n*; added support for new reddit audio link type.\n\nweb improvements:\n*; removed 6.0 api fallback.\n*; moved on demand blocks to web server, now changelog can be updated independently from preferred api server.\n*; all-new matte glass aesthetic, applied to revamped popup headers, tab selectors, and also small popups.\n*; optimized installed web app to look and act like a native app, especially on ios. !!!!please try this!!!!\n*; added ability to attach a date to changelog.\n*; refreshed the look of entire changelog tab: separated title and version/commit, made title bigger, evened out all paddings.\n*; popups now work without any weird workarounds, especially on mobile. they're clean and nice.\n*; homescreen now also works without any weird workarounds. it is also clean and nice.\n*; replaced close button with back button, moved it to left. it makes more sense.\n*; (kinda old but not in older changelog) absolutely reimagined error and download popups, consistent with the rest of refreshed design.\n*; reduced spacing, optimized css of almost all ui elements. should be even more consistent across platforms now.\n*; added interaction animations.\n*; added more accessibility options, put them all into one category. you can disable animations and transparency if you want to.\n*; added a link to self-troubleshooting guide to support expand list in about popup.\n*; renamed 2160p and 4320p to 4k and 8k respectfully for better clarity.\n*; cobalt now lets you know if your browser doesn't support clipboard api and helps you fix it.\n*; added ability to translate \"cobalt\" for twitter-like localization. in russian cobalt is now кобальт, that's the style i will be going with from now on.\n*; updated some localization strings.\n*; removed ability to change the app name dynamically in all locations. cobalt is a sustained product name.\n*; added more keyboard shorcuts.\n*; added a list of keyboard shortcuts to about tab.\n\nyour keyboard slightly represents cobalt's ui. let me know if you like these.\n\ninternal web improvements:\n*; cleaned up all related frontend modules, especially page.js. will add more in final changelog, i'm very tired.\n\napi improvements:\n*; now catching all json api related errors.\n*; moved on demand blocks to web server.\n*; now sending standard rate limiting headers.\n*; better readability in source.\n\nother improvements:\n*; renamed docker-compose.yml.example to docker-compose.example.yml for linting in code editors.\n*; added a wiki with wip troubleshooting guide on github.\n\nwhat doesn't work or works poorly:\n*; tiktok/twitter media pickers look like shit, they haven't been worked on yet. they also might not work at all on ios.\n*; unknown if scrolling within popups works properly on ios 16 (when installed as web app).\n*; \"ask how to save\" toggle is pressable on ios devices even though it shouldn't be." }, "history": [{ "version": "6.2", diff --git a/src/modules/emoji.js b/src/modules/emoji.js index 0a99ff21..514e8a1d 100644 --- a/src/modules/emoji.js +++ b/src/modules/emoji.js @@ -31,7 +31,8 @@ const names = { "🔒": "locked", "🔍": "magnifying_glass", "🔗": "link", - "⌨": "keyboard" + "⌨": "keyboard", + "📑": "boring_document" } let sizing = { 18: 0.8, diff --git a/src/modules/pageRender/elements.js b/src/modules/pageRender/elements.js index 382ce12d..66e6de19 100644 --- a/src/modules/pageRender/elements.js +++ b/src/modules/pageRender/elements.js @@ -205,7 +205,7 @@ export function celebrationsEmoji() { } export function urgentNotice(obj) { if (obj.visible) { - return `` + return `
${emoji(obj.emoji, 18)} ${obj.text}
` } return `` } diff --git a/src/modules/pageRender/page.js b/src/modules/pageRender/page.js index 80c9a790..b923040a 100644 --- a/src/modules/pageRender/page.js +++ b/src/modules/pageRender/page.js @@ -121,7 +121,7 @@ export default function(obj) { combo: "Ctrl+V", name: t("KeyboardShortcutQuickPaste") }, { - combo: "Esc/Del", + combo: "Esc", name: t("KeyboardShortcutClear") }, { combo: "Esc", @@ -163,6 +163,10 @@ export default function(obj) { name: "privacy", title: `${emoji("🔒")} ${t("CollapsePrivacy")}`, body: t("PrivacyPolicy") + }, { + name: "legal", + title: `${emoji("📑")} ${t("CollapseLegal")}`, + body: t("FairUse") }]) }] }) @@ -494,14 +498,14 @@ export default function(obj) { })} -
+