1(globalThis.webpackChunkdiscours_io_frontend=globalThis.webpackChunkdiscours_io_frontend||[]).push([[981],{9803(){angular.module("discours.components").component("donationFaq",{restrict:"E",bindings:{},templateUrl:"/components/donationFaq/donationFaq.html",controller:["$scope","config","localeService",function(a,t,s){return this.isEnglish=s.isEnglish(),a.toDonateBlock=()=>{const a=document.getElementById("donate-form");if(a){const s=a.getBoundingClientRect().top+window.pageYOffset-t.headerHeight-270;window.scrollTo({top:s,behavior:"smooth"})}},this}]})},10961(){"use strict";var a=[{mapId:"discours-main",name:"ÐаÑÑа ÐиÑкÑÑÑа â обÑаÑ",subtitle:"ÑкоÑиÑÑема ÑмÑÑлов оÑкÑÑÑой ÑедакÑии"}];angular.module("discours.components").component("mapsListPage",{templateUrl:"/pages/maps/maps-list.html",controller:["apiClient","loginService","$location","$scope","Notification","ConfirmDialog","eventBus",function(t,s,n,e,l,g,o){function c(){i.loading=!0,i.canCreate=s.isAdmin()||s.isAuthor(),i.currentUserId=s.userId(),t.getList("concept-maps").then(function(a){i.maps=Array.isArray(a)?a:[]}).catch(function(t){i.maps=a}).finally(function(){i.loading=!1})}var i=this,d={title:"ÐойдиÑе Ð´Ð»Ñ Ð´Ð¾ÑÑÑпа к каÑÑам",onSuccess:function(){i.requiresAuth=!1,c()},onCancel:function(){n.path("/")}};i.openLoginModal=function(){s.openAuthModal(d)},o.onScope(e,o.EVENTS.USER_LOGGED_OUT,function(){i.requiresAuth=!0}),o.onScope(e,o.EVENTS.USER_LOGGED_IN,function(){i.requiresAuth=!1,c()}),i.$onInit=function(){i.maps=[],s.isLoggedIn()?c():i.requiresAuth=!0},i.createMap=function(){if(i.canCreate){var a=window.prompt("Ðазвание новой каÑÑÑ:");if(null!==a&&(a=a.trim())){var s=function(a){var t=String(a||"").toLowerCase().trim().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"");return t||(t="map-"+Date.now().toString(36)),t}(a),e=/^map-[0-9a-z]+$/.test(s)&&!/[a-z0-9]/.test(a.toLowerCase());t.post("concept-maps",{mapId:s,meta:{name:a,subtitle:""},activeView:"main",views:{main:{label:"ÐбÑÐ°Ñ ÐºÐ°ÑÑа",subtitle:"",clusters:[],nodes:[],links:[]}}}).then(function(a){var t=a&&a.mapId||s;l.success({message:"ÐаÑÑа Ñоздана"}),e&&l.info({message:"ÐдÑÐµÑ ÐºÐ°ÑÑÑ ÑгенеÑиÑован авÑомаÑиÑеÑки: "+t,delay:5e3}),n.path("/maps/"+t)}).catch(function(a){l.error({message:t.getErrorMessage(a,"Ðе ÑдалоÑÑ ÑоздаÑÑ ÐºÐ°ÑÑÑ"),delay:4e3})})}}},i.canDeleteMap=function(a){return!!(a&&a.createdBy&&a.createdBy._id&&i.currentUserId&&String(a.createdBy._id)===String(i.currentUserId))},i.deleteMap=function(a){if(a&&a.mapId&&i.canDeleteMap(a)){var s=a.mapId;g.open({title:"УдалиÑÑ ÐºÐ°ÑÑÑ?",message:"ÐаÑÑа «"+(a.name||s)+"» бÑÐ´ÐµÑ Ñдалена навÑегда. ÐейÑÑвие необÑаÑимо.",confirmText:"УдалиÑÑ",type:"danger"}).then(function(){t.remove("concept-maps",s).then(function(){i.maps=i.maps.filter(function(a){return a.mapId!==s})}).catch(function(a){l.error({message:t.getErrorMessage(a,"Ðе ÑдалоÑÑ ÑдалиÑÑ ÐºÐ°ÑÑÑ"),delay:4e3})})},g.onDismissed("[mapsCtrl.deleteMap]"))}}}]}),angular.module("discours.components").component("mapsDetailPage",{templateUrl:"/pages/maps/maps-detail.html",controller:["$routeParams","$sce","loginService","$location","$scope","$window","eventBus",function(a,t,s,n,e,l,g){function o(){var s=a&&a.mapId||"discours-main";i.mapId=s;var e=window.discours&&window.discours.API_SERVER||"",l=window.discours&&window.discours.HOCUSPOCUS_SERVER||"",g=(n.hash()||"").trim();i.graphUrl=t.trustAsResourceUrl("/maps-graph/index.html?mapId="+encodeURIComponent(s)+"&api="+encodeURIComponent(e)+"&collab="+encodeURIComponent(l)+(g?"&view="+encodeURIComponent(g):""))}function c(a){if(a.origin===l.location.origin){var t=a.data;t&&"discours-map-view"===t.type&&t.view&&e.$applyAsync(function(){(n.hash()||"")!==t.view&&n.hash(t.view).replace()})}}var i=this,d={title:"ÐойдиÑе Ð´Ð»Ñ Ð´Ð¾ÑÑÑпа к каÑÑе",onSuccess:function(){i.requiresAuth=!1,o()},onCancel:function(){n.path("/")}};i.openLoginModal=function(){s.openAuthModal(d)},g.onScope(e,g.EVENTS.USER_LOGGED_OUT,function(){i.requiresAuth=!0}),g.onScope(e,g.EVENTS.USER_LOGGED_IN,function(){i.requiresAuth=!1,o()}),i.$onInit=function(){document.body.classList.add("maps-graph-page"),s.isLoggedIn()?o():i.requiresAuth=!0},l.addEventListener("message",c),e.$on("$locationChangeSuccess",function(){var a=document.getElementById("maps-graph-frame");a&&a.contentWindow&&a.contentWindow.postMessage({type:"discours-set-view",view:(n.hash()||"").trim()},l.location.origin)}),e.$on("$destroy",function(){l.removeEventListener("message",c),document.body.classList.remove("maps-graph-page")})}]})},13185(){var a={email_subscriptions:"РаÑÑÑлка ÐиÑкÑÑÑа",almanac_subscriptions:"ÐлÑманаÑ
",all_subscriptions:"ÐÑе ÑаÑÑÑлки ÐиÑкÑÑÑа",readers:"ÐÑÑÑие пÑбликаÑии Ñезона",readers_platform:"ÐÑÑÑие пÑбликаÑии Ñезона",authors:"РаÑÑÑлка Ð´Ð»Ñ Ð°Ð²ÑоÑов ÑамиздаÑа",donors:"ÐиÑÑма Ð´Ð»Ñ Ð´ÑÑзей ÐиÑкÑÑÑа",donors_stripe:"ÐиÑÑма Ð´Ð»Ñ Ð´ÑÑзей ÐиÑкÑÑÑа",donors_payp
1al:"ÐиÑÑма Ð´Ð»Ñ Ð´ÑÑзей ÐиÑкÑÑÑа",donors_patreon:"ÐиÑÑма Ð´Ð»Ñ Ð´ÑÑзей ÐиÑкÑÑÑа",editors:"ÐиÑÑма ÑедакÑии",partners:"ÐиÑÑма Ð´Ð»Ñ Ð¿Ð°ÑÑнÑÑов ÑамиздаÑа",vpn:"VPN-ÑаÑÑÑлка"};angular.module("discours.components").component("newsletterSubscriptionsPage",{templateUrl:"/pages/newsletter/subscriptions.html",controller:["apiClient","loginService","$location","Notification","$scope",function(t,s,n,e,l){function g(a){d.options=a&&a.options||[],d.prefs={},d.options.forEach(function(a){a.label||(a.label=d.audienceName(a.slug)),d.prefs[a.slug]=!!a.subscribed}),d.originalPrefs=angular.copy(d.prefs)}function o(a,s){return t.getErrorMessage?t.getErrorMessage(a,s)||s:a&&a.data&&a.data.data&&a.data.data.message||a&&a.data&&a.data.message||s}function c(a,t,s){d.retryAction=s||"",d.errorMessage=o(a,t),d.mode="error"}function i(){return d.token?(d.retryAction="",d.mode="loading",t.getList("newsletter/unsubscribe/by-token",{token:d.token}).then(function(a){d.preview=a||{},g(a),d.mode="confirm"}).catch(function(a){t.isCanceled&&t.isCanceled(a)||(function(a){var t=function(a){return a&&a.status||a&&a.response&&a.response.status||a&&a.data&&a.data.status||0}(a);return 400===t||410===t}(a)?function(a){d.retryAction="",d.errorMessage=o(a,"СÑÑлка ÑÑÑаÑела â оÑкÑойÑе ÐµÑ Ð·Ð°Ð½Ð¾Ð²Ð¾ из пиÑÑма."),d.mode="expired"}(a):c(a,"Ðе ÑдалоÑÑ Ð·Ð°Ð³ÑÑзиÑÑ ÑÑÑаниÑÑ Ð¾ÑпиÑки. ÐопÑобÑйÑе Ñнова или оÑкÑойÑе ÑÑÑÐ»ÐºÑ Ð·Ð°Ð½Ð¾Ð²Ð¾ из пиÑÑма.","loadPreview"))})):Promise.resolve()}var d=this;d.mode="loading",d.token="",d.submitting=!1,d.saving=!1,d.preview=null,d.result=null,d.status=null,d.errorMessage="",d.retryAction="",d.options=[],d.prefs={},d.originalPrefs={},d.audienceName=function(t){return a[t]||t},d.previewAudiences=function(){return d.preview&&d.preview.audiences||[]},d.resultAudiences=function(){return d.result&&d.result.audiences||[]},d.umbrellaOption=function(){for(var a=0;a<d.options.length;a++)if("umbrella"===d.options[a].group)return d.options[a];return null},d.listOptions=function(){return d.options.filter(function(a){return"umbrella"!==a.group})},d.umbrellaOn=function(){var a=d.umbrellaOption();return!a||!!d.prefs[a.slug]},d.selectedSlugs=function(){var a=d.umbrellaOption(),t=a?a.slug:null;return Object.keys(d.prefs).filter(function(a){return d.prefs[a]&&a!==t})},d.hasPrefChanges=function(){return!angular.equals(d.prefs,d.originalPrefs)},d.isTargetOption=function(a){for(var t=d.previewAudiences(),s=0;s<t.length;s++)if(t[s]&&t[s].slug===a)return!0;return!1},d.savedSubscribedLabels=function(){return(d.result&&d.result.options||[]).filter(function(a){return"umbrella"!==a.group&&a.subscribed}).map(function(a){return a.label})},d.$onInit=function(){return d.token=String(n.search().token||"").trim(),d.token?i():s.isLoggedIn()?(d.mode="loading",t.getList("newsletter/subscriptions").then(function(a){d.status=a||{},g(a),d.mode="status"}).catch(function(a){t.isCanceled&&t.isCanceled(a)||(d.mode="info")})):void(d.mode="info")},d.confirmUnsubscribe=function(){if(!d.submitting&&d.token)return d.submitting=!0,d.errorMessage="",d.retryAction="",t.post("newsletter/unsubscribe/by-token",{token:d.token}).then(function(a){d.result=a||{},d.mode="done"}).catch(function(a){t.isCanceled&&t.isCanceled(a)||c(a,"Ðе ÑдалоÑÑ Ð¾ÑпиÑаÑÑÑÑ. ÐопÑобÑйÑе Ñнова или оÑкÑойÑе ÑÑÑÐ»ÐºÑ Ð·Ð°Ð½Ð¾Ð²Ð¾ из пиÑÑма.","confirmUnsubscribe")}).finally(function(){d.submitting=!1})},d.saveByToken=function(){if(!d.submitting&&d.token)return d.submitting=!0,d.errorMessage="",d.retryAction="",t.post("newsletter/unsubscribe/by-token",{token:d.token,lists:d.selectedSlugs(),importantUpdates:d.umbrellaOn()}).then(function(a){d.result=a||{},d.originalPrefs=angular.copy(d.prefs),d.mode="done"}).catch(function(a){t.isCanceled&&t.isCanceled(a)||c(a,"Ðе ÑдалоÑÑ ÑоÑ
ÑаниÑÑ Ð½Ð°ÑÑÑойки. ÐопÑобÑйÑе Ñнова или оÑкÑойÑе ÑÑÑÐ»ÐºÑ Ð·Ð°Ð½Ð¾Ð²Ð¾ из пиÑÑма.","saveByToken")}).finally(function(){d.submitting=!1})},d.retryTokenAction=function(){if(!d.submitting)switch(d.retryAction){case"loadPreview":return i();case"saveByToken":return d.saveByToken();case"confirmUnsubscribe":return d.confirmUnsubscribe();default:return}},d.saveAuthorized=function(){d.saving||(d.saving=!0,t.post("newsletter/subscriptions",{subscriptions:{lists:d.selectedSlugs(),importantUpdates:d.umbrellaOn()}}).then(function(a){a&&a.options?g(a):d.originalPrefs=angular.copy(d.prefs),e.success("ÐаÑÑÑойки подпиÑок ÑоÑ
ÑаненÑ")}).catch(function(a){t.isCanceled&&t.isCanceled(a)||(e.error(a&&a.data&&a.data.message||"Ðе ÑдалоÑÑ ÑоÑ
ÑаниÑÑ Ð½Ð°ÑÑÑойки"),l.$applyAsync())}).finally(function(){d.saving=!1}))}}]})},13484(){!function a(t){try{var s=document.querySelector("[ng-app]")||document.body,n=angular.element(s).injector();if(!n)return t<5?void setTimeout(function(){a(t+1)},50*Math.pow(2,t)):void 0;var e=n.get("$templateCache");e.put("/components/donateBestArticle/donateBestArticle.html",'<a class="donate-best-article" ng-href="{{ $ctrl.articleData.link || $ctrl.articleData.externalLink }}" target="_blank" rel="noopener noreferrer" > <div class="donate-best-article__image"> <img ng-src="{{ $ctrl.articleData.imageURL }}" alt="" loading="lazy" decoding="async" width="300" height="200" /> </div> <div class="donate-best-article__category">{{ $ctrl.articleData.category | t }}</div> <div> <span class="donate-best-article__title"> {{ $ctrl.articleData.title | t }} </span> </div> <div class="donate-best-article__description" ng-bind-html="($ctrl.articleData.description | t) | trustedHtml" post-images="post-images" ></div> </a>'),e.put("/components/donationFaq/donationFaq.html",'<details> <summary>{{ \'Ðа ÑÑо пойдÑÑ Ð¿Ð¾Ð¶ÐµÑÑвованиÑ\' | t }}</summary>
1 <div ng-if="!$ctrl.isEnglish"> <p> ÐÑе пожеÑÑвованнÑе ÑÑедÑÑва пойдÑÑ Ð½Ð° ÑазвиÑие пÑоекÑа, подгоÑÐ¾Ð²ÐºÑ Ð½Ð¾Ð²ÑÑ
маÑеÑиалов, ÑеÑ
ниÑеÑкÑÑ Ð¿Ð¾Ð´Ð´ÐµÑÐ¶ÐºÑ Ð¿Ð»Ð°ÑÑоÑмÑ, оплаÑÑ ÑеÑвеÑов, ÑÑÑда ÑедакÑоÑов, IT-ÑпеÑиалиÑÑов, дизайнеÑов, пÑемиÑование авÑоÑов лÑÑÑиÑ
маÑеÑиалов, бÑÑ
галÑеÑиÑ, ÑÑидиÑеÑкÑÑ Ð¿Ð¾Ð´Ð´ÐµÑÐ¶ÐºÑ ÑедакÑии, а Ñакже на ÑазÑабоÑÐºÑ ÑеÑвиÑов Ð´Ð»Ñ Ð¶ÑÑналиÑÑÑкого ÑоÑÑÑдниÑеÑÑва и новÑÑ
инÑÑÑÑменÑов Ð´Ð»Ñ ÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ Ð¼ÑлÑÑимедийнÑÑ
пÑбликаÑий â Ð¾Ñ ÑеÑÑов, галеÑей и подкаÑÑов до ÑпеÑпÑоекÑов, видеоÑоÑмаÑов и коллекÑивнÑÑ
иÑÑоÑий авÑоÑов и ÑиÑаÑелей. Чем болÑÑе ÑеÑÑÑÑов Ñ Ð½Ð°Ñ Ð±ÑдеÑ, Ñем болÑÑе новÑÑ
пÑоекÑов и моÑнÑÑ
пÑбликаÑий ÑÐ°Ð¼Ð¸Ð·Ð´Ð°Ñ ÑÐ¼Ð¾Ð¶ÐµÑ Ð²ÑпÑÑкаÑÑ. </p> </div> <div ng-if="$ctrl.isEnglish"> <p> Every donation goes toward developing the project, preparing new publications, maintaining the platform, paying for servers and the work of editors, IT specialists, and designers, rewarding the authors of the best pieces, accounting, and legal support for the editorial team â as well as building services for journalistic collaboration and new tools for creating multimedia publications, from quizzes, galleries, and podcasts to special projects, video formats, and collective stories by authors and readers. The more resources we have, the more new projects and powerful publications Discours will be able to release. </p> </div> </details> <details> <summary>{{ \'ЧÑо ÑамиздаÑÑ ÑдалоÑÑ Ñ Ð²Ð°Ñей помоÑÑÑ\' | t }}</summary> <div ng-if="!$ctrl.isEnglish"> <p> С ваÑей помоÑÑÑ Ð·Ð° деÑÑÑÑ Ð»ÐµÑ ÑабоÑÑ ÑамиздаÑа Ð¼Ñ <a href="https://discours.io/best" rel="noopener noreferrer" target="_blank">Ñоздали</a> более ÑеÑÑÑеÑ
ÑÑÑÑÑ ÐºÑÑÑейÑиÑ
маÑеÑиалов на ÑамÑе ÑазнÑе ÑÐµÐ¼Ñ â Ð¾Ñ Ð±Ð¸Ð·Ð½ÐµÑа и Ñкологии до ÑилоÑоÑии и поÑзии, запиÑали <a href="https://discours.io/podcasts" rel="noopener noreferrer" target="_blank" >более ÑоÑни подкаÑÑов</a >, помогли ÑоÑнÑм авÑоÑов и иÑÑледоваÑелей поделиÑÑÑÑ <a href="https://discours.io/articles/all" rel="noopener noreferrer" target="_blank" >Ñвоими иÑÑоÑиÑми</a >, ÑникалÑной ÑкÑпеÑÑизой, опÑÑом и знаниÑми, <a href="https://discours.io/tags/interview" rel="noopener noreferrer" target="_blank" >беÑедовали</a > Ñ ÑÑенÑми, кÑлÑÑÑÑнÑми деÑÑелÑми и акÑивиÑÑами, пеÑвÑми делилиÑÑ Ð½Ð¾Ð²Ñми <a href="https://discours.io/articles/theory" rel="noopener noreferrer" target="_blank" >идеÑми</a >, ÑаÑÑказÑвали о клÑÑевÑÑ
<a href="https://discours.io/tags/chapters" rel="noopener noreferrer" target="_blank" >новинкаÑ
</a > нон-ÑикÑена, <a href="https://discours.io/tags/research" rel="noopener noreferrer" target="_blank" >анализиÑовали</a > глобалÑнÑе ÑоÑиалÑнÑе пÑоблемÑ, Ñледили за изменениÑми в <a href="https://discours.io/articles/social" rel="noopener noreferrer" target="_blank" >обÑеÑÑве</a >, пÑедÑÑавлÑли оÑÑÑоÑоÑиалÑнÑÑ <a href="https://discours.io/expo/image" rel="noopener noreferrer" target="_blank">гÑаÑикÑ</a >, пÑбликовали незавиÑимÑÑ <a href="https://discours.io/expo/music" rel="noopener noreferrer" target="_blank">мÑзÑкÑ</a> и новаÑоÑÑкÑÑ ÑовÑеменнÑÑ <a href="https://discours.io/expo/literature" rel="noopener noreferrer" target="_blank" >пÑозÑ</a >. </p> <p> ÐÑ Ð¿Ñоводили <a href="https://www.facebook.com/events/%D0%BE%D1%82%D0%BA%D1%80%D1%8B%D1%82%D1%8B%D0%B9-%D0%BA%D0%BB%D1%83%D0%B1/%D0%BF%D0%BE%D0%B7%D0%B8%D1%86%D0%B8%D0%B8-%D0%BC%D0%B8%D1%85%D0%B0%D0%B8%D0%BB-%D0%B0%D0%B9%D0%B7%D0%B5%D0%BD%D0%B1%D0%B5%D1%80%D0%B3-%D0%BC%D0%B0%D1%80%D0%B8%D1%8F-%D1%81%D1%82%D0%B5%D0%BF%D0%B0%D0%BD%D0%BE%D0%B2%D0%B0/1919034395030476/" rel="noopener noreferrer" target="_blank" >ÑÑениÑ</a >, <a href="https://discours.io/events/kino/premera-filma-virunga" rel="noopener noreferrer" target="_blank" >кинопоказÑ</a >, <a href="https://vk.com/wall-151325891_83" rel="noopener noreferrer" target="_blank" >оÑкÑÑÑÑе диÑкÑÑÑии</a > и <a href="https://vk.com/event123738166" rel="noopener noreferrer" target="_blank" >жÑÑналиÑÑÑкие маÑÑеÑÑкие</a >, <a href="https://discours.io/events/diskussiya/diskussiya-kak-sdelat-sovremennyy-samizdat" rel="noopener noreferrer" target="_blank" >дебаÑÑ</a > и <a href="https://discours.io/events/lectures/lektsiya-mediaeksperta-vinsenta-daffi-feykovye-novosti-ili-alternativnye-fakty-kak-menyayutsya-otnosheniya-media-s-chitatelyami-v-epohu-postpravdy" rel="noopener noreferrer" target="_blank" >лекÑии</a >, вÑпÑÑÑили <a href="https://vk.com/discoursio?w=wall-89236419_13256" rel="noopener noreferrer" target="_blank" >меÑÑ</a > Ñо Ñлоганами «Ðе молÑи» и «Слово Ð¼Ð¾Ð¶ÐµÑ Ð¸Ð·Ð¼ÐµÐ½Ð¸ÑÑ Ð¼Ð¸Ñ», наÑиÑовали <a href="https://t.me/addstickers/Discours" rel="noopener noreferrer" target="_blank" >ÑÑикеÑÑ Â«ÐоÑÐ¾Ð³Ð°Ñ ÑедакÑиÑ»</a >, коÑоÑÑми полÑзÑÑÑÑÑ <a href="https://i.imgur.com/N1tbn9e.png" rel="noopener noreferrer" target="_blank">ÑÑÑÑÑи</a> ÑÑаÑÑников ÑообÑеÑÑва, запÑÑÑили подкаÑÑ <a href="https://discours.io/podcasts" rel="noopener noreferrer" target="_blank" >«ÐÐ¸Ñ Ð² иÑÑоÑиÑÑ
»</a >, Ñоздали ÑелегÑам-боÑа Ð´Ð»Ñ Ð°Ð²ÑоÑов и ÑиÑаÑелей, ведем дайджеÑÑ Ð»ÑÑÑиÑ
маÑеÑиалов Ñезона, даÑим ÑиÑаÑелÑм книги, билеÑÑ Ð½Ð° ÐºÐ¸Ð½Ð¾Ð¿Ð¾ÐºÐ°Ð·Ñ Ð¸ планиÑÑем еÑе много вÑего. УÑаÑÑники оÑкÑÑÑой ÑедакÑии вÑигÑÑвали <a href="https://hack-wsf.equalit.ie/" rel="noopener noreferrer" target="_blank" >ÑоÑиалÑно-оÑиенÑиÑованнÑе</a > и <a href="https://te-st.ru/reports/results-projector2022/" rel="noopener noreferrer" target="_blank" >
1даÑа-иÑÑледоваÑелÑÑкие</a > Ñ
акаÑонÑ, наÑиÑ
иллÑÑÑÑаÑоÑов пÑиглаÑали на ÑабоÑÑ Ð² междÑнаÑоднÑе изданиÑ, вÑÑ
одивÑÐ°Ñ Ð² ÑамиздаÑе нон-ÑикÑн и Ñ
ÑдожеÑÑÐ²ÐµÐ½Ð½Ð°Ñ Ð»Ð¸ÑеÑаÑÑÑа издавалаÑÑ ÐºÐ½Ð¸Ð³Ð°Ð¼Ð¸, опÑбликованнÑе ÐиÑкÑÑÑом пÑеÑÑ ÑÑавилиÑÑ Ð² ÑеаÑÑаÑ
, а авÑоÑов жÑÑнала многокÑаÑно номиниÑовали на <a href="https://redkollegia.org" rel="noopener noreferrer" target="_blank">жÑÑналиÑÑÑкие</a> и <a href="https://discours.io/expo/literature/prose/konstantin-kupriyanov-rasskaz-netolerantnyy-patsient" rel="noopener noreferrer" target="_blank" >лиÑеÑаÑÑÑнÑе</a > пÑемии. </p> <p> ÐмеÑÑе Ñ Ð²Ð°Ð¼Ð¸ Ð¼Ñ Ð¿Ð¾Ð¼Ð¾Ð³Ð»Ð¸ ÑоÑнÑм лÑдей ÑаÑÑказаÑÑ Ð½Ð° ÑÑÑаниÑаÑ
ÑамиздаÑа поÑÑÑÑаÑÑие иÑÑоÑии и бÑÑÑ ÑÑлÑÑаннÑми миллионами дÑмаÑÑиÑ
лÑдей Ñо вÑего миÑа. ÐÑо ÑолÑко наÑало â Ñ Ð½Ð°Ñ Ñ Ð²Ð°Ð¼Ð¸ огÑомнÑе планÑ, коÑоÑÑе Ð¼Ñ ÑÑÑоим вмеÑÑе. ÐÑ Ð·Ð½Ð°ÐµÐ¼, ÑÑо ÑообÑа Ñможем пÑодолжаÑÑ ÑабоÑÑ, ÑазвиваÑÑ Ð¿Ð»Ð°ÑÑоÑÐ¼Ñ Ð´Ð»Ñ Ñвободной жÑÑналиÑÑики и Ñделаем оÑенÑ-оÑÐµÐ½Ñ Ð¼Ð½Ð¾Ð³Ð¾Ðµ, ÑÑÐ¾Ð±Ñ Ð¸Ð·Ð¼ÐµÐ½Ð¸ÑÑ Ð¼Ð¸Ñ Ðº лÑÑÑемÑ. </p> </div> <div ng-if="$ctrl.isEnglish"> <p> With your help, over Discours\'s ten years of work, we have <a href="https://discours.io/best" rel="noopener noreferrer" target="_blank">created</a> more than four thousand outstanding pieces on the widest range of subjects â from business and ecology to philosophy and poetry; recorded <a href="https://discours.io/podcasts" rel="noopener noreferrer" target="_blank" >over a hundred podcasts</a >; helped hundreds of authors and researchers share <a href="https://discours.io/articles/all" rel="noopener noreferrer" target="_blank" >their stories</a >, unique expertise, experience, and knowledge; <a href="https://discours.io/tags/interview" rel="noopener noreferrer" target="_blank" >talked</a > with scholars, cultural figures, and activists; were the first to share new <a href="https://discours.io/articles/theory" rel="noopener noreferrer" target="_blank" >ideas</a >; covered key <a href="https://discours.io/tags/chapters" rel="noopener noreferrer" target="_blank" >releases</a > in non-fiction; <a href="https://discours.io/tags/research" rel="noopener noreferrer" target="_blank" >analyzed</a > global social problems; followed changes in <a href="https://discours.io/articles/social" rel="noopener noreferrer" target="_blank" >society</a >; showcased sharply social <a href="https://discours.io/expo/image" rel="noopener noreferrer" target="_blank" >graphic art</a >; published independent <a href="https://discours.io/expo/music" rel="noopener noreferrer" target="_blank">music</a> and innovative contemporary <a href="https://discours.io/expo/literature" rel="noopener noreferrer" target="_blank" >prose</a >. </p> <p> We have held <a href="https://www.facebook.com/events/%D0%BE%D1%82%D0%BA%D1%80%D1%8B%D1%82%D1%8B%D0%B9-%D0%BA%D0%BB%D1%83%D0%B1/%D0%BF%D0%BE%D0%B7%D0%B8%D1%86%D0%B8%D0%B8-%D0%BC%D0%B8%D1%85%D0%B0%D0%B8%D0%BB-%D0%B0%D0%B9%D0%B7%D0%B5%D0%BD%D0%B1%D0%B5%D1%80%D0%B3-%D0%BC%D0%B0%D1%80%D0%B8%D1%8F-%D1%81%D1%82%D0%B5%D0%BF%D0%B0%D0%BD%D0%BE%D0%B2%D0%B0/1919034395030476/" rel="noopener noreferrer" target="_blank" >readings</a >, <a href="https://discours.io/events/kino/premera-filma-virunga" rel="noopener noreferrer" target="_blank" >film screenings</a >, <a href="https://vk.com/wall-151325891_83" rel="noopener noreferrer" target="_blank" >open discussions</a >, and <a href="https://vk.com/event123738166" rel="noopener noreferrer" target="_blank" >journalism workshops</a >, <a href="https://discours.io/events/diskussiya/diskussiya-kak-sdelat-sovremennyy-samizdat" rel="noopener noreferrer" target="_blank" >debates</a > and <a href="https://discours.io/events/lectures/lektsiya-mediaeksperta-vinsenta-daffi-feykovye-novosti-ili-alternativnye-fakty-kak-menyayutsya-otnosheniya-media-s-chitatelyami-v-epohu-postpravdy" rel="noopener noreferrer" target="_blank" >lectures</a >; released <a href="https://vk.com/discoursio?w=wall-89236419_13256" rel="noopener noreferrer" target="_blank" >merch</a > with the slogans âDon\'t stay silentâ and âA word can change the worldâ; drew <a href="https://t.me/addstickers/Discours" rel="noopener noreferrer" target="_blank" >âDear Editorsâ stickers</a > used by <a href="https://i.imgur.com/N1tbn9e.png" rel="noopener noreferrer" target="_blank" >thousands</a > of community members; launched the podcast <a href="https://discours.io/podcasts" rel="noopener noreferrer" target="_blank" >âWorld in Storiesâ</a >; built a Telegram bot for authors and readers; run a digest of the season\'s best pieces; give readers books and tickets to film screenings; and have plenty more planned. Members of the open editorial team have won <a href="https://hack-wsf.equalit.ie/" rel="noopener noreferrer" target="_blank" >socially oriented</a > and <a href="https://te-st.ru/reports/results-projector2022/" rel="noopener noreferrer" target="_blank" >data-research</a > hackathons; our illustrators have been hired by international publications; the non-fiction and literary fiction first published at Discours has been released as books; plays published by Discours have been staged in theaters; and the journal\'s authors have repeatedly been nominated for <a href="https://redkollegia.org" rel="noopener noreferrer" target="_blank">journalism</a> and <a href="https://discours.io/expo/literature/prose/konstantin-kupriyanov-rasskaz-netolerantnyy-patsient" rel="noopener noreferrer" target="_blank" >literary</a > awards. </p> <p> Together with you, we have helped hundreds of people tell remarkable stories on the pages of Discours and be heard by millions of thinking people around the world. This is only the beginning â we have enormous plans that we are building together. We know that, side by side, we can keep working, keep developing the platform for free journalism, and do a great deal to change the world for the better. </p> </div> </details> <details> <summary>{{ \'ÐоÑÐµÐ¼Ñ Ð¿Ð¾Ð´Ð´ÐµÑживаÑÑ ÐиÑкÑÑÑ Ð±ÐµÐ·Ð¾Ð¿Ð°Ñно\' | t }}</summary>
1 <div ng-if="!$ctrl.isEnglish"> <p> У ÑамиздаÑа Ð½ÐµÑ Ð½Ð¸ÐºÐ°ÐºÐ¸Ñ
опаÑнÑÑ
ÑÑаÑÑÑов. ÐÑ Ð½Ðµ иноагенÑÑ Ð¸ не ÑкÑÑÑемиÑÑÑ. ÐиÑкÑÑÑ Ð¼Ð¾Ð¶Ð½Ð¾ безопаÑно поддеÑживаÑÑ Ð¸Ð· РоÑÑии и лÑбÑÑ
дÑÑгиÑ
ÑÑÑан. ÐÐ»Ñ Ð¿Ñиема пожеÑÑвований Ð¼Ñ Ð¿Ð¾Ð»ÑзÑемÑÑ Ð±ÐµÐ·Ð¾Ð¿Ð°ÑнÑм и надежнÑми плаÑежнÑми ÑеÑвиÑами Stripe и CloudPayments. Ð¡Ð°Ð¹Ñ ÑабоÑÐ°ÐµÑ ÑеÑез заÑиÑеннÑй пÑоÑокол https, даннÑе ваÑей каÑÑÑ Ð¿ÐµÑедаÑÑÑÑ ÑолÑко в заÑиÑÑованном виде и не Ñ
ÑанÑÑÑÑ Ð½Ð° наÑиÑ
ÑеÑвеÑаÑ
. ÐÑе ÑÐ²ÐµÐ´ÐµÐ½Ð¸Ñ Ð¾ÑÑаÑÑÑÑ ÑÑÑого конÑиденÑиалÑнÑми. </p> </div> <div ng-if="$ctrl.isEnglish"> <p> Discours carries no dangerous legal labels. We are not âforeign agentsâ and not extremists. Discours can be safely supported from Russia and any other country. To accept donations we use the secure and reliable payment services Stripe and CloudPayments. The site runs over the secure https protocol; your card details are transmitted only in encrypted form and are not stored on our servers. All information remains strictly confidential. </p> </div> </details> <details> <summary>{{ \'ÐоÑÐµÐ¼Ñ ÐиÑкÑÑÑ Ð½Ðµ Ð²Ð²Ð¾Ð´Ð¸Ñ Ð¿Ð»Ð°ÑнÑй доÑÑÑп\' | t }}</summary> <div ng-if="!$ctrl.isEnglish"> <p> ÐлаÑнÑй доÑÑÑп к маÑеÑиалам пÑоÑивоÑеÑÐ¸Ñ Ñамой ÑÑÑи пÑоÑвеÑиÑелÑÑкого изданиÑ, поÑÑÐ¾Ð¼Ñ Ð¿ÑбликаÑии ÑамиздаÑа вÑегда оÑÑанÑÑÑÑ Ð±ÐµÑплаÑнÑми Ð´Ð»Ñ Ð²ÑеÑ
. ÐаÑи маÑеÑÐ¸Ð°Ð»Ñ â ÑобÑание ÑникалÑнÑÑ
знаний о ÑовÑеменной наÑке, ÑилоÑоÑии, кÑлÑÑÑÑе и иÑкÑÑÑÑве на ÑÑÑÑком ÑзÑке. ÐÑ ÑбежденÑ, ÑÑо Ð·Ð½Ð°Ð½Ð¸Ñ Ð´Ð¾Ð»Ð¶Ð½Ñ Ð¾ÑÑаваÑÑÑÑ ÑвободнÑми и оÑкÑÑÑÑми, и Ñ
оÑим, ÑÑÐ¾Ð±Ñ Ð²Ñе ÑÑÑÐ´Ñ Ð°Ð²ÑоÑов ÑообÑеÑÑва бÑли доÑÑÑÐ¿Ð½Ñ ÐºÐ°Ð¶Ð´Ð¾Ð¼Ñ. </p> </div> <div ng-if="$ctrl.isEnglish"> <p> Charging for access to publications runs against the very nature of an educational journal, so Discours\'s publications will always remain free for everyone. Our work is a collection of unique knowledge about contemporary science, philosophy, culture, and art in the Russian language. We are convinced that knowledge should stay free and open, and we want every work by our community\'s authors to be available to all. </p> </div> </details> <details> <summary>{{ \'ÐоÑÐµÐ¼Ñ ÑÐ°Ð¼Ð¸Ð·Ð´Ð°Ñ Ð¾ÑказÑваеÑÑÑ Ð¾Ñ ÑекламÑ\' | t }}</summary> <div ng-if="!$ctrl.isEnglish"> <p> ÐÑ Ð½Ðµ пÑодаем внимание ÑиÑаÑелей и не Ñ
оÑим оÑвлекаÑÑ Ð²Ð°Ñ Ð²Ð¸Ð·ÑалÑнÑм ÑÑмом. ÐÑ ÑбежденÑ, ÑÑо инÑеÑÐµÑ Ð¸ Ñважение ÑиÑаÑелей заÑлÑживаÑÑÑÑ Ð¿Ñежде вÑего каÑеÑÑвеннÑми маÑеÑиалами, коÑоÑÑе Ð¼Ñ Ñоздаем, не оглÑдÑваÑÑÑ Ð½Ð° инÑеÑеÑÑ ÑекламодаÑелей, гоÑÑдаÑÑÑва и бизнеÑа. </p> </div> <div ng-if="$ctrl.isEnglish"> <p> We do not sell our readers\' attention and have no wish to distract you with visual noise. We believe that readers\' interest and respect are earned, above all, through the quality of the work we create â without an eye to the interests of advertisers, the state, or business. </p> </div> </details> <details> <summary>{{ \'ÐоÑÐµÐ¼Ñ Ð»ÑÑÑе жеÑÑвоваÑÑ ÑегÑлÑÑно\' | t }}</summary> <div ng-if="!$ctrl.isEnglish"> <p> ÐодпиÑка на ежемеÑÑÑнÑе пеÑÐµÐ²Ð¾Ð´Ñ Ð½Ð° ÑазвиÑие ÐиÑкÑÑÑа даже на ÑамÑÑ Ð½ÐµÐ±Ð¾Ð»ÑÑÑÑ ÑÑÐ¼Ð¼Ñ Ð¿Ð¾Ð¼Ð¾Ð³Ð°ÐµÑ Ð½Ð°Ð¼ болÑÑе вÑего. ÐлагодаÑÑ Ð¿Ð¾ÑÑоÑннÑм плаÑежам Ð¼Ñ Ñможем пÑогнозиÑоваÑÑ Ð±ÑджеÑ, планиÑоваÑÑ ÑабоÑÑ Ð¸ ÑазвиÑие жÑÑнала, запÑÑкаÑÑ ÑпеÑпÑоекÑÑ Ð¸ ÑаÑе пÑбликоваÑÑ Ð½Ð¾Ð²Ñе инÑеÑвÑÑ, ÑаÑÑледованиÑ, ÑепоÑÑажи, аналиÑиÑеÑкие обзоÑÑ. Ðаже неболÑÑÐ°Ñ ÑÑмма Ð¿Ð¾Ð·Ð²Ð¾Ð»Ð¸Ñ Ð½Ð°Ð¼ ÑделаÑÑ Ð¼Ð½Ð¾Ð³Ð¾Ðµ, еÑли Ð¼Ñ Ð±Ñдем знаÑÑ, ÑÑо Ñможем ÑаÑÑÑиÑÑваÑÑ Ð½Ð° нее и в ÑледÑÑÑем меÑÑÑе. </p> </div> <div ng-if="$ctrl.isEnglish"> <p> A monthly subscription supporting Discours\'s growth â even for the smallest amount â helps us most of all. Thanks to regular payments we can forecast our budget, plan the journal\'s work and development, launch special projects, and publish new interviews, investigations, reports, and analytical reviews more often. Even a small amount lets us do a great deal, as long as we know
1we can count on it next month too. </p> </div> </details> <details> <summary>{{ \'Ðак наÑÑÑоиÑÑ Ð¸Ð»Ð¸ оÑклÑÑиÑÑ Ð¿Ð¾Ð´Ð¿Ð¸ÑкÑ\' | t }}</summary> <div ng-if="!$ctrl.isEnglish"> <p> ÐÑ Ð²Ñегда можеÑе поменÑÑÑ ÑпоÑоб оплаÑÑ, ÑÐ°Ð·Ð¼ÐµÑ ÐµÐ¶ÐµÐ¼ÐµÑÑÑного пожеÑÑÐ²Ð¾Ð²Ð°Ð½Ð¸Ñ Ð¸Ð»Ð¸ оÑмениÑÑ Ð¿Ð¾Ð´Ð¿Ð¸ÑкÑ. Ðо лÑбÑм вопÑоÑам пÑоÑÑо напиÑиÑе на <a href="mailto:[email protected]" rel="noopener noreferrer" target="_blank" >[email protected]</a > â Ð¼Ñ Ð¿Ð¾Ð¼Ð¾Ð¶ÐµÐ¼ наÑÑÑоиÑÑ Ð²ÑÑ Ñак, как вам Ñдобно. Ðо ваÑей пÑоÑÑбе Ð¼Ñ Ñакже в лÑбой Ð¼Ð¾Ð¼ÐµÐ½Ñ Ð¾Ñменим подпиÑÐºÑ Ð¸ пÑиÑлем вам подÑвеÑждение. </p> </div> <div ng-if="$ctrl.isEnglish"> <p> You can always change your payment method, the size of your monthly donation, or cancel your subscription. For any questions, just write to <a href="mailto:[email protected]" rel="noopener noreferrer" target="_blank" >[email protected]</a > â we will help you set everything up the way that suits you. At your request we will also cancel the subscription at any time and send you a confirmation. </p> </div> </details> <details> <summary>{{ \'Ðак еÑе можно помоÑÑ ÑамиздаÑÑ\' | t }}</summary> <div ng-if="!$ctrl.isEnglish"> <p> ÐÑли Ñ Ð²Ð°Ñ Ð½ÐµÑ Ð²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ÑÑи поддеÑжаÑÑ Ð¶ÑÑнал ÑинанÑово, но Ð²Ñ Ñ
оÑиÑе помоÑÑ, еÑÑÑ <a href="https://discours.io/manifest#participation" rel="noopener noreferrer" target="_blank" >много дÑÑгиÑ
</a > ÑпоÑобов ÑÑаÑÑвоваÑÑ Ð² ÐиÑкÑÑÑе. ÐапÑимеÑ, можно ÑаÑÑказÑваÑÑ Ð¾ пÑоекÑе дÑÑзÑÑм, делиÑÑÑÑ ÑÑаÑÑÑми ÑамиздаÑа в ÑоÑÑеÑÑÑ
, обÑÑждаÑÑ Ð¸Ñ
в беÑедаÑ
Ñо знакомÑми, пÑедлагаÑÑ ÑедакÑии ÑемÑ, пÑбликоваÑÑ Ñвои ÑÑаÑÑи или ÑвоÑÑеÑÑво, и, конеÑно, ÑовеÑоваÑÑ ÑÐ°Ð¼Ð¸Ð·Ð´Ð°Ñ Ñем, кÑо Ñ
оÑÐµÑ Ð¿Ð¸ÑаÑÑ Ð¸ ÑиÑаÑÑ Ð¸Ð½ÑеÑеÑнÑе ÑекÑÑÑ. ÐÑли Ð²Ñ Ñ
оÑиÑе помоÑÑ Ð¸Ð»Ð¸ пÑедложиÑÑ ÑоÑÑÑдниÑеÑÑво â пÑоÑÑо <a href="https://discours.io/#idea" rel="noopener noreferrer" target="_blank">напиÑиÑе нам</a >. </p> <p> ÐÑли Ð²Ñ Ñ
оÑиÑе помогаÑÑ Ñ ÑедакÑÑÑой, коÑÑекÑÑÑой, иллÑÑÑÑаÑиÑми, пеÑеводами, веÑÑÑкой, подкаÑÑами, меÑопÑиÑÑиÑми, ÑандÑайзингом или как-Ñо еÑе â <a href="https://forms.gle/GJ3Muqf1UjeCzyDXA" rel="noopener noreferrer" target="_blank" >пÑиÑоединÑйÑеÑÑ Ðº оÑкÑÑÑой ÑедакÑии</a >. ÐÑ Ð²Ñегда ÑÐ°Ð´Ñ ÐµÐ´Ð¸Ð½Ð¾Ð¼ÑÑленникам и обÑзаÑелÑно поможем найÑи полезное Ð´Ð»Ñ ÑамиздаÑа дело по дÑÑе. </p> <p> ÐÑли Ð²Ñ ÑазÑабоÑÑик и Ñ
оÑиÑе помогаÑÑ Ñ ÑазвиÑием ÑайÑа ÐиÑкÑÑÑа, пÑиÑоединÑйÑеÑÑ Ðº IT-команде ÑамиздаÑа. ÐÑкÑÑÑÑй код плаÑÑоÑÐ¼Ñ Ð´Ð»Ñ Ð½ÐµÐ·Ð°Ð²Ð¸Ñимой жÑÑналиÑÑики, а Ñакже вÑеÑ
наÑиÑ
ÑпеÑпÑоекÑов и медиаинÑÑÑÑменÑов наÑ
одиÑÑÑ Ð² <a href="https://github.com/Discours" rel="noopener noreferrer" target="_blank" >Ñвободном доÑÑÑпе на GitHub</a >. </p> <p> ÐÑли Ð²Ñ Ð¿ÑедÑÑавлÑеÑе некоммеÑÑеÑкÑÑ Ð¾ÑганизаÑÐ¸Ñ Ð¸ Ñ
оÑиÑе ÑделаÑÑ Ñ Ð½Ð°Ð¼Ð¸ ÑовмеÑÑнÑй пÑоекÑ, полÑÑиÑÑ Ð¸Ð½ÑоÑмаÑионнÑÑ Ð¿Ð¾Ð´Ð´ÐµÑÐ¶ÐºÑ Ð¸Ð»Ð¸ пÑедложиÑÑ Ð´ÑÑгÑÑ ÑоÑÐ¼Ñ ÑоÑÑÑдниÑеÑÑва, пиÑиÑе на <a href="mailto:[email protected]" rel="noopener noreferrer" target="_blank" >[email protected]</a >. </p> </div> <div ng-if="$ctrl.isEnglish"> <p>
1 If you are not able to support the journal financially but would still like to help, there are <a href="https://discours.io/manifest#participation" rel="noopener noreferrer" target="_blank" >many other</a > ways to take part in Discours. For example, you can tell friends about the project, share Discours\'s articles on social media, discuss them with people you know, suggest topics to the editorial team, publish your own articles or creative work, and, of course, recommend Discours to anyone who wants to write and read interesting texts. If you would like to help or propose a collaboration, simply <a href="https://discours.io/#idea" rel="noopener noreferrer" target="_blank">write to us</a>. </p> <p> If you would like to help with editing, proofreading, illustration, translation, layout, podcasts, events, fundraising, or anything else â <a href="https://forms.gle/GJ3Muqf1UjeCzyDXA" rel="noopener noreferrer" target="_blank" >join the open editorial team</a >. We always welcome like-minded people and will gladly help you find something useful and rewarding to do for Discours. </p> <p> If you are a developer and would like to help develop the Discours website, join the project\'s IT team. The open-source code of our platform for independent journalism, along with all of our special projects and media tools, is <a href="https://github.com/Discours" rel="noopener noreferrer" target="_blank" >freely available on GitHub</a >. </p> <p> If you represent a non-profit organization and would like to run a joint project with us, receive media support, or propose another form of cooperation, write to <a href="mailto:[email protected]" rel="noopener noreferrer" target="_blank" >[email protected]</a >. </p> </div> </details> <details> <summary>{{ \'ÐÑÑалиÑÑ Ð²Ð¾Ð¿ÑоÑÑ? ÐÑоÑÑо напиÑиÑе нам\' | t }}</summary> <div ng-if="!$ctrl.isEnglish"> <p> ÐÑли Ñ Ð²Ð°Ñ Ð¾ÑÑалиÑÑ Ð²Ð¾Ð¿ÑоÑÑ, Ð²Ñ Ñ
оÑели Ð±Ñ ÑоÑÑÑдниÑаÑÑ Ñ ÑамиздаÑом, пÑедложиÑÑ ÑÐµÐ¼Ñ Ð´Ð»Ñ Ð¿ÑбликаÑии, ÑÑаÑÑ Ð²Ð¾Ð»Ð¾Ð½ÑеÑом, помогаÑÑ ÑедакÑии Ñ ÐТ-ÑазÑабоÑкой, дизайном или как-Ñо еÑе поддеÑжаÑÑ Ð¿ÑÐ¾ÐµÐºÑ â можно напиÑаÑÑ Ð½Ð°Ð¼ на поÑÑÑ <a href="mailto:[email protected]">[email protected]</a>. ÐÑ Ð¾Ð±ÑзаÑелÑно оÑвеÑим! </p> </div> <div ng-if="$ctrl.isEnglish"> <p> If you still have questions, would like to collaborate with Discours, suggest a topic for publication, become a volunteer, help the editorial team with IT development, design, or support the project in any other way â you can write to us at <a href="mailto:[email protected]">[email protected]</a>. We will be sure to reply! </p> </div> </details>'),e.put("/pages/about/ai-ethics.html",'<update-meta class="black-link" title="{{ \'ÐÐ¾Ð´ÐµÐºÑ Ð¸ÑполÑÐ·Ð¾Ð²Ð°Ð½Ð¸Ñ ÐРв оÑкÑÑÑой ÑедакÑии\' | t }}" ></update-meta> <update-meta class="black-link" name="description" content="{{ \'Ðак оÑкÑÑÑÐ°Ñ ÑедакÑÐ¸Ñ ÐиÑкÑÑÑа иÑполÑзÑÐµÑ Ð½ÐµÐ¹ÑоÑеÑи: иÑÑледование, пеÑевод, авÑоÑÑÑво, иÑÑоÑники, безопаÑноÑÑÑ â и где вÑегда оÑÑаÑÑÑÑ Ñеловек.\' | t }}" ></update-meta> <update-meta class="black-link" name="keywords" content="{{ \'Discours.io, ÐÐ, нейÑоÑеÑи, кодекÑ, ÑедакÑионнÑе пÑинÑипÑ, ÑÑика ÐÐ\' | t }}" ></update-meta> <update-meta class="black-link" property="og:title" content="{{ \'ÐÐ¾Ð´ÐµÐºÑ Ð¸ÑполÑÐ·Ð¾Ð²Ð°Ð½Ð¸Ñ ÐРв оÑкÑÑÑой ÑедакÑии\' | t }}" ></update-meta> <update-meta class="black-link" property="og:description" content="{{ \'Ðак оÑкÑÑÑÐ°Ñ ÑедакÑÐ¸Ñ ÐиÑкÑÑÑа иÑполÑзÑÐµÑ Ð½ÐµÐ¹ÑоÑеÑи: иÑÑледование, пеÑевод, авÑоÑÑÑво, иÑÑоÑники, безопаÑноÑÑÑ â и где вÑегда оÑÑаÑÑÑÑ Ñеловек.\' | t }}" ></update-meta> <update-meta property="og:image" content="/images/ai-ethics-v2.jpg"></update-meta>
1 <update-meta property="og:image:width" content="1200"></update-meta> <update-meta property="og:image:height" content="630"></update-meta> <div class="ds-container open-post about-post tw:mt-5"> <div class="tw:row-flex"> <div class="tw:gutter-half tw:w-full tw:sm:w-9/12 tw:md:w-2/12"> <h1 class="h2 black-bg-heading black-bg-heading-margin"> <span class="wrapped">{{ \'ÐÐ¾Ð´ÐµÐºÑ Ð¸ÑполÑÐ·Ð¾Ð²Ð°Ð½Ð¸Ñ ÐÐ\' | t }}</span> </h1> </div> <div class="tw:gutter-half tw:w-full tw:md:w-7/12 post-body tw:md:mt-content-top"> <p>{{ \'ÐейÑоÑеÑи ÑÑали ÑаÑÑÑÑ ÑедакÑионной ÑабоÑÑ: Ñ Ð¸Ñ
помоÑÑÑ ÑаÑÑиÑÑовÑваÑÑ Ð¸Ð½ÑеÑвÑÑ, ÑобиÑаÑÑ Ð¸ÑÑоÑники, пÑовеÑÑÑÑ Ð¾ÑÑогÑаÑиÑ, пеÑеводÑÑ ÑекÑÑÑ Ð¸ ÑабоÑаÑÑ Ñ Ð´Ð°Ð½Ð½Ñми. ÐÑ Ð¾ÑкÑÑÑÑ Ðº пÑогÑеÑÑивнÑм изменениÑм, коÑоÑÑе ÑпÑоÑаÑÑ ÑабоÑÑ Ñеловека, Ð´ÐµÐ»Ð°Ñ ÐµÑ Ð±Ð¾Ð»ÐµÐµ пÑодÑкÑивной. Ðо нам не менее важно, ÑÑо за каждой опÑбликованной ÑабоÑой вÑÑ ÐµÑÑ ÑÑÐ¾Ð¸Ñ Ñеловек.\' | t }}</p> <p>{{ \'ÐÑо â обÑие пÑавила ÑообÑеÑÑва ÑамиздаÑа об иÑполÑзовании ÐРи договоÑÑнноÑÑÑ Ð¾ Ñом, как полÑзоваÑÑÑÑ Ð½ÐµÐ¹ÑоÑеÑÑми. ÐÑ Ð±Ñдем пеÑеÑмаÑÑиваÑÑ Ð¸Ñ
по меÑе Ñого, как менÑÑÑÑÑ Ð¸Ð½ÑÑÑÑменÑÑ, ÑедакÑÐ¸Ð¾Ð½Ð½Ð°Ñ Ð¿ÑакÑика и понимание ÑиÑков.\' | t }}</p> <ol style="padding-inline-start: 15px"> <li> <p><span class="lead">{{ \'ÐРможно иÑполÑзоваÑÑ ÐºÐ°Ðº инÑÑÑÑменÑ, облегÑаÑÑий ÑабоÑÑ.\' | t }}</span> <span ng-bind-html="(\'ÐейÑоÑеÑи допÑÑÑимо пÑименÑÑÑ Ð´Ð»Ñ Ð¸ÑÑÐ»ÐµÐ´Ð¾Ð²Ð°Ð½Ð¸Ñ ÑемÑ, ÑоÑÑÐ°Ð²Ð»ÐµÐ½Ð¸Ñ ÐºÑаÑкого ÑаммаÑи ÑекÑÑов, аÑдио- и видео, ÑаÑÑиÑÑовки запиÑей, пÑовеÑки оÑÑогÑаÑии, ÑеÑнового пеÑевода<a class=\\\'footnote-tooltip\\\' href=\\\'#\\\' data-original-title=\\\'ÐÑноÑиÑеÑÑ Ñ Ð±Ð¾Ð»ÑÑой оÑÑоÑожноÑÑÑÑ Ðº пеÑеводам ÐÐ Ñ ÑзÑка, коÑоÑÑм Ð²Ñ Ð½Ðµ владееÑе и не ÑможеÑе пÑовеÑÑи полноÑеннÑй ÑакÑÑек.\\\'>1</a>, помоÑи в ÑоÑÑавлении плана ÑÑаÑÑи и дÑÑгиÑ
Ð·Ð°Ð´Ð°Ñ â вÑего, ÑÑо Ð¼Ð¾Ð¶ÐµÑ Ð¾Ð±Ð»ÐµÐ³ÑиÑÑ Ð¶Ð¸Ð·Ð½Ñ Ð°Ð²ÑоÑа пÑи подгоÑовке маÑеÑиала. Ðднако ÑиÑÑÑ, ÑакÑÑ Ð¸ ÑÑвеÑÐ¶Ð´ÐµÐ½Ð¸Ñ Ð½ÐµÐ¾Ð±Ñ
одимо пеÑепÑовеÑÑÑÑ Ð¸ анализиÑоваÑÑ.\' | t) | trustedHtml" footnote-text="footnote-text"></span></p> </li> <li> <p><span class="lead">{{ \'ÐРне пиÑÐµÑ Ð¼Ð°ÑеÑÐ¸Ð°Ð»Ñ Ð·Ð° наÑ.\' | t }}</span> {{ \'ÐейÑоÑеÑÑ Ð¼Ð¾Ð¶ÐµÑ Ð¿Ð¾Ð¼Ð¾ÑÑ Ñо ÑÑÑÑкÑÑÑой, заголовками и ÑеÑ
ниÑеÑкой вÑÑиÑкой, но ÑмÑÑÐ»Ð¾Ð²Ð°Ñ Ñамка, оÑÐ±Ð¾Ñ ÑакÑов, ÑиналÑнÑе ÑоÑмÑлиÑовки и оÑвеÑÑÑвенноÑÑÑ Ð´Ð¾Ð»Ð¶Ð½Ñ Ð¾ÑÑаваÑÑÑÑ Ð·Ð° авÑоÑом.\' | t }}</p> </li> <li> <p><span class="lead">{{ \'ÐÑÐ²ÐµÑ Ð½ÐµÐ¹ÑоÑеÑи â ÑÑо не иÑÑоÑник.\' | t }}</span> {{ \'ÐÐ-модели поÑÑоÑнно ÑовеÑÑенÑÑвÑÑÑÑÑ, но вÑÑ Ð¶Ðµ не ÑÑÐ¾Ð¸Ñ Ð´Ð¾Ð²ÐµÑÑÑÑ Ð¸Ð¼ как иÑÑине в поÑледней инÑÑанÑии. ÐнаÑимÑе ÑÐ²ÐµÐ´ÐµÐ½Ð¸Ñ Ð´Ð¾Ð»Ð¶Ð½Ñ Ð±ÑÑÑ Ð¿Ð¾Ð´ÑвеÑÐ¶Ð´ÐµÐ½Ñ Ð¸Ð½ÑеÑвÑÑ, ÑиÑаÑами из докÑменÑов, надÑжнÑми медиа, пÑоÑилÑнÑми ÑпеÑиалиÑÑами и дÑÑгими надÑжнÑми иÑÑоÑниками инÑоÑмаÑии.\' | t }}</p> </li> <li> <p><span class="lead">{{ \'ÐРв лиÑеÑаÑÑÑе и иÑкÑÑÑÑве Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ ÑолÑко ÑаÑÑÑÑ Ð¼ÐµÑода или пÑедмеÑом иÑÑледованиÑ.\' | t }}</span> <span ng-bind-html="(\'ÐейÑокомпилÑÑии не ÑледÑÐµÑ Ð²ÑдаваÑÑ Ð·Ð° пÑозÑ, поÑзиÑ, ÑоÑогÑаÑÐ¸Ñ Ð¸Ð»Ð¸ аÑÑ, ÑозданнÑе ÑÑадиÑионнÑм ÑпоÑобом. ÐÑли ÑабоÑа ÑгенеÑиÑована â ÑÑÐ¾Ð¸Ñ Ð´Ð°ÑÑ ÑиÑаÑÐµÐ»Ñ Ð¿Ð¾Ð½ÑÑÑ, где пÑоÑ
Ð¾Ð´Ð¸Ñ Ð³ÑаниÑа Ð¼ÐµÐ¶Ð´Ñ ÑÑÑдом Ñеловека и моделÑÑ<a class=\\\'footnote-tooltip\\\' href=\\\'#\\\' data-original-title=\\\'ÐÑделÑно оÑмеÑим, ÑÑо Ð¼Ñ ÑабоÑаем Ñ ÑиÑокой ÑеÑÑÑ ÑÑÑÑкоÑзÑÑнÑÑ
Ñ
Ñдожников и Ñ
ÑÐ´Ð¾Ð¶Ð½Ð¸Ñ Ð¸ в подавлÑÑÑем болÑÑинÑÑве ÑлÑÑаев ÑÑаÑаемÑÑ Ð¸ÑполÑзоваÑÑ Ð¸Ð»Ð»ÑÑÑÑаÑии, вÑполненнÑе живÑми лÑдÑми. ÐÑклÑÑÐµÐ½Ð¸Ñ ÑоÑÑавлÑÑÑ ÑеÑ
ниÑеÑкие ÑлÑÑаи (каÑÑинки-подложки Ð´Ð»Ñ ÑоÑÑеÑей, пеÑекÑÑÑÑе ÑекÑÑом; маÑеÑиалÑ, в коÑоÑÑÑ
ÐÐ-иллÑÑÑÑаÑÐ¸Ñ Ð¿Ð¾Ð´Ñ
Ð¾Ð´Ð¸Ñ ÐºÐ¾Ð½ÑепÑÑалÑно; ÑкÑÑÑеннÑе ÑиÑÑаÑии, когда маÑеÑиал ÑÑебÑÐµÑ ÑÑоÑного вÑпÑÑка и пÑоиллÑÑÑÑиÑоваÑÑ ÐµÐ³Ð¾ инаÑе не полÑÑаеÑÑÑ).\\\'>2</a>.\' | t) | trustedHtml" footnote-text="footnote-text"></span></p> <p><em>{{ \'ÐÑимеÑ: РмаÑеÑиале иÑполÑзÑеÑÑÑ Ð¸Ð»Ð»ÑÑÑÑаÑиÑ, ÑÐ¾Ð·Ð´Ð°Ð½Ð½Ð°Ñ Ñ Ð¿Ð¾Ð¼Ð¾ÑÑÑ Ð½ÐµÐ¹ÑоÑеÑи.\' | t }}</em></p> <p>{{ \'ÐзобÑажениÑ, аÑдио и видео, коÑоÑÑе ÑгенеÑиÑÐ¾Ð²Ð°Ð½Ñ Ð¸Ð»Ð¸ ÑÑÑеÑÑвенно Ð²Ð¸Ð´Ð¾Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ñ Ð¿Ñи помоÑи ÐÐ, Ñакже Ð´Ð¾Ð»Ð¶Ð½Ñ Ð±ÑÑÑ Ð¾Ð±Ð¾Ð·Ð½Ð°ÑенÑ. Ðе ÑледÑÐµÑ Ð²ÑдаваÑÑ ÑезÑлÑÑаÑÑ ÑабоÑÑ Ð½ÐµÐ¹ÑоÑеÑи за ÑоÑогÑаÑиÑ, докÑменÑалÑнÑÑ ÑÑÑÐ¼ÐºÑ Ð¸Ð»Ð¸ запиÑÑ ÑеалÑного ÑобÑÑиÑ, Ñеловека или меÑÑа.\' | t }}</p> </li> <li> <p><span class="lead">{{ \'ÐÑполÑзование нейÑоÑеÑи не оÑменÑÐµÑ Ð°Ð²ÑоÑÑкиÑ
пÑав.\' | t }}</span> {{ \'Ðе ÑледÑÐµÑ Ð·Ð°Ð³ÑÑжаÑÑ Ð² ÑÑоÑонние ÑеÑвиÑÑ ÑÑжие неопÑбликованнÑе ÑекÑÑÑ, изобÑажениÑ, Ð±Ð°Ð·Ñ Ð´Ð°Ð½Ð½ÑÑ
и дÑÑгие маÑеÑиалÑ, еÑли Ð²Ñ Ð½Ðµ обладаеÑе пÑавами на ниÑ
. ÐÑли в пÑбликаÑии иÑполÑÐ·Ð¾Ð²Ð°Ð½Ñ ÑÑжие маÑеÑÐ¸Ð°Ð»Ñ (ÑоÑо, видео и Ñ. д.), ÑиÑаÑÐµÐ»Ñ Ð´Ð¾Ð»Ð¶ÐµÐ½ понимаÑÑ Ð¸Ñ
пÑоиÑÑ
ождение, поÑÑÐ¾Ð¼Ñ Ð²Ñегда ÑледÑÐµÑ Ñказ
1ÑваÑÑ Ð°Ð²ÑоÑÑÑво.\' | t }}</p> </li> <li> <p><span class="lead">{{ \'Ðе ÑÑÐ¾Ð¸Ñ Ð·Ð°Ð±ÑваÑÑ Ð¾ пÑавилаÑ
безопаÑноÑÑи пÑи иÑполÑзовании нейÑоÑеÑей.\' | t }}</span> {{ \'ÐолÑзоваÑелÑÑкие аккаÑнÑÑ, боÑÑ Ð¸ ÑÑоÑонние ÑеÑвиÑÑ Ð½Ðµ ÑвлÑÑÑÑÑ Ð·Ð°ÑиÑÑннÑм пÑоÑÑÑанÑÑвом. Ðе вводиÑе в ÐÐ-ÑеÑвиÑÑ Ð¿Ð°Ñоли, пеÑÑоналÑнÑе даннÑе, конÑиденÑиалÑнÑÑ Ð¸Ð½ÑоÑмаÑÐ¸Ñ Ð¸ ÑÑвÑÑвиÑелÑнÑе ÑÑидиÑеÑкие и медиÑинÑкие маÑеÑиалÑ, полнÑе имена, конÑакÑÑ Ð³ÐµÑоев, иÑ
докÑменÑÑ. С оÑÑоÑожноÑÑÑÑ ÑледÑÐµÑ ÑаÑÑиÑÑовÑваÑÑ Ð¸ «ÑÑÑÑе» инÑеÑвÑÑ: еÑли Ð²Ñ Ð¾Ð±ÑÑждали ÑÑвÑÑвиÑелÑнÑе даннÑе â лÑÑÑе ÑаÑÑиÑÑоваÑÑ Ð°Ñдио без иÑполÑÐ·Ð¾Ð²Ð°Ð½Ð¸Ñ Ð½ÐµÐ¹ÑоÑеÑей.\' | t }}</p> <p><em><span ng-bind-html="(\'ÐодÑобнее о безопаÑноÑÑи пÑи иÑполÑзовании ÐÐ â <a href=\\\'/articles/social/ai-security\\\' target=\\\'_self\\\'>в маÑеÑиале ÐиÑкÑÑÑа</a>.\' | t) | trustedHtml"></span></em></p> </li> <li> <p><span class="lead">{{ \'ÐвÑÐ¾Ñ Ð¿ÑедÑпÑÐµÐ¶Ð´Ð°ÐµÑ ÑедакÑÐ¸Ñ Ð¾ знаÑимом иÑполÑзовании ÐÐ.\' | t }}</span> {{ \'ÐвÑÐ¾Ñ Ð¸Ð½ÑоÑмиÑÑÐµÑ ÑедакÑионное ÑообÑеÑÑво, еÑли Ñоздавал или ÑÑÑеÑÑвенно пеÑеÑабаÑÑвал пÑи помоÑи ÐÐ ÑÑагменÑÑ ÑекÑÑа, воÑедÑие в ÑиналÑнÑÑ Ð²ÐµÑÑиÑ; иÑполÑзовал ÐÐ Ð´Ð»Ñ Ð·Ð°Ð¼ÐµÑного ÑеÑнового пеÑевода; генеÑиÑовал или ÑедакÑиÑовал изобÑажениÑ, аÑдио или видео; обÑабаÑÑвал болÑÑие маÑÑÐ¸Ð²Ñ Ð´Ð°Ð½Ð½ÑÑ
, докÑменÑов или иÑÑоÑников; иÑполÑзовал ÐÐ Ð´Ð»Ñ ÑÑвÑÑвиÑелÑнÑÑ
даннÑÑ
; делал Ñ
ÑдожеÑÑвеннÑй или иÑÑледоваÑелÑÑкий ÑкÑпеÑÐ¸Ð¼ÐµÐ½Ñ Ñ ÑÑаÑÑием модели.\' | t }}</p> <p>{{ \'ÐÑо необÑ
одимо Ð´Ð»Ñ Ñого, ÑÑÐ¾Ð±Ñ Ð²Ð¼ÐµÑÑе подобÑаÑÑ Ð²ÐµÑнÑй ÑÑÐ¾Ð²ÐµÐ½Ñ Ð¾ÑкÑÑÑоÑÑи пеÑед ÑиÑаÑелем. ÐÐ-пÑовеÑка оÑÑогÑаÑии, ÑеÑ
ниÑеÑÐºÐ°Ñ ÐºÐ¾ÑÑекÑÑÑа и дÑÑгие дейÑÑвиÑ, не менÑÑÑие ÑÑÑи ÑекÑÑа, оÑделÑного пÑедÑпÑÐµÐ¶Ð´ÐµÐ½Ð¸Ñ Ð¸ диÑклеймеÑа не ÑÑебÑÑÑ.\' | t }}</p> <p><span ng-bind-html="(\'СпоÑнÑе ÑлÑÑаи ÑÑебÑÑÑ Ð´Ð¸Ð°Ð»Ð¾Ð³Ð°. УÑаÑÑники ÑедакÑии могÑÑ Ð¿Ð¾Ð¿ÑоÑиÑÑ Ð°Ð²ÑоÑа поделиÑÑÑÑ Ð¸ÑÑоÑниками, обÑÑÑниÑÑ Ð¼ÐµÑод ÑабоÑÑ Ð¸Ð»Ð¸ ÑÑоÑниÑÑ ÑÑÐµÐ¿ÐµÐ½Ñ ÑÑаÑÑÐ¸Ñ ÐРв Ñоздании пÑбликаÑии<a class=\\\'footnote-tooltip\\\' href=\\\'#\\\' data-original-title=\\\'ÐÑли поÑле пÑбликаÑии вÑÑÑниÑÑÑ, ÑÑо иÑполÑзование ÐРбÑло ÑкÑÑÑо, маÑеÑиал Ð²Ð²Ð¾Ð´Ð¸Ñ ÑиÑаÑелей в заблÑждение или ÑоздаÑÑ ÑгÑÐ¾Ð·Ñ Ð±ÐµÐ·Ð¾Ð¿Ð°ÑноÑÑи, ÑÐ°Ð¼Ð¸Ð·Ð´Ð°Ñ Ð¼Ð¾Ð¶ÐµÑ Ð´Ð¾Ð±Ð°Ð²Ð¸ÑÑ Ð¼Ð°ÑкиÑовкÑ, внеÑÑи иÑпÑÐ°Ð²Ð»ÐµÐ½Ð¸Ñ Ð¸ пеÑеÑмоÑÑеÑÑ ÑоÑÑÑдниÑеÑÑво Ñ Ð°Ð²ÑоÑом.\\\'>3</a>.\' | t) | trustedHtml" footnote-text="footnote-text"></span></p> </li> </ol> <div class="tw:mt-section"> <p><em><span ng-bind-html="(\'ÐÑÐ¾Ñ ÐºÐ¾Ð´ÐµÐºÑ Ð¾ÑкÑÑÑ Ð´Ð»Ñ Ð¾Ð±ÑÑÐ¶Ð´ÐµÐ½Ð¸Ñ Ð¸ бÑÐ´ÐµÑ Ð¿ÐµÑеÑмаÑÑиваÑÑÑÑ Ð¿Ð¾ меÑе поÑÐ²Ð»ÐµÐ½Ð¸Ñ Ð½Ð¾Ð²ÑÑ
инÑÑÑÑменÑов, пÑакÑик и ÑиÑков. СообÑиÑÑ Ð¾Ð± оÑибке, неÑаÑкÑÑÑом иÑполÑзовании ÐРили возможном наÑÑÑении пÑав вÑегда можно по адÑеÑÑ <a href=\\\'mailto:[email protected]\\\' rel=\\\'noopener noreferrer\\\' target=\\\'_blank\\\'>[email protected]</a>.\' | t) | trustedHtml"></span></em></p> </div> </div> </div> </div>'),e.put("/pages/about/almanac.html",'<update-meta title="{{ \'ÐлÑманаÑ
\' | t }}"></update-meta> <update-meta name="description" content="{{ \'ÐолоÑÑем за лÑÑÑие ÑÑаÑÑи на ÐиÑкÑÑÑе.\' | t }}" ></update-meta> <update-meta name="keywords" content="{{ \'Discours.io, алÑманаÑ
, голоÑование\' | t }}"></update-meta> <update-meta property="og:title" content="{{ \'ÐлÑманаÑ
\' | t }}"></update-meta> <update-meta property="og:description" content="{{ \'ÐолоÑÑем за лÑÑÑие ÑÑаÑÑи на ÐиÑкÑÑÑе.\' | t }}" ></update-meta> <div class="almanac-wrapper"> <div class="ds-container"> <div class="tw:row-flex"> <div class="tw:gutter-half tw:w-full tw:md:w-9/12"> <h1 class="h2 black-bg-heading tw:mt-content-top almanac-hero-title"> <span>{{ \'УÑа! ÐиÑкÑÑÑ Ð±ÑÐ´ÐµÑ Ð½Ð° бÑмаге. Уже ÑкоÑо\' | t }}</span> </h1> </div> <div class="tw:gutter-half tw:w-full tw:sm:w-9/12 tw:sm:mx-auto"> <p class="italic tw:mt-10">{{ \'Ð¥ÑдожеÑÑвенно-аналиÑиÑеÑкий жÑÑнал Discours.io ÑÑÑеÑÑвÑÐµÑ Ñже не один год. Ðа ÑÑо вÑÐµÐ¼Ñ Ñ Ð½Ð°Ñ Ð²ÑÑло много пÑекÑаÑнÑÑ
ÑекÑÑов, коÑоÑÑе бÑдÑÑ Ð¸Ð½ÑеÑеÑÐ½Ñ Ð½Ðµ ÑолÑко завÑÑа, но и ÑеÑез деÑÑÑки леÑ. ÐоÑÑÐ¾Ð¼Ñ Ð¼Ñ ÑеÑили издаÑÑ Ð¸Ñ
на бÑмаге. ЧÑо именно Ð²Ð¾Ð¹Ð´ÐµÑ Ð² алÑманаÑ
«ÐиÑкÑÑÑ», ÑеÑаÑÑ Ð²Ð°Ð¼. ÐолоÑÑйÑе!\' | t }}</p> </div> </div> </div> <div class="ds-container"> <div class="tw:gutter-half tw:w-full tw:md:w-9/12"> <h2 class="h2 black-bg-heading tw:mt-content-top almanac-section-title"> <span>{{ \'ЧÑо Ñакое алÑманаÑ
«ÐиÑкÑÑÑ»\' | t }}</span> </h2> </div> <div class="tw:row-flex"> <div class="tw:gutter-half tw:w-full tw:sm:w-6/12 tw:md:w-3/12 almanac-item"> <img class="tw:block tw:max-w-full tw:h-auto" src="/images/almanac/icon_lend1.svg" alt="{{ \'ÐолоÑование ÑообÑеÑÑва\' | t }}" width="85" height="85" loading="lazy" decoding="async" /> <p>{{ \'СодеÑжание алÑманаÑ
а пÑÑмÑм голоÑованием опÑÐµÐ´ÐµÐ»Ð¸Ñ Ð³Ð»Ð¾Ð±Ð°Ð
1»Ñное ÑообÑеÑÑво инÑеллекÑÑалов. ТакиÑ
изданий еÑе не бÑло\' | t }}</p> </div> <div class="tw:gutter-half tw:w-full tw:sm:w-6/12 tw:md:w-3/12 almanac-item"> <img class="tw:block tw:max-w-full tw:h-auto" src="/images/almanac/icon_lend2.svg" alt="{{ \'33 ÑекÑÑа Ñ Ð¸Ð»Ð»ÑÑÑÑаÑиÑми\' | t }}" width="85" height="85" loading="lazy" decoding="async" /> <p>{{ \'33 поÑÑÑÑаÑÑиÑ
ÑекÑÑа, пÑоиллÑÑÑÑиÑованнÑе 33 ÑазнÑми Ñ
Ñдожниками\' | t }}</p> </div> <div class="tw:gutter-half tw:w-full tw:sm:w-6/12 tw:md:w-3/12 almanac-item"> <img class="tw:block tw:max-w-full tw:h-auto" src="/images/almanac/icon_lend3.svg" alt="{{ \'ÐногоголоÑое издание\' | t }}" width="85" height="85" loading="lazy" decoding="async" /> <p>{{ \'ÐеобÑкновенное многоголоÑое издание Ñ ÑдивиÑелÑнÑми иÑÑоÑиÑми о ÑамÑÑ
ÑазнÑÑ
веÑаÑ
\' | t }}</p> </div> <div class="tw:gutter-half tw:w-full tw:sm:w-6/12 tw:md:w-3/12 almanac-item"> <img class="tw:block tw:max-w-full tw:h-auto" src="/images/almanac/icon_lend4.svg" alt="{{ \'Ðнига на полкÑ\' | t }}" width="85" height="85" loading="lazy" decoding="async" /> <p>{{ \'Ðнига, коÑоÑÑÑ Ð·Ð°Ñ
оÑеÑÑÑ Ð¿Ð¾ÑÑавиÑÑ Ð½Ð° полкÑ, пеÑеÑиÑаÑÑ Ð¸ ÑеÑез год, и ÑеÑез деÑÑÑÑ Ð»ÐµÑ\' | t }}</p> </div> </div> </div> <div class="ds-container" id="voting"> <div class="tw:gutter-half tw:w-full tw:md:w-9/12 tw:mt-content-top"> <h2 class="h2 black-bg-heading almanac-section-title"> <span>{{ \'ÐолоÑÑйÑе за лÑÑÑие ÑÑаÑÑи ÐиÑкÑÑÑа\' | t }}</span> </h2> <p class="tw:mt-5">{{ \'ÐÐ°Ñ Ð²ÑÐ±Ð¾Ñ Ð¾Ð¿ÑÐµÐ´ÐµÐ»Ð¸Ñ ÑодеÑжание алÑманаÑ
а\' | t }}</p> </div> <div class="tw:row-flex tw:mt-content-top"> <div class="tw:gutter-half tw:w-full tw:md:w-8/12"> <div class="almanac-list-state almanac-list-state--loading" ng-if="$ctrl.loadingInitial" role="status" aria-live="polite" > <i class="fas fa-spin fa-sync-alt" aria-hidden="true"></i> <span>{{ \'ÐагÑÑжаем маÑеÑиалÑâ¦\' | t }}</span> </div> <div class="tw:row-flex almanac-article" ng-repeat="article in $ctrl.articles track by article._id" > <div class="tw:gutter-half tw:w-full tw:sm:w-6/12 tw:lg:w-7/12"> <p> <span class="almanac-article-index">{{ $index + 1 }}.</span ><a class="almanac-article-title" ng-href="{{ article.link }}">{{ article.title }}</a ><a class="almanac-article-author" ng-if="article.author" ng-href="{{ article.authorLink }}" >{{ article.author }}</a > </p> </div> <div class="tw:gutter-half tw:w-full tw:sm:w-6/12 tw:lg:w-5/12"> <rating-buttons type="ContentItem" item="article" popover-class="rating-popover--open-material" root-class="post-rating" ></rating-buttons> </div> <div ng-if="$index === 32"> <hr class="big-black" /> </div> </div> <div class="almanac-list-state almanac-list-state--error" ng-if="$ctrl.loadError && !$ctrl.loadingMore" role="alert" > <p> {{ \'Ðе ÑдалоÑÑ Ð·Ð°Ð³ÑÑзиÑÑ Ð¼Ð°ÑеÑÐ¸Ð°Ð»Ñ Ð¿Ð¾Ð»Ð½Ð¾ÑÑÑÑ. ÐÑовеÑÑÑе Ñоединение и попÑобÑйÑе Ñнова.\' | t }} </p> <button class="paper-button light almanac-retry-button" type="button" ng-click="$ctrl.retryLoad()" > {{ \'ÐовÑоÑиÑÑ\' | t }} </button> </div> <div class="almanac-list-state" ng-if="!$ctrl.loadingInitial && !$ctrl.loadError && !$ctrl.articles.length" role="status" > <p>{{ \'Ðока Ð½ÐµÑ Ð¼Ð°ÑеÑиалов Ð´Ð»Ñ Ð³Ð¾Ð»Ð¾ÑованиÑ.\' | t }}</p> </div> <div> <button class="paper-button big corner-bottom-left invert-hover" type="button" ng-click="$ctrl.loadMore()" ng-disabled="$ctrl.loadingInitial || $ctrl.loadingMore" ng-hide="$ctrl.loadError || !$ctrl.hasMore" ng-attr-aria-busy="{{ $ctrl.loadingMore }}" aria-label="{{ \'ÐоказаÑÑ ÐµÑÑ Ð¼Ð°ÑеÑиалÑ\' | t }}" > <span ng-hide="$ctrl.loadingMore">{{ \'ÐоказаÑÑ ÐµÑÑ\' | t }}</span ><i class="fas fa-sync-alt fa-spin" ng-show="$ctrl.loadingMore" aria-hidden="true"></i ><span class="tw:sr-only" ng-if="$ctrl.loadingMore" >{{ \'ÐагÑÑжаем маÑеÑиалÑâ¦\' | t }}</span > </button> </div> </div> <div class="tw:gutter-half tw:w-full tw:md:w-4/12">
1 <div class="almanac-faq-item"> <h2 class="almanac-faq-title">F.A.Q.</h2> <dl> <dt>{{ \'ЧÑо Ñакое алÑманаÑ
«ÐиÑкÑÑÑ»?\' | t }}</dt> <dd>{{ \'РпеÑвÑй Ð½Ð¾Ð¼ÐµÑ Ð°Ð»ÑманаÑ
а войдÑÑ 33 лÑÑÑиÑ
, по Ð¼Ð½ÐµÐ½Ð¸Ñ Ð°Ð²ÑоÑов ÐиÑкÑÑÑа, ÑекÑÑа, опÑбликованнÑÑ
на ÑайÑе.\' | t }}</dd> <dt>{{ \'ЧÑо бÑÐ´ÐµÑ Ð² алÑманаÑ
е?\' | t }}</dt> <dd>{{ \'ÐÑо ÑепоÑÑажи, иÑÑледованиÑ, иÑÑоÑиÑеÑкие оÑеÑки, аналиÑиÑеÑкие ÑÑаÑÑи, ÑеÑензии, инÑеÑвÑÑ Ñ ÑдивиÑелÑнÑми лÑдÑми и пеÑвоклаÑÑÐ½Ð°Ñ Ð»Ð¸ÑеÑаÑÑÑа. Ðакие именно маÑеÑÐ¸Ð°Ð»Ñ Ð²Ð¾Ð¹Ð´ÑÑ Ð² алÑманаÑ
, ÑеÑÐ¸Ñ Ð°Ð²ÑоÑÑкое ÑообÑеÑÑво.\' | t }}</dd> <dt>{{ \'Ðак попаÑÑÑ Ð² алÑманаÑ
?\' | t }}</dt> <dd ng-bind-html="(\'Ðадо до ÑевÑÐ°Ð»Ñ 2017 года <a class=\\\'black-link\\\' href=\\\'https://discours.io/#post\\\'>напиÑаÑÑ</a> оÑÐµÐ½Ñ Ñ
оÑоÑÑÑ ÑÑаÑÑÑ Ð¸ дождаÑÑÑÑ, пока ее оÑÐµÐ½Ð¸Ñ Ð¿Ð¾ доÑÑоинÑÑÐ²Ñ ÑообÑеÑÑво из более Ñем 200 Ñеловек Ñо вÑего миÑа.\' | t) | trustedHtml" ></dd> </dl> </div> </div> </div> <div class="tw:gutter-half tw:w-full tw:md:w-9/12"> <h2 class="h2 black-bg-heading tw:mt-content-top almanac-section-title"> <span>{{ \'ÐаказаÑÑ Ð°Ð»ÑманаÑ
\' | t }}</span> </h2> </div> <div class="tw:row-flex"> <div class="tw:gutter-half tw:w-full tw:sm:w-7/12"> <p class="italic tw:mt-10 tw:text-xl tw:font-bold">{{ \'ÐÑÑавÑÑе email, ÑÑÐ¾Ð±Ñ Ð¿ÑедзаказаÑÑ Ð±ÑмажнÑй алÑманаÑ
и поддеÑжаÑÑ ÐµÐ³Ð¾ вÑпÑÑк\' | t }}</p> </div> <div class="tw:gutter-half tw:w-full tw:sm:w-5/12"> <div class="subscribe-form"> <div class="subscription-input-wrapper"> <span ng-show="$ctrl.subscribeFormSent" role="status" aria-live="polite" >{{ \'СпаÑибо!\' | t }}</span > <div class="loading" ng-show="$ctrl.subscribeFormLoading" role="status" aria-live="polite" > <i class="fas fa-spin fa-sync-alt" aria-hidden="true"></i> <span class="tw:sr-only">{{ \'ÐÑпÑавлÑемâ¦\' | t }}</span> </div> <form ng-submit="$ctrl.subscribeForm($event)" ng-hide="$ctrl.subscribeFormSent || $ctrl.subscribeFormLoading" > <div class="tw:row-flex"> <div class="tw:gutter-half tw:w-full tw:md:w-9/12"> <label class="tw:sr-only" for="almanac-subscribe-email" >{{ \'ÐÑÑавÑÑе email\' | t }}</label > <input id="almanac-subscribe-email" class="subscription-input" type="email" inputmode="email" autocomplete="email" required="required" placeholder="{{ \'ÐÑÑавÑÑе email\' | t }}" ng-model="$ctrl.subscribeObj.email" ng-disabled="$ctrl.subscribeFormLoading" /> </div> <div class="tw:gutter-half tw:w-full tw:md:w-3/12"> <button class="paper-button light" type="submit" aria-label="{{ \'ÐÑпÑавиÑÑ email\' | t }}" > OK </button> </div> </div> </form> </div> </div> </div> </div> </div> </div>'),e.put("/pages/about/changelog.html",'<update-meta title="Changelog ÐиÑкÑÑÑа â Ð¾Ð±Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ Ð¿Ð»Ð°ÑÑоÑмÑ"></update-meta> <update-meta name="description" content="ÐÑкÑÑÑÐ°Ñ Ð¸ÑÑоÑÐ¸Ñ Ð¾Ð±Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ð¹ Ñвободной плаÑÑоÑмÑ: новÑе ÑÑнкÑии, иÑпÑÐ°Ð²Ð»ÐµÐ½Ð¸Ñ Ð¸ ÑлÑÑÑениÑ"></update-meta> <update-meta name="keywords" content="Discours.io, changelog, обновлениÑ, иÑÑоÑÐ¸Ñ Ð²ÐµÑÑий, ÑелизÑ"></update-meta> <update-meta property="og:title" content="Changelog â Ð¾Ð±Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ Ð¿Ð»Ð°ÑÑоÑÐ¼Ñ ÐиÑкÑÑÑа"></update-meta> <update-meta property="og:description" content="ÐÑкÑÑÑÐ°Ñ Ð¸ÑÑоÑÐ¸Ñ Ð¾Ð±Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ð¹ Ñвободной плаÑÑоÑмÑ: новÑе ÑÑнкÑии, иÑпÑÐ°Ð²Ð»ÐµÐ½Ð¸Ñ Ð¸ ÑлÑÑÑениÑ"></update-meta> <update-meta property="og:type" content="website"></update-meta> <update-meta property="og:image" content="https://discours.io/images/participation.png"></update-meta>
1 <update-meta property="og:image:width" content="1200"></update-meta> <update-meta property="og:image:height" content="630"></update-meta> <update-meta name="twitter:card" content="summary_large_image"></update-meta> <update-meta name="twitter:image" content="https://discours.io/images/participation.png"></update-meta> <script src="/scripts/vendor-changelog-filter.js" defer><\/script> <div class="container open-post tw:mt-5"> <div class="tw:row-flex changelog-layout"> <div class="tw:gutter-half tw:w-full tw:md:w-2/12"> <h1 class="h2 black-bg-heading black-bg-heading-margin"> <span class="wrapped">Changelog ÐиÑкÑÑÑа: Ð¾Ð±Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ Ð¿Ð»Ð°ÑÑоÑмÑ</span> </h1> <nav class="changelog-filter" aria-label="ФилÑÑÑ Ð¿Ð¾ Ñипам изменений"> <span class="changelog-filter__btn changelog-filter__btn--active" role="button" tabindex="0" data-filter="all"><span class="changelog-filter__label">ÐÑе</span><span class="changelog-filter__count" data-count="all"></span></span> <span class="changelog-filter__btn" role="button" tabindex="0" data-filter="NEW" title="Ð½Ð¾Ð²Ð°Ñ ÑиÑа">NEW <span class="changelog-filter__count" data-count="NEW"></span></span> <span class="changelog-filter__btn" role="button" tabindex="0" data-filter="FIX" title="баг-ÑикÑ">FIX <span class="changelog-filter__count" data-count="FIX"></span></span> <span class="changelog-filter__btn" role="button" tabindex="0" data-filter="UX" title="взаимодейÑÑвие">UX <span class="changelog-filter__count" data-count="UX"></span></span> <span class="changelog-filter__btn" role="button" tabindex="0" data-filter="PERF" title="ÑкоÑоÑÑÑ">PERF <span class="changelog-filter__count" data-count="PERF"></span></span> <span class="changelog-filter__btn" role="button" tabindex="0" data-filter="DESIGN" title="визÑал">DESIGN <span class="changelog-filter__count" data-count="DESIGN"></span></span> <span class="changelog-filter__btn" role="button" tabindex="0" data-filter="REFACTOR" title="ÑеÑакÑоÑинг">REFACTOR <span class="changelog-filter__count" data-count="REFACTOR"></span></span> <span class="changelog-filter__btn" role="button" tabindex="0" data-filter="A11Y" title="доÑÑÑпноÑÑÑ">A11Y <span class="changelog-filter__count" data-count="A11Y"></span></span> <span class="changelog-filter__btn" role="button" tabindex="0" data-filter="SEC" title="безопаÑноÑÑÑ">SEC <span class="changelog-filter__count" data-count="SEC"></span></span> <span class="changelog-filter__btn" role="button" tabindex="0" data-filter="SEO" title="SEO">SEO <span class="changelog-filter__count" data-count="SEO"></span></span> <span class="changelog-filter__btn" role="button" tabindex="0" data-filter="DOCS" title="докÑменÑаÑиÑ">DOCS <span class="changelog-filter__count" data-count="DOCS"></span></span> <span class="changelog-filter__btn" role="button" tabindex="0" data-filter="QA" title="ÑеÑÑиÑование">QA <span class="changelog-filter__count" data-count="QA"></span></span> <span class="changelog-filter__btn" role="button" tabindex="0" data-filter="DEVOPS" title="инÑÑаÑÑÑÑкÑÑÑа">DEVOPS <span class="changelog-filter__count" data-count="DEVOPS"></span></span> <span class="changelog-filter__btn" role="button" tabindex="0" data-filter="DX" title="DX">DX <span class="changelog-filter__count" data-count="DX"></span></span> </nav> </div> <div class="tw:gutter-half tw:w-full tw:md:w-7/12 post-body tw:md:mt-content-top changelog-content" ng-non-bindable> <details class="changelog-section" open> <summary class="changelog-summary"><span class="changelog-meta"><span class="changelog-meta__version">v9.177</span><span class="changelog-meta__date">28-09-2026</span></span><h2 id="v9177-28-09-2026--полиÑика-конÑиденÑиалÑноÑÑи-ÑвоÑ-ÑÑÑаниÑа-и-понÑÑнÑй-Ñаздел-о-вÑ
оде-ÑеÑез-дÑÑгие-ÑеÑвиÑÑ">ÐолиÑика конÑиденÑиалÑноÑÑи: ÑÐ²Ð¾Ñ ÑÑÑаниÑа и понÑÑнÑй Ñаздел о вÑ
оде ÑеÑез дÑÑгие ÑеÑвиÑÑ</h2></summary> <div class="changelog-section__body"> <p>ÐолиÑика конÑиденÑиалÑноÑÑи бÑла Ñазделом в конÑе пÑавил ÑайÑа. ТепеÑÑ Ñ Ð½ÐµÑ Ñвой адÑеÑ, discours.io/privacy-policy, а в ÑекÑÑе пÑÑмо Ñказано, ÑÑо ÑÐ°Ð¹Ñ Ð¿Ð¾Ð»ÑÑÐ°ÐµÑ Ð¿Ñи вÑ
оде ÑеÑез Google, VK, Facebook или GitHub и Ñего не полÑÑаеÑ.
1</p> <ul> <li data-num="1746"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> <strong>СÑÑаниÑа «ÐолиÑика конÑиденÑиалÑноÑÑи»</strong> â оÑделÑно Ð¾Ñ Ð¿Ñавил ÑайÑа; ведÑÑ Ð½Ð° Ð½ÐµÑ Ð·Ð½Ð°Ðº © в подвале ÑайÑа, а в пÑавилаÑ
на меÑÑе пÑежнего Ñаздела оÑÑалаÑÑ Ð¾ÑÑÑлка.</li> <li data-num="1747"><span class="changelog-tag changelog-tag--SEC" data-tag-alias="SEC">SEC</span> <strong>ÐÑ
од ÑеÑез дÑÑгие ÑеÑвиÑÑ</strong> â полиÑика пеÑеÑиÑлÑеÑ, ÑÑо пÑиÑ
Ð¾Ð´Ð¸Ñ Ð¾Ñ ÑеÑвиÑа вÑ
ода (имÑ, адÑÐµÑ Ð¿Ð¾ÑÑÑ, ÑоÑо пÑоÑÐ¸Ð»Ñ Ð¸ иденÑиÑикаÑÐ¾Ñ Ð°ÐºÐºÐ°ÑнÑа), заÑем ÑÑо нÑжно и как ÑдалиÑÑ ÑÑи даннÑе. РпиÑÑмам, конÑакÑам и докÑменÑам аккаÑнÑа Ñ ÑайÑа доÑÑÑпа неÑ.</li> <li data-num="1748"><span class="changelog-tag changelog-tag--SEO" data-tag-alias="SEO">SEO</span> <strong>ТекÑÑ Ð¿Ð¾Ð»Ð¸Ñики ÑиÑаеÑÑÑ Ð±ÐµÐ· JavaScript</strong> â поиÑковики и пÑовеÑка пÑÐ¸Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ Ð² Google видÑÑ ÐµÐ³Ð¾ ÑÑазÑ, а не пÑÑÑÑÑ Ð¾Ð±Ð¾Ð»Ð¾ÑÐºÑ ÑÑÑаниÑÑ.</li> </ul> </div> </details> <details class="changelog-section"> <summary class="changelog-summary"><span class="changelog-meta"><span class="changelog-meta__version">v9.176</span><span class="changelog-meta__date">28-09-2026</span></span><h2 id="v9176-28-09-2026--подпиÑÑ-авÑоÑа-без-имени-адÑеÑ-его-ÑÑÑаниÑÑ">ÐодпиÑÑ Ð°Ð²ÑоÑа без имени: адÑÐµÑ ÐµÐ³Ð¾ ÑÑÑаниÑÑ</h2></summary> <div class="changelog-section__body"> <p>ÐÑли авÑÐ¾Ñ Ð½Ðµ заполнил Ð¸Ð¼Ñ Ð² пÑоÑиле, его подпиÑÑ Ð¿Ñопадала: под маÑеÑиалом имени не бÑло вовÑе, в ÑпиÑке авÑоÑов и подпиÑÑиков ÑÐµÐ¼Ñ ÑÑоÑла пÑÑÑÐ°Ñ ÑÑÑока, в ÑведомлениÑÑ
не бÑло видно, кÑо дейÑÑвовал, а ÑÑÑаниÑа Ñамого авÑоÑа не оÑкÑÑвалаÑÑ. ТепеÑÑ Ð²Ð¼ÐµÑÑо имени показÑваеÑÑÑ Ð°Ð´ÑÐµÑ ÑÑÑаниÑÑ Ð°Ð²ÑоÑа â ÑÐ¾Ñ Ð¶Ðµ, ÑÑо в ÑÑÑлке на его пÑоÑилÑ. ÐоÑÑа в подпиÑÑ Ð½Ðµ попадаеÑ, даже еÑли ÐµÑ Ð²Ð¿Ð¸Ñали в поле имени.</p> <ul> <li data-num="1742"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>СÑÑаниÑа авÑоÑа</strong> â оÑкÑÑваеÑÑÑ Ð¸ без имени в пÑоÑиле; в поиÑке и в пÑевÑÑ ÑÑÑлки подпиÑана адÑеÑом ÑÑÑаниÑÑ.</li> <li data-num="1743"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>ÐодпиÑÑ Ð¿Ð¾Ð´ маÑеÑиалом</strong> â ввеÑÑ
Ñ Ð¸ Ð²Ð½Ð¸Ð·Ñ ÑÑаÑÑи, Ð´Ð»Ñ ÑиÑаÑелей и Ð´Ð»Ñ Ð²Ð¾ÑедÑиÑ
. Ð ÑазмеÑке Ð´Ð»Ñ Ð¿Ð¾Ð¸Ñковиков Ñакой маÑеÑиал болÑÑе не пÑипиÑан ÑедакÑии.</li> <li data-num="1744"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>ÐвÑоÑÑ Ð¸ подпиÑÑики ÑемÑ</strong> â ÑÑÑока без имени Ñнова подпиÑана, и ÐµÑ Ð½Ð°Ñ
Ð¾Ð´Ð¸Ñ Ð¿Ð¾Ð¸Ñк по ÑпиÑкÑ.</li> <li data-num="1745"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>УведомлениÑ</strong> â ÑÑаза наÑинаеÑÑÑ Ñ Ð°Ð´ÑеÑа ÑÑÑаниÑÑ Ð°Ð²ÑоÑа, ÑÑÑлкой на его пÑоÑилÑ. ÐÑли показаÑÑ Ð½ÐµÑего, Ñведомление безлиÑное: «ÐовÑй комменÑаÑий к â¦Â».</li> </ul> </div> </details> <details class="changelog-section"> <summary class="changelog-summary"><span class="changelog-meta"><span class="changelog-meta__version">v9.175</span><span class="changelog-meta__date">27-09-2026</span></span><h2 id="v9175-27-09-2026--пÑавки-ÑеÑензенÑа-оÑÑаÑÑÑÑ-в-ÑедакÑоÑе-поÑле-пÑбликаÑии">ÐÑавки ÑеÑензенÑа оÑÑаÑÑÑÑ Ð² ÑедакÑоÑе поÑле пÑбликаÑии<
1/h2></summary> <div class="changelog-section__body"> <p>ÐÑÐµÐ´Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ Ð¸ комменÑаÑии ÑеÑензенÑа, коÑоÑÑе авÑÐ¾Ñ Ð½Ðµ ÑÑпел ÑазобÑаÑÑ Ð´Ð¾ пÑбликаÑии, пÑопадали из ÑедакÑоÑа: маÑеÑиал вÑÑ
одил на ÑайÑ, а пÑавки оÑÑавалиÑÑ ÑолÑко в иÑÑоÑии веÑÑий. ТепеÑÑ Ð¾Ð½Ð¸ оÑÑаÑÑÑÑ Ð² ÑеÑновике на ÑвоиÑ
меÑÑаÑ
, и поÑле пÑбликаÑии иÑ
можно пÑинÑÑÑ Ð¸Ð»Ð¸ оÑклониÑÑ, как пÑежде. Ðа ÑайÑ, как и ÑанÑÑе, не попадаÑÑ Ð¿ÑедложеннÑе вÑÑавки и комменÑаÑии, а ÑекÑÑ, коÑоÑÑй пÑедлагали ÑдалиÑÑ, оÑÑаÑÑÑÑ Ð½Ð° меÑÑе.</p> <ul> <li data-num="1737"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>ÐеÑазобÑаннÑе пÑавки оÑÑаÑÑÑÑ Ð² ÑедакÑоÑе поÑле пÑбликаÑии</strong> â пÑÐµÐ´Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ Ð¸ оÑкÑÑÑÑе комменÑаÑии ÑеÑензенÑа Ñнова Ð²Ð¸Ð´Ð½Ñ Ð½Ð° полÑÑ
пÑи ÑледÑÑÑем оÑкÑÑÑии маÑеÑиала.</li> <li data-num="1738"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>ÐепÑинÑÑÑй новÑй Ð°Ð±Ð·Ð°Ñ Ð½Ðµ ÑазÑÐµÐ·Ð°ÐµÑ Ð¾Ð¿ÑбликованнÑй ÑекÑÑ</strong>
1 â пока авÑÐ¾Ñ ÐµÐ³Ð¾ не пÑинÑл, Ð°Ð±Ð·Ð°Ñ Ð½Ð° ÑайÑе оÑÑаÑÑÑÑ ÑелÑм. РанÑÑе пÑи пÑбликаÑии помеÑка ÑнималаÑÑ, а ÑазÑез оÑÑавалÑÑ.</li> <li data-num="1739"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>ÐÑбликаÑÐ¸Ñ Ð´Ð¾Ð¶Ð¸Ð´Ð°ÐµÑÑÑ ÑоÑ
ÑÐ°Ð½ÐµÐ½Ð¸Ñ ÑеÑновика</strong> â в Ñом ÑиÑле Ñого, ÑÑо Ñже идÑÑ. ÐÑли ÑоÑ
ÑаниÑÑ ÑеÑновик не ÑдалоÑÑ, маÑеÑиал не пÑбликÑеÑÑÑ, ÑедакÑÐ¾Ñ Ñ Ð¿Ñавками оÑÑаÑÑÑÑ Ð¾ÑкÑÑÑÑм, а на ÑкÑане поÑвлÑеÑÑÑ Ð¿ÑедÑпÑеждение: ÑекÑÑ Ð¾ÑÑаÑÑÑÑ Ð² ÑедакÑоÑе, опÑбликоваÑÑ Ð¼Ð¾Ð¶Ð½Ð¾ еÑÑ Ñаз ÑÑÑÑ Ð¿Ð¾Ð·Ð¶Ðµ.</li> <li data-num="1740"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>ÐовÑоÑное нажаÑие «ÐпÑбликоваÑÑ» не вÑпÑÑÐºÐ°ÐµÑ Ð¼Ð°ÑеÑиал дваждÑ</strong> â пока ÑоÑ
ÑанÑеÑÑÑ ÑеÑновик, вÑоÑое нажаÑие ниÑего не оÑпÑавлÑеÑ.</li> <li data-num="1741"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>ÐÑбликаÑÐ¸Ñ Ð±ÐµÐ· изменений болÑÑе не ÑоздаÑÑ Ð½Ð¾Ð²ÑÑ Ð²ÐµÑÑиÑ</strong> â Ñ Ð¼Ð°ÑеÑиалов Ñо ÑноÑками каждое нажаÑие «ÐпÑбликоваÑÑ» запиÑÑвало веÑÑÐ¸Ñ Ð·Ð°Ð½Ð¾Ð²Ð¾ и вÑÑеÑнÑло из иÑÑоÑии более Ñанние.</li> </ul> </div> </details> <details class="changelog-section"> <summary class="changelog-summary"><span class="changelog-meta"><span class="changelog-meta__version">v9.174</span><span class="changelog-meta__date">26-09-2026</span></span><h2 id="v9174-26-09-2026--пÑавки-ÑеÑензенÑа-новÑй-абзаÑ-и-иÑÑоÑиÑ-веÑÑий">ÐÑавки ÑеÑензенÑа: новÑй Ð°Ð±Ð·Ð°Ñ Ð¸ иÑÑоÑÐ¸Ñ Ð²ÐµÑÑий</h2></summary> <div class="changelog-section__body"> <p>РеÑÐµÐ½Ð·ÐµÐ½Ñ Ð² Ñежиме «ÐомменÑиÑование» пÑÐ°Ð²Ð¸Ñ ÑекÑÑ Ð¿ÑедложениÑми: каждое видно на полÑÑ
, и авÑÐ¾Ñ Ñам ÑеÑаеÑ, пÑинÑÑÑ ÐµÐ³Ð¾ или оÑклониÑÑ. Ðдно дейÑÑвие Ñло мимо ÑÑого поÑÑдка â новÑй Ð°Ð±Ð·Ð°Ñ Ð¿Ð¾ клавиÑе Enter ÑÑÐ°Ð·Ñ ÑазÑезал ÑекÑÑ Ð°Ð²ÑоÑа, на полÑÑ
не поÑвлÑлÑÑ Ð¸ пÑи пÑбликаÑии ÑÑ
одил на ÑайÑ. РпÑавки, коÑоÑÑе до пÑбликаÑии не ÑÑпели ÑазобÑаÑÑ, из ÑедакÑоÑа пÑопадали: они ÑоÑ
ÑанÑлиÑÑ Ð² иÑÑоÑии веÑÑий, но ни ÑвидеÑÑ, ни веÑнÑÑÑ Ð¸Ñ
оÑÑÑда бÑло нелÑзÑ.</p> <ul> <li data-num="1733"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>ÐовÑй Ð°Ð±Ð·Ð°Ñ ÑеÑензенÑа ÑÑал пÑедложением</strong> â он поÑвлÑеÑÑÑ Ð½Ð° полÑÑ
ÑÑдом Ñ Ð¾ÑÑалÑнÑми пÑавками, и авÑÐ¾Ñ Ð¿ÑÐ¸Ð½Ð¸Ð¼Ð°ÐµÑ Ð¸Ð»Ð¸ оÑклонÑÐµÑ ÐµÐ³Ð¾ Ñак же. ÐÑклонÑннÑй Ð°Ð±Ð·Ð°Ñ ÑклеиваеÑÑÑ Ñ ÑоÑедним обÑаÑно. Ðа мобилÑнÑÑ
клавиаÑÑÑаÑ
ÑазÑÑв пока Ð¼Ð¾Ð¶ÐµÑ Ð¿ÑойÑи без помеÑки â ÑÑо иÑпÑавим оÑделÑно.</li> <li data-num="1734"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>Свой новÑй Ð°Ð±Ð·Ð°Ñ ÑеÑÐµÐ½Ð·ÐµÐ½Ñ Ð¾ÑменÑÐµÑ Ð¾Ð±ÑÑнÑми клавиÑами</strong> â Backspace и Delete ÑбиÑаÑÑ Ð¿ÑÑÑÑÑ ÑÑÑÐ¾ÐºÑ Ð¸ ÑклеиваÑÑ ÑазÑезаннÑй абзаÑ, как в лÑбом ÑекÑÑе. ЧÑжой новÑй Ð°Ð±Ð·Ð°Ñ ÐºÐ»Ð°Ð²Ð¸Ñи не ÑÑогаÑÑ: его оÑклонÑÑÑ Ð½Ð° полÑÑ
.</li> <li data-num="1735"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> <strong>ÐÑÑоÑÐ¸Ñ Ð²ÐµÑÑий показÑÐ²Ð°ÐµÑ Ð¿Ñавки и комменÑаÑии</strong> â Ñ Ð²ÐµÑÑии, где они еÑÑÑ, в пÑоÑмоÑÑе поÑвилÑÑ Ð¿ÐµÑеклÑÑаÑÐµÐ»Ñ Â«Ðез пÑавок» и «С пÑавками». Ðо ÑмолÑÐ°Ð½Ð¸Ñ Ð²Ð¸Ð´Ð½Ñ Ð¿Ñавки: пÑÐµÐ´Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ Ð¸ комменÑаÑии подÑвеÑÐµÐ½Ñ Ñак же, как в ÑедакÑоÑе.</li> <li data-num="1736"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> <strong>«ÐоÑÑÑановиÑÑ» возвÑаÑÐ°ÐµÑ Ð²ÐµÑÑÐ¸Ñ Ð² Ñом виде, в каком она оÑкÑÑÑа</strong> â Ñ Ð¿Ñавками и оÑкÑÑÑÑми комменÑаÑиÑми или без ниÑ
. Так в ÑабоÑÑ Ð¼Ð¾Ð¶Ð½Ð¾ веÑнÑÑÑ Ð¿ÑедложениÑ, коÑоÑÑе не ÑÑпели ÑазобÑаÑÑ Ð´Ð¾ пÑбликаÑии: они Ñ
ÑанÑÑÑÑ Ð² веÑÑии «СоÑ
Ñанение пÑи пÑбликаÑии».</li> </ul> </div> </details> <details class="changelog-section"> <summary class="changelog-summary"><span class="changelog-meta"><span class="changelog-meta__version">v9.173</span><span class="changelog-meta__date">14-09-2026</span></span>
1<h2 id="v9173-14-09-2026--ÑÑÑаниÑа-подÑвеÑждениÑ-поÑÑÑ-пеÑеÑÑала-говоÑиÑÑ-одно-и-Ñо-же-на-вÑе-ÑлÑÑаи">СÑÑаниÑа подÑвеÑÐ¶Ð´ÐµÐ½Ð¸Ñ Ð¿Ð¾ÑÑÑ Ð¿ÐµÑеÑÑала говоÑиÑÑ Ð¾Ð´Ð½Ð¾ и Ñо же на вÑе ÑлÑÑаи</h2></summary> <div class="changelog-section__body"> <p>СÑÑÐ»ÐºÑ Ð¸Ð· пиÑÑма неÑедко оÑкÑÑÐ²Ð°ÐµÑ Ð½Ðµ Ñеловек, а анÑивиÑÑÑ, коÑпоÑаÑивнÑй пÑокÑи или пÑевÑÑ Ð¿Ð¾ÑÑового клиенÑа. СÑÑлка ÑÑабаÑÑваеÑ, поÑÑа оказÑваеÑÑÑ Ð¿Ð¾Ð´ÑвеÑждена â а Ñеловек, оÑкÑÑв пиÑÑмо Ñледом, ÑиÑал «ÑÑÑлка ÑÑÑаÑела» и полÑÑал ÑоÑÐ¼Ñ Ð·Ð°Ð¿ÑоÑа новой, Ñ
оÑÑ Ð¿Ð¾Ð´ÑвеÑждаÑÑ Ñже неÑего. ТепеÑÑ ÑÑÑаниÑа ÑазлиÑÐ°ÐµÑ ÑлÑÑаи и пÑÐµÐ´Ð»Ð°Ð³Ð°ÐµÑ Ñо, ÑÑо поможеÑ.</p> <ul> <li data-num="1730"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>«ÐÑа ÑÑÑлка Ñже иÑполÑзована» вмеÑÑо «ÑÑÑаÑела»</strong> â и ÑÑдом кнопка «ÐойÑи», поÑÐ¾Ð¼Ñ ÑÑо ÑаÑе вÑего поÑÑа в ÑÑÐ¾Ñ Ð¼Ð¾Ð¼ÐµÐ½Ñ Ñже подÑвеÑждена. ÐапÑоÑиÑÑ Ð½Ð¾Ð²ÑÑ ÑÑÑÐ»ÐºÑ Ð¿Ð¾-пÑÐµÐ¶Ð½ÐµÐ¼Ñ Ð¼Ð¾Ð¶Ð½Ð¾, но ÑÑо вÑоÑой Ñаг, а не единÑÑвеннÑй.</li> <li data-num="1731"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>ÐÑÑÑкÑий ÑÑок назван Ñвоими Ñловами</strong> â Ñам ÑоÑма новой ÑÑÑлки как Ñаз ÑмеÑÑна.</li> <li data-num="1732"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>ÐбоÑÐ²Ð°Ð½Ð½Ð°Ñ ÑÑÑлка опознаÑÑÑÑ Ð¾ÑделÑно</strong> â поÑÑовÑе клиенÑÑ Ð¿ÐµÑеноÑÑÑ Ð´Ð»Ð¸Ð½Ð½Ñе адÑеÑа на новÑÑ ÑÑÑокÑ, и до ÑайÑа Ð´Ð¾ÐµÐ·Ð¶Ð°ÐµÑ Ð¾Ð³ÑÑзок. СÑÑаниÑа пÑоÑÐ¸Ñ Ð¾ÑкÑÑÑÑ ÑÑÑÐ»ÐºÑ Ñеликом или пÑиÑлаÑÑ Ð½Ð¾Ð²ÑÑ.</li> </ul> </div> </details> <details class="changelog-section"> <summary class="changelog-summary"><span class="changelog-meta"><span class="changelog-meta__version">v9.172</span><span class="changelog-meta__date">11-09-2026</span></span><h2 id="v9172-11-09-2026--иконки-пÑопавÑие-из-набоÑа-веÑнÑлиÑÑ-на-кнопки">Ðконки, пÑопавÑие из набоÑа, веÑнÑлиÑÑ Ð½Ð° кнопки</h2></summary> <div class="changelog-section__body"> <p>ÐÐ°Ð±Ð¾Ñ Ð¸ÐºÐ¾Ð½Ð¾Ðº ÑÐ°Ð¹Ñ Ð·Ð°Ð³ÑÑÐ¶Ð°ÐµÑ Ð½Ðµ Ñеликом, а ÑобÑаннÑм подмножеÑÑвом â Ñак ÑÑÑаниÑа оÑкÑÑваеÑÑÑ Ð±ÑÑÑÑее. Ðконка, коÑоÑÑÑ Ð·Ð°Ð±Ñли внеÑÑи в набоÑ, не показÑвала ни оÑибки, ни заглÑÑки: на ÐµÑ Ð¼ÐµÑÑе оÑÑавалаÑÑ Ð¿ÑÑÑоÑа, и кнопка вÑглÑдела безÑмÑнной. ÐвадÑаÑÑ ÑÑи Ñакие иконки веÑнÑлиÑÑ Ð½Ð° меÑÑа, а ÑбоÑка ÑайÑа ÑепеÑÑ Ð¾ÑÑанавливаеÑÑÑ, еÑли в ÑазмеÑке поÑвилаÑÑ Ð¸ÐºÐ¾Ð½ÐºÐ°, коÑоÑой в набоÑе неÑ.</p> <ul> <li data-num="1723"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>Ðнопки в гÑÑпповом диалоге Ñнова подпиÑÐ°Ð½Ñ Ð¸ÐºÐ¾Ð½ÐºÐ°Ð¼Ð¸</strong> â «ÐокинÑÑÑ Ð³ÑÑппÑ» и оÑмеÑка владелÑÑа гÑÑÐ¿Ð¿Ñ Ð±Ñли пÑÑÑÑми меÑÑами.</li> <li data-num="1724"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>ÐеÑеклÑÑаÑÐµÐ»Ñ Ð·Ð²Ñка Ñведомлений видно</strong> â кнопка «ÐклÑÑиÑÑ Ð·Ð²Ñк» и «ÐÑклÑÑиÑÑ Ð·Ð²Ñк» в ÑенÑÑе Ñведомлений не показÑвала Ñвоего ÑоÑÑоÑниÑ, и подÑказка пÑо Ñвайп каÑÑоÑки оÑкÑÑвалаÑÑ Ð±ÐµÐ· знаÑка.</li> <li data-num="1725"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>ÐкÑан вÑ
ода на ÑмÑÑловÑÑ
каÑÑаÑ
показÑÐ²Ð°ÐµÑ Ñвой знаÑок</strong> â ÑанÑÑе над пÑиглаÑением войÑи бÑло пÑÑÑое меÑÑо.</li> <li data-num="1726"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>Ðконки ÑеÑвиÑов пÑи вÑÑавке ÑÑÑлки в ÑедакÑоÑе на меÑÑе</strong> â TikTok, Twitch, Reddit, Bandcamp, Apple Podcasts, Flickr, Pinterest, подкаÑÑÑ, мÑзÑка, каÑÑÑ, пÑезенÑаÑии и книги опознаÑÑÑÑ Ð¿Ð¾ знаÑкÑ, а не по пÑÑÑÐ¾Ð¼Ñ ÐºÐ²Ð°Ð´ÑаÑÑ.</li> <li data-num="1727"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>Ðнопки каÑÑоÑки ÑÑÑлки подпиÑанÑ</strong> â «ÐÑкÑÑÑÑ ÑÑÑлкÑ» и пеÑеклÑÑение вида каÑÑоÑки в ÑедакÑоÑе.</li> <li data-num="1728"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>«ÐÑимениÑÑ ÐºÐ¾ вÑем» в подпиÑи к изобÑÐ°Ð¶ÐµÐ½Ð¸Ñ Ð¿Ð¾Ð»ÑÑила Ñвой знаÑок</strong>, а вÑÐ±Ð¾Ñ Ð²ÐµÑÑии Ð´Ð»Ñ ÑÑÐ°Ð²Ð½ÐµÐ½Ð¸Ñ â Ð¸ÐºÐ¾Ð½ÐºÑ ÑекÑÑего ÑекÑÑа.</li> <li data-num="1729"><span class="changelog-tag changelog-tag--DX" data-tag-alias="DX">DX</span> <strong>СбоÑка падаеÑ, еÑли иконки Ð½ÐµÑ Ð² набоÑе</strong> â пÑовеÑка ÑвеÑÑÐµÑ ÑазмеÑкÑ, ÑпиÑок ÑÑилей и ÑобÑаннÑй ÑÑиÑÑ Ð¼ÐµÐ¶Ð´Ñ Ñобой, поÑÑÐ¾Ð¼Ñ Ð¿ÑÑÑое меÑÑо вмеÑÑо иконки болÑÑе не Ð´Ð¾ÐµÐ´ÐµÑ Ð´Ð¾ ÑайÑа незамеÑеннÑм.</li> </ul> </div> </details> <details class="changelog-section"> <summary class="changelog-summary"><span class="changelog-meta"><span class="changelog-meta__version">v9.171</span><span class="changelog-meta__date">06-09-2026</span></span>
1<h2 id="v9171-06-09-2026--оÑвеÑÑ-ÑайÑа-неÑÑÑ-полиÑикÑ-иÑполÑзованиÑ-а-llmstxt-ведÑÑ-агенÑов-к-ÑекÑÑÑ">ÐÑвеÑÑ ÑайÑа неÑÑÑ Ð¿Ð¾Ð»Ð¸ÑÐ¸ÐºÑ Ð¸ÑполÑзованиÑ, а llms.txt ведÑÑ Ð°Ð³ÐµÐ½Ñов к ÑекÑÑÑ</h2></summary> <div class="changelog-section__body"> <p>РедакÑÐ¸Ñ ÐµÑÑ Ð² авгÑÑÑе запиÑала в robots.txt ÑÐ²Ð¾Ñ ÑеÑение: иÑкаÑÑ Ð¸ ÑиÑиÑоваÑÑ Ð¼Ð°ÑеÑÐ¸Ð°Ð»Ñ Ñо ÑÑÑлкой можно, забиÑаÑÑ Ð¸Ñ
в обÑÑаÑÑие коÑпÑÑа нелÑзÑ. Ðо ÑекÑÑÐ¾Ð²Ð°Ñ Ð²ÐµÑÑÐ¸Ñ ÑÑÑаниÑ, коÑоÑÑÑ ÑÐ°Ð¹Ñ Ð¾ÑдаÑÑ ÐÐ-агенÑам по запÑоÑÑ, пÑиÑ
одила Ñ Ð¿ÑоÑивоположной помеÑкой â ÐµÑ ÑÑавил по ÑмолÑÐ°Ð½Ð¸Ñ Ð¿ÑомежÑÑоÑнÑй Ñлой, не наÑ
Ð¾Ð´Ñ Ð½Ð°Ñей. ТепеÑÑ Ð¿Ð¾Ð»Ð¸Ñика ÑÑÐ¾Ð¸Ñ Ð½Ð° каждом оÑвеÑе ÑайÑа, и ÑекÑÑÐ¾Ð²Ð°Ñ Ð²ÐµÑÑÐ¸Ñ ÐµÑ Ð½Ð°ÑледÑеÑ.</p> <ul> <li data-num="1718"><span class="changelog-tag changelog-tag--SEC" data-tag-alias="SEC">SEC</span> <strong>ÐолиÑика иÑполÑÐ·Ð¾Ð²Ð°Ð½Ð¸Ñ Ð¼Ð°ÑеÑиалов ÑÑÐ¾Ð¸Ñ Ð² заголовке каждого оÑвеÑа</strong> â в Ñой же ÑоÑмÑлиÑовке, ÑÑо и в robots.txt: поиÑк и ÑиÑиÑование ÑазÑеÑенÑ, обÑÑение моделей неÑ. ТекÑÑÐ¾Ð²Ð°Ñ Ð²ÐµÑÑÐ¸Ñ ÑÑÑÐ°Ð½Ð¸Ñ Ð´Ð»Ñ Ð°Ð³ÐµÐ½Ñов болÑÑе не обÑÑвлÑÐµÑ Ð¾Ð±ÑаÑного.</li> <li data-num="1719"><span class="changelog-tag changelog-tag--SEO" data-tag-alias="SEO">SEO</span> <strong>ÐÑÑеводиÑÐµÐ»Ñ Ð´Ð»Ñ ÐÐ-агенÑов (llms.txt) ведÑÑ Ð¿ÑÑмо к Ñазделам</strong> â вмеÑÑо адÑеÑов Ñ Ð¿ÐµÑенапÑавлением, и ÑаÑÑказÑваеÑ, как полÑÑиÑÑ Ð¼Ð°ÑеÑиал в компакÑном ÑекÑÑовом виде и где пÑоÑиÑаÑÑ Ð¿Ð¾Ð»Ð¸ÑÐ¸ÐºÑ Ð¸ÑполÑзованиÑ.</li> <li data-num="1720"><span class="changelog-tag changelog-tag--SEO" data-tag-alias="SEO">SEO</span> <strong>СÑÑаниÑÑ Â«Ð Ð¿ÑоекÑе» ÑиÑаÑÑÑÑ Ð±ÐµÐ· JavaScript</strong> â маниÑеÑÑ, гид, догма, пÑинÑÐ¸Ð¿Ñ Ð¸ ÑÑÑаниÑа поддеÑжки оÑдаÑÑ Ð¿Ð¾Ð»Ð½Ñй ÑекÑÑ Ð¿Ð¾Ð¸ÑковÑм ÑобоÑам и ÐÐ-агенÑам, а не пÑÑÑÑÑ Ð¾Ð±Ð¾Ð»Ð¾ÑкÑ: ÑанÑÑе без иÑÐ¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ ÑкÑипÑов Ñам бÑло полÑоÑа деÑÑÑка Ñлов.</li> <li data-num="1721"><span class="changelog-tag changelog-tag--SEO" data-tag-alias="SEO">SEO</span> <strong>ТекÑÑÐ¾Ð²Ð°Ñ Ð²ÐµÑÑÐ¸Ñ ÑÑÑÐ°Ð½Ð¸Ñ Ð´Ð»Ñ Ð°Ð³ÐµÐ½Ñов наÑинаеÑÑÑ Ñ Ð¼Ð°ÑеÑиала</strong> â ÑлÑжебнÑй блок Ñ Ñазделами и подпиÑкой болÑÑе не оÑкÑÑÐ²Ð°ÐµÑ ÐºÐ°Ð¶Ð´ÑÑ ÑÑÑаниÑÑ.</li> <li data-num="1722"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>ÐапÑÐ¾Ñ Ð½ÐµÑÑÑеÑÑвÑÑÑей полной веÑÑии пÑÑеводиÑÐµÐ»Ñ Ð¿Ð¾Ð»ÑÑÐ°ÐµÑ ÑеÑÑнÑй оÑÐ²ÐµÑ Â«Ð½ÐµÑ»</strong> â ÑанÑÑе вмеÑÑо него ÑÑ
одила пÑÑÑÐ°Ñ Ð¾Ð±Ð¾Ð»Ð¾Ñка ÑÑÑаниÑÑ, и Ð°Ð³ÐµÐ½Ñ ÑÑиÑал, ÑÑо Ñайл еÑÑÑ.</li> </ul> </div> </details> <details class="changelog-section"> <summary class="changelog-summary"><span class="changelog-meta"><span class="changelog-meta__version">v9.170</span><span class="changelog-meta__date">05-09-2026</span></span><h2 id="v9170-05-09-2026--веб-веÑÑиÑ-пиÑÑма-оÑкÑÑваеÑÑÑ-по-лÑбой-из-ÑвоиÑ
-ÑÑÑлок">Ðеб-веÑÑÐ¸Ñ Ð¿Ð¸ÑÑма оÑкÑÑваеÑÑÑ Ð¿Ð¾ лÑбой из ÑвоиÑ
ÑÑÑлок</h2></summary> <div class="changelog-section__body"> <p>СÑÑлка «оÑкÑÑÑÑ Ð² бÑаÑзеÑе» из ÑаÑÑÑлки ведÑÑ Ð½Ð° оÑделÑнÑй адÑеÑ, и до ÑиÑ
Ð¿Ð¾Ñ ÑÐ¾Ñ Ð¶Ðµ адÑеÑ, набÑаннÑй на Ñамом ÑайÑе, показÑвал ÑкÑан «ÑÑÑаниÑа не ÑÑÑеÑÑвÑеÑ». ТепеÑÑ Ð¾Ð½ оÑкÑÑÐ²Ð°ÐµÑ Ð¿Ð¸ÑÑмо, а не оÑÐ¸Ð±ÐºÑ â пÑи ÑÑом ÑÑÑлки в Ñже оÑпÑавленнÑÑ
пиÑÑмаÑ
ÑабоÑаÑÑ ÐºÐ°Ðº ÑабоÑали.</p> <ul> <li data-num="1715"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>ÐдÑÐµÑ Ð²ÐµÐ±-веÑÑии пиÑÑма оÑкÑÑваеÑÑÑ Ð¸ на ÑайÑе</strong> â пÑежде он пÑиводил на ÑкÑан неÑÑÑеÑÑвÑÑÑей ÑÑÑаниÑÑ, Ñ
оÑÑ Ð¿Ð¸ÑÑмо бÑло Ð
1½Ð° меÑÑе. СÑÑлки из оÑпÑавленнÑÑ
пиÑем пÑи ÑÑом не изменилиÑÑ Ð¸ пÑодолжаÑÑ Ð¾ÑкÑÑваÑÑÑÑ Ð¿Ð¾-ÑÑаÑомÑ.</li> <li data-num="1716"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> <strong>СÑÑлка на пиÑÑмо ÑазвоÑаÑиваеÑÑÑ Ð² меÑÑенджеÑаÑ
Ñемой вÑпÑÑка</strong> â пÑи пеÑеÑÑлке в ÑелегÑам или ÑоÑÑеÑÑ Ð²Ð¸Ð´Ð½Ð¾ ÑÐµÐ¼Ñ Ð¿Ð¸ÑÑма и подводкÑ, а не обÑее опиÑание жÑÑнала. РанÑÑе каÑÑоÑÐºÑ Ð¿Ð¾ÐºÐ°Ð·Ñвала ÑолÑко одна из двÑÑ
ÑÑÑлок на одно и Ñо же пиÑÑмо.</li> <li data-num="1717"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>ÐеÑеÑ
од на веб-веÑÑÐ¸Ñ Ð¿Ð¸ÑÑма идÑÑ Ð¾Ð´Ð½Ð¸Ð¼ Ñагом</strong> â адÑÐµÑ ÑÑÐ°Ð·Ñ Ð¿ÑиводиÑÑÑ Ðº канониÑеÑÐºÐ¾Ð¼Ñ Ð²Ð¸Ð´Ñ, без пÑомежÑÑоÑной оÑÑановки.</li> </ul> </div> </details> <details class="changelog-section"> <summary class="changelog-summary"><span class="changelog-meta"><span class="changelog-meta__version">v9.169</span><span class="changelog-meta__date">04-09-2026</span></span><h2 id="v9169-04-09-2026--маÑеÑиал-из-ÑведомлениÑ-оÑкÑÑваеÑÑÑ-Ñ-пеÑвого-Ñаза">ÐаÑеÑиал из ÑÐ²ÐµÐ´Ð¾Ð¼Ð»ÐµÐ½Ð¸Ñ Ð¾ÑкÑÑваеÑÑÑ Ñ Ð¿ÐµÑвого Ñаза</h2></summary> <div class="changelog-section__body"> <p>СÑÑлка на маÑеÑиал в ÑенÑÑе Ñведомлений вÑÑÑеÑала Ñловами «ÐаÑеÑиал не загÑÑзилÑÑ» â и ÑÑÑ Ð¶Ðµ оÑкÑÑвала ÑедакÑоÑ, ÑÑоило нажаÑÑ Â«ÐовÑоÑиÑÑ» или обновиÑÑ ÑÑÑаниÑÑ. ÐаÑеÑиал вÑÑ ÑÑо вÑÐµÐ¼Ñ Ð±Ñл на меÑÑе: коÑоÑÐºÐ°Ñ ÑÑÑлка из ÑÐ²ÐµÐ´Ð¾Ð¼Ð»ÐµÐ½Ð¸Ñ Ð¿Ð¾ доÑоге пÑевÑаÑаеÑÑÑ Ð² полнÑй адÑÐµÑ Ñ ÑÑбÑикой, и ÑÑа Ñмена адÑеÑа обÑÑвала запÑоÑ, коÑоÑÑй Ñама же и запÑÑÑила. ÐÑоÑой заÑ
од ÑÑл Ñже по гоÑÐ¾Ð²Ð¾Ð¼Ñ Ð°Ð´ÑеÑÑ Ð¸ поÑÑÐ¾Ð¼Ñ ÑабоÑал.</p> <ul> <li data-num="1707"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>ÐаÑеÑиал из ÑÐ²ÐµÐ´Ð¾Ð¼Ð»ÐµÐ½Ð¸Ñ Ð¾ÑкÑÑваеÑÑÑ ÑÑазÑ, без «ÐовÑоÑиÑÑ»</strong> â Ñмена адÑеÑа в ÑÑÑоке бÑаÑзеÑа болÑÑе не обÑÑÐ²Ð°ÐµÑ Ð·Ð°Ð³ÑÑÐ·ÐºÑ ÑÑÑаниÑÑ, коÑоÑÐ°Ñ Ð½Ð¸ÐºÑда не ÑÑ
одиÑ. ÐÑо каÑаеÑÑÑ Ð¸ вÑбоÑа ÑÑбÑики в оÑкÑÑÑом ÑедакÑоÑе, и пеÑвого ÑоÑ
ÑÐ°Ð½ÐµÐ½Ð¸Ñ Ð½Ð¾Ð²Ð¾Ð³Ð¾ ÑеÑновика: иÑ
запÑоÑÑ Ñоже обÑÑвалиÑÑ Ð½Ð° Ñовном меÑÑе.</li> <li data-num="1708"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>ÐбоÑÐ²Ð°Ð½Ð½Ð°Ñ Ð·Ð°Ð³ÑÑзка маÑеÑиала повÑоÑÑеÑÑÑ Ñама</strong> â еÑли запÑÐ¾Ñ Ð²ÑÑ Ð¶Ðµ пÑеÑвÑÑÑÑ, ÑедакÑÐ¾Ñ Ð¼Ð¾Ð»Ñа попÑобÑÐµÑ ÐµÑÑ Ñаз, и ÑолÑко неÑдаÑа вÑоÑой попÑÑки Ð¿Ð¾ÐºÐ°Ð¶ÐµÑ ÑкÑан Ñ Ð¾Ð±ÑÑÑнением.</li> <li data-num="1709"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>ÐаÑеÑиал, оÑкÑÑÑÑй по коÑоÑкой ÑÑÑлке, показÑÐ²Ð°ÐµÑ Ñвой ÑекÑÑ</strong> â ÑанÑÑе ÑедакÑÐ¾Ñ Ð½Ð° Ñаком адÑеÑе ÑÑиÑал маÑеÑиал новÑм, не подклÑÑалÑÑ Ðº обÑÐµÐ¼Ñ Ð´Ð¾ÐºÑменÑÑ Ð¸ оÑкÑÑвалÑÑ Ð¿ÑÑÑÑм. ÐÑÑÑÑм он и ÑоÑ
ÑанÑлÑÑ: авÑоÑоÑ
Ñанение не оÑлиÑало «Ñеловек ÑÑÑÑ ÑекÑÑ» Ð¾Ñ Â«ÑекÑÑ Ð½Ðµ ÑÑпел загÑÑзиÑÑÑÑ».</li> <li data-num="1710"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>ÐвÑоÑоÑ
Ñанение болÑÑе не Ð¼Ð¾Ð¶ÐµÑ Ð¾Ð±Ð½ÑлиÑÑ Ð¼Ð°ÑеÑиал</strong> â пÑÑÑое Ñело оно оÑпÑавлÑеÑ, ÑолÑко еÑли до ÑÑого видело в ÑедакÑоÑе непÑÑÑое. СÑеÑеÑÑ ÑекÑÑ Ð¿Ð¾-пÑÐµÐ¶Ð½ÐµÐ¼Ñ Ð¼Ð¾Ð¶Ð½Ð¾, а Ð²Ð¾Ñ Ð½ÐµÐ·Ð°Ð³ÑÑзивÑийÑÑ Ð´Ð¾ÐºÑÐ¼ÐµÐ½Ñ ÑепеÑÑ Ð½Ðµ пÑевÑаÑаеÑÑÑ Ð² пÑÑÑой.</li> <li data-num="1711"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>ТекÑÑ Ð²ÑÑаÑÑ Ð½Ð° меÑÑо ÑанÑÑе, Ñем ÑедакÑÐ¾Ñ Ð¿Ð¾ÐºÐ°Ð·ÑÐ²Ð°ÐµÑ Ð¿ÑÑÑое поле</strong> â пÑи пеÑвом оÑкÑÑÑии маÑеÑиала ÑкÑан загÑÑзки ÑÑ
одил на Ð´Ð¾Ð»Ñ ÑекÑÐ½Ð´Ñ ÑанÑÑе Ñамого ÑекÑÑа, и в ÑÑÐ¾Ñ Ð¼Ð¾Ð¼ÐµÐ½Ñ Ð¿Ð¾Ð»Ðµ вÑглÑдело пÑÑÑÑм, Ñ Ð¿ÑиглаÑением наÑаÑÑ Ð¸ÑÑоÑиÑ. ТепеÑÑ Ð·Ð°Ð³ÑÑзка деÑжиÑÑÑ Ð´Ð¾ конÑа.</li> <li data-num="1712"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>ÐаÑеÑиал, ÑÑÑÑÑÑй Ñеликом, ÑоÑ
ÑанÑеÑÑÑ ÐºÐ°Ðº обÑÑно</strong> â заÑиÑа Ð¾Ñ Ð¾Ð±Ð½ÑÐ»ÐµÐ½Ð¸Ñ ÑÐ¼ÐµÐµÑ Ð¾ÑлиÑаÑÑ Ð¿ÑÑÑоÑÑ, коÑоÑÑÑ Ð¾ÑÑавил Ñеловек, Ð¾Ñ Ð¿ÑÑÑоÑÑ Ð½ÐµÐ´Ð¾Ð³ÑÑзивÑегоÑÑ Ð´Ð¾ÐºÑменÑа: как ÑолÑко ÑедакÑÐ¾Ñ Ð¿Ð¾ÐºÐ°Ð·Ð°Ð» ÑекÑÑ, лÑÐ±Ð°Ñ Ð¿Ð¾ÑледÑÑÑÐ°Ñ Ð¿Ñавка, вклÑÑÐ°Ñ Ð¿Ð¾Ð»Ð½ÑÑ Ð¾ÑиÑÑкÑ, ÑоÑ
ÑанÑеÑÑÑ ÑÑаÑно.</li> <li data-num="1713"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>ÐÑÑÑой маÑеÑиал оÑкÑÑваеÑÑÑ ÑÑазÑ</strong> â на ÑеÑновике, в коÑоÑом еÑÑ Ð½Ð¸Ñего неÑ, ÑкÑан загÑÑзки деÑжалÑÑ Ð»Ð¸Ñние паÑÑ ÑекÑнд в ожидании ÑекÑÑа, коÑоÑого не ÑÑÑеÑÑвÑеÑ.</li> <li data-num="1714"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>ÐÑежний ÑекÑÑ Ð¾ÑÑаÑÑÑÑ Ð² иÑÑоÑии веÑÑий, даже еÑли ÑÑо-Ñо поÑло Ð
1½Ðµ Ñак</strong> â еÑли маÑеÑиал вдÑÑг обнÑлиÑÑÑ Ð¸Ð»Ð¸ ÑожмÑÑÑÑ Ð´Ð¾ паÑÑ Ñлов, ÑедакÑÐ¸Ñ Ð½Ð°Ð¹Ð´ÑÑ Ð¿ÑедÑдÑÑÑÑ Ð²ÐµÑÑÐ¸Ñ Ð² иÑÑоÑии под понÑÑнÑм именем и веÑнÑÑ ÐµÑ Ð² один клик.</li> </ul> </div> </details> <details class="changelog-section"> <summary class="changelog-summary"><span class="changelog-meta"><span class="changelog-meta__version">v9.168</span><span class="changelog-meta__date">03-09-2026</span></span><h2 id="v9168-03-09-2026--пÑедложение-войÑи-болÑÑе-не-иÑÑезаеÑ-Ñамо">ÐÑедложение войÑи болÑÑе не иÑÑÐµÐ·Ð°ÐµÑ Ñамо</h2></summary> <div class="changelog-section__body"> <p>ÐÑедÑдÑÑее обновление наÑÑило ÑедакÑÐ¾Ñ Ð³Ð¾Ð²Ð¾ÑиÑÑ Â«Ð²Ð¾Ð¹Ð´Ð¸Ñе» пÑÑмо на адÑеÑе маÑеÑиала. ÐÑовеÑка на живом ÑайÑе показала, ÑÑо Ñказанное деÑжиÑÑÑ Ð½Ðµ вÑегда: ÑÑÑаниÑа ÑÑпевала показаÑÑ Ð¿Ñедложение войÑи и ÑеÑез паÑÑ ÑекÑнд Ñама ÑÑ
одила на главнÑÑ. Человек, пÑиÑедÑий по ÑÑÑлке из пиÑÑма, оÑÑавалÑÑ Ð±ÐµÐ· адÑеÑа, к коÑоÑÐ¾Ð¼Ñ ÑÑл.</p> <ul> <li data-num="1705"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>СÑÑаниÑа недоÑÑÑпного маÑеÑиала оÑÑаÑÑÑÑ Ð½Ð° ÑвоÑм адÑеÑе, даже когда ÑеÑÑÐ¸Ñ Ð¸ÑÑÐµÐºÐ°ÐµÑ Ð¿ÑÑмо на ней</strong> â ÑанÑÑе ÐµÑ ÑменÑла главнаÑ, и ÑÑÑÐ»ÐºÑ Ð¸Ð· пиÑÑма пÑиÑ
одилоÑÑ Ð¸ÑкаÑÑ Ð·Ð°Ð½Ð¾Ð²Ð¾. ÐоÑле вÑ
ода оÑкÑÑваеÑÑÑ Ñо, Ñади Ñего Ð²Ñ Ð¿ÑиÑли.</li> <li data-num="1706"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>Уведомление о комменÑаÑии ни пÑи какиÑ
даннÑÑ
не оÑкÑÑваеÑÑÑ Ð² ÑедакÑоÑе вмеÑÑо ÑÑÑаниÑÑ Ð¼Ð°ÑеÑиала</strong> â Ñип ÑÐ²ÐµÐ´Ð¾Ð¼Ð»ÐµÐ½Ð¸Ñ ÑвеÑÑлÑÑ Ñак, ÑÑо оÑделÑнÑе ÑлÑжебнÑе знаÑÐµÐ½Ð¸Ñ Ð¿ÑинималиÑÑ Ð·Ð° пÑиглаÑение.</li> </ul> </div> </details> <details class="changelog-section"> <summary class="changelog-summary"><span class="changelog-meta"><span class="changelog-meta__version">v9.167</span><span class="changelog-meta__date">03-09-2026</span></span><h2 id="v9167-03-09-2026--название-в-Ñведомлении-оÑкÑÑваеÑ-Ñовно-Ñо-же-ÑÑо-и-вÑÑ-ÑÑÑока">Ðазвание в Ñведомлении оÑкÑÑÐ²Ð°ÐµÑ Ñовно Ñо же, ÑÑо и вÑÑ ÑÑÑока</h2></summary> <div class="changelog-section__body"> <p>ÐÑоÑлое обновление обеÑало, ÑÑо клик по Ð½Ð°Ð·Ð²Ð°Ð½Ð¸Ñ Ð¼Ð°ÑеÑиала и клик по ÑÑÑоке ÑÐ²ÐµÐ´Ð¾Ð¼Ð»ÐµÐ½Ð¸Ñ Ð²ÐµÐ´ÑÑ Ð² одно меÑÑо. Ðа живой ленÑе оказалоÑÑ Ð¸Ð½Ð°Ñе: ÑÑÑока оÑкÑÑвала маÑеÑиал в нÑжной ÑÑбÑике, Ñ ÑкоÑем на ÑÑ ÑамÑÑ ÑемаÑÐºÑ Ð¸ Ñ ÑаÑкÑÑÑой панелÑÑ Ð¿Ñавок, а название â ÑÐ¾Ñ Ð¶Ðµ маÑеÑиал, но без ÑÑбÑики, без ÑкоÑÑ Ð¸ без панели. РазниÑа незамеÑна на глаз и обнаÑÑживаеÑÑÑ, ÑолÑко когда ÑÑавниваеÑÑ Ð°Ð´ÑеÑа.</p> <ul> <li data-num="1704"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>Ðазвание ведÑÑ Ð¿Ð¾ ÑÐ¾Ð¼Ñ Ð¶Ðµ адÑеÑÑ, ÑÑо и ÑÑÑока Ñеликом</strong> â Ñ ÑÑбÑикой маÑеÑиала, ÑкоÑем на нÑжнÑÑ ÑемаÑÐºÑ Ð¸ оÑкÑÑÑой панелÑÑ Ð¿Ñавок, еÑли Ñведомление именно о ниÑ
. РанÑÑе ÑÑÐ¾Ñ Ð°Ð´ÑÐµÑ ÑÑÑоилÑÑ Ð·Ð°Ð½Ð¾Ð²Ð¾ и ÑеÑÑл вÑÑ Ð¿ÐµÑеÑиÑленное.</li> </ul> </div> </details> <details class="changelog-section"> <summary class="changelog-summary"><span class="changelog-meta"><span class="changelog-meta__version">v9.166</span><span class="changelog-meta__date">03-09-2026</span></span><h2 id="v9166-03-09-2026--название-маÑеÑиала-в-ÑведомлениÑÑ
-ведÑÑ-кÑда-надо">Ðазвание маÑеÑиала в ÑведомлениÑÑ
ведÑÑ ÐºÑда надо</h2></summary> <div class="changelog-section__body"> <p>Ð Ñведомлении о пÑиглаÑении к ÑоавÑоÑÑÑÐ²Ñ Ð²ÑÑ ÑÑÑока каÑÑоÑки вела в ÑедакÑоÑ, а клик именно по наÐ
1·Ð²Ð°Ð½Ð¸Ñ маÑеÑиала в ÑекÑÑе ÑÑÐ°Ð·Ñ â на пÑблиÑнÑÑ ÑÑÑаниÑÑ ÑеÑновика или, пока каÑегоÑÐ¸Ñ Ð¼Ð°ÑеÑиала еÑÑ Ð½Ðµ подгÑÑзилаÑÑ, вовÑе на главнÑÑ. Ðве ÑÑÑлки в одной каÑÑоÑке ÑÑиÑалиÑÑ Ð½ÐµÐ·Ð°Ð²Ð¸Ñимо и ÑаÑÑ
одилиÑÑ Ð¼ÐµÑÑами назнаÑениÑ.</p> <ul> <li data-num="1701"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>Ðазвание маÑеÑиала в Ñведомлении о пÑиглаÑении болÑÑе не ведÑÑ Ð½Ð° главнÑÑ</strong> â ÑÑÑлка ÑÑÑоилаÑÑ Ð² обÑ
од адÑеÑа, коÑоÑÑй пÑиÑлал ÑеÑвеÑ, и пÑи не ÑÑпевÑей подгÑÑзиÑÑÑÑ ÑÑбÑике маÑеÑиала пÑевÑаÑалаÑÑ Ð² пÑÑÑÑÑ, а ÑÐ°ÐºÐ°Ñ Ð±ÐµÐ·Ð¾Ð±Ð¸Ð´Ð½Ð¾ вÑглÑдÑÑÐ°Ñ ÑÑÑлка ÑÐ²Ð¾Ð´Ð¸Ñ Ð±ÑаÑÐ·ÐµÑ Ð½Ð° коÑÐµÐ½Ñ ÑайÑа.</li> <li data-num="1702"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>Ðлик по Ð½Ð°Ð·Ð²Ð°Ð½Ð¸Ñ Ð¸ клик по оÑÑалÑной ÑаÑÑи ÑÑÑоки ÑÐ²ÐµÐ´Ð¾Ð¼Ð»ÐµÐ½Ð¸Ñ ÑепеÑÑ Ð²ÐµÐ´ÑÑ Ð² одно и Ñо же меÑÑо</strong> â Ð´Ð»Ñ Ð¿ÑиглаÑений и пÑедложеннÑÑ
пÑавок ÑÑо ÑедакÑоÑ, Ð´Ð»Ñ ÐºÐ¾Ð¼Ð¼ÐµÐ½ÑаÑиев и ÑемаÑок â ÑÑÑаниÑа маÑеÑиала.</li> <li data-num="1703"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>ÐÑли адÑеÑа Ð½ÐµÑ Ð²Ð¾Ð²Ñе, название оÑÑаÑÑÑÑ Ð¿ÑоÑÑо ÑекÑÑом</strong> â вид ÑÑÑлки болÑÑе не обеÑÐ°ÐµÑ Ð¿ÐµÑеÑ
ода, коÑоÑого не бÑдеÑ, и ни один пÑопÑÑк в даннÑÑ
не ÑÐ²Ð¾Ð´Ð¸Ñ Ñ Ñведомлений на главнÑÑ.</li> </ul> </div> </details> <details class="changelog-section"> <summary class="changelog-summary"><span class="changelog-meta"><span class="changelog-meta__version">v9.165</span><span class="changelog-meta__date">03-09-2026</span></span><h2 id="v9165-03-09-2026--ÑедакÑоÑ-пеÑеÑÑал-пÑÑаÑÑ-иÑÑÑкÑÑÑ-ÑеÑÑиÑ-Ñ-закÑÑÑÑм-доÑÑÑпом">РедакÑÐ¾Ñ Ð¿ÐµÑеÑÑал пÑÑаÑÑ Ð¸ÑÑÑкÑÑÑ ÑеÑÑÐ¸Ñ Ñ Ð·Ð°ÐºÑÑÑÑм доÑÑÑпом</h2></summary> <div class="changelog-section__body"> <p>СÑÑлка из пиÑÑма-пÑиглаÑÐµÐ½Ð¸Ñ Ð¿Ñиводила к Ð·Ð°Ð¼ÐºÑ Ð¸ Ñловам «Ðозможно, ÑÑÑаниÑÑ Ð½Ðµ ÑÑÑеÑÑвÑÐµÑ Ð¸Ð»Ð¸ к ней Ð½ÐµÑ Ð´Ð¾ÑÑÑпа». ÐÑиÑина ÑаÑе бÑла ÑовÑем дÑÑгой: пока пиÑÑмо ждало Ñвоего ÑаÑа, ÑеÑÑÐ¸Ñ ÑÑпевала иÑÑеÑÑ, и жÑÑнал пеÑеÑÑавал ÑзнаваÑÑ Ð²Ð¾ÑедÑего. СказаÑÑ Ð¾Ð± ÑÑом пÑÑмо он не Ñмел â закÑÑÑÑй ÑеÑновик и незнакомого гоÑÑÑ ÑеÑÐ²ÐµÑ Ð½Ð°Ð¼ÐµÑенно вÑÑÑеÑÐ°ÐµÑ Ð¾Ð´Ð¸Ð½Ð°ÐºÐ¾Ð²Ð¾, ÑÑÐ¾Ð±Ñ Ð½Ðµ вÑдаваÑÑ ÑÑжие ÑекÑÑÑ.</p> <ul> <li data-num="1695"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>ÐÑÑÑкÑÐ°Ñ ÑеÑÑÐ¸Ñ Ð±Ð¾Ð»ÑÑе не вÑглÑÐ´Ð¸Ñ ÐºÐ°Ðº оÑказ в доÑÑÑпе</strong> â ÑедакÑÐ¾Ñ Ð¿ÐµÑеÑпÑаÑÐ¸Ð²Ð°ÐµÑ Ð¶ÑÑнал, ÑзнаÑÑ Ð»Ð¸ он ваÑ, и пÑÐµÐ´Ð»Ð°Ð³Ð°ÐµÑ Ð²Ð¾Ð¹Ñи заново вмеÑÑо ÑÑпика Ñ Ð·Ð°Ð¼ÐºÐ¾Ð¼.</li> <li data-num="1696"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>ÐÑедложение войÑи поÑвлÑеÑÑÑ Ð½Ð° адÑеÑе маÑеÑиала, а не поÑле вÑбÑоÑа на главнÑÑ</strong> â Ñам вопÑÐ¾Ñ Â«ÑзнаÑÑ Ð»Ð¸ Ð¼ÐµÐ½Ñ Ð¶ÑÑнал» ÑÑиÑалÑÑ ÐµÑÑ Ð¾Ð´Ð½Ð¾Ð¹ неÑдаÑей вÑ
ода и добивал ÑÑÑÑÑик до авÑомаÑиÑеÑкого вÑÑ
ода из аккаÑнÑа. ТепеÑÑ Ð¿Ð¾Ñле вÑ
ода Ð²Ñ Ð¾ÐºÐ°Ð·ÑваеÑеÑÑ Ñам, кÑда Ñли по ÑÑÑлке из пиÑÑма.</li> <li data-num="1697"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>ÐоÑоÑÐºÐ°Ñ ÑÑÑлка на ÑеÑновик ÑазбиÑаеÑÑÑ Ñак же, как полнÑй адÑеÑ</strong> â ÑанÑÑе она одна оÑÑавалаÑÑ Ð¿Ñи пÑежнем «ÑеÑновик не найден», Ñ
оÑÑ Ð¿ÑиÑина бÑла Ñа же.</li> <li data-num="1698"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>Ðа ÑÑом ÑкÑане веÑнÑлаÑÑ Ð¾Ð±ÑÑÐ½Ð°Ñ Ñапка Ñ Ð¼ÐµÐ½Ñ</strong> â ÑанÑÑе Ð¾Ñ Ð½ÐµÑ Ð¾ÑÑавалиÑÑ Ð»Ð¾Ð³Ð¾Ñип и аваÑаÑ: навигаÑÐ¸Ñ Ð¿ÑÑÑалаÑÑ, как пÑи оÑкÑÑÑом ÑедакÑоÑе, и ÑйÑи Ñо ÑÑÑаниÑÑ Ð±Ñло Ð
1½ÐµÐºÑда.</li> <li data-num="1699"><span class="changelog-tag changelog-tag--UX" data-tag-alias="UX">UX</span> <strong>ÐÑеменнÑй Ñбой ÑвÑзи болÑÑе не вÑдаÑÑÑÑ Ð·Ð° иÑÑезнÑвÑий маÑеÑиал</strong> â пÑи обÑÑве или пеÑегÑÑзке ÑедакÑÐ¾Ñ Ñак и говоÑÐ¸Ñ Ð¸ показÑÐ²Ð°ÐµÑ ÐºÐ½Ð¾Ð¿ÐºÑ Â«ÐовÑоÑиÑÑ», а не оÑпÑавлÑÐµÑ Ð¸ÑкаÑÑ Ð¿ÑопажÑ.</li> <li data-num="1700"><span class="changelog-tag changelog-tag--UX" data-tag-alias="UX">UX</span> <strong>Ðнопка «ÐапÑоÑиÑÑ Ð´Ð¾ÑÑÑп» показÑваеÑÑÑ ÑолÑко когда дело дейÑÑвиÑелÑно в доÑÑÑпе</strong> â пÑи Ñбое ÑвÑзи она Ñбивала Ñ ÑолкÑ: Ñеловек пиÑал авÑоÑÑ, Ñ
оÑÑ Ð¼Ð°ÑеÑиал его и Ñак ждал.</li> </ul> </div> </details> <details class="changelog-section"> <summary class="changelog-summary"><span class="changelog-meta"><span class="changelog-meta__version">v9.164</span><span class="changelog-meta__date">27-08-2026</span></span><h2 id="v9164-27-08-2026--комменÑаÑии-и-ленÑа-маÑеÑиалов-болÑÑе-не-иÑÑезаÑÑ">ÐомменÑаÑии и ленÑа маÑеÑиалов болÑÑе не иÑÑезаÑÑ</h2></summary> <div class="changelog-section__body"> <p>ЧÑÐ¾Ð±Ñ ÑÑÑаниÑа оÑкÑÑвалаÑÑ Ð±ÑÑÑÑо, ÑиÑаÑÐµÐ»Ñ ÑнаÑала Ð²Ð¸Ð´Ð¸Ñ Ð³Ð¾ÑовÑÑ Ð·Ð°Ð³Ð¾ÑовкÑ, а ÑеÑез мгновение ÐµÑ ÑменÑÐµÑ Ð¶Ð¸Ð²Ð°Ñ ÑÑÑаниÑа. Ðногда ÑÑа пеÑедаÑа заÑÑÑевала â и Ñеловек оÑÑавалÑÑ Ñ Ð¿Ð¾Ð»ÑÑÑÑаниÑей, не понимаÑ, ÑÑо пÑоиÑÑ
одиÑ.</p> <ul> <li data-num="1691"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>ÐомменÑаÑии, ÑемаÑки и блок поддеÑжки под ÑÑаÑÑÑй иногда не поÑвлÑлиÑÑ Ð²Ð¾Ð²Ñе</strong> â еÑли вкладка бÑла ÑвÑÑнÑÑа или пеÑекÑÑÑа дÑÑгим окном, пеÑедаÑа заÑÑÑевала навÑегда. ÐÑкÑÑли ÑÑаÑÑÑ Ð² Ñоне, веÑнÑлиÑÑ â и Ð¿Ð¾Ð»Ð¾Ð²Ð¸Ð½Ñ ÑÑÑаниÑÑ Ð½ÐµÑ.</li> <li data-num="1692"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>ÐенÑа маÑеÑиалов на ÑÑÑаниÑе ÑÐµÐ¼Ñ Ð½Ðµ пÑÐ¾Ð¿Ð°Ð´Ð°ÐµÑ Ð¿Ð¾Ñле ÑÐ±Ð¾Ñ ÑвÑзи</strong> â ÑоÑвавÑаÑÑÑ Ð¸ пеÑеигÑÐ°Ð½Ð½Ð°Ñ Ð·Ð°Ð³ÑÑзка могла оÑÑавиÑÑ Ð¿ÑÑÑоÑÑ Ñам, где ÑпиÑок Ñже бÑл виден.</li> <li data-num="1693"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>ТеÑ
ниÑеÑÐºÐ°Ñ ÐºÐ°ÑÑоÑка «Ðедленное Ñоединение» болÑÑе не подменÑÐµÑ Ñобой гоÑовÑÑ ÑÑÑаниÑÑ</strong> â пÑи заминке ÑеÑи она вÑлезала повеÑÑ
Ñже оÑÑиÑованного маÑеÑиала, и ÐµÑ Ð¶Ðµ видел поиÑковик вмеÑÑо ÑÑаÑÑи.</li> <li data-num="1694"><span class="changelog-tag changelog-tag--UX" data-tag-alias="UX">UX</span> <strong>ÐовÑÐ¾Ñ Ð¿Ð¾Ñле обÑÑва болÑÑе не пеÑезагÑÑÐ¶Ð°ÐµÑ ÑÑÑаниÑÑ Ñеликом</strong> â жÑÑнал пеÑеигÑÑÐ²Ð°ÐµÑ ÑолÑко неÑдавÑийÑÑ Ñаг, не вÑбÑаÑÑÐ²Ð°Ñ Ñо, ÑÑо Ð²Ñ Ñже ÑиÑаеÑе, и не ÑеÑÑÑ Ð¼ÐµÑÑо пÑокÑÑÑки.</li> </ul> </div> </details> <details class="changelog-section"> <summary class="changelog-summary"><span class="changelog-meta"><span class="changelog-meta__version">v9.163</span><span class="changelog-meta__date">26-08-2026</span></span><h2 id="v9163-26-08-2026--ÑÑÑаниÑа-авÑоÑа-и-видео-показÑваем-Ñовно-Ñо-ÑÑо-еÑÑÑ">СÑÑаниÑа авÑоÑа и видео: показÑваем Ñовно Ñо, ÑÑо еÑÑÑ</h2></summary> <div class="changelog-section__body"> <p>ÐÑоÑили авÑоÑов и видеомаÑеÑÐ¸Ð°Ð»Ñ Ð¿Ð¾Ð»ÑÑили оÑÑÑимÑÑ Ð¿ÑÐ°Ð²ÐºÑ â и в Ñом, ÑÑо Ð²Ð¸Ð´Ð¸Ñ Ñеловек, и в Ñом, ÑÑо Ð²Ð¸Ð´Ð¸Ñ Ð¿Ð¾Ð¸Ñк.</p> <ul> <li data-num="1687"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>РленÑе авÑоÑа болÑÑе не мелÑкаÑÑ Ð¼Ð°ÑеÑиалÑ, еÑÑ Ð½Ðµ вÑÑедÑие в жÑÑнале</strong> â гоÑÑÑ Ð½Ð° ÑекÑÐ½Ð´Ñ Ð²Ð¸Ð´ÐµÐ» оÑпÑавленное в ÑедакÑиÑ, а заÑем оно иÑÑезало. ТепеÑÑ Ð³Ð¾ÑÑÑ Ð¿Ð¾ÐºÐ°Ð·ÑваеÑÑÑ Ñовно Ñо, ÑÑо опÑбликовано.</li> <li data-num="1688"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> <strong>ÐÐ»ÐµÐµÑ Ð½Ð° ÑÑÑаниÑе мÑзÑки ÑабоÑÐ°ÐµÑ Ð´Ð¾ пеÑвого нажаÑиÑ</strong> â доÑожка пÑоигÑÑÐ²Ð°Ð½Ð¸Ñ Ð²Ð¸Ð´Ð½Ð° ÑÑазÑ, а клик по Ð
1½ÐµÐ¹ вклÑÑÐ°ÐµÑ ÑÑек Ñ Ð²ÑбÑанного меÑÑа. РанÑÑе до ÑÑаÑÑа ÐµÑ Ð¿ÑоÑÑо не бÑло, а блок подпÑÑгивал пÑи пеÑвом нажаÑии.</li> <li data-num="1689"><span class="changelog-tag changelog-tag--SEO" data-tag-alias="SEO">SEO</span> <strong>Ðидео ÐиÑкÑÑÑа ÑÑало наÑ
одиÑÑÑÑ Ð² поиÑке как видео</strong> â пÑежде поиÑковик не видел на ÑÑÑаниÑе плееÑа и оÑноÑил Ñолики к обÑÑнÑм ÑекÑÑам. ТепеÑÑ Ð¿Ð»ÐµÐµÑ, пÑевÑÑ Ð¸ опиÑание ÑÑ
одÑÑ Ð² поиÑк вмеÑÑе Ñо ÑÑÑаниÑей.</li> <li data-num="1690"><span class="changelog-tag changelog-tag--SEO" data-tag-alias="SEO">SEO</span> <strong>У каждого пÑоÑÐ¸Ð»Ñ ÑÐ²Ð¾Ñ Ð¾Ð¿Ð¸Ñание в вÑдаÑе</strong> â ÑанÑÑе ÑоÑнÑм авÑоÑов доÑÑавалаÑÑ Ð¾Ð´Ð½Ð° ÑÐ°Ð±Ð»Ð¾Ð½Ð½Ð°Ñ ÑÑÑока, и поиÑк ÑобиÑал ÑÐ½Ð¸Ð¿Ð¿ÐµÑ ÐºÐ°Ðº пÑидÑÑÑÑ.</li> </ul> </div> </details> <details class="changelog-section"> <summary class="changelog-summary"><span class="changelog-meta"><span class="changelog-meta__version">v9.162</span><span class="changelog-meta__date">25-08-2026</span></span><h2 id="v9162-25-08-2026--обÑÑждениÑ-пÑавок-в-ÑедакÑоÑе-не-запиÑаÑÑÑÑ-намеÑÑво">ÐбÑÑÐ¶Ð´ÐµÐ½Ð¸Ñ Ð¿Ñавок в ÑедакÑоÑе не запиÑаÑÑÑÑ Ð½Ð°Ð¼ÐµÑÑво</h2></summary> <div class="changelog-section__body"> <p>РабоÑа над ÑÑжим ÑекÑÑом идÑÑ ÑаÑами, и за ÑÑо вÑÐµÐ¼Ñ Ð¼Ð½Ð¾Ð³Ð¾Ðµ ÑÑÐ¿ÐµÐ²Ð°ÐµÑ ÑлÑÑиÑÑÑÑ: иÑÑÐµÐºÐ°ÐµÑ ÑеÑÑиÑ, кÑо-Ñо ÑдалÑÐµÑ Ð¾Ð±ÑÑждаемÑй комменÑаÑий. РанÑÑе поÑле Ñакого обÑÑждение пеÑеÑÑавало оÑвеÑаÑÑ, и вÑлеÑиÑÑ ÑÑо можно бÑло ÑолÑко пеÑезагÑÑзкой ÑÑÑаниÑÑ â вмеÑÑе Ñ Ð½ÐµÑоÑ
ÑанÑннÑм.</p> <ul> <li data-num="1683"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>ÐÑÑÑкÑÐ°Ñ ÑеÑÑÐ¸Ñ Ð±Ð¾Ð»ÑÑе не блокиÑÑÐµÑ Ð¾Ð±ÑÑждение</strong> â ÑедакÑÐ¾Ñ ÑазлиÑÐ°ÐµÑ Â«ÑеÑÐ²ÐµÑ Ð¾Ñказал» и «ÑвÑÐ·Ñ Ð¿Ñопала неизвеÑÑно на ÑÑм», и зÑÑ Ð½Ðµ запиÑÐ°ÐµÑ Ð¿ÐµÑепиÑкÑ.</li> <li data-num="1684"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>УдалÑннÑй кем-Ñо комменÑаÑий не запиÑÐ°ÐµÑ ÑоÑедние обÑÑждениÑ</strong> â пÑежде иÑÑезнÑвÑÐ°Ñ Ñеплика могла заблокиÑоваÑÑ ÑелÑÑ Ð²ÐµÑÐºÑ Ð¿Ñавки, вклÑÑÐ°Ñ ÐºÐ½Ð¾Ð¿ÐºÐ¸ «пÑинÑÑÑ» и «оÑклониÑÑ».</li> <li data-num="1685"><span class="changelog-tag changelog-tag--A11Y" data-tag-alias="A11Y">A11Y</span> <strong>СиÑÑемнÑе плаÑки в панели пÑавок ÑиÑаÑÑÑÑ Ð² ноÑной Ñеме</strong> â ÑообÑение, обÑÑÑнÑÑÑее, поÑÐµÐ¼Ñ ÐºÐ½Ð¾Ð¿ÐºÐ¸ не ÑабоÑаÑÑ, вÑводилоÑÑ ÑÑÑнÑм по ÑÑмномÑ, Ñо еÑÑÑ Ð±Ñло невидимÑм именно Ñогда, когда нÑжнее вÑего.</li> <li data-num="1686"><span class="changelog-tag changelog-tag--DESIGN" data-tag-alias="DESIGN">DESIGN</span> <strong>ÐлаÑки-пÑедÑпÑÐµÐ¶Ð´ÐµÐ½Ð¸Ñ Ð¿ÐµÑеÑÑали занимаÑÑ Ð¿Ð¾Ð»ÐºÐ°ÑÑоÑки</strong> â они набиÑалиÑÑ ÑазмеÑом оÑновного ÑекÑÑа и вÑÑеÑнÑли ÑÐ°Ð¼Ñ ÑепликÑ; ÑепеÑÑ ÑÑо компакÑное ÑиÑÑемное ÑообÑение Ñ Ð¸ÐºÐ¾Ð½ÐºÐ¾Ð¹.</li> </ul> </div> </details> <details class="changelog-section"> <summary class="changelog-summary"><span class="changelog-meta"><span class="changelog-meta__version">v9.161</span><span class="changelog-meta__date">22-08-2026</span></span><h2 id="v9161-22-08-2026--мÑзÑка-ÑаÑовÑе-запиÑи-ÑоÑмаÑÑ-дикÑоÑона-и-понÑÑнÑе-оÑказÑ">ÐÑзÑка: ÑаÑовÑе запиÑи, ÑоÑмаÑÑ Ð´Ð¸ÐºÑоÑона и понÑÑнÑе оÑказÑ</h2></summary> <div class="changelog-section__body"> <p>ÐагÑÑзиÑÑ Ð² жÑÑнал ÑаÑовой конÑеÑÑ, лекÑÐ¸Ñ Ð¸Ð»Ð¸ инÑеÑвÑÑ ÑанÑÑе бÑло поÑÑи невозможно: пÑедел ÑÑоÑл один на вÑе запиÑи, а Ñайл Ñ Ð°Ð¹Ñона бÑаÑÐ·ÐµÑ Ð¾Ñбивал еÑÑ Ð´Ð¾ оÑпÑавки. РазобÑали вÑÑ ÑепоÑÐºÑ Ð·Ð°Ð³ÑÑзки.</p> <ul> <li data-num="1678"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> <strong>ÐÑедел ÑазмеÑа завиÑÐ¸Ñ Ð¾Ñ Ð´Ð»Ð¸ÑелÑноÑÑи запиÑи</strong> â коÑоÑÐºÐ¾Ð¼Ñ ÑÑÐµÐºÑ Ð¿Ñежние 50 ÐÐ, длинной запиÑи до 128 ÐÐ. ЧаÑÐ¾Ð²Ð°Ñ Ð»ÐµÐºÑÐ¸Ñ Ð¸Ð»Ð¸ конÑеÑÑ ÑепеÑÑ Ð¿ÑоÑ
одÑÑ.</li> <li data-num="1679"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> <strong>ÐÑинимаÑÑÑÑ m4a, ogg и flac â не ÑолÑко mp3 и wav</strong> â запиÑÑ Ñ Ð´Ð¸ÐºÑоÑона айÑона болÑÑе не оÑвеÑгаеÑÑÑ Ñо Ñловами «неподдеÑживаемÑй ÑоÑмаÑ», и подÑказка под кнопкой Ð½Ð°ÐºÐ¾Ð½ÐµÑ Ð¿ÐµÑеÑиÑлÑÐµÑ Ð²Ñе ÑоÑмаÑÑ.</li> <li data-num="1680"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>ÐолÑÑой Ñайл болÑÑе не обÑÑваеÑÑÑ Ð½Ð° ÑеÑедине загÑÑзки</strong> â внÑÑÑенний пÑедел Ð¾Ð¶Ð¸Ð´Ð°Ð½Ð¸Ñ Ð¾ÑмеÑÑлÑÑ Ñак, бÑдÑо пеÑедаÑа Ð·Ð°Ð½Ð¸Ð¼Ð°ÐµÑ ÑекÑндÑ, и ÑÑжÑÐ»Ð°Ñ Ð·Ð°Ð¿Ð¸ÑÑ Ð½Ðµ доезжала никогда, ÑколÑко ни пÑобÑй.</li> <li data-num="1681"><span class="changelog-tag changelog-tag--UX" data-tag-alias="UX">UX</span> <strong>
1ÐÑказ говоÑÐ¸Ñ Ð¿Ñо мÑзÑкÑ, а не пÑо каÑÑинкÑ</strong> â пÑи ÑлиÑком болÑÑом Ñайле ÑÐ¾Ð²ÐµÑ Ð·Ð²ÑÑал как «ÑменÑÑиÑе ÑÐ°Ð·Ð¼ÐµÑ Ð¸Ð·Ð¾Ð±ÑажениÑ». ТепеÑÑ Ð½Ð°Ð·ÑваеÑÑÑ Ð¸ пÑиÑина, и дейÑÑвÑÑÑий пÑедел, а Ñ Ð¿ÑÑÑого или повÑеждÑнного Ñайла ÑÐ²Ð¾Ñ ÑоÑмÑлиÑовка.</li> <li data-num="1682"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>ÐаÑеÑиал из одного ÑÑека не Ð·Ð°Ð´Ð²Ð°Ð¸Ð²Ð°ÐµÑ Ð½Ð°Ð·Ð²Ð°Ð½Ð¸Ðµ</strong> â плаÑка плееÑа и ÑпиÑок ÑÑеков пеÑаÑали одно и Ñо же; ÑпиÑок оÑÑалÑÑ ÑолÑко Ñ Ð°Ð»Ñбомов, а в алÑбоме игÑаÑÑÐ°Ñ ÑÑÑока ÑепеÑÑ Ð¿Ð¾Ð´ÑвеÑена.</li> </ul> </div> </details> <details class="changelog-section"> <summary class="changelog-summary"><span class="changelog-meta"><span class="changelog-meta__version">v9.160</span><span class="changelog-meta__date">20-08-2026</span></span><h2 id="v9160-20-08-2026--ÑÑÑлка-из-пиÑÑма-поддеÑжки-оÑкÑÑваеÑ-Ñам-ÑазговоÑ">СÑÑлка из пиÑÑма поддеÑжки оÑкÑÑÐ²Ð°ÐµÑ Ñам ÑазговоÑ</h2></summary> <div class="changelog-section__body"> <p>ÐапиÑали в поддеÑÐ¶ÐºÑ VPN, полÑÑили оÑÐ²ÐµÑ Ð½Ð° поÑÑÑ â и по ÑÑÑлке из пиÑÑма попадали на «ÑÑÑаниÑа не ÑÑÑеÑÑвÑеÑ». ТепеÑÑ ÑÑÑлка оÑкÑÑÐ²Ð°ÐµÑ Ð²Ð°ÑÑ Ð¿ÐµÑепиÑкÑ, пÑиÑÑм Ñ Ð»Ñбого ÑÑÑÑойÑÑва: пиÑÑмо можно пÑоÑиÑаÑÑ Ð½Ð° ÑелеÑоне, даже еÑли обÑаÑение Ð²Ñ Ð¾ÑÑавлÑли Ñ ÐºÐ¾Ð¼Ð¿ÑÑÑеÑа.</p> <ul> <li data-num="1676"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>СÑÑлка «ÐÑкÑÑÑÑ Ð´Ð¸Ð°Ð»Ð¾Ð³Â» болÑÑе не ведÑÑ Ð² никÑда</strong> â адÑÐµÑ Ð² пиÑÑмаÑ
вÑл на ÑÑÑаниÑÑ, коÑоÑой на ÑайÑе неÑ.</li> <li data-num="1677"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> <strong>Ð Ð°Ð·Ð³Ð¾Ð²Ð¾Ñ Ð½Ð°Ñ
одиÑÑÑ Ð¿Ð¾ ÑÑÑлке, а не ÑолÑко по памÑÑи бÑаÑзеÑа</strong> â ÑанÑÑе пеÑепиÑка бÑла видна лиÑÑ Ð² Ñом бÑаÑзеÑе, где ÐµÑ Ð½Ð°Ñали: на дÑÑгом ÑÑÑÑойÑÑве вкладка «Ðои обÑаÑениÑ» оказÑвалаÑÑ Ð¿ÑÑÑой.</li> </ul> </div> </details> <details class="changelog-section"> <summary class="changelog-summary"><span class="changelog-meta"><span class="changelog-meta__version">v9.159</span><span class="changelog-meta__date">19-08-2026</span></span><h2 id="v9159-19-08-2026--поÑÑал-доÑÑÑпа-ÑеÑновики-и-ÑкоÑоÑÑÑ-повÑоÑнÑÑ
-заÑ
одов">ÐоÑÑал доÑÑÑпа, ÑеÑновики и ÑкоÑоÑÑÑ Ð¿Ð¾Ð²ÑоÑнÑÑ
заÑ
одов</h2></summary> <div class="changelog-section__body"> <p>ÐеÑколÑко ÑазнÑÑ
иÑпÑавлений, обÑединÑннÑÑ
одним: каждое ÑÐ¸Ð½Ð¸Ñ Ð¼ÐµÑÑо, где Ñеловек ÑпиÑалÑÑ Ð² ÑÑÐµÐ½Ñ Ð¸ не понимал, ÑÑо Ñделал не Ñак.</p> <ul> <li data-num="1672"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>ÐовÑоÑÐ½Ð°Ñ Ð¿Ð¾Ð¿ÑÑка полÑÑиÑÑ ÐºÐ»ÑÑ Ð´Ð¾ÑÑÑпа болÑÑе не ÑоздаÑÑ Ð»Ð¸Ñний клÑÑ</strong> â пÑи обÑÑве ÑвÑзи запÑÐ¾Ñ Ð½Ð° ÑеÑвеÑе пÑодолжал ÑабоÑаÑÑ, и вÑоÑое нажаÑие забиÑало еÑÑ Ð¾Ð´Ð¸Ð½ ÑÐ»Ð¾Ñ Ð¸Ð· ваÑего лимиÑа. ТепеÑÑ Ð¿Ð¾Ð²ÑÐ¾Ñ Ð²Ð¾Ð·Ð²ÑаÑÐ°ÐµÑ Ñже ÑозданнÑй клÑÑ.</li> <li data-num="1673"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>СÑÑаниÑа «ЧеÑновики» пеÑеÑÑала падаÑÑ Ñ Ð°Ð²ÑоÑов, воÑедÑиÑ
ÑеÑез вÑплÑваÑÑее окно</strong> â оÑкÑÑвалаÑÑ Ð¿ÑÑÑÐ°Ñ ÑÑÑаниÑа Ñ Ð¾Ñибкой вмеÑÑо ÑпиÑка ÑабоÑ.</li> <li data-num="1674"><span class="changelog-tag changelog-tag--SEC" data-tag-alias="SEC">SEC</span> <strong>СлÑжебнÑй Ñаздел ÑедакÑии закÑÑÑ Ð¿Ð¾-наÑÑоÑÑемÑ</strong> â пÑежде его ÑодеÑжимое видел лÑбой заÑегиÑÑÑиÑованнÑй ÑиÑаÑелÑ, а не ÑÑаÑÑник ÑедакÑии.</li> <li data-num="1675"><span class="changelog-tag changelog-tag--PERF" data-tag-alias="PERF">PERF</span> <strong>ÐовÑоÑнÑе заÑ
Ð¾Ð´Ñ Ð½Ð° ÑÑаÑÑи и в Ñаздел «ÐÑкÑÑÑÑво» ÑÑали бÑÑÑÑее</strong> â гоÑÐ¾Ð²Ð°Ñ ÐºÐ¾Ð¿Ð¸Ñ ÑÑÑаниÑÑ Ð¶Ð¸Ð²ÑÑ Ð½Ð° ÑеÑвеÑаÑ
Ñ ÐºÑÐ°Ñ ÑеÑи вÑÑое долÑÑе, а ÑвежеÑÑÑ Ð¼Ð°ÑеÑиала пÑи ÑÑом не ÑÑÑадаеÑ: поÑле пÑавки в ÑедакÑии ÐºÐ¾Ð¿Ð¸Ñ ÑбÑаÑÑваеÑÑÑ ÑÑазÑ.</li> </ul> </div> </details> <details class="changelog-section"> <summary class="changelog-summary"><span class="changelog-meta"><span class="changelog-meta__version">v9.158.1</span><span class="changelog-meta__date">18-08-2026</span></span><h2 id="v91581-18-08-2026--ÑеÑновики-мÑзÑка-и-понÑÑнÑе-оÑказÑ-ÑедакÑоÑа">ЧеÑновики, мÑзÑка и понÑÑнÑе оÑÐºÐ°Ð·Ñ ÑедакÑоÑа</h2></summary> <div class="changelog-section__body"> <p>Ð Ð°Ð·Ð±Ð¾Ñ Ð²ÑеÑ
акÑÑалÑнÑÑ
issue пÑоекÑа <code>discours-frontend</code> (окно 30 дней, 25 issue). ÐаÑÑоÑÑиÑ
бага окаÐ
1·Ð°Ð»Ð¾ÑÑ ÑÑи, оÑÑалÑное â ÑÑм ÑÑжиÑ
ÑÑед, коÑоÑÑй вÑÑеÑнÑл иÑ
из инбокÑа.</p> <ul> <li data-num="1666"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>СÑÑаниÑа «Ðои маÑеÑиалÑ» падала Ñ ÑеÑ
, кÑо воÑÑл ÑеÑез модалкÑ.</strong> ÐÑли оÑкÑÑÑÑ <code>/drafts</code> неавÑоÑизованнÑм и войÑи пÑÑмо на ÑÑÑаниÑе, ÑпиÑок маÑеÑиалов не загÑÑжалÑÑ â пÑиложение падало. ÐомалаÑÑ Ð»ÑÐ±Ð°Ñ Ð²ÐºÐ»Ð°Ð´ÐºÐ°, не ÑолÑко «СовмеÑÑнÑе», и вмеÑÑе Ñо ÑпиÑком ÑеÑÑлиÑÑ ÑилÑÑÑÑ Ð¸Ð· адÑеÑа ÑÑÑаниÑÑ: поиÑк, ÑÑаÑÑÑ, ÑоÑÑиÑовка, Ð½Ð¾Ð¼ÐµÑ ÑÑÑаниÑÑ.</li> <li data-num="1667"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>ÐÑмена вÑбоÑа Ñайла ÑонÑла загÑÑÐ·ÐºÑ Ð¼ÑзÑки.</strong> Ðа <code>/post/music</code> доÑÑаÑоÑно бÑло оÑкÑÑÑÑ Ð´Ð¸Ð°Ð»Ð¾Ð³ вÑбоÑа Ñайла и закÑÑÑÑ ÐµÐ³Ð¾ â ÑÑÑаниÑа пеÑеÑÑавала оÑвеÑаÑÑ. Ð¢Ð¾Ñ Ð¶Ðµ пÑÑÑ Ð·Ð°ÐºÑÑÑ Ð¸ Ð´Ð»Ñ Ð²Ð¸Ð´ÐµÐ¾, где оÑмена пÑевÑаÑалаÑÑ Ð² невнÑÑнÑй оÑказ загÑÑзки.</li> <li data-num="1668"><span class="changelog-tag changelog-tag--UX" data-tag-alias="UX">UX</span> <strong>ÐанÑÑÑй адÑÐµÑ Ð¼Ð°ÑеÑиала обÑÑÑнÑеÑÑÑ Ð¿Ð¾-ÑеловеÑеÑки.</strong> РанÑÑе пÑи Ñовпадении адÑеÑа Ñ Ñже ÑÑÑеÑÑвÑÑÑим маÑеÑиалом авÑÐ¾Ñ Ð¿Ð¾Ð»ÑÑал «Ðе ÑдалоÑÑ ÑоздаÑÑ Ð¼Ð°ÑеÑиал» â ÑÑо ÑиÑаеÑÑÑ ÐºÐ°Ðº поломка ÑеÑвеÑа, и лÑди оÑпÑавлÑли ÑоÑÐ¼Ñ Ñнова. ТепеÑÑ ÑообÑение наз
1ÑÐ²Ð°ÐµÑ Ð·Ð°Ð½ÑÑÑй адÑÐµÑ Ð¸ говоÑиÑ, ÑÑо менÑÑÑ, а беÑÐ¿Ð¾Ð»ÐµÐ·Ð½Ð°Ñ ÐºÐ½Ð¾Ð¿ÐºÐ° «ÐовÑоÑиÑÑ» ÑÑдом Ñ Ð½Ð¸Ð¼ болÑÑе не показÑваеÑÑÑ â пÑи обÑÑве ÑеÑи она оÑÑаÑÑÑÑ Ð½Ð° меÑÑе.</li> <li data-num="1669"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>ÐадÑиÑование обложки болÑÑе не ÑпоÑÑкаеÑÑÑ Ð¿Ñи бÑÑÑÑом закÑÑÑии.</strong> ÐÑли закÑÑÑÑ Ð¾ÐºÐ½Ð¾ обÑезки, пока изобÑажение еÑÑ Ð´Ð¾Ð³ÑÑжаеÑÑÑ, в ÑедакÑоÑе возникала оÑибка.</li> <li data-num="1670">[CHORE] <strong>ÐÐ½Ð±Ð¾ÐºÑ Ð¼Ð¾Ð½Ð¸ÑоÑинга оÑиÑен Ð¾Ñ ÑÑжого ÑÑма</strong>, коÑоÑÑй меÑал видеÑÑ Ð½Ð°ÑÑоÑÑие поломки: аналиÑика Cloudflare на ÑÑаÑÑÑ
Android- и Yandex-бÑаÑзеÑаÑ
, моÑÑÑ Ð²ÑÑÑоеннÑÑ
бÑаÑзеÑов Telegram и подобнÑÑ
, ÑаÑÑиÑÐµÐ½Ð¸Ñ Ð±ÑаÑзеÑа. ÐÑо ÑÑжой код, и поÑиниÑÑ ÐµÐ³Ð¾ нелÑÐ·Ñ â ÑепеÑÑ Ð¾Ð½ пÑоÑÑо не заÑоÑÑÐµÑ Ð¾ÑÑÑÑÑ.</li> <li data-num="1671"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>ÐÑиÑина ÑÐ±Ð¾Ñ Ð² оÑÑÑÑаÑ
назÑваеÑÑÑ, а не ÑкÑÑваеÑÑÑ Ð·Ð° «[object Object]».</strong> ÐÑказ, не ÑвлÑÑÑийÑÑ Ð¾Ñибкой, пÑиезжал без заголовка и ÑÑекÑÑейÑа, и ÑазнÑе Ñбои ÑлипалиÑÑ Ð² Ð¾Ð´Ð½Ñ ÐºÑÑÑ. ТепеÑÑ Ð·Ð°Ð³Ð¾Ð»Ð¾Ð²Ð¾Ðº опознаваем, а подÑобноÑÑи едÑÑ Ð¾ÑделÑнÑм компакÑнÑм Ñлепком â Ñ Ð¾Ð³ÑаниÑением по ÑиÑÐ»Ñ Ð¿Ð¾Ð»ÐµÐ¹ и длине знаÑений, ÑÑÐ¾Ð±Ñ Ð² оÑÑÑÑ Ð½Ðµ попадало лиÑнее.</li> </ul> </div> </details> <details class="changelog-section"> <summary class="changelog-summary"><span class="changelog-meta"><span class="changelog-meta__version">v9.152</span><span class="changelog-meta__date">18-08-2026</span></span><h2 id="v9152-18-08-2026--жÑÑнал-подпиÑан-в-поиÑке-Ñвоим-именем">ÐÑÑнал подпиÑан в поиÑке Ñвоим именем</h2></summary> <div class="changelog-section__body"> </div> </details> <details class="changelog-section"> <summary class="changelog-summary"><span class="changelog-meta"><span class="changelog-meta__version">v9.158</span><span class="changelog-meta__date">18-08-2026</span></span><h2 id="v9158-18-08-2026--измеÑениÑ-ÑкоÑоÑÑи-ÑÑали-пÑигоднÑ-длÑ-ÑабоÑÑ">ÐзмеÑÐµÐ½Ð¸Ñ ÑкоÑоÑÑи ÑÑали пÑÐ¸Ð³Ð¾Ð´Ð½Ñ Ð´Ð»Ñ ÑабоÑÑ</h2></summary> <div class="changelog-section__body"> <p>СлÑÐ¶ÐµÐ±Ð½Ð°Ñ Ð·Ð°Ð¿Ð¸ÑÑ: ÑиÑаÑÐµÐ»Ñ ÑÑиÑ
изменений не замеÑиÑ, ÑкоÑоÑÑÑ Ð¶ÑÑнала пока не менÑлаÑÑ. ÐÑ Ð¿Ð¾Ñинили измеÑиÑелÑнÑе пÑибоÑÑ, без коÑоÑÑÑ
нелÑÐ·Ñ Ð´Ð¾ÐºÐ°Ð·Ð°ÑÑ, ÑÑо бÑдÑÑÐ°Ñ Ð¾Ð¿ÑимизаÑÐ¸Ñ Ð¿Ð¾Ð¼Ð¾Ð³Ð»Ð°.</p> <ul> <li data-num="1661"><span class="changelog-tag changelog-tag--DEVOPS" data-tag-alias="DEVOPS">DEVOPS</span> <strong>СкоÑоÑÑÑ Ð·Ð°Ð³ÑÑзки ÑепеÑÑ Ð¸Ð·Ð¼ÐµÑÑеÑÑÑ Ñ Ð´Ð¾Ð»Ñми, а не ÑолÑко жалобами.</strong> РанÑÑе в оÑÑÑÑÑ Ð¿Ð¾Ð¿Ð°Ð´Ð°Ð»Ð¸ лиÑÑ Ð¿Ð»Ð¾Ñ
ие загÑÑзки, поÑÑÐ¾Ð¼Ñ Â«ÑÑолÑко-Ñо медленнÑÑ
оÑкÑÑÑий» не оÑвеÑало на вопÑоÑ, ÑÑо ÑедкоÑÑÑ Ð¸Ð»Ð¸ ноÑма â и поÑле лÑбой опÑимизаÑии ÑиÑло могло ÑпаÑÑÑ Ð¿ÑоÑÑо из-за Ñпада поÑеÑаемоÑÑи. ТепеÑÑ ÑÑдом ÑобиÑаеÑÑÑ Ð½ÐµÐ±Ð¾Ð»ÑÑÐ°Ñ Ð²ÑбоÑка обÑÑнÑÑ
загÑÑзок, и Ð´Ð¾Ð»Ñ ÑÑиÑаеÑÑÑ ÑеÑÑно.</li> <li data-num="1662"><span class="changelog-tag changelog-tag--DEVOPS" data-tag-alias="DEVOPS">DEVOPS</span> <strong>
1ÐÑÑÑÑ Ð½Ð°Ð·ÑÐ²Ð°ÐµÑ Ð²Ð¸Ð½Ð¾Ð²Ð½Ð¸ÐºÐ°, а не ÑолÑко вÑемÑ.</strong> РизмеÑÐµÐ½Ð¸Ñ Ð´Ð¾Ð±Ð°Ð²Ð»ÐµÐ½Ð¾, какой ÑÐ»ÐµÐ¼ÐµÐ½Ñ ÑÑÑаниÑÑ ÑдвинÑл вÑÑÑÑкÑ, ÑÑо именно оказалоÑÑ ÑамÑм болÑÑим на ÑкÑане и на ÑÑо нажал ÑиÑаÑÐµÐ»Ñ Ð¿ÐµÑед задеÑжкой. РанÑÑе оÑÑÑÑ ÑообÑал «медленно», не говоÑÑ, из-за Ñего.</li> <li data-num="1663"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>ÐзмеÑение болÑÑе не пÑипиÑÑваеÑÑÑ ÑÑжой ÑÑÑаниÑе.</strong> ЧаÑÑÑ Ð¼ÐµÑÑик ÑнимаеÑÑÑ Ð² Ð¼Ð¾Ð¼ÐµÐ½Ñ ÑÑ
ода Ñо ÑÑÑаниÑÑ, и адÑÐµÑ Ð² оÑÑÑÑе подменÑлÑÑ Ð½Ð° ÑоÑ, кÑда ÑиÑаÑÐµÐ»Ñ ÑÑпел пеÑейÑи. ÐдÑÐµÑ Ð¸Ð·Ð¼ÐµÑÐµÐ½Ð¸Ñ ÑепеÑÑ Ñ
ÑаниÑÑÑ Ð¾ÑделÑно.</li> <li data-num="1664"><span class="changelog-tag changelog-tag--DEVOPS" data-tag-alias="DEVOPS">DEVOPS</span> <strong>УбÑана наÑÑÑойка, коÑоÑÐ°Ñ Ð²ÑглÑдела вклÑÑÑнной и ниÑего не делала</strong> â ÑÐ±Ð¾Ñ Ð¿Ð¾Ð´ÑобнÑÑ
ÑÑаÑÑ Ð¿ÑоизводиÑелÑноÑÑи ÑÑебÑÐµÑ ÑаÑÑи библиоÑеки, коÑоÑÑÑ Ð¼Ñ Ð½Ð°Ð¼ÐµÑенно не беÑÑм в ÑбоÑкÑ, ÑÑÐ¾Ð±Ñ Ð½Ðµ ÑÑÑжелÑÑÑ ÑÑÑаниÑÑ.</li> <li data-num="1665"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>Сбойное измеÑение болÑÑе не вÑдаÑÑÑÑ Ð·Ð° медленнÑÑ Ð·Ð°Ð³ÑÑзкÑ.</strong> ÐÑли бÑаÑÐ·ÐµÑ Ð²Ð¾Ð·Ð²ÑаÑал беÑÑмÑÑленное знаÑение, пÑÐ¸Ð±Ð¾Ñ Ð·Ð°Ð¿Ð¸ÑÑвал его как Ñ
ÑдÑий возможнÑй ÑезÑлÑÑÐ°Ñ â Ñо еÑÑÑ Ð¾Ñибка измеÑÐµÐ½Ð¸Ñ Ð¿ÑевÑаÑалаÑÑ Ð² ложнÑÑ ÑÑÐµÐ²Ð¾Ð³Ñ Ð¸ поÑÑила ÑÑаÑиÑÑикÑ. ТепеÑÑ Ñакие ÑлÑÑаи помеÑаÑÑÑÑ Ð¾ÑделÑно и в подÑÑÑÑ Ð½Ðµ идÑÑ.</li> </ul> <p>СледÑÑÑий Ñаг â ÑÑкоÑение ÑамиÑ
ÑÑÑаниÑ: измеÑÐµÐ½Ð¸Ñ Ð¿Ð¾ÐºÐ°Ð·Ð°Ð»Ð¸, ÑÑо долÑÑе вÑего оÑкÑÑваÑÑÑÑ Ð¼Ð°ÑеÑиалÑ, коÑоÑÑе давно никÑо не ÑиÑал, поÑÐ¾Ð¼Ñ ÑÑо иÑ
гоÑÐ¾Ð²Ð°Ñ ÐºÐ¾Ð¿Ð¸Ñ Ð½Ðµ ÑÑÐ¿ÐµÐ²Ð°ÐµÑ Ð·Ð°Ð´ÐµÑжаÑÑÑÑ Ð² кÑÑе.</p> </div> </details> <details class="changelog-section"> <summary class="changelog-summary"><span class="changelog-meta"><span class="changelog-meta__version">v9.157</span><span class="changelog-meta__date">18-08-2026</span></span><h2 id="v9157-18-08-2026--жÑÑнал-подпиÑан-в-поиÑке-Ñвоим-именем">ÐÑÑнал подпиÑан в поиÑке Ñвоим именем</h2></summary> <div class="changelog-section__body"> <p>Ð ÑезÑлÑÑаÑаÑ
Google над заголовком ÑÑоÑл адÑÐµÑ ÑайÑа вмеÑÑо названиÑ. ÐÑиÑина оказалаÑÑ Ð½Ðµ в оÑÑÑÑÑÑвии имени, а в Ñазнобое: поиÑковик ÑобиÑÐ°ÐµÑ Ð½Ð°Ð·Ð²Ð°Ð½Ð¸Ðµ из неÑколÑкиÑ
меÑÑ ÑÑÑаниÑÑ ÑÑÐ°Ð·Ñ Ð¸, когда они ÑаÑÑ
одÑÑÑÑ, показÑÐ²Ð°ÐµÑ Ð°Ð´ÑÐµÑ ÐºÐ°Ðº единÑÑвеннÑй беÑÑпоÑнÑй ваÑианÑ. ТепеÑÑ Ð²Ñе меÑÑа говоÑÑÑ Ð¾Ð´Ð½Ð¾ и Ñо же.</p> <ul> <li data-num="1659"><span class="changelog-tag changelog-tag--SEO" data-tag-alias="SEO">SEO</span> <strong>«ÐиÑкÑÑÑ» вмеÑÑо адÑеÑа в вÑдаÑе</strong> â название, пÑевÑÑ Ð´Ð»Ñ ÑоÑÑеÑей и ÑазмеÑка ÑÑÑаниÑÑ Ð¿ÑÐ¸Ð²ÐµÐ´ÐµÐ½Ñ Ðº одной ÑоÑме, а адÑÐµÑ Ð³Ð»Ð°Ð²Ð½Ð¾Ð¹ запиÑан вÑÑÐ´Ñ Ð¾Ð´Ð¸Ð½Ð°ÐºÐ¾Ð²Ð¾. ÐаÑинÑкое напиÑание оÑÑалоÑÑ Ð´Ð»Ñ Ð°Ð½Ð³Ð»Ð¾ÑзÑÑной веÑÑии.</li> <li data-num="1660"><span class="changelog-tag changelog-tag--SEO" data-tag-alias="SEO">SEO</span> <strong>СлÑÐ¶ÐµÐ±Ð½Ð°Ñ ÐºÐ¾Ð¿Ð¸Ñ ÑайÑа ÑбÑана из поиÑка</strong> â пÑедÑÐµÐ»Ð¸Ð·Ð½Ð°Ñ Ð²ÐµÑÑÐ¸Ñ Ð¿Ð»Ð°ÑÑоÑÐ¼Ñ Ð¾ÑвеÑала поиÑковÑм ÑобоÑам пÑоÑивоÑеÑиво, и ÐµÑ ÑÑÑаниÑÑ Ð¿Ð¾Ð¿Ð°Ð´Ð°Ð»Ð¸ в вÑдаÑÑ ÑÑдом Ñ Ð½Ð°ÑÑоÑÑими. ЧиÑаÑÐµÐ»Ñ Ð¼Ð¾Ð³ оÑкÑÑÑÑ Ð¸Ð· поиÑка не жÑÑнал, а ÑÑенд ÑазÑабоÑки.</li> </ul> <p>Ðбе договоÑÑнноÑÑи ÑепеÑÑ Ð¿ÑовеÑÑÑÑÑÑ Ð°Ð²ÑомаÑиÑеÑки â пÑи ÑаÑÑ
ождении ÑбоÑка кÑаÑнееÑ, не дожидаÑÑÑ, пока ÑÑо замеÑÑÑ Ð² вÑдаÑе ÑеÑез неÑколÑко неделÑ.</p> </div> </details> <details class="changelog-section"> <summary class="changelog-summary"><span class="changelog-meta"><span class="changelog-meta__version">v9.156</span><span class="changelog-meta__date">15-08-2026</span></span><h2 id="v9156-15-08-2026--ÑÑÑаниÑÑ-жÑÑнала-Ñнова-оÑкÑÑваÑÑÑÑ-из-кÑÑа">СÑÑаниÑÑ Ð¶ÑÑнала Ñнова оÑкÑÑваÑÑÑÑ Ð¸Ð· кÑÑа</h2></summary> <div class="changelog-section__body"> <p>ÐоÑовÑе копии ÑÑÑÐ°Ð½Ð¸Ñ Ð´Ð¾Ð»Ð¶Ð½Ñ Ñ
ÑаниÑÑÑÑ Ð½Ð° ÑеÑвеÑаÑ
Ñ ÐºÑÐ°Ñ ÑеÑи â Ñогда ÑледÑÑÑий ÑиÑаÑÐµÐ»Ñ Ð¿Ð¾Ð»ÑÑÐ°ÐµÑ ÑÑÑаниÑÑ Ð¿Ð¾ÑÑи мгновенно. ÐказалоÑÑ, ÑÑо ÑÑÐ¾Ñ Ð¼ÐµÑ
анизм Ñ Ð½Ð°Ñ Ð¼ÐµÑÑÑами молÑа не ÑабоÑал: девÑÑÑ Ð¸Ð· деÑÑÑи попÑÑок ÑоÑ
ÑаниÑÑ ÐºÐ¾Ð¿Ð¸Ñ Ð¾ÑвеÑгалиÑÑ Ð¸Ð·-за одной ÑлÑжебной ÑÑÑоки в заголовкаÑ
, и каждÑй ÑиÑаÑÐµÐ»Ñ Ð¿Ð»Ð°Ñил полнÑм ожиданием.</p> <ul> <li data-num="1658"><span class="changelog-tag changelog-tag--PERF" data-tag-alias="PERF">PERF</span> <strong>ÐÑÑ Ð³Ð¾ÑовÑÑ
ÑÑÑÐ°Ð½Ð¸Ñ Ð·Ð°ÑабоÑал</strong> â повÑоÑнÑе заÑ
Ð¾Ð´Ñ Ð½Ð° попÑлÑÑнÑе маÑеÑÐ¸Ð°Ð»Ñ ÑÑали замеÑно бÑÑÑÑее, а нагÑÑзка на ÑеÑвеÑÑ Ð¶ÑÑнала ниже. ÐÑказ бÑл беззвÑÑнÑм: в инÑеÑÑейÑе вÑÑ Ð²ÑглÑдело иÑпÑавнÑм.</li> </ul> </div> </details> <details class="changelog-section"> <summary class="changelog-summary"><span class="changelog-meta"><span class="changelog-meta__version">v9.155</span><span class="changelog-meta__date">13-08-2026</span></span><h2 id="v9155-13-08-2026--маÑеÑиал-не-подменÑеÑÑÑ-ÑеÑновиком-каÑÑоÑки-без-обложки-ожили">ÐаÑеÑиал не подменÑеÑÑÑ ÑеÑновиком, каÑÑоÑки без обложки ожили</h2></summary> <div class="changelog-section__body"> <ul> <li data-num="1655"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>ÐÑкÑÑÑие маÑеÑиала на пÑÐ°Ð²ÐºÑ Ð±Ð¾Ð»ÑÑе не подменÑÐµÑ ÐµÐ³Ð¾ Ð
1½Ð¾Ð²Ñм ÑеÑновиком</strong> â из-за залипÑего Ñледа пÑедпÑоÑмоÑÑа ÑедакÑÐ¾Ñ Ð¼Ð¾Ð³ ÑвеÑÑи авÑоÑа в Ñоздание ÑеÑновика вмеÑÑо нÑжного маÑеÑиала, да еÑÑ Ð¸ Ð¾Ñ ÑÑжого имени.</li> <li data-num="1656"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>ÐаÑÑоÑка маÑеÑиала без обложки болÑÑе не вÑглÑÐ´Ð¸Ñ Ð·Ð°Ð²Ð¸ÑÑей</strong> â вмеÑÑо веÑного ÑеÑого пÑÑмоÑголÑника, коÑоÑÑй не оÑкÑÑвалÑÑ Ð¿Ð¾ кликÑ, ÑепеÑÑ ÑзнаваемÑй оÑÐ½Ð°Ð¼ÐµÐ½Ñ Ð¸Ð·Ð´Ð°Ð½Ð¸Ñ Ð¸ обÑÑÐ½Ð°Ñ ÑабоÑÐ°Ñ ÐºÐ°ÑÑоÑка.</li> <li data-num="1657"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>ÐаглÑÑка обложки одна и Ñа же пÑи пеÑвой оÑÑиÑовке и пÑи догÑÑзке</strong> â ÑанÑÑе каÑÑинка ÑÑпевала ÑмениÑÑÑÑ Ð½Ð° дÑÑгÑÑ Ð¿ÑÑмо на глазаÑ
.</li> </ul> </div> </details> <details class="changelog-section"> <summary class="changelog-summary"><span class="changelog-meta"><span class="changelog-meta__version">v9.154</span><span class="changelog-meta__date">09-08-2026</span></span><h2 id="v9154-09-08-2026--ленÑÑ-и-обложки-пеÑеÑÑали-ÑÑнÑÑÑ-лиÑние-мегабайÑÑ">ÐенÑÑ Ð¸ обложки пеÑеÑÑали ÑÑнÑÑÑ Ð»Ð¸Ñние мегабайÑÑ</h2></summary> <div class="changelog-section__body"> <p>СпиÑки маÑеÑиалов ÑкаÑивали полнÑе ÑекÑÑÑ ÑÑаÑей, коÑоÑÑÑ
в каÑÑоÑкаÑ
вÑÑ Ñавно не видно. Ðа ленÑе из деÑÑÑи каÑÑоÑек ÑÑо ÑоÑни лиÑниÑ
килобайÑ, на болÑÑой Ñеме â мегабайÑÑ, и вÑÑ ÑÑо оплаÑивал мобилÑнÑй ÑÑаÑик ÑиÑаÑелÑ.</p> <ul> <li data-num="1653"><span class="changelog-tag changelog-tag--PERF" data-tag-alias="PERF">PERF</span> <strong>ÐенÑÑ Ð¼Ð°ÑеÑиалов, ÑÐ°Ð·Ð´ÐµÐ»Ñ Ð¸ ÑÑÑаниÑÑ Ñем ÑÑали в ÑÐ°Ð·Ñ Ð»ÐµÐ³Ñе</strong> â на ÑÑÑÑ
маÑÑÑÑÑаÑ
Ñазом ÑÑло болÑÑе мегабайÑа на вÑдаÑÑ, а на кÑÑпной Ñеме â до ÑÑÑÑ
мегабайÑ.</li> <li data-num="1654"><span class="changelog-tag changelog-tag--PERF" data-tag-alias="PERF">PERF</span> <strong>Ðбложка болÑÑе не ÑаÑÑÑгиваеÑÑÑ ÑвеÑÑ
Ñвоего оÑигинала</strong> â ÑанÑÑе на ÑиÑоком ÑкÑане бÑаÑÐ·ÐµÑ ÑкаÑивал ÑаздÑÑÑÑ ÐºÐ¾Ð¿Ð¸Ñ, ÑÑжелее иÑÑ
одника и без единого нового пикÑелÑ. У двÑÑ
ÑÑеÑей маÑеÑиалов каÑÑинка ÑепеÑÑ Ð»ÐµÐ³Ñе пÑи Ñой же ÑÑÑкоÑÑи.</li> </ul> </div> </details> <details class="changelog-section"> <summary class="changelog-summary"><span class="changelog-meta"><span class="changelog-meta__version">v9.153</span><span class="changelog-meta__date">07-08-2026</span></span><h2 id="v9153-07-08-2026--анимиÑованнÑе-обложки-оÑкÑÑваÑÑÑÑ-пÑеделÑ-загÑÑзки-понÑÑнÑ-заÑанее">ÐнимиÑованнÑе обложки оÑкÑÑваÑÑÑÑ, пÑÐµÐ´ÐµÐ»Ñ Ð·Ð°Ð³ÑÑзки понÑÑÐ½Ñ Ð·Ð°Ñанее</h2></summary> <div class="changelog-section__body"> <ul> <li data-num="1650"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>ÐнимиÑованнÑе GIF-обложки Ñнова виднÑ</strong> â пÑи подгоÑовке к Ð¿Ð¾ÐºÐ°Ð·Ñ Ð¾Ð½Ð¸ ÑаÑпÑÑ
али в ÑÐ°Ð·Ñ Ð¸ не оÑкÑÑвалиÑÑ Ð²Ð¾Ð²Ñе: вмеÑÑо обложки ÑиÑаÑÐµÐ»Ñ Ð²Ð¸Ð´ÐµÐ» пÑÑÑоÑÑ, а в меÑÑенджеÑаÑ
ломалоÑÑ Ð¿ÑевÑÑ ÑÑÑлки. ТепеÑÑ Ñакие каÑÑинки оÑдаÑÑÑÑ ÐºÐ°Ðº еÑÑÑ.</li> <li data-num="1651"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>PDF Ð¾Ñ Ð°Ð²ÑоÑа без аккаÑнÑа пÑинимаеÑÑÑ Ð½Ð°Ñавне Ñо вÑеми</strong>
1 â заÑÐ²ÐºÑ Ñ ÐºÑÑпнÑм докÑменÑом оÑбивало еÑÑ Ð´Ð¾ оÑпÑавки, Ñ
оÑÑ ÑеÑÐ²ÐµÑ ÐµÑ Ð¿ÑинÑл бÑ.</li> <li data-num="1652"><span class="changelog-tag changelog-tag--UX" data-tag-alias="UX">UX</span> <strong>ÐÑедел ÑазмеÑа Ñайла виден до загÑÑзки, а не поÑле</strong> â ÑанÑÑе можно бÑло неÑколÑко минÑÑ Ð¶Ð´Ð°ÑÑ ÐºÐ¾Ð½Ñа вÑгÑÑзки, ÑÑÐ¾Ð±Ñ Ð¿Ð¾Ð»ÑÑиÑÑ Ð¾Ñказ.</li> </ul> </div> </details> <details class="changelog-section"> <summary class="changelog-summary"><span class="changelog-meta"><span class="changelog-meta__version">v9.152</span><span class="changelog-meta__date">05-08-2026</span></span><h2 id="v9152-05-08-2026--наÑÑÑойка-«ÑменÑÑиÑÑ-движение»-наконеÑ-ÑабоÑаеÑ">ÐаÑÑÑойка «ÑменÑÑиÑÑ Ð´Ð²Ð¸Ð¶ÐµÐ½Ð¸ÐµÂ» Ð½Ð°ÐºÐ¾Ð½ÐµÑ ÑабоÑаеÑ</h2></summary> <div class="changelog-section__body"> <ul> <li data-num="1646"><span class="changelog-tag changelog-tag--A11Y" data-tag-alias="A11Y">A11Y</span> <strong>СиÑÑÐµÐ¼Ð½Ð°Ñ Ð½Ð°ÑÑÑойка «ÑменÑÑиÑÑ Ð´Ð²Ð¸Ð¶ÐµÐ½Ð¸ÐµÂ» Ñнова дейÑÑвÑеÑ</strong> â из-за оÑибки, возникавÑей ÑолÑко пÑи ÑбоÑке боевой веÑÑии, Ñ Ð»Ñдей, попÑоÑивÑиÑ
менÑÑе анимаÑии, вÑÑ Ð¿Ñодолжало двигаÑÑÑÑ Ð² полнÑÑ ÑилÑ. Ðа ÑайÑе ÑÑо никак не пÑоÑвлÑлоÑÑ Ð²Ð½ÐµÑне, и поÑÐ¾Ð¼Ñ Ð¶Ð¸Ð»Ð¾ незамеÑеннÑм.</li> <li data-num="1647"><span class="changelog-tag changelog-tag--A11Y" data-tag-alias="A11Y">A11Y</span> <strong>СÑÑлка «пеÑейÑи к ÑодеÑжимомÑ» поÑинена</strong> â она нÑжна Ñем, кÑо Ñ
Ð¾Ð´Ð¸Ñ Ð¿Ð¾ ÑайÑÑ Ñ ÐºÐ»Ð°Ð²Ð¸Ð°ÑÑÑÑ Ð¸ ÑеÑез ÑкÑаннÑе ÑиÑалки.</li> <li data-num="1648"><span class="changelog-tag changelog-tag--SEO" data-tag-alias="SEO">SEO</span> <strong>У ÑÑÑаниÑ-Ñазделов поÑвилÑÑ Ð½Ð¾ÑмалÑнÑй заголовок в иÑÑ
одном коде</strong> â его не видели ÐÐ-аÑÑиÑÑенÑÑ, боÑÑ Ð¿ÑевÑÑ Ð¸ внеÑние аÑдиÑоÑÑ, ÑабоÑаÑÑие без иÑÐ¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ ÑкÑипÑов.</li> <li data-num="1649"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>ÐÑÐºÐ°Ñ Ðº пÑедÑдÑÑей веÑÑии маÑеÑиала ÑоÑ
ÑанÑÐµÑ ÑзÑк</strong> â пÑи воÑÑÑановлении веÑÑии ÑзÑк маÑеÑиала ÑбÑаÑÑвалÑÑ.</li> </ul> </div> </details> <details class="changelog-section"> <summary class="changelog-summary"><span class="changelog-meta"><span class="changelog-meta__version">v9.151</span><span class="changelog-meta__date">26-07-2026</span></span><h2 id="v9151-26-07-2026--английÑкаÑ-веÑÑиÑ-опиÑаниÑ-длÑ-поиÑка-ÑипогÑаÑика-и-поÑиненнÑе-ÑклонениÑ">ÐнглийÑÐºÐ°Ñ Ð²ÐµÑÑиÑ: опиÑÐ°Ð½Ð¸Ñ Ð´Ð»Ñ Ð¿Ð¾Ð¸Ñка, ÑипогÑаÑика и поÑиненнÑе ÑклонениÑ</h2></summary> <div class="changelog-section__body"> <p>СÑÑлка на англоÑзÑÑнÑÑ ÑÑÑаниÑÑ ÑепеÑÑ Ð¸ в поиÑке, и в меÑÑенджеÑе вÑглÑÐ´Ð¸Ñ Ð¿Ð¾-английÑки: пеÑÐµÐ²ÐµÐ´ÐµÐ½Ñ Ð¾Ð¿Ð¸ÑÐ°Ð½Ð¸Ñ Ð¸ пÑевÑÑ Ð´Ð»Ñ ÑоÑÑеÑей. ÐопÑÑно вÑлеÑÐµÐ½Ñ ÑÑи ÑлÑÑаÑ, когда пеÑевод в ÑловаÑе бÑл, но на ÑÑÑаниÑÑ Ð½Ðµ попадал.</p> <ul> <li data-num="1640"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> <strong>ÐпиÑÐ°Ð½Ð¸Ñ Ð´Ð»Ñ Ð¿Ð¾Ð¸Ñка и ÑаÑинга на английÑком</strong> â <code>description</code>, <code>keywords</code> и Open Graph на 30 ÑÑÑаниÑаÑ
. РанÑÑе англоÑзÑÑÐ½Ð°Ñ ÑÑÑлка в вÑдаÑе и в меÑÑенджеÑе оÑÑавалаÑÑ Ñ ÑÑÑÑким опиÑанием.</li> <li data-num="1641"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> <strong>«Ðак ÑÑÑÑоен ÐиÑкÑÑÑ» â Ð²Ð²Ð¾Ð´Ð½Ð°Ñ ÑаÑÑÑ Ð¸ ÑаÑÑказ о ÑемаÑ
</strong> пеÑÐµÐ²ÐµÐ´ÐµÐ½Ñ Ð²Ð¼ÐµÑÑе Ñо вÑеми внÑÑÑенними ÑÑÑлками.</li> <li data-num="1642"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> <strong>РаÑÑÑлки, ÑкÑÐ°Ð½Ñ Ð±Ð»Ð¾ÐºÐ¸Ñовок и ÑлÑжебнÑе подпиÑи</strong> â ÑпÑавление подпиÑками, веб-веÑÑÐ¸Ñ Ð¿Ð¸ÑÑма, «ÐаблокиÑовано» и «ÐапÑеÑено ÑензÑÑой», а Ñакже «Skip to content», «Back to top» и подпиÑи иллÑÑÑÑаÑий.</li> <li data-num="1643"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>СÑÑÑÑики пÑавок в ÑеÑновикаÑ
говоÑили по-ÑÑÑÑки</strong> â на <code>/en</code> ÑÑдом Ñ ÑиÑлом ÑÑоÑла ÑÑÑÑÐºÐ°Ñ ÑоÑма «новÑÑ
». СÑÑÑÑики пеÑÐµÐ²ÐµÐ´ÐµÐ½Ñ Ð½Ð° обÑÑÑ Ð»Ð¾ÐºÐ°Ð»Ð¸Ð·Ð¾Ð²Ð°Ð½Ð½ÑÑ Ð¼ÐµÑ
Ð°Ð½Ð¸ÐºÑ Ñклонений.</li> <li data-num="1644"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>ÐеÑазÑÑвнÑе пÑÐ¾Ð±ÐµÐ»Ñ Ð±Ð¾Ð»ÑÑе не ломаÑÑ Ð¿ÐµÑевод</strong> â из-за ниÑ
не наÑ
одилиÑÑ Ð¿ÐµÑÐµÐ²Ð¾Ð´Ñ Ð´ÐµÐ²Ð¸Ð·Ð° на главной и подÑказок в пÑоÑиле: ÑекÑÑ Ð² ÑазмеÑке и клÑÑ Ð² ÑловаÑе ÑаÑÑ
одилиÑÑ Ð½Ð° невидимÑй Ñимвол. ТепеÑÑ Ñовпадение иÑеÑÑÑ Ð½ÐµÐ·Ð°Ð²Ð¸Ñимо Ð¾Ñ ÑаÑÑÑановки, а ÑÑÑÑÐºÐ°Ñ ÑипогÑаÑика пÑи пеÑеводе не ÑÑÑадаеÑ.</li> <li data-num="1645"><span class="changelog-tag changelog-tag--UX" data-tag-alias="UX">UX</span> <strong>ЯзÑк ÑÑÑаниÑÑ Ð¾Ð±ÑÑвлÑеÑÑÑ ÑÑазÑ</strong> â на <code>/en</code> аÑÑибÑÑ ÑзÑка и заголовок вкладки английÑкие Ñ Ð¿ÐµÑвой оÑÑиÑовки, не поÑле загÑÑзки пÑиложениÑ. ÐÑо важно Ð´Ð»Ñ ÑкÑинÑидеÑов и поиÑковÑÑ
ÑобоÑов.</li> </ul> <p>ЦелоÑÑноÑÑÑ ÑловаÑÑ ÑепеÑÑ Ð¿ÑовеÑÑеÑÑÑ Ð°Ð²ÑомаÑиÑеÑки: ÑÑÑокÑ, обÑÑнÑÑÑÑ Ð² пеÑевод без Ñамого пеÑевода, болÑÑе нелÑÐ·Ñ ÑлÑÑайно вÑпÑÑÑиÑÑ Ð² пÑод.</p> </div> </details> <details class="changelog-section"> <summary class="changelog-summary"><span class="changelog-meta"><span class="changelog-meta__version">v9.150</span><span class="changelog-meta__date">14-07-2026</span></span><h2 id="v9150-14-07-2026--ÑкоÑоÑÑÑ-жÑÑнал-оÑкÑÑваеÑÑÑ-бÑÑÑÑее-и-ÑаÑÑ
одÑеÑ-менÑÑе-ÑÑаÑика">СкоÑоÑÑÑ: жÑÑнал оÑкÑÑваеÑÑÑ Ð±ÑÑÑÑее и ÑаÑÑ
одÑÐµÑ Ð¼ÐµÐ½ÑÑе ÑÑаÑика</h2></summary> <div class="changelog-section__body"> <p>ÐÑпÑÑк Ñеликом пÑо ÑкоÑоÑÑÑ. ÐÑ Ð¿ÑоÑлиÑÑ Ð¿Ð¾ вÑÐµÐ¼Ñ Ð¿ÑÑи загÑÑзки ÑÑÑаниÑÑ â ÑÑили, ÑÑиÑÑÑ, каÑÑинки, ÑкÑипÑÑ â и облегÑили каждÑй Ñаг. ÐÑобенно ÑÑо замеÑно на ÑелеÑонаÑ
и медленном инÑеÑнеÑе.</p> <ul> <li data-num="1633"><span class="changelog-tag changelog-tag--PERF" data-tag-alias="PERF">PERF</span> <strong>СÑÑаниÑÑ Ð½Ð°ÑинаÑÑ Ð¾ÑÑиÑовÑваÑÑÑÑ ÑанÑÑе</strong> â ÑÑили ÑедкиÑ
Ñазделов (подкаÑÑÑ, ÑиÑаÑÑ, лиÑнÑй ÐºÐ°Ð±Ð¸Ð½ÐµÑ Ð¸ дÑÑгие) болÑÑе не ÑоÑмозÑÑ ÐºÐ°Ð¶Ð´ÑÑ ÑÑÑаниÑÑ: в кÑиÑиÑеÑком пÑÑи загÑÑзки ÑÑало на ÑÑеÑÑ Ð¼ÐµÐ½ÑÑе ÑÑилей, оÑÑалÑное догÑÑжаеÑÑÑ Ð½ÐµÐ·Ð°Ð¼ÐµÑно в Ñоне.</li> <li data-num="1634"><span class="changelog-tag changelog-tag--PERF" data-tag-alias="PERF">PERF</span> <strong>ÐаÑÑинки в ÑÑаÑÑÑÑ
â по ÑазмеÑÑ ÑкÑана</strong> â иллÑÑÑÑаÑии в ÑекÑÑе пÑиÑ
одÑÑ Ð² подÑ
одÑÑем Ð´Ð»Ñ ÑÑÑÑойÑÑва ÑазмеÑе вмеÑÑо макÑималÑного: на ÑелеÑонаÑ
ÑÑо в ÑÐ°Ð·Ñ Ð¼ÐµÐ½ÑÑе Ð¼ÐµÐ³Ð°Ð±Ð°Ð¹Ñ Ð¿Ñи Ñой же ÑÑÑкоÑÑи. Ðаодно иÑпÑавлена ÑкÑÑÑÐ°Ñ Ð½ÐµÑÑÑекÑивноÑÑÑ, из-за коÑоÑой одна и Ñа же каÑÑинка могла ÑкаÑиваÑÑÑÑ Ð´Ð²Ð°Ð¶Ð´Ñ.</li> <li data-num="1635"><span class="changelog-tag changelog-tag--PERF" data-tag-alias="PERF">PERF</span> <strong>ШÑиÑÑÑ Ð¿Ð¾Ð»ÐµÐ³Ñали и подклÑÑаÑÑÑÑ ÑанÑÑе</strong> â ÑиÑменнÑе ÑÑиÑÑÑ Ð¸Ð·Ð±Ð°Ð²Ð¸Ð»Ð¸ÑÑ Ð¾Ñ Ð½ÐµÐ¸ÑполÑзÑемÑÑ
алÑавиÑов, а заголовки ÑÑаÑей болÑÑе не ждÑÑ Ð¿Ð¾Ð»Ð½Ð¾Ð¹ загÑÑзки ÑÑилей, ÑÑÐ¾Ð±Ñ Ð¾ÑÑиÑоваÑÑÑÑ ÑиÑменной гаÑниÑÑÑой.</li> <li data-num="1636"><span class="changelog-tag changelog-tag--PERF" data-tag-alias="PERF">PERF</span> <strong>ÐенÑÑе Ñоновой ÑабоÑÑ Ñ ÑиÑаÑелей</strong> â ÑлÑжебное Ñоединение Ð´Ð»Ñ Ð¼Ð³Ð½Ð¾Ð²ÐµÐ½Ð½ÑÑ
Ñведомлений ÑепеÑÑ ÑÑÑанавливаеÑÑÑ ÑолÑко Ñ Ð²Ð¾ÑедÑиÑ
в аккаÑнÑ: гоÑÑÑм оно не нÑжно и лиÑÑ Ð·Ð°Ð½Ð¸Ð¼Ð°Ð»Ð¾ ÑеÑÑÑÑÑ ÑÑÑÑойÑÑва.</li> <li data-num="1637"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>Ðбложка ÑÑаÑÑи не ÑкаÑиваеÑÑÑ Ð´Ð²Ð°Ð¶Ð´Ñ Ð½Ð° retina-ÑкÑанаÑ
</strong> â пÑедзагÑÑзка обложки и ÐµÑ ÑиналÑÐ½Ð°Ñ Ð²ÐµÑÑÐ¸Ñ Ð½Ð°ÐºÐ¾Ð½ÐµÑ ÑоÑлиÑÑ Ð² ÑазмеÑаÑ
на диÑплеÑÑ
вÑÑокой ÑÑÑкоÑÑи.</li> <li data-num="1638"><span class="changelog-tag changelog-tag--SEC" data-tag-alias="SEC">SEC</span> <strong>СÑÑоже Ñ Ð±ÐµÐ·Ð¾Ð¿Ð°ÑноÑÑÑÑ ÑоединениÑ</strong> â бÑаÑзеÑÑ ÑепеÑÑ Ñвно пÑедпиÑано Ñ
одиÑÑ Ð² жÑÑнал ÑолÑко по заÑиÑÑÐ½Ð½Ð¾Ð¼Ñ Ð¿ÑоÑоколÑ.</li> <li data-num="1639"><span class="changelog-tag changelog-tag--SEO" data-tag-alias="SEO">SEO</span> <strong>ÐÑÑнал пÑедÑÑавилÑÑ ÐÐ-аÑÑиÑÑенÑам</strong> â по ÑÑандаÑÑÐ½Ð¾Ð¼Ñ Ð°Ð´ÑеÑÑ Ð¿Ð¾ÑвилаÑÑ ÐºÐ°ÑÑа жÑÑнала Ð´Ð»Ñ ÐÐ-поиÑковиков: ChatGPT, Perplexity и дÑÑгие аÑÑиÑÑенÑÑ ÑепеÑÑ ÐºÐ¾ÑÑекÑно ÑзнаÑÑ Ð¾ ÑазделаÑ
и пÑинÑипаÑ
ÐиÑкÑÑÑа.</li> </ul> </div> </details> <details class="changelog-section"> <summary class="changelog-summary"><span class="changelog-meta"><span class="changelog-meta__version">v9.149</span><span class="changelog-meta__date">11-07-2026</span></span><h2 id="v9149-11-07-2026--ÑовмеÑÑнÑй-ÑедакÑоÑ-Ñ-пÑавок-поÑвилиÑÑ-авÑоÑÑ-ÑилÑÑÑÑ-ÑÑали-компакÑнее">СовмеÑÑнÑй ÑедакÑоÑ: Ñ Ð¿Ñавок поÑвилиÑÑ Ð°Ð²ÑоÑÑ, ÑилÑÑÑÑ ÑÑали компакÑнее</h2></summary> <div class="changelog-section__body"> <p>ÐÑпÑÑк пÑо ÑовмеÑÑнÑÑ ÑабоÑÑ Ð½Ð°Ð´ ÑекÑÑами: каÑÑоÑки пÑавок обÑели ÑеловеÑеÑкие лиÑа, Ð·Ð°Ð¼ÐµÐ½Ñ Ð¿ÑинимаÑÑÑÑ Ð¾Ð´Ð½Ð¸Ð¼ нажаÑием, а Ð¿Ð°Ð½ÐµÐ»Ñ ÐºÐ¾Ð¼Ð¼ÐµÐ½ÑаÑиев ÑÑала аккÑÑаÑнее.</p> <ul> <li data-num="1629"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> <strong>У пÑавок видно авÑоÑа</strong> â пÑедложеннÑе Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð² ÑекÑÑе ÑепеÑÑ Ð¿Ð¾Ð´Ð¿Ð¸ÑанÑ: имÑ, аваÑÐ°Ñ Ð¸ ÑÑÑлка на пÑоÑÐ¸Ð»Ñ Ð°Ð²ÑоÑа пÑавки Ð²Ð¸Ð´Ð½Ñ Ð²Ñем ÑÑаÑÑникам докÑменÑа, как ÑÑо давно ÑÑÑÑоено Ñ ÐºÐ¾Ð¼Ð¼ÐµÐ½ÑаÑиев. ÐолÑÑе не нÑжно ÑгадÑваÑÑ, кÑо пÑедложил заменÑ.</li> <li data-num="1630"><span class="changelog-tag changelog-tag--UX" data-tag-alias="UX">UX</span> <strong>Ðамена пÑинимаеÑÑÑ Ð¾Ð´Ð½Ð¸Ð¼ нажаÑием</strong> â пÑавка «замениÑÑ Ð¾Ð´Ð½Ð¾ на дÑÑгое» пÑименÑеÑÑÑ Ñеликом: заÑÑÑкнÑÑÑй ÑекÑÑ ÑдалÑеÑÑÑ, пÑедложеннÑй â оÑÑаÑÑÑÑ, и вÑÑ ÑÑо одним кликом и одним Ñагом оÑменÑ.<
1/li> <li data-num="1631"><span class="changelog-tag changelog-tag--UX" data-tag-alias="UX">UX</span> <strong>ФилÑÑÑÑ ÐºÐ¾Ð¼Ð¼ÐµÐ½ÑаÑиев â в компакÑной кнопке</strong> â два ÑÑда пеÑеклÑÑаÑелей в панели комменÑаÑиев пеÑееÑ
али в аккÑÑаÑнÑÑ ÐºÐ½Ð¾Ð¿ÐºÑ ÑÑдом Ñ ÐºÑеÑÑиком. ÐнÑÑÑи â ÑилÑÑÑÑ Ð¿Ð¾ ÑÑаÑÑÑÑ Ð¸ иÑÑоÑникÑ, а ÑоÑка-индикаÑÐ¾Ñ Ð¿Ð¾Ð´ÑказÑваеÑ, ÑÑо ÑилÑÑÑ Ð°ÐºÑивен.</li> <li data-num="1632"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>ÐаÑÑÑкивание в каÑÑоÑкаÑ
пÑавок â по длине ÑекÑÑа</strong> â кÑаÑÐ½Ð°Ñ Ð¿Ð¾Ð»Ð¾Ñа ÑдалÑемого ÑÑагменÑа болÑÑе не ÑаÑÑÑгиваеÑÑÑ Ð½Ð° вÑÑ ÑиÑÐ¸Ð½Ñ ÐºÐ°ÑÑоÑки.</li> </ul> </div> </details> <details class="changelog-section"> <summary class="changelog-summary"><span class="changelog-meta"><span class="changelog-meta__version">v9.148</span><span class="changelog-meta__date">07-07-2026</span></span><h2 id="v9148-07-07-2026--ÑÑÑкие-каÑÑинки-на-лÑбÑÑ
-ÑкÑанаÑ
-надÑжнаÑ-доÑÑавка-медиа-и-анонимнаÑ-поддеÑжка">ЧÑÑкие каÑÑинки на лÑбÑÑ
ÑкÑанаÑ
, надÑÐ¶Ð½Ð°Ñ Ð´Ð¾ÑÑавка медиа и Ð°Ð½Ð¾Ð½Ð¸Ð¼Ð½Ð°Ñ Ð¿Ð¾Ð´Ð´ÐµÑжка</h2></summary> <div class="changelog-section__body"> <p>ÐÑлÑÑкий вÑпÑÑк â пÑо изобÑÐ°Ð¶ÐµÐ½Ð¸Ñ Ð¸ пÑо ÑеÑ
, кÑо пиÑÐµÑ Ð½Ð°Ð¼, не назÑÐ²Ð°Ñ ÑебÑ. ФоÑогÑаÑии ÑÑали ÑÑÑÑе на ÑелеÑонаÑ
и надÑжнее доÑ
одÑÑ Ð´Ð¾ ÑиÑаÑелÑ, а помоÑÑ Ñ Ð´Ð¾ÑÑÑпом ÑепеÑÑ Ð¼Ð¾Ð¶Ð½Ð¾ полÑÑиÑÑ Ð°Ð½Ð¾Ð½Ð¸Ð¼Ð½Ð¾.</p> <ul> <li data-num="1623"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> <strong>ÐаÑÑинки и аÑдио доÑ
одÑÑ Ð½Ð°Ð´Ñжнее</strong> â медиаÑÐ°Ð¹Ð»Ñ Ð¶ÑÑнала пеÑееÑ
али на новÑÑ ÑÑ
ÐµÐ¼Ñ Ð´Ð¾ÑÑавки: иллÑÑÑÑаÑии и подкаÑÑÑ Ð¾ÑкÑÑваÑÑÑÑ Ð² Ñом ÑиÑле Ñам, где пÑежние адÑеÑа блокиÑовалиÑÑ. ÐаÑ
одиÑе Ð²Ñ Ñ Ð¾Ñновного адÑеÑа или Ñ Ð·ÐµÑкала â изобÑÐ°Ð¶ÐµÐ½Ð¸Ñ Ð½Ð° меÑÑе.</li> <li data-num="1624"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>ЧÑÑкоÑÑÑ Ð½Ð° retina и мобилÑнÑÑ
</strong> â ÑкÑÐ°Ð½Ñ Ñ Ð²ÑÑокой плоÑноÑÑÑÑ Ð¿Ð¸ÐºÑелей ÑепеÑÑ Ð¿Ð¾Ð»ÑÑаÑÑ ÐºÐ°ÑÑÐ¸Ð½ÐºÑ Ð¿Ð¾Ð´Ñ
одÑÑего ÑазмеÑа. ФоÑогÑаÑии пеÑеÑÑали вÑглÑдеÑÑ Ð·Ð°Ð¼ÑленнÑми на ÑелеÑонаÑ
и ÑовÑеменнÑÑ
диÑплеÑÑ
.</li> <li data-num="1625"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>ÐаÑеÑиал не ÑоÑ
ÑаниÑÑÑ Ð±ÐµÐ· каÑÑинок</strong> â еÑли вÑÑавленнÑе изобÑÐ°Ð¶ÐµÐ½Ð¸Ñ ÐµÑÑ Ð½Ðµ догÑÑзилиÑÑ, ÑедакÑÐ¾Ñ Ð´Ð¾Ð¶Ð´ÑÑÑÑ Ð¸Ñ
, пÑежде Ñем оÑпÑавиÑÑ Ð¼Ð°ÑеÑиал на ÑеÑвеÑ. ÐÑбликаÑии Ñ Â«Ð´ÑÑами» вмеÑÑо иллÑÑÑÑаÑий оÑÑалиÑÑ Ð² пÑоÑлом.</li> <li data-num="1626"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> <strong>Ðнонимное обÑаÑение в поддеÑжкÑ</strong> â помоÑÑ Ñ Ð´Ð¾ÑÑÑпом к жÑÑÐ½Ð°Ð»Ñ ÑепеÑÑ Ð¼Ð¾Ð¶Ð½Ð¾ полÑÑиÑÑ, не назÑÐ²Ð°Ñ ÑебÑ. ÐкÑан Ñ ÐºÐ»ÑÑом ÑÑал пÑоÑе и понÑÑнее.</li> <li data-num="1627"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>СÑÑаниÑа ÐонÑÑиÑÑÑии пÑиведена в поÑÑдок</strong> â заголовок и нÑмеÑаÑÐ¸Ñ Ð²ÑÑÐ¾Ð²Ð½ÐµÐ½Ñ Ð¿Ð¾ ÑеÑке, ÑÑÑки блоков поÑиненÑ, лиÑний Ð±Ð°Ð½Ð½ÐµÑ ÑбÑан. ÐÑновополагаÑÑий докÑÐ¼ÐµÐ½Ñ Ð¶ÑÑнала Ñнова вÑглÑÐ´Ð¸Ñ Ð´Ð¾ÑÑойно.</li> <li data-num="1628"><span class="changelog-tag changelog-tag--UX" data-tag-alias="UX">UX</span> <strong>ÐÐµÐ»ÐºÐ°Ñ Ð¿Ð¾Ð»Ð¸Ñовка</strong> â плаваÑÑие баннеÑÑ Ð°ÐºÐºÑÑаÑно оÑÑанавливаÑÑÑÑ Ñ Ð¾Ñбивки, ÑпиÑок подпиÑок в кабинеÑе вÑÑовнен по Ð»ÐµÐ²Ð¾Ð¼Ñ ÐºÑаÑ, блок «ТемÑ» в мобилÑном ÑедакÑоÑе вÑÑал вÑÐ¾Ð²ÐµÐ½Ñ Ñ ÑÑбÑикой и кнопками.</li> </ul> </div> </details> <details class="changelog-section"> <summary class="changelog-summary"><span class="changelog-meta"><span class="changelog-meta__version">v9.147</span><span class="changelog-meta__date">26-06-2026</span></span><h2 id="v9147-26-06-2026--каÑÑÑ-ÑмÑÑлов-ÑовмеÑÑное-ÑедакÑиÑование-в-ÑеалÑном-вÑемени-и-полнÑй-английÑкий-инÑеÑÑейÑ">ÐаÑÑÑ ÑмÑÑлов: ÑовмеÑÑное ÑедакÑиÑование в ÑеалÑном вÑемени. РполнÑй английÑкий инÑеÑÑейÑ</h2></summary> <div class="changelog-section__body"> <p>РиÑне Ñ ÐиÑкÑÑÑа поÑвилÑÑ Ð½Ð¾Ð²Ñй инÑÑÑÑÐ¼ÐµÐ½Ñ â «ÐаÑÑÑ ÑмÑÑлов»: живой гÑÐ°Ñ Ð¸Ð´ÐµÐ¹ и понÑÑий, коÑоÑÑй ÑообÑеÑÑво ÑедакÑиÑÑÐµÑ Ð²Ð¼ÐµÑÑе, в ÑеалÑном вÑемени, как обÑий докÑменÑ. РанглоÑзÑÑÐ½Ð°Ñ Ð²ÐµÑÑÐ¸Ñ Ð¶ÑÑнала дозÑела: пеÑеведено вÑÑ â Ð¾Ñ Ð¼Ð°Ð½Ð¸ÑеÑÑа до лиÑного кабинеÑа.</p> <h3 id="каÑÑÑ-ÑмÑÑлов">ÐаÑÑÑ ÑмÑÑлов</h3> <ul> <li data-num="1610"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> <strong>ÐовÑй Ñаздел <code>/maps</code></strong> â гÑÐ°Ñ Ð¸Ð´ÐµÐ¹ ÑообÑеÑÑва: ÑзлÑ-понÑÑиÑ, ÑвÑзи, клаÑÑеÑÑ Ð¸ оÑделÑнÑе Ð²Ð¸Ð´Ñ Ð´Ð»Ñ ÑазнÑÑ
ÑÑжеÑов. СложнÑе ÑемÑ, коÑоÑÑе не помеÑаÑÑÑÑ Ð² линейнÑй ÑекÑÑ, ÑепеÑÑ Ð¼Ð¾Ð¶Ð½Ð¾ ÑаÑкладÑваÑÑ Ð² пÑоÑÑÑанÑÑве â и видеÑÑ Ñеликом.</li> <li data-num="1611"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> <strong>РедакÑиÑÑем каÑÑÑ Ð²Ð¼ÐµÑÑе и одновÑеменно</strong> â видно, кÑо ÑейÑÐ°Ñ Ð½Ð° каÑÑе, кÑÑÑоÑÑ ÐºÐ¾Ð»Ð»ÐµÐ³ двигаÑÑÑÑ Ð² ÑеалÑном вÑемени, ÑаÑкладка Ñ Ð²ÑеÑ
одинаковаÑ. Ðлик по аваÑаÑÑ ÑÑаÑÑника â и Ð²Ñ ÑмоÑÑиÑе ÑÑда же, кÑда ÑмоÑÑÐ¸Ñ Ð¾Ð½.</li> <li data-num="1612"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> <strong>ÐбÑÑÐ¶Ð´ÐµÐ½Ð¸Ñ Ð¿ÑÑмо на ÑзлаÑ
</strong> â к ÐºÐ°Ð¶Ð´Ð¾Ð¼Ñ Ð¿Ð¾Ð½ÑÑÐ¸Ñ Ð¼Ð¾Ð¶Ð½Ð¾ оÑÑавиÑÑ ÐºÐ¾Ð¼Ð¼ÐµÐ½ÑаÑий или ÑеакÑиÑ. Ð¡Ð¿Ð¾Ñ Ð¾ ÑоÑмÑлиÑовке живÑÑ ÑÑдом Ñ Ñамой ÑоÑмÑлиÑовкой, а не ÑеÑÑеÑÑÑ Ð² ÑÑоÑоннем ÑаÑе.</li> <li data-num="1613"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> <strong>ÐÑÑоÑÐ¸Ñ Ð²ÐµÑÑий, оÑмена Ñагов и ÑкÑпоÑÑ</strong> â лÑбое ÑоÑÑоÑние каÑÑÑ Ð¼Ð¾Ð¶Ð½Ð¾ оÑкаÑиÑÑ, ÑлÑÑайное дейÑÑвие â оÑмениÑÑ, а гоÑовÑÑ ÐºÐ°ÑÑÑ Ð²ÑгÑÑзиÑÑ ÐºÐ°ÑÑинкой в PNG или SVG.</li> <li data-num="1614"><span class="changelog-tag changelog-tag--UX" data-tag-alias="UX">UX</span> <strong>ÐÑÑÑÑÐ°Ñ ÑабоÑа Ñ Ð±Ð¾Ð»ÑÑим гÑаÑом</strong> â гоÑÑÑие клавиÑи Ñо ÑпаÑгалкой по <code>?</code>, мÑлÑÑивÑÐ±Ð¾Ñ Ñамкой, гÑÑпповое пеÑеÑаÑкивание Ñзлов, ÑвоÑаÑивание клаÑÑеÑов. ÐÑÑпнÑе каÑÑÑ Ð¿ÐµÑеÑÑали бÑÑÑ Ð½ÐµÐ¿Ð¾Ð²Ð¾ÑоÑливÑми.</li> </ul> <h3 id="диÑкÑÑÑ-на-английÑком">ÐиÑкÑÑÑ Ð½Ð° английÑком</h3> <ul> <li data-num="1615"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> <strong>ÐнÑеÑÑÐµÐ¹Ñ <code>/en</code> пеÑеведÑн Ñеликом</strong> â не ÑолÑко пÑблиÑнÑе ÑÑÑаниÑÑ, но и лиÑнÑй кабинеÑ, ÑеÑновики и ÑведомлениÑ; ÑиÑла и ÑоÑÐ¼Ñ Ñлов â по пÑавилам английÑкого. ÐаÑаÑое в пÑоÑлом вÑпÑÑке доведено до конÑа.</li> <li data-num="1616"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> <strong>ÐаниÑеÑÑ, FAQ и ÑÑÑаниÑÑ Â«Ð Ð¶ÑÑнале» â на английÑком</strong> â ÑилоÑоÑÐ¸Ñ Ð¾ÑкÑÑÑой ÑедакÑии ÑиÑаеÑÑÑ ÑепеÑÑ Ð½Ð° двÑÑ
ÑзÑкаÑ
, вклÑÑÐ°Ñ ÑпеÑпÑоекÑÑ Ð¸ Ð±Ð°Ð·Ñ Ð·Ð½Ð°Ð½Ð¸Ð¹.</li> </ul> <h3 id="авÑоÑам">ÐвÑоÑам</h3> <ul> <li data-num="1617"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> <strong>ÐаÑеÑиал на ÑаÑÑмоÑÑении можно забÑаÑÑ</strong> â пеÑедÑмали пÑбликоваÑÑ? ÐÑпÑавленнÑй в ÑедакÑÐ¸Ñ Ð¼Ð°ÑеÑиал авÑÐ¾Ñ ÑепеÑÑ ÑдалÑÐµÑ Ñам, в Ñом ÑиÑле Ñ ÑелеÑона, â без пиÑÑма ÑедакÑии и ожиданиÑ.</li> <li data-num="1618"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> <strong>ÐдÑÐµÑ Ð¿ÑоÑÐ¸Ð»Ñ â Ñам Ñобой</strong> â киÑиллиÑеÑкое Ð¸Ð¼Ñ Ð°Ð²ÑомаÑиÑеÑки пÑевÑаÑаеÑÑÑ Ð² аккÑÑаÑнÑй лаÑинÑкий адÑÐµÑ ÑÑÑаниÑÑ. ÐÑаÑÐ¸Ð²Ð°Ñ ÑÑÑлка на пÑоÑÐ¸Ð»Ñ Ð±ÐµÐ· ÑÑÑной ÑÑанÑлиÑеÑаÑии.</li> <li data-num="1619"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> <strong>Ð¢Ð¾Ð½ÐºÐ°Ñ Ð½Ð°ÑÑÑойка ÑаÑÑÑлки</strong> â ÑÑÑаниÑа подпиÑок Ñ ÑÑмблеÑами: оÑклÑÑайÑе оÑделÑнÑе ÑÐ¸Ð¿Ñ Ð¿Ð¸Ñем, не оÑпиÑÑваÑÑÑ Ð¾Ñ Ð²Ñего. ÐбÑий пеÑеклÑÑаÑÐµÐ»Ñ â Ð´Ð»Ñ ÑеÑ
, ÐºÐ¾Ð¼Ñ Ð½Ñжно вÑÑ Ð¸Ð»Ð¸ ниÑего.</li> </ul> <h3 id="доÑÑÑп-и-надÑжноÑÑÑ">ÐоÑÑÑп и надÑжноÑÑÑ</h3> <ul> <li data-num="1620"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> <strong>ÐÑ
од ÑеÑез Google â Ñ Ð·ÐµÑкал</strong> â вÑлед за ÐÐонÑакÑе: когда оÑновной адÑÐµÑ Ð½ÐµÐ´Ð¾ÑÑÑпен, войÑи в жÑÑнал ÑеÑез Google-аккаÑÐ½Ñ Ð¼Ð¾Ð¶Ð½Ð¾ Ñ Ð»Ñбого зеÑкала.</li> <li data-num="1621"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>Ðконки ÑоÑÑеÑей Ð²Ð¸Ð´Ð½Ñ Ð² Safari</strong> â ÑеÑ
ниÑеÑÐºÐ°Ñ Ð¾ÑобенноÑÑÑ Safari делала иконки в Ñапке невидимÑми. ÐоÑинили â а заодно навели поÑÑдок в мобилÑном бÑÑгеÑ-менÑ.</li> <li data-num="1622"><span class="changelog-tag changelog-tag--SEC" data-tag-alias="SEC">SEC</span> <strong>ÐÑÑ Ð´Ð²Ðµ Ð²Ð¾Ð»Ð½Ñ Ð¾Ð±Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ð¹ безопаÑноÑÑи</strong> â закÑÑÑÑ ÑÑзвимоÑÑи в завиÑимоÑÑÑÑ
, а в CI поÑвилÑÑ Ð°Ð²ÑомаÑиÑеÑкий ÑлагбаÑм: ÑбоÑка Ñ Ð¸Ð·Ð²ÐµÑÑнÑми дÑÑами пÑоÑÑо не пÑойдÑÑ.</li> </ul> </div> </details> <details class="changelog-section"> <summary class="changelog-summary"><span class="changelog-meta"><span class="changelog-meta__version">v9.146</span><span class="changelog-meta__date">04-06-2026</span></span><h2 id="v9146-04-06-2026--обновлÑннаÑ-поддеÑжка-ин
1ÑÑÑÑменÑÑ-ÑÑаÑей-в-ÑкÑпо-ÑедакÑоÑаÑ
-и-дÑÑжелÑбнÑе-ÑкÑанÑ-Ñбоев">ÐбновлÑÐ½Ð½Ð°Ñ Ð¿Ð¾Ð´Ð´ÐµÑжка, инÑÑÑÑменÑÑ ÑÑаÑей в ÑкÑпо-ÑедакÑоÑаÑ
и дÑÑжелÑбнÑе ÑкÑÐ°Ð½Ñ Ñбоев</h2></summary> <div class="changelog-section__body"> <p>ÐÑпÑÑк о забоÑе: о ÑеÑ
, ÐºÐ¾Ð¼Ñ Ð½ÑÐ¶Ð½Ñ Ð¿Ð¾Ð¼Ð¾ÑÑ Ð¸ доÑÑÑп, о Ñ
ÑдожникаÑ
и поÑÑаÑ
â и о Ñом, как жÑÑнал ÑазговаÑÐ¸Ð²Ð°ÐµÑ Ñ Ð²Ð°Ð¼Ð¸, даже когда ÑÑо-Ñо поÑло не Ñак.</p> <h3 id="поддеÑжка-и-доÑÑÑп">ÐоддеÑжка и доÑÑÑп</h3> <ul> <li data-num="1598"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> <strong>СлÑжба поддеÑжки повзÑоÑлела</strong> â в окне поддеÑжки поÑвилиÑÑ Ð²ÐºÐ»Ð°Ð´ÐºÐ¸, неÑколÑко обÑаÑений ÑÑÐ°Ð·Ñ Ð¸ обÑзаÑелÑное поле конÑакÑа, а оÑибки обÑÑÑнÑÑÑÑÑ ÑеловеÑеÑким ÑзÑком. FAQ пополнилÑÑ Ð¾ÑвеÑами под ÑвежÑÑ Ð²Ð¾Ð»Ð½Ñ Ð±Ð»Ð¾ÐºÐ¸Ñовок.</li> <li data-num="1599"><span class="changelog-tag changelog-tag--UX" data-tag-alias="UX">UX</span> <strong>«ÐолÑÑиÑÑ VPN» â на видÑ</strong> â кнопка помоÑи Ñ Ð´Ð¾ÑÑÑпом видна в Ñапке ÑÑазÑ, памÑÑка ÑвÑÑнÑÑа до воÑÑÑебованиÑ. Тем, ÐºÐ¾Ð¼Ñ Ð½Ñжен ÑвободнÑй инÑеÑнеÑ, не пÑиÑ
одиÑÑÑ ÐµÐ³Ð¾ иÑкаÑÑ Ð¿Ð¾ ÑайÑÑ.</li> </ul> <h3 id="ÑкÑпо-ÑедакÑоÑÑ">ÐкÑпо-ÑедакÑоÑÑ</h3> <ul> <li data-num="1600"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> <strong>ÐкÑпо-ÑедакÑоÑÑ Ð´Ð¾Ð³Ð½Ð°Ð»Ð¸ ÑÑаÑÑи</strong> â ÑпойлеÑ, оглавление, «ÑиÑаÑÑ Ñакже», ÑноÑки и иÑÑоÑÐ¸Ñ Ð²ÐµÑÑий ÑепеÑÑ ÐµÑÑÑ Ð¸ в ÑедакÑоÑаÑ
лиÑеÑаÑÑÑÑ, галеÑей, мÑзÑки и видео. Ð¥ÑдожеÑÑвеннÑм маÑеÑиалам â ÑÐ¾Ñ Ð¶Ðµ инÑÑÑÑменÑаÑий, ÑÑо и ÑÑаÑÑÑм.</li> <li data-num="1601"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> <strong>ХоÑкей Ð´Ð»Ñ Ð¿Ð¾ÑÑов</strong> â Ctrl/Cmd+Shift+Enter ÑÐºÐ»ÐµÐ¸Ð²Ð°ÐµÑ Ð°Ð±Ð·Ð°ÑÑ Ð² ÑÑиÑ
оÑвоÑнÑÑ ÑÑÑоÑÑ. СÑиÑ
и веÑÑÑаÑÑÑÑ Ñ ÐºÐ»Ð°Ð²Ð¸Ð°ÑÑÑÑ, без плÑÑок Ñ ÑоÑмаÑиÑованием.</li> </ul> <h3 id="жÑÑнал-и-кабинеÑ">ÐÑÑнал и кабинеÑ</h3> <ul> <li data-num="1602"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>СÑÑаниÑа авÑоÑов показÑÐ²Ð°ÐµÑ Ð²ÑеÑ
</strong> â ÑпиÑок авÑоÑов обÑÑвалÑÑ Ð¸ оÑÑавлÑл пÑÑÑÑе бÑквеннÑе Ñамки. ТепеÑÑ Ð½Ð° меÑÑе каждÑй, и вÑÑÑÑка ÑовнаÑ.</li> <li data-num="1603"><span class="changelog-tag changelog-tag--UX" data-tag-alias="UX">UX</span> <strong>ÐенÑа РедакÑии без дна</strong> â во вкладкаÑ
«ÐÑе» и «ЧÑлан» поÑвилаÑÑ ÐºÐ½Ð¾Ð¿ÐºÐ° «показаÑÑ ÐµÑÑ» за вÑÑ Ð²ÑемÑ, а ÑÑÑаниÑÑ Ð»ÐµÐ½ÑÑ ÑÑали легÑе и гÑÑзÑÑÑÑ Ð±ÑÑÑÑее.</li> <li data-num="1604"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> <strong>ÐиÑÑма ÑаÑÑÑлки обÑели веб-веÑÑиÑ</strong> â каждое пиÑÑмо можно оÑкÑÑÑÑ Ð² бÑаÑзеÑе, а оÑпиÑка ведÑÑ Ð½Ð° аккÑÑаÑнÑÑ ÑÑÑаниÑÑ Ñ Ð¿Ð¾Ð½ÑÑнÑми названиÑми ÑаÑÑÑлок вмеÑÑо ÑеÑ
ниÑеÑкиÑ
кодов.</li> <li data-num="1605"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>Ð£Ð²ÐµÐ´Ð¾Ð¼Ð»ÐµÐ½Ð¸Ñ Ð¿ÐµÑеÑÑали пÑопадаÑÑ</strong> â ÑÐµÐ´ÐºÐ°Ñ Ð³Ð¾Ð½ÐºÐ° пÑи вÑ
оде оÑÑавлÑла колоколÑÑик пÑÑÑÑм. ТепеÑÑ Ñоновое Ñоединение ÑÑÑанавливаеÑÑÑ Ð½Ð°Ð´Ñжно, и ÑÐ²ÐµÐ´Ð¾Ð¼Ð»ÐµÐ½Ð¸Ñ Ð²Ñегда на меÑÑе.</li> <li data-num="1606"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>ЧеÑновик можно ÑдалиÑÑ ÑолÑко Ñвой</strong> â заÑиÑа Ð¾Ñ ÑлÑÑайного ÑÐ´Ð°Ð»ÐµÐ½Ð¸Ñ ÑÑжого ÑеÑновика в ÑовмеÑÑной ÑабоÑе.</li> <li data-num="1607"><span class="changelog-tag changelog-tag--UX" data-tag-alias="UX">UX</span> <strong>ÐкÑÐ°Ð½Ñ Ñбоев говоÑÑÑ Ð¿Ð¾-ÑеловеÑеÑки</strong> â вмеÑÑо ÑÑевожного «СеÑÐ²ÐµÑ Ð½ÐµÐ´Ð¾ÑÑÑпен» â Ñпокойное обÑÑÑнение в ÑиÑменном ÑÑÑно-белом ÑÑиле. Ðаже когда ÑÑо-Ñо ÑломалоÑÑ, ÐиÑкÑÑÑ Ð¾ÑÑаÑÑÑÑ Ñобой.</li> </ul> <h3 id="невидимаÑ-ÑабоÑа">ÐÐµÐ²Ð¸Ð´Ð¸Ð¼Ð°Ñ ÑабоÑа</h3> <ul> <li data-num="1608"><span class="changelog-tag changelog-tag--SEO" data-tag-alias="SEO">SEO</span> <strong>ÐолÑÑÐ°Ñ ÑбоÑка Ð´Ð»Ñ Ð¿Ð¾Ð¸Ñковиков</strong> â ÑоÑнее ÑазмеÑка ÑÑÑÐ°Ð½Ð¸Ñ Ð¸ подкаÑÑов, ÑÑÑойÑивее ÑбоÑка каÑÑ ÑайÑа. ÐаÑеÑÐ¸Ð°Ð»Ñ Ð±ÑÑÑÑее и пÑавилÑнее попадаÑÑ Ð² вÑдаÑÑ.</li> <li data-num="1609"><span class="changelog-tag changelog-tag--SEC" data-tag-alias="SEC">SEC</span> <strong>ÐакÑÑÑа волна ÑÑзвимоÑÑей</strong> â обновлÑн деÑÑÑок завиÑимоÑÑей Ñ Ð¸Ð·Ð²ÐµÑÑнÑми пÑоблемами и ÑÑÐ¸Ð»ÐµÐ½Ñ Ð²Ð½ÑÑÑенние пÑовеÑки. ЧиÑаÑÐµÐ»Ñ ÑÑо не видно â и ÑÑо лÑÑÑÐ°Ñ Ð½Ð¾Ð²Ð¾ÑÑÑ.</li> </ul> </div> </details> <details class="changelog-section"> <summary class="changelog-summary"><span class="changelog-meta"><span class="changelog-meta__version">v9.145</span><span class="changelog-meta__date">17-05-2026</span></span><h2 id="v9145-17-05-2026--диÑкÑÑÑ-на-английÑком-полноÑÑÑÑ-пеÑеведенÑ-вÑе-ÑекÑÑÑ-инÑеÑÑейÑа">ÐиÑкÑÑÑ Ð½Ð° английÑком: полноÑÑÑÑ Ð¿ÐµÑÐµÐ²ÐµÐ´ÐµÐ½Ñ Ð²Ñе ÑекÑÑÑ Ð¸Ð½ÑеÑÑейÑа</h2></summary> <div class="changelog-section__body"> <p>СоÑни ÑÑÑок, коÑоÑÑе на <code>discours.io/en</code> еÑÑ Ð¾ÑÑавалиÑÑ ÑÑÑÑкими, ÑепеÑÑ Ð½Ð° английÑком: главнаÑ, Ñеги, подкаÑÑÑ, ÑÑÑаниÑа поддеÑжки, пÑоÑилÑ, мои пÑбликаÑии, ÑедакÑÐ¾Ñ ÑÑаÑей.</p> <ul> <li data-num="1593"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> <strong>ÐнÑеÑÑÐµÐ¹Ñ /en полноÑÑÑÑ Ð½Ð° английÑком</strong> â заголовки Ñазделов, опиÑаниÑ, FAQ, пÑÑÑÑе ÑоÑÑоÑниÑ, ÑÑÐ
1»ÑÐ¸Ð¿Ñ Ð¸ подÑказки пеÑеведенÑ. ÐнглоÑзÑÑнÑй ÑиÑаÑÐµÐ»Ñ Ð²Ð¸Ð´Ð¸Ñ Ð¸Ð½ÑеÑÑÐµÐ¹Ñ Ñеликом на Ñодном ÑзÑке.</li> <li data-num="1594"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> <strong>РедакÑÐ¾Ñ â на английÑком Ð¾Ñ Ð¿ÐµÑвой до поÑледней кнопки</strong> â вÑе модалки пеÑеведенÑ: вÑÑавка ÑÑÑлки и видео, ÑноÑки, импоÑÑ/ÑкÑпоÑÑ, наÑÑÑойки пÑбликаÑии, гоÑÑÑие клавиÑи, пÑиглаÑение ÑоавÑоÑов, ÑепоÑÑ Ð¾ баге. СоздаваÑÑ ÑÑаÑÑÑ Ð½Ð° <code>/en</code> ÑепеÑÑ Ð¼Ð¾Ð¶Ð½Ð¾ без ÑловаÑÑ Ð¿Ð¾Ð´ ÑÑкой.</li> <li data-num="1595"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> <strong>СÑÑаниÑа поддеÑжки пеÑеведена полноÑÑÑÑ</strong> â на <code>/help</code> на английÑком ÑепеÑÑ Ð¸ вÑÑÑпление, и ÑилоÑоÑÐ¸Ñ Ð¶ÑÑнала, и FAQ-блоки. Тон â лиÑеÑаÑÑÑнÑй, как и Ñ ÑÑÑÑкой веÑÑии.</li> <li data-num="1596"><span class="changelog-tag changelog-tag--UX" data-tag-alias="UX">UX</span> <strong>ÐÑиглаÑение ÑоавÑоÑов пеÑеклÑÑÐ°ÐµÑ ÑзÑк на леÑÑ</strong> â оÑкÑÑли модалкÑ, пеÑеклÑÑили Ð»Ð¾ÐºÐ°Ð»Ñ Ð² бÑаÑзеÑе â Ñоли, ÑÑаÑÑÑÑ Ð¸ обÑаÑнÑй оÑÑÑÑÑ Â«3 days left» обновÑÑÑÑ Ð±ÐµÐ· пеÑезагÑÑзки.</li> <li data-num="1597"><span class="changelog-tag changelog-tag--UX" data-tag-alias="UX">UX</span> <strong>Telegram-Ð±Ð¾Ñ Ð² наÑÑÑойкаÑ
говоÑÐ¸Ñ Ð½Ð° двÑÑ
ÑзÑкаÑ
</strong> â англоÑзÑÑнÑй авÑÐ¾Ñ Ð²Ð¸Ð´Ð¸Ñ Ð² пÑоÑиле, ÑÑо @DiscoursPostBot пÑиÑлÑÑ ÑÑаÑÑÑÑ Ð¼Ð°ÑеÑиалов и ÑедакÑионнÑе ÑведомлениÑ. ÐенÑÑе пÑопÑÑеннÑÑ
пиÑем из-за ÑзÑкового баÑÑеÑа.</li> </ul> <p>Ðа оÑеÑеди â пеÑÐµÐ²Ð¾Ð´Ñ Ð¾Ð¿Ð¸Ñаний подкаÑÑов на ÑÑоÑоне CMS (ÑейÑÐ°Ñ Ñами опиÑÐ°Ð½Ð¸Ñ Ð¾ÑÑаÑÑÑÑ ÑÑÑÑкими; UI-обÑÑÑка «Listen wherever you prefer» â Ñже на английÑком).</p> </div> </details> <details class="changelog-section"> <summary class="changelog-summary"><span class="changelog-meta"><span class="changelog-meta__version">v9.144</span><span class="changelog-meta__date">16-05-2026</span></span><h2 id="v9144-16-05-2026--обложки-дÑÑаÑ-мобилÑнÑй-инÑеÑÑейÑ-плоÑнее-каÑÑа-ÑайÑа-до-кÑаÑ-жÑÑнала">Ðбложки дÑÑаÑ, мобилÑнÑй инÑеÑÑÐµÐ¹Ñ Ð¿Ð»Ð¾Ñнее, каÑÑа ÑайÑа до кÑÐ°Ñ Ð¶ÑÑнала</h2></summary> <div class="changelog-section__body"> <p>ÐвÑоÑÑкÑÑ ÑоÑогÑаÑÐ¸Ñ Ð±Ð¾Ð»ÑÑе не пÑиÑ
одиÑÑÑ Ð¿Ð¾Ð´Ð³Ð¾Ð½ÑÑÑ Ð¿Ð¾Ð´ ÑоÑÐ¼Ð°Ñ â обложка ÑÑаÑÑи Ñама Ð»Ð¾Ð²Ð¸Ñ ÐµÑ Ð¿ÑопоÑÑии. Шапка пеÑеÑÑала дÑÑгаÑÑÑÑ Ð¿Ñи пÑокÑÑÑке, кнопки ÑоÑнее под палÑÑем, ÑÑение Ñ ÑелеÑона ÑÑало плоÑнее и Ñпокойнее. РпоиÑковикам оÑкÑÑлиÑÑ Ð²Ñе маÑеÑиалÑ, пÑинÑÑÑе ÑообÑеÑÑвом â ÐºÐ°Ð¶Ð´Ð°Ñ Ð½Ð¾Ð²Ð°Ñ Ð¿ÑбликаÑÐ¸Ñ Ð±ÑÑÑÑее доÑ
Ð¾Ð´Ð¸Ñ Ð´Ð¾ ÑиÑаÑелÑ.</p> <h3 id="обложки-и-видимоÑÑÑ-в-поиÑке">Ðбложки и видимоÑÑÑ Ð² поиÑке</h3> <ul> <li data-num="1579"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> <strong>Ðбложка дÑÑÐ¸Ñ Ð¿Ð¾Ð´ каÑÑинкÑ</strong> â ÑанÑÑе обложка ÑÑаÑÑи бÑла жÑÑÑко 16:9 или 4:3, и непÑопоÑÑионалÑнÑе Ñнимки обÑезалиÑÑ ÑÑодливо. ТепеÑÑ Ð¿ÑопоÑÑии плавно пеÑеÑекаÑÑ Ð¼ÐµÐ¶Ð´Ñ 4:3 и 16:9 в завиÑимоÑÑи Ð¾Ñ Ð¸ÑÑ
одного изобÑажениÑ. ÐвÑоÑÑÐºÐ°Ñ ÑоÑогÑаÑÐ¸Ñ Ð¶Ð¸Ð²ÑÑ Ð² Ñой ÑоÑме, в коÑоÑой ÐµÑ ÑнÑл авÑоÑ.</li> <li data-num="1580"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> <strong>ÐаÑÑа ÑайÑа доÑÑгиваеÑÑÑ Ð´Ð¾ вÑеÑ
пÑинÑÑÑÑ
маÑеÑиалов</strong> â ÑанÑÑе в sitemap попадали ÑолÑко опÑбликованнÑе. ТепеÑÑ â и пÑинÑÑÑе ÑообÑеÑÑвом, и оÑложеннÑе. ÐÐ°Ð¶Ð´Ð°Ñ Ð¿ÑбликаÑÐ¸Ñ Ð±ÑÑÑÑее наÑ
Ð¾Ð´Ð¸Ñ ÑиÑаÑÐµÐ»Ñ ÑеÑез поиÑковÑÑ Ð²ÑдаÑÑ.</li> </ul>
1 <h3 id="мобилÑнÑй-инÑеÑÑейÑ-и-Ñапка">ÐобилÑнÑй инÑеÑÑÐµÐ¹Ñ Ð¸ Ñапка</h3> <ul> <li data-num="1581"><span class="changelog-tag changelog-tag--UX" data-tag-alias="UX">UX</span> <strong>Ðнопка «навеÑÑ
» â компакÑнее и говоÑÑÑаÑ</strong> â ÑÑÑелка по ÑенÑÑÑ, пÑи наведении инвеÑÑиÑÑÐµÑ ÑвеÑ, ÑÑлÑип обÑÑÑнÑеÑ, ÑÑо пÑоизойдÑÑ. Ðе загадка из Ñгла, а понÑÑнÑй инÑÑÑÑменÑ.</li> <li data-num="1582"><span class="changelog-tag changelog-tag--UX" data-tag-alias="UX">UX</span> <strong>Шапка пеÑеÑÑала дÑÑгаÑÑÑÑ Ð¿Ñи пÑокÑÑÑке</strong> â ÑанÑÑе пÑи медленной пÑокÑÑÑке ÑкÑÑÑÐ°Ñ Ñапка могла пÑÑгаÑÑ Ð²Ð²ÐµÑÑ
-вниз. ТепеÑÑ â ÑÑÑойÑивÑй плавнÑй пеÑеÑ
од, и взглÑд не ÑеÑÑеÑÑÑ Ð² маÑеÑиале.</li> <li data-num="1583"><span class="changelog-tag changelog-tag--UX" data-tag-alias="UX">UX</span> <strong>ÐобилÑное Ð¼ÐµÐ½Ñ Ð½Ðµ вÑзÑÐ²Ð°ÐµÑ ÑлÑÑайнÑÑ Ð¿ÐµÑезагÑÑзкÑ</strong> â на iOS жеÑÑ Ð¾ÑкÑÑÑÐ¸Ñ Ð¼ÐµÐ½Ñ Ð¼Ð¾Ð³ ÑÑабоÑаÑÑ ÐºÐ°Ðº pull-to-refresh и ÑбÑоÑиÑÑ ÑÑÑаниÑÑ. ÐолÑÑе Ð½ÐµÑ â оÑкÑÑÑие Ð¼ÐµÐ½Ñ Ð±Ð¾Ð»ÑÑе не ÑноÑÐ¸Ñ Ð²Ð°Ñ Ð¾Ð±ÑаÑно к ленÑе.</li> <li data-num="1584"><span class="changelog-tag changelog-tag--UX" data-tag-alias="UX">UX</span> <strong>Ðконки и Ð¿Ð°Ð½ÐµÐ»Ñ Ð¿Ð¾Ð¸Ñка в ÑедакÑоÑе â на одной линии</strong> â Ñапка и инÑÑÑÑменÑÑ ÑедакÑоÑа вÑÑÐ¾Ð²Ð½ÐµÐ½Ñ Ð²Ð¸Ð·ÑалÑно, без «пÑÑжков» пÑи пеÑеклÑÑении Ñежимов. ÐÐ»Ð°Ð·Ñ Ñпокойнее, ÑÑкам ÑоÑнее.</li> <li data-num="1585"><span class="changelog-tag changelog-tag--UX" data-tag-alias="UX">UX</span> <strong>Ðнопки оÑенки в подвале â компакÑнее на ÑелеÑонаÑ
</strong> â занимаÑÑ Ð¼ÐµÐ½ÑÑе меÑÑа, не пеÑекÑÑваÑÑ Ñинал ÑекÑÑа. ÐоÑиÑаÑÑ ÑÑаÑÑÑ ÑепеÑÑ Ð¼Ð¾Ð¶Ð½Ð¾ без визÑалÑного ÑÑма.</li> <li data-num="1586"><span class="changelog-tag changelog-tag--UX" data-tag-alias="UX">UX</span> <strong>ÐанÑÑ Ð¸ ÑÑбÑики â «ÐÑÑе», «РепоÑÑажи», «ÐнÑеÑвÑÑ»</strong> â жÑÑналÑÐ½Ð°Ñ Ð²ÑÑÑÑка вмеÑÑо ÑÑÑоÑнÑÑ
бÑкв в боковом менÑ. ÐелоÑÑ, но ÐиÑкÑÑÑ Ð²ÑглÑÐ´Ð¸Ñ ÐºÐ°Ðº жÑÑнал, а не как лог Ñайловой ÑиÑÑемÑ.</li> </ul> <h3 id="ÑÑение-и-ÑедакÑоÑ">ЧÑение и ÑедакÑоÑ</h3> <ul> <li data-num="1587"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>СноÑки не ÑводÑÑ Ð½Ð° главнÑÑ Ð¸Ð· Telegram-Android</strong> â нажаÑие на ÑноÑÐºÑ Ð²Ð½ÑÑÑи WebView Telegram-Android ÑанÑÑе оÑкÑÑвало главнÑÑ discours.io вмеÑÑо пÑокÑÑÑки к пÑимеÑаниÑ. ТепеÑÑ ÑноÑка ведÑÑ ÑÑда, кÑда обеÑаеÑ.</li> <li data-num="1588"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>ЧиÑÑка заголовка пÑи ÑоÑ
Ñанении</strong> â лиÑние Ñеги в заголовке ÑÑаÑÑи (поÑле вÑÑавки из бÑаÑзеÑа или Word) ÑнимаÑÑÑÑ Ð°Ð²ÑомаÑиÑеÑки. Ðаголовок оÑÑаÑÑÑÑ Ð·Ð°Ð³Ð¾Ð»Ð¾Ð²ÐºÐ¾Ð¼, без мÑÑоÑа из иÑÑ
одного бÑÑеÑа.</li> <li data-num="1589"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>ÐÑмÑÑленное пÑевÑÑ Ð¿ÑоÑÐ¸Ð»Ñ Ð°Ð²ÑоÑа</strong> â еÑли Ñ Ð°Ð²ÑоÑа пÑÑÑое bio, пÑи ÑеÑинге пÑоÑÐ¸Ð»Ñ Ð² пÑевÑÑ Ð¿Ð¾ÑвиÑÑÑ Ð²Ð½ÑÑнÑй fallback вмеÑÑо ÑеÑ
ниÑеÑкой пÑÑÑоÑÑ. ÐеÑвое впеÑаÑление о коллеге â не Â«Ð½ÐµÑ Ð´Ð°Ð½Ð½ÑÑ
».</li> </ul> <h3 id="вÑ
од-и-админка">ÐÑ
од и админка</h3> <ul> <li data-num="1590"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> <strong>ÐÑ
од ÑеÑез ÐÐонÑакÑе ÑабоÑÐ°ÐµÑ Ð½Ð° зеÑкалаÑ
</strong> â ÑанÑÑе OAuth ÑеÑез VK бÑл ÑолÑко на оÑновном домене. ТепеÑÑ â на лÑбом зеÑкале. Ðогда оÑновной ÑÐ°Ð¹Ñ Ð²Ñеменно недоÑÑÑпен, двеÑÑ Ð² жÑÑнал оÑÑаÑÑÑÑ Ð¾ÑкÑÑÑой.</li> <li data-num="1591"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> <strong>СÑÑÑÑик маÑеÑиалов Ñ Ñегов в админке</strong> â Ñ ÐºÐ°Ð¶Ð´Ð¾Ð³Ð¾ Ñега виден ÑÑÑÑÑик пÑбликаÑий ÑÑÐ°Ð·Ñ Ð² ÑпиÑке, без оÑкÑÑÑÐ¸Ñ ÐµÐ³Ð¾ ÑÑÑаниÑÑ. Удобно, когда нÑжно навеÑÑи поÑÑдок в ÑемаÑ
.</li> </ul> <h3 id="наблÑдаемоÑÑÑ">ÐаблÑдаемоÑÑÑ</h3> <ul> <li data-num="1592"><span class="changelog-tag changelog-tag--DEVOPS" data-tag-alias="DEVOPS">DEVOPS</span> <strong>ТиÑе и ÑоÑнее логи оÑибок</strong> â поÑок мÑÑоÑнÑÑ
ÑобÑÑий (ÑаÑÑиÑÐµÐ½Ð¸Ñ Ð±ÑаÑзеÑа, ÑеÑевÑе ÑаймаÑÑÑ Ñ ÑиÑаÑелей, ÑоновÑе Ñаб-меÑÑики) пеÑеÑÑал заглÑÑаÑÑ ÑеалÑнÑе пÑоблемÑ. ÐнÑиденÑÑ Ð»Ð¾Ð²ÑÑÑÑ Ð·Ð° минÑÑÑ, а не за ÑаÑÑ â знаÑÐ¸Ñ Ð¸ ÑинÑÑÑÑ ÑанÑÑе, Ñем кÑо-Ñо из Ð²Ð°Ñ ÑÑÐ¿ÐµÐµÑ Ð¾ ниÑ
напиÑаÑÑ.</li> </ul> </div> </details> <details class="changelog-section"> <summary class="changelog-summary"><span class="changelog-meta"><span class="changelog-meta__version">v9.143</span><span class="changelog-meta__date">02-05-2026</span></span><h2 id="v9143-02-05-2026--маниÑеÑÑ-ÑÑÑаниÑа-голоÑ-диÑкÑÑÑа-п
1ÑоÑив-ÑензÑÑÑ">ÐаниÑеÑÑ-ÑÑÑаниÑа: Ð³Ð¾Ð»Ð¾Ñ ÐиÑкÑÑÑа пÑоÑив ÑензÑÑÑ</h2></summary> <div class="changelog-section__body"> <p><code>/stop-censorship</code> â ÑÑо наÑе пÑÑмое обÑаÑение к Ñем, ÑеÑез ÑÑи ÑÑки идÑÑ Ð±Ð»Ð¾ÐºÐ¸Ñовки. Ðе ÑгÑоза, не ÑпÑÑк â ÑазговоÑ. ÐоÑле доводки ÑÑÑаниÑа ÑÑала Ñакой, какой и задÑмÑвалаÑÑ: понÑÑной, ÑеловеÑеÑкой, ÑÑплой. ÐÑли Ð²Ñ Ð½Ðµ ÑÐµÐ½Ð·Ð¾Ñ â заÑ
одиÑе, Ð¼Ñ ÑÐ°Ð´Ñ ÑобеÑедникÑ.</p> <ul> <li data-num="1575"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> <strong>ФиÑÐ¼ÐµÐ½Ð½Ð°Ñ ÑипогÑаÑÐ¸Ñ ÐиÑкÑÑÑа</strong> â ÐонÑÑиÑÑÑÐ¸Ñ Ð¸ акÑенÑÑ Ð½Ð°Ð±ÑÐ°Ð½Ñ Muller, Ñело ÑекÑÑа â Spectral. Ð¢Ð¾Ñ Ð¶Ðµ визÑалÑнÑй голоÑ, ÑÑо Ñ Ð¶ÑÑнала: ÑÑÑаниÑа не «даÑбоÑд блокиÑовок», а ÑаÑÑÑ ÐиÑкÑÑÑа.</li> <li data-num="1576"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> <strong>ТÑплое обÑаÑение в конÑе</strong> â «ÐÑли Ð²Ñ Ñоже не ÑÐµÐ½Ð·Ð¾Ñ â давайÑе ÑазбеÑÑмÑÑ Ð²Ð¼ÐµÑÑе». Ðе канÑелÑÑÑкое «ÑвÑжиÑеÑÑ Ñ Ð½Ð°Ð¼Ð¸Â», а пÑÑмой ÑеловеÑеÑкий ÑазговоÑ. ÐиÑкÑÑÑ Ð¾ÑкÑÑÐ²Ð°ÐµÑ Ð´Ð²ÐµÑÑ, а не ÑÑÑÐ¾Ð¸Ñ ÐµÑÑ Ð¾Ð´Ð½Ñ ÑÑенÑ.</li> <li data-num="1577"><span class="changelog-tag changelog-tag--UX" data-tag-alias="UX">UX</span> <strong>ÐонÑÑиÑÑÑÐ¸Ñ ÑобÑана воедино</strong> â ÑÑаÑÑÑ 29 (оÑнова вÑего ÑиÑа) подана ÑелÑнÑм ÑÑагменÑом, без визÑалÑного ÑазделениÑ. СмÑÑловÑе акÑенÑÑ â на ÑмÑÑле, не на оÑоÑмлении.</li> <li data-num="1578"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>ÐинимÑм Ñ
Ñома, макÑимÑм ÑмÑÑла</strong> â лиÑние UI-ÑлеменÑÑ (вÑеменнÑй ÑÑÑÑÑик блокиÑовок, ÑеÑ
ниÑеÑкие ÑазделиÑели) ÑбÑанÑ. Ðа ÑÑÑаниÑе â ÑолÑко Ñо, Ñади Ñего она ÑÑÑеÑÑвÑеÑ.</li> </ul> </div> </details> <details class="changelog-section"> <summary class="changelog-summary"><span class="changelog-meta"><span class="changelog-meta__version">v9.142</span><span class="changelog-meta__date">29-04-2026</span></span><h2 id="v9142-29-04-2026--ÑÑÑлки-коÑоÑÑе-не-«пÑоÑÑÑ
аÑÑ»-новÑе-видео-и-болÑÑой-seo-апдейÑ">СÑÑлки, коÑоÑÑе не «пÑоÑÑÑ
аÑÑ», новÑе видео и болÑÑой SEO-апдейÑ</h2></summary> <div class="changelog-section__body"> <p>ÐеÑеименовали ÑÑаÑÑÑ â ÑÑаÑÐ°Ñ ÑÑÑлка пÑÐ¾Ð´Ð¾Ð»Ð¶Ð°ÐµÑ ÑабоÑаÑÑ. ХоÑеÑÑÑ Ð²ÑÑавиÑÑ Ð²Ð¸Ð´ÐµÐ¾ не Ñ YouTube, а Ñ Ðейл.ÑÑ Ð¸Ð»Ð¸ ÐдноклаÑÑников â пожалÑйÑÑа. Ð Ð´Ð»Ñ ÑеÑ
, кÑо пÑиÑ
Ð¾Ð´Ð¸Ñ Ðº нам из поиÑковиков, ÑелÑй Ð¿Ð°ÐºÐµÑ ÑлÑÑÑений: подÑобнÑе меÑаданнÑе, голоÑовое ÑÑение ÑÑаÑей, ÑоÑогÑаÑии в индекÑе каÑÑинок.</p> <h3 id="ÑÑÑлки-коÑоÑÑе-живÑÑ">СÑÑлки, коÑоÑÑе живÑÑ</h3> <ul> <li data-num="1566"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> <strong>ÐдÑеÑÐ½Ð°Ñ Ð¸ÑÑоÑÐ¸Ñ ÑÑаÑей: ÑÑаÑÑе ÑÑÑлки навÑегда</strong> â Ñменили заголовок, попÑавили URL, заменили Ñлаг â вÑе ÑÑаÑÑе ÑÑÑлки в Telegram, ÐÐонÑакÑе, ÑаÑÑÑлкаÑ
и поиÑке авÑомаÑиÑеÑки ведÑÑ Ð½Ð° акÑÑалÑнÑй адÑеÑ. ÐикакиÑ
404 поÑле Ñедизайна заголовка, никакиÑ
поÑеÑÑннÑÑ
ÑиÑаÑелей.</li> <li data-num="1567"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> <strong>ÐÑÑÐ¼Ð°Ñ ÑÑÑлка на ÑеÑновик</strong> â ÑоавÑÐ¾Ñ Ð¿Ð¾Ð»ÑÑÐ°ÐµÑ <code>/draft/<код></code> и Ð¿Ð¾Ð¿Ð°Ð´Ð°ÐµÑ Ð¿ÑÑмо в нÑжнÑй ÑеÑновик, без поиÑка в ÑпиÑке. СовмеÑÑÐ½Ð°Ñ ÑабоÑа наÑинаеÑÑÑ Ñ Ð¾Ð´Ð½Ð¾Ð³Ð¾ клика.</li> </ul> <h3 id="новÑе-видеоÑмбедÑ">ÐовÑе видеоÑмбедÑ</h3> <ul> <li data-num="1568"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> <strong>Ðидео Ñ my.mail.ru, ok.ru и vkvideo.ru</strong> â Ñолики Ñ ÑÑиÑ
ÑеÑвиÑов вÑÑавлÑÑÑÑÑ Ð² маÑеÑиал Ñак же легко, как YouTube или Vimeo. ХоÑоÑÐ°Ñ Ð½Ð¾Ð²Ð¾ÑÑÑ Ð´Ð»Ñ Ð°Ð²ÑоÑов, ÑÑи иÑÑоÑники живÑÑ ÑолÑко Ñам.</li> </ul> <h3 id="конÑенÑ-в-поиÑке">ÐонÑÐµÐ½Ñ Ð² поиÑке</h3> <ul> <li data-num="1569"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> <strong>ÐÑоÑили авÑоÑов ÑвÑÐ·Ð°Ð½Ñ Ñ Ð¸Ñ
ÑоÑÑеÑÑми</strong> â Google понимаеÑ, ÑÑо Telegram-канал, ÐÐонÑакÑе и Twitter авÑоÑа â ÑÑо один и ÑÐ¾Ñ Ð¶Ðµ Ñеловек, и подÑÑÐ³Ð¸Ð²Ð°ÐµÑ Ð²Ñе его пÑбликаÑии в Ð¾Ð´Ð½Ñ ÑÑÑаниÑÑ Ð²ÑдаÑи. ÐвÑÐ¾Ñ ÑÑановиÑÑÑ Ð²Ð¸Ð´Ð½ÐµÐµ не ÑолÑко в ÐиÑкÑÑÑе, но и за его пÑеделами.</li> <li data-num="1570"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> <strong>ÐолоÑовÑе помоÑники заÑиÑÑваÑÑ ÑÑаÑÑи</strong> â Speakable-ÑазмеÑка добавлена в пÑбликаÑии: Google Assistant и Siri Ð
1·Ð½Ð°ÑÑ, какÑÑ ÑаÑÑÑ ÑÑаÑÑи пÑоговоÑиÑÑ Ð²ÑлÑÑ
. СлÑÑаÑÑ ÐиÑкÑÑÑ Ð½Ð° пÑобежке â ÑепеÑÑ Ð½Ðµ меÑаÑоÑа.</li> <li data-num="1571"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> <strong>ÐллÑÑÑÑаÑии ÑÑаÑей â в индекÑе каÑÑинок Google</strong> â обложки и ÑоÑогÑаÑии маÑеÑиалов ÑобиÑаÑÑÑÑ Ð² оÑделÑнÑй image sitemap. ТепеÑÑ Ð¾Ð½Ð¸ наÑ
одÑÑÑÑ ÑеÑез поиÑк по каÑÑинкам и пÑиводÑÑ ÑиÑаÑелей обÑаÑно к ÑÑаÑÑе.</li> <li data-num="1572"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> <strong>Свежие маÑеÑÐ¸Ð°Ð»Ñ Ð² Google News</strong> â оÑделÑнÑй sitemap Ð´Ð»Ñ Ð¿ÑбликаÑий поÑледниÑ
48 ÑаÑов даÑÑ Ð¸Ð¼ ÑÐ°Ð½Ñ Ð¿Ð¾Ð¿Ð°ÑÑÑ Ð² новоÑÑнÑÑ Ð²ÑдаÑÑ, не дожидаÑÑÑ Ð¾Ð±ÑÑной индекÑаÑии.</li> <li data-num="1573"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>Robots.txt без ÑÑÑаÑевÑего ÑÑма</strong> â ÑÑаÑÑе запÑеÑÑ Ð´Ð»Ñ UTM-паÑамеÑÑов ÑбÑÐ°Ð½Ñ (поиÑковики и Ñак иÑ
игноÑиÑÑÑÑ). ЧиÑÑÐ°Ñ ÐºÐ¾Ð½ÑигÑÑаÑиÑ, ÑÐ´Ð¾Ð±Ð½Ð°Ñ Ð´Ð»Ñ Ð°ÑдиÑа.</li> </ul> <h3 id="ÑедакÑоÑ">РедакÑоÑ</h3> <ul> <li data-num="1574"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>ÐвÑо-вÑÑавнивание пÑи вÑÑавке из Word</strong> â ÑанÑÑе пÑи копи-паÑÑе из Word ÑекÑÑ Ð¼Ð¾Ð³ ÑоÑ
ÑаниÑÑ Â«justify» и ломаÑÑ Ð²ÑÑÑÑкÑ. ТепеÑÑ Ð½Ð¾ÑмализÑеÑÑÑ Ð´Ð¾ ÑÑандаÑÑной ÑипогÑаÑики ÐиÑкÑÑÑа.</li> </ul> </div> </details> <details class="changelog-section"> <summary class="changelog-summary"><span class="changelog-meta"><span class="changelog-meta__version">v9.141</span><span class="changelog-meta__date">27-04-2026</span></span><h2 id="v9141-27-04-2026--пеÑваÑ-пÑбликаÑиÑ-вÑÑ-пÑоиÑÑ
одиÑ-Ñамо">ÐеÑÐ²Ð°Ñ Ð¿ÑбликаÑиÑ: вÑÑ Ð¿ÑоиÑÑ
Ð¾Ð´Ð¸Ñ Ñамо</h2></summary> <div class="changelog-section__body"> <p>СообÑеÑÑво поддеÑжало ваÑÑ Ð¿ÐµÑвÑÑ Ð¿ÑбликаÑÐ¸Ñ â поздÑавлÑем, Ð²Ñ Ð°Ð²ÑоÑ. Ðез задеÑжки, без пиÑем ÑедакÑоÑÑ, без «когда же мне дадÑÑ ÑолÑ». РподкаÑÑеÑÑ Ð¿Ð¾Ð»ÑÑили оÑделÑнÑй пÑиÑÑнÑй Ñов: ÑÐ¿Ð¸Ð·Ð¾Ð´Ñ ÑепеÑÑ ÑеÑÑÑÑÑ Ñо Ñвоей обложкой, а не Ñ Ð¾Ð±Ñей каÑÑинкой канала.</p> <ul> <li data-num="1562"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> <strong>ÐÑинÑÑ Ð¿ÐµÑвÑй маÑеÑиал â ÑÑал авÑоÑом мгновенно</strong> â ÑанÑÑе поÑле пеÑвой пÑбликаÑии ÑиÑаÑÐµÐ»Ñ ÐµÑÑ Ð´Ð¾Ð»Ð³Ð¾ ÑиÑлилÑÑ Â«ÑиÑаÑелем» в ÑиÑÑеме, пока кÑÑаÑÐ¾Ñ Ð²ÑÑÑнÑÑ Ð½Ðµ повÑÑал его. ТепеÑÑ Ð¿Ð¾Ð²ÑÑение пÑоиÑÑ
Ð¾Ð´Ð¸Ñ Ð°Ð²ÑомаÑиÑеÑки в Ð¼Ð¾Ð¼ÐµÐ½Ñ Ð¿ÑинÑÑÐ¸Ñ Ð¼Ð°ÑеÑиала ÑедакÑией. ÐÑÑнал не заÑÑавлÑÐµÑ Ð¶Ð´Ð°ÑÑ ÑвоиÑ
.</li> <li data-num="1563"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> <strong>Уведомление Â«Ð²Ñ ÑепеÑÑ Ð°Ð²ÑоÑ»</strong> â оÑделÑнÑй ÑÑплÑй Ñип ÑÐ²ÐµÐ´Ð¾Ð¼Ð»ÐµÐ½Ð¸Ñ Ñ Ð¿Ð¾Ð·Ð´Ñавлением и подÑказкой, ÑÑо делаÑÑ Ð´Ð°Ð»ÑÑе: где Ð²Ð°Ñ Ð¿ÑоÑилÑ, как голоÑоваÑÑ Ð·Ð° коллег, кÑда напиÑаÑÑ ÑедакÑии.</li> <li data-num="1564"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> <strong>Ð¡Ð²Ð¾Ñ OG-пÑевÑÑ Ð´Ð»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð³Ð¾ Ñпизода подкаÑÑа</strong> â пÑи ÑеÑинге конкÑеÑного Ñпизода в Telegram, ÐÐонÑакÑе или Facebook поÑвл
1ÑеÑÑÑ Ð¾Ð±Ð»Ð¾Ð¶ÐºÐ° именно ÑÑого Ñпизода Ñ Ð½Ð°Ð·Ð²Ð°Ð½Ð¸ÐµÐ¼, а не обÑÐ°Ñ ÐºÐ°ÑÑинка канала. ÐодкаÑÑеÑÑ, ваÑи ÑепоÑÑÑ ÑепеÑÑ ÑабоÑаÑÑ Ð½Ð° каждÑй вÑпÑÑк оÑделÑно.</li> <li data-num="1565"><span class="changelog-tag changelog-tag--UX" data-tag-alias="UX">UX</span> <strong>СеÑÐ°Ñ Ð¿Ð¾Ð´Ð»Ð¾Ð¶ÐºÐ° под обложками мÑзÑкалÑнÑÑ
маÑеÑиалов</strong> â обложки Ñазного ÑоÑмаÑа (квадÑаÑнÑе, веÑÑикалÑнÑе, ÑÑмнÑе) пеÑеÑÑали «виÑеÑÑ Ð² воздÑÑ
е»: ленÑа вÑглÑÐ´Ð¸Ñ Ñовнее, мÑзÑка визÑалÑно не ÑеÑÑеÑÑÑ ÑÑеди ÑÑаÑей.</li> </ul> </div> </details> <details class="changelog-section"> <summary class="changelog-summary"><span class="changelog-meta"><span class="changelog-meta__version">v9.140</span><span class="changelog-meta__date">25-04-2026</span></span><h2 id="v9140-25-04-2026--невидимое-ÑÑиление-ÑÑндаменÑ-в-поиÑке-и-ÑÑÑойÑивоÑÑÑ-к-ÑбоÑм">Ðевидимое ÑÑиление: ÑÑÐ½Ð´Ð°Ð¼ÐµÐ½Ñ Ð² поиÑке и ÑÑÑойÑивоÑÑÑ Ðº ÑбоÑм</h2></summary> <div class="changelog-section__body"> <p>ÐÐµÐ²Ð¸Ð´Ð¸Ð¼Ð°Ñ Ð¿Ð¾Ð»Ð¾Ð²Ð¸Ð½Ð° ÑабоÑÑ â Ñо, ÑÑо ÑиÑаÑÐµÐ»Ñ Ð½Ð°Ð¿ÑÑмÑÑ Ð½Ðµ замеÑиÑ, но без Ñего плаÑÑоÑма бÑла Ð±Ñ Ñ
ÑÑпÑе. ÐоиÑковики полÑÑаÑÑ Ð¿Ð¾Ð´ÑобнÑÑ ÐºÐ°ÑÑÑ ÑайÑа в ÑовÑеменном ÑоÑмаÑе. Ð ÑедакÑÐ¾Ñ ÑÑал Ñмнее: «ÑеÑÑ Ð¼Ð¾ÑгнÑла» â ÑÑо одно, Â«Ñ Ð²Ð°Ñ Ð¾Ñозвали доÑÑÑп» â ÑовÑем дÑÑгое. ÐвÑоÑÑ Ð¿ÐµÑеÑÑали видеÑÑ Ð¿ÑгаÑÑее Â«Ð½ÐµÑ Ð´Ð¾ÑÑÑпа» Ñам, где пÑоÑÑо моÑгнÑла ÑвÑзÑ.</p> <h3 id="видимоÑÑÑ-в-поиÑке">ÐидимоÑÑÑ Ð² поиÑке</h3> <ul> <li data-num="1555"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> <strong>ХлебнÑе кÑоÑки в Google</strong> â ÑÑÑÑкÑÑÑÐ½Ð°Ñ ÑазмеÑка добавлена Ð´Ð»Ñ Ð²ÑеÑ
Ñипов ÑÑÑаниÑ: в ÑезÑлÑÑаÑаÑ
поиÑка видно «ÐиÑкÑÑÑ âº Ð¢ÐµÐ¼Ñ âº Ðино» вмеÑÑо голой ÑÑÑлки. ЧиÑаÑÐµÐ»Ñ ÑÑÐ°Ð·Ñ Ð¿Ð¾Ð½Ð¸Ð¼Ð°ÐµÑ, кÑда попадÑÑ.</li> <li data-num="1556"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> <strong>Hreflang ru + x-default</strong> â Google и Yandex знаÑÑ, ÑÑо оÑÐ½Ð¾Ð²Ð½Ð°Ñ Ð°ÑдиÑоÑÐ¸Ñ ÐиÑкÑÑÑа ÑÑÑÑкоÑзÑÑнаÑ, а зеÑкала â ÐµÑ Ð°Ð»ÑÑеÑнаÑивнÑе доÑÑÑпÑ. Ðикакой пÑÑаниÑÑ Ð² вÑдаÑе.</li> <li data-num="1557"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>Sitemap ÑиÑе</strong> â ÑилÑÑÑ Ð¸ÑклÑÑÐ°ÐµÑ ÑеÑновики, ÑеÑÑовÑе аккаÑнÑÑ Ð¸ ÑиÑÑемнÑе ÑÑÑаниÑÑ. ÐоиÑковикам доÑÑаÑÑÑÑ ÑолÑко Ñо, ÑÑо Ð²Ñ Ñ
оÑели Ð±Ñ Ð²Ð¸Ð´ÐµÑÑ Ð² вÑдаÑе.</li> <li data-num="1558"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>404 каÑегоÑизиÑÑÑÑÑÑ Ð¿ÑавилÑно</strong> â поиÑковик понимаеÑ, ÑÑо ÑÑÑаниÑа иÑÑезла, а не ÑÑо ÑеÑÐ²ÐµÑ Ñломал. РепÑÑаÑÐ¸Ñ ÐиÑкÑÑÑа в вÑдаÑе не ÑÑÑÐ°Ð´Ð°ÐµÑ Ð¾Ñ ÑлÑÑайнÑÑ
ÑаймаÑÑов.</li> </ul> <h3 id="ÑедакÑоÑ-и-ÑÑÑойÑивоÑÑÑ">РедакÑÐ¾Ñ Ð¸ ÑÑÑойÑивоÑÑÑ</h3> <ul> <li data-num="1559"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>СноÑки в ÑедакÑоÑе не пеÑепÑÑгиваÑÑ ÐºÐ°ÑеÑкÑ</strong> â ÑанÑÑе пÑи ÑабоÑе Ñо ÑноÑками кÑÑÑÐ¾Ñ Ð¼Ð¾Ð³ ÑеÑ
аÑÑ Ð² наÑало пÑÑÑого абзаÑа. ТепеÑÑ ÑÑÐ¾Ð¸Ñ Ñовно Ñам, где поÑÑавили.</li> <li data-num="1560"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>РедакÑÐ¾Ñ Ð¾ÑлиÑÐ°ÐµÑ Â«ÑеÑÑ Ð¼Ð¾ÑгнÑла» Ð¾Ñ Â«Ð½ÐµÑ Ð´Ð¾ÑÑÑпа»</strong> â когда бÑкенд занÑÑ Ð¸Ð»Ð¸ недоÑÑÑпен, ÑÑÐ¾Ð½Ñ ÑÑо понимаеÑ: декоÑаÑивнÑе запÑоÑÑ (пÑевÑÑ, меÑаданнÑе) пеÑеÑÑаÑÑ Ð´ÑÑгаÑÑ ÑеÑвеÑ, пока он не веÑнÑÑÑÑ, а ÑеалÑÐ½Ð°Ñ Ð°Ð²ÑоÑизаÑÐ¸Ñ Ð¾ÑÑаÑÑÑÑ Ð¶Ð¸Ð²Ð¾Ð¹. ÐвÑоÑÑ Ð±Ð¾Ð»ÑÑе не видÑÑ Ð¿ÑгаÑÑее Â«Ð½ÐµÑ Ð´Ð¾ÑÑÑпа» Ñам, где пÑоÑÑо моÑгнÑла ÑвÑзÑ.</li> <li data-num="1561"><span class="changelog-tag changelog-tag--DX" data-tag-alias="DX">DX</span> <strong>+153 ÑеÑÑа Ð´Ð»Ñ ÐºÑиÑиÑного ÑдÑа</strong> â ÑаниÑайзеÑÑ HTML, SEO-генеÑаÑоÑÑ Ð¸ логика ÑедиÑекÑов ÑепеÑÑ Ð¿Ð¾Ð´ покÑÑÑием. РегÑеÑÑии ловÑÑÑÑ Ð´Ð¾ Ñелиза, не полÑзоваÑелÑми â а знаÑиÑ, не вами.</li> </ul> </div> </details> <details class="changelog-section"> <summary class="changelog-summary"><span class="changelog-meta"><span class="changelog-meta__version">v9.139</span><span class="changelog-meta__date">23-04-2026</span></span><h2 id="v9139-23-04-2026--ÑензÑÑнÑй-ÑиÑ-ÑоÑнее-ÑолÑко-гоÑÑдаÑÑÑвеннÑе-ведомÑÑва">ЦензÑÑнÑй ÑÐ¸Ñ ÑоÑнее: ÑолÑко гоÑÑдаÑÑÑвеннÑе ведомÑÑва</h2></summary> <div class="changelog-section__body"> <p>Ð©Ð¸Ñ Ð¿ÐµÑеÑÑал оÑибаÑÑÑÑ Ð°Ð´ÑеÑом. РанÑÑе он оÑгоÑаживалÑÑ ÑÑÐ°Ð·Ñ Ð¾Ñ Ð²Ñей ÑоÑÑийÑкой ÑеÑи â а вмеÑÑе Ñ Ð½ÐµÐ¹ и Ð¾Ñ Ð¾Ð±ÑÑнÑÑ
ÑиÑаÑелей. ТепеÑÑ â ÑоÑеÑно: ÑолÑко ÑеÑи 46 гоÑÑдаÑÑÑвеннÑÑ
ведомÑÑв. Ðилайн, ÐТС, ÐоÑа, домаÑние пÑовайдеÑÑ â заÑ
одиÑе Ñвободно.</p> <ul> <li data-num="1553"><span class="changelog-tag changelog-tag--SEC" data-tag-alias="SEC">SEC</span> <strong>ТоÑно по адÑеÑÑ, без коллаÑеÑалÑного ÑÑеÑба</strong> â ÑанÑÑе ÑÐ¸Ñ Ð±Ð»Ð¾ÐºÐ¸Ñовал болÑÑе двÑÑ
ÑÑÑÑÑ ÑоÑÑийÑкиÑ
авÑономнÑÑ
ÑиÑÑем, ÑÑеди коÑоÑÑÑ
бÑли и кÑÑпнÑе пÑовайдеÑÑ. ТепеÑÑ Ð¸ÑÑоÑник ÑпиÑка â gov-кÑÑиÑованнÑй Ð½Ð°Ð±Ð¾Ñ Ð¸Ð· 46 ASN, ÑеалÑно пÑинадлежаÑиÑ
гоÑÑдаÑÑÑвеннÑм ведомÑÑвам (Ð ÐÐ, ФСÐ, ÐÐÐ, пÑокÑÑаÑÑÑа). ÐбÑÑнÑе ÑиÑаÑели болÑÑе не наÑÑкаÑÑÑÑ Ð½Ð° 451 без винÑ.</li> <li data-num="1554"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> <strong>ÐаниÑеÑÑ-ÑÑÑаниÑа 451</strong> â Ñ <code>/stop-censorship</code> поÑвилаÑÑ Ð¿Ð¾Ð»Ð½Ð¾ÑÐµÐ½Ð½Ð°Ñ Ð¿ÑблиÑÐ½Ð°Ñ ÑÑÑаниÑа, обÑÑÑнÑÑÑÐ°Ñ ÑÑо и поÑÐµÐ¼Ñ Ð¼Ñ Ð´ÐµÐ»Ð°ÐµÐ¼: ÑÑаÑÑÑ 29 ÐонÑÑиÑÑÑии, обÑаÑение, конÑекÑÑ. ÐÑо не «error», а позиÑиÑ.</li> </ul> </div> </details> <details class="changelog-section"> <summary class="changelog-summary"><span class="changelog-meta"><span class="changelog-meta__version">v9.138</span><span class="changelog-meta__date">22-04-2026</span></span><h2 id="v9138-22-04-2026--ÑвÑзка-Ñ-telegram-в-один-Ñап-и-ÑÑплÑй-ÑедакÑоÑ">СвÑзка Ñ Telegram в один Ñап и ÑÑплÑй ÑедакÑоÑ</h2></summary> <div class="changelog-section__body"> <p>ÐÑивÑзаÑÑ Telegram â ÑепеÑÑ Ð´ÐµÐ»Ð¾ одного нажаÑиÑ, без квеÑÑов Ñ ÐºÐ¾Ð´Ð°Ð¼Ð¸. Ðаодно пÑоÑлиÑÑ Ð¿Ð¾ ÑедакÑоÑÑ: поиÑк Ð»Ð¾Ð²Ð¸Ñ Ð¿Ð¾Ð´Ð¿Ð¸Ñи к иллÑÑÑÑаÑиÑм, ÑÑÐ¼Ð½Ð°Ñ Ñема пеÑеÑÑала оÑÑавлÑÑÑ Ð±ÐµÐ»Ñе пÑÑна, а Ñежим ÑовмеÑÑнÑÑ
пÑавок болÑÑе не оÑÑавлÑÐµÑ Â«Ð¿ÑизÑаков» ÑдалÑннÑÑ
вÑÑавок.</p> <h3 id="telegram">Telegram</h3> <ul> <li data-num="1545"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> <strong>СвÑзка Ñ Telegram в один Ñап</strong> â кнопка «ÐÑивÑзаÑÑ Telegram» в наÑÑÑойкаÑ
пÑоÑилÑ: нажали â команда <code>/link</code> Ñама ÑкопиÑовалаÑÑ Ð² бÑÑÐµÑ â оÑпÑавили боÑÑ â гоÑово. @DiscoursPostBot ÑÑановиÑÑÑ Ð¶Ð¸Ð²Ñм каналом Ñведомлений â пÑо комменÑаÑии к ваÑим ÑÑаÑÑÑм, ÑемаÑки, пÑиглаÑениÑ.</li> <li data-num="1546"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>РбÑÑÐµÑ ÐºÐ¾Ð¿Ð¸ÑÑеÑÑÑ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð° Ñеликом</strong> â ÑанÑÑе попадал ÑолÑко коÑоÑкий код, и ÑиÑаÑели ÑеÑÑлиÑÑ, ÑÑо Ñ Ð½Ð¸Ð¼ делаÑÑ. ТепеÑÑ â гоÑÐ¾Ð²Ð°Ñ Ðº оÑпÑавке команда <code>/link <код></code>. ÐикакиÑ
догадок.</li> </ul> <h3 id="ÑедакÑоÑ-1">РедакÑоÑ</h3> <ul> <li data-num="1547"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> <strong>ÐокализаÑÐ¸Ñ Ð¸Ð½ÑеÑÑейÑа и паÑиÑÐµÑ ÑÑмной ÑемÑ</strong> â вÑе ÑÑÑоки внÑÑÑи ÑедакÑоÑа пеÑеведенÑ, ÑÑÐ¼Ð½Ð°Ñ Ñема пеÑеÑÑала оÑÑавлÑÑÑ Ð±ÐµÐ»Ñе пÑÑна на ÑÑлбаÑе и подÑказкаÑ
. ТÑÐ¼Ð½Ð°Ñ ÑеÑÑиÑ
1 â дейÑÑвиÑелÑно ÑÑмнаÑ, и взглÑд на длинной ÑÑаÑÑе не ÑÑÑаÑÑ.</li> <li data-num="1548"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>ÐоиÑк ÑабоÑÐ°ÐµÑ Ð¿Ð¾ подпиÑÑм иллÑÑÑÑаÑий</strong> â Ctrl+F ÑепеÑÑ Ð²Ð¸Ð´Ð¸Ñ ÑекÑÑ Ð¿Ð¾Ð´Ð¿Ð¸Ñей, а не ÑолÑко оÑновной ÑекÑÑ ÑÑаÑÑи. ÐÑобенно Ñенно в длиннÑÑ
ÑепоÑÑажаÑ
Ñ Ð´ÐµÑÑÑками ÑоÑогÑаÑий.</li> <li data-num="1549"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>ÐÑÑавка в подпиÑÑ Ð±Ð¾Ð»ÑÑе не Ð»Ð¾Ð¼Ð°ÐµÑ ÐºÐ°ÑеÑкÑ</strong> â IME-композиÑÐ¸Ñ (киÑайÑкий, ÑпонÑкий, ÑÑÑÑкий Ñ Ð·Ð°Ð³Ð»Ð°Ð²Ð½Ð¾Ð¹) ÑоÑ
ÑанÑеÑÑÑ Ð¿Ñи вÑÑавке, кÑÑÑÐ¾Ñ Ð½Ðµ пÑÑгаеÑ.</li> <li data-num="1550"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>Удаление Ñвоей вÑÑавки в Ñежиме ÑовмеÑÑнÑÑ
пÑавок</strong> â ÑанÑÑе Ñдаление Ñвежего ÑÑагменÑа в Ñежиме ÑÑеккинга оÑÑавлÑло «пÑизÑак»; ÑепеÑÑ Ð¿Ñавка ÑиÑÑиÑÑÑ Ð¿Ð¾Ð»Ð½Ð¾ÑÑÑÑ, иÑÑоÑÐ¸Ñ ÐºÐ¾Ð»Ð»ÐµÐºÑивной ÑабоÑÑ Ð¾ÑÑаÑÑÑÑ Ð¿ÑозÑаÑной.</li> </ul> <h3 id="аÑÑ
ив-и-обÑение">ÐÑÑ
ив и обÑение</h3> <ul> <li data-num="1551"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> <strong>ФилÑÑÑ Ð¼Ð°ÑеÑиалов ÑеÑез гÑаниÑÑ Ð³Ð¾Ð´Ð°</strong> â Archive Date Picker ÑепеÑÑ Ð¿ÑÐ¸Ð½Ð¸Ð¼Ð°ÐµÑ Ð¸Ð½ÑеÑвал «декабÑÑâÑнваÑÑ», а не Ð¿Ð°Ð´Ð°ÐµÑ Ð½Ð° Ñмене года. ÐÑÑ
ив ÐиÑкÑÑÑа ÑÑал доÑÑÑпнее на ÑÑÑке леÑ.</li> <li data-num="1552"><span class="changelog-tag changelog-tag--SEC" data-tag-alias="SEC">SEC</span> <strong>ÐаÑкиÑованнÑй email не ÑÑÐµÐºÐ°ÐµÑ Ð² инвайÑ</strong> â поиÑк полÑзоваÑелей возвÑаÑÐ°ÐµÑ email Ñ Ð¼Ð°Ñкой Ñади пÑиваÑноÑÑи; ÑепеÑÑ ÑеÑÐ²ÐµÑ Ð¸Ð³Ð½Ð¾ÑиÑÑÐµÑ ÑÑÑ Ð¼Ð°ÑкÑ, еÑли ID ÑобеÑедника извеÑÑен, и пÑиглаÑение ÑÑ
Ð¾Ð´Ð¸Ñ Ð½Ð° ÑеалÑнÑй адÑеÑ. ÐикакиÑ
поÑеÑÑннÑÑ
инвайÑов из-за лиÑниÑ
звÑздоÑек.</li> </ul> </div> </details> <details class="changelog-section"> <summary class="changelog-summary"><span class="changelog-meta"><span class="changelog-meta__version">v9.137</span><span class="changelog-meta__date">19-04-2026</span></span><h2 id="v9137-19-04-2026--донаÑÑ-без-загадок-код-без-eol">ÐонаÑÑ Ð±ÐµÐ· загадок, код без EOL</h2></summary> <div class="changelog-section__body"> <p>ÐоноÑÑ â ÑеловеÑнÑе оÑибки вмеÑÑо ÑеÑ
ниÑеÑкого ÑебÑÑа Stripe. ÐÑоекÑÑ â Ð½Ð¾Ð»Ñ Ð¾ÑкÑÑÑÑÑ
ÑÑзвимоÑÑей в завиÑимоÑÑÑÑ
поÑле пÑоÑÐ°Ð½Ð¸Ñ Ñ Ð·Ð°ÑÑÑÑвÑим в 2021-м legacy-ÑÑеком.</p> <h3 id="поддеÑжаÑÑ-ÑамиздаÑ--Ñ-комÑоÑÑом">ÐоддеÑжаÑÑ ÑÐ°Ð¼Ð¸Ð·Ð´Ð°Ñ â Ñ ÐºÐ¾Ð¼ÑоÑÑом</h3> <ul> <li data-num="1535"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>ÐагадоÑнÑе английÑкие ÑообÑÐµÐ½Ð¸Ñ Stripe в пÑоÑлом</strong> â на меÑÑе ÑеÑ
ниÑеÑкого «The string did not match the expected pattern» ÑепеÑÑ Ð´Ð²ÐµÐ½Ð°Ð´ÑаÑÑ Ð¿ÐµÑеведÑннÑÑ
подÑказок: «ÐÑовеÑÑÑе адÑÐµÑ Ð¿Ð¾ÑÑÑ», «ÐлаÑÑжнÑй ÑеÑÐ²Ð¸Ñ Ð²Ñеменно недоÑÑÑпен», «СлиÑком много попÑÑок, подождиÑе минÑÑÑ». ÐÐ¾Ð½Ð¾Ñ ÑÑÐ°Ð·Ñ Ð¿Ð¾Ð½Ð¸Ð¼Ð°ÐµÑ ÑÑо делаÑÑ Ð²Ð¼ÐµÑÑо Ñого, ÑÑÐ¾Ð±Ñ Ð·Ð°ÐºÑÑÑÑ ÑоÑмÑ.</li> <li data-num="1536"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>ÐÑиÑина загадоÑнÑÑ
Ñбоев найдена</strong> â Stripe Checkout иногда падал не Ñ Ð½Ð°Ñ, а на ÑÑоÑоне ÑиÑаÑелÑ, когда блокиÑовÑик ÑÐµÐºÐ»Ð°Ð¼Ñ Ð²ÑклÑÑаÐ
1» его анÑиÑÑод-ÑкÑипÑÑ. Ðо ÑÐµÐ³Ð¾Ð´Ð½Ñ Ð¼Ñ ÑÑого не видели; ÑепеÑÑ Ð»Ð¾Ð³Ð¸ плаÑÑоÑÐ¼Ñ Ð¿ÑилеÑаÑÑ Ð²Ð¶Ð¸Ð²ÑÑ, и лÑÐ±Ð¾Ð¼Ñ Ð´Ð¾Ð½Ð¾ÑÑ Ð¼Ñ Ð¼Ð¾Ð¶ÐµÐ¼ помоÑÑ ÑоÑеÑно.</li> <li data-num="1537"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> <strong>ÐнглийÑкий инÑеÑÑÐµÐ¹Ñ Ð¿Ð¾Ð´Ñ
ваÑÑÐ²Ð°ÐµÑ ÑообÑÐµÐ½Ð¸Ñ Ð°Ð²ÑомаÑиÑеÑки</strong> â конÑÑÐ°ÐºÑ Ð¼ÐµÐ¶Ð´Ñ ÑÑонÑом и плаÑÑжнÑм ÑеÑвиÑом пеÑеÑÑÑоен на ÑÑабилÑнÑе кодÑ. EN-веÑÑÐ¸Ñ Ð¿Ð¾Ð»ÑÑÐ°ÐµÑ Ñвои пеÑÐµÐ²Ð¾Ð´Ñ Ð±ÐµÐ· дÑбликаÑов в коде.</li> </ul> <h3 id="безопаÑноÑÑÑ-18-â-0-оÑкÑÑÑÑÑ
-ÑÑзвимоÑÑей">ÐезопаÑноÑÑÑ: 18 â 0 оÑкÑÑÑÑÑ
ÑÑзвимоÑÑей</h3> <ul> <li data-num="1538"><span class="changelog-tag changelog-tag--SEC" data-tag-alias="SEC">SEC</span> <strong>ÐоÑемнадÑаÑÑ Dependabot-алеÑÑов закÑÑÑÑ</strong> â ÑеÑÑÑнадÑаÑÑ Ð² Ñамом AngularJS (поддеÑжка завеÑÑилаÑÑ ÐµÑÑ Ð² 2021-м, паÑÑей не бÑдеÑ) задокÑменÑиÑÐ¾Ð²Ð°Ð½Ñ ÐºÐ°Ðº пÑинÑÑÑй ÑиÑк Ñ Ð¿ÐµÑеÑнем акÑивнÑÑ
заÑиÑ. ÐÑÑалÑнÑе ÑеÑÑÑе закÑÑÑÑ Ñдалением ÑÑÑаÑевÑиÑ
пакеÑов. ÐÐ´Ð¸Ð½Ð°Ñ ÐºÐ°ÑÑа ÑиÑков живÑÑ Ð² <code>SECURITY-POSTURE.md</code> â ÑоÑка пÑÐ°Ð²Ð´Ñ Ð´Ð»Ñ Ð°ÑдиÑа и новÑÑ
ÑÑаÑÑников.</li> <li data-num="1539"><span class="changelog-tag changelog-tag--SEC" data-tag-alias="SEC">SEC</span> <strong>СаниÑÐ°Ð¹Ð·ÐµÑ HTML пеÑееÑ
ал на DOMPurify v3</strong> â заÑиÑа Ð¾Ñ XSS-аÑак обновлена Ñ Ð±Ð¸Ð±Ð»Ð¸Ð¾Ñеки, завиÑÑей в 2021-м, на акÑивно поддеÑживаемÑÑ. ÐÐ¾Ð²Ð¸Ñ Ð±Ð¾Ð»ÑÑе пÑиÑмов обÑ
ода â ÑеÑез SVG, data-URL и inline-обÑабоÑÑики ÑобÑÑий. Ð¨Ð°Ð±Ð»Ð¾Ð½Ñ ÑÑаÑей и комменÑаÑиев не менÑлиÑÑ, вÑÑ ÑабоÑÐ°ÐµÑ Ð¿ÑозÑаÑно.</li> <li data-num="1540"><span class="changelog-tag changelog-tag--SEC" data-tag-alias="SEC">SEC</span> <strong>Vimeo-вÑÑÑойка ÑÑÑÑ ÐºÑепÑе</strong> â пÑÑÑ Ð¾ÑобÑÐ°Ð¶ÐµÐ½Ð¸Ñ Ð¾Ñибок плееÑа пеÑеведÑн на безопаÑнÑй ÑендеÑ. ÐнÑекÑÐ¸Ñ ÑеÑез поÑенÑиалÑнÑй динамиÑеÑкий ÑекÑÑ Ð¾Ñибки невозможна даже гипоÑеÑиÑеÑки.</li> </ul> <h3 id="пÑоÑание-Ñ-legacy">ÐÑоÑание Ñ legacy</h3> <ul> <li data-num="1541"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> <strong>ÐаÑивнÑй Ð¿Ð»ÐµÐµÑ Ð±ÑаÑзеÑа вмеÑÑо Videogular</strong> â Ð¿Ð»ÐµÐµÑ 2015 года, ÑÑнÑвÑий за Ñобой пÑÑÑ npm-пакеÑов и ÑÑзвимÑÑ Ð²ÐµÑÑÐ¸Ñ Bootstrap, ÑдалÑн. ÐидеоÑÐ°Ð¹Ð»Ñ Ð² маÑеÑиалаÑ
и ÑкÑпозиÑиÑÑ
ÑепеÑÑ Ð¿ÑоигÑÑÐ²Ð°ÐµÑ ÑобÑÑвеннÑй Ð¿Ð»ÐµÐµÑ Ð±ÑаÑзеÑа: бÑÑÑÑее, легÑе, без ÑÑоÑоннего JS. YouTube и Vimeo в маÑеÑиалаÑ
ÑабоÑаÑÑ ÐºÐ°Ðº и ÑабоÑали.</li> <li data-num="1542"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> <strong>Toast-ÑÐ²ÐµÐ´Ð¾Ð¼Ð»ÐµÐ½Ð¸Ñ Ð¿ÐµÑепиÑÐ°Ð½Ñ Ñвоими Ñилами</strong> â вÑплÑваÑÑие ÑообÑÐµÐ½Ð¸Ñ («СоÑ
Ñанено», «ÐÑибка ÑеÑи», «ЧеÑновик Ñоздан») пеÑееÑ
али на 250 ÑÑÑок ÑиÑÑого кода: ÑÐ¾Ñ Ð¶Ðµ инÑеÑÑейÑ, Ñе же анимаÑии, Ñа же доÑÑÑпноÑÑÑ â но без XSS-ÑÑзвимоÑÑи из 2017 года. ÐÑе пÑÑÑÑÐ¾Ñ Ñ Ð»Ð¸Ñним вÑзовов в пÑоекÑе пÑодолжаÑÑ ÑабоÑаÑÑ Ð±ÐµÐ· единой пÑавки.</li> <li data-num="1543"><span class="changelog-tag changelog-tag--REFACTOR" data-tag-alias="REFACTOR">REFACTOR</span> <strong>ÐинÑÑ Ð¿Ð¾Ð»ÑоÑÑ ÑÑÑÑÑи ÑÑÑок legacy-кода</strong> â вÑмеÑÐµÐ½Ñ vendor-ÑкÑипÑÑ, забÑÑÑе ÑÑиÑÑÑ, мÑÑÑвÑе CSS-ÑелекÑоÑÑ Ð¸ webpack-алиаÑÑ, Ñказ
1ÑвавÑие в пÑÑÑоÑÑ. СбоÑка ÑиÑе, PR-ÑевÑÑ ÐºÐ¾ÑоÑе, новиÑÐºÑ ÑиÑаÑÑ ÐºÐ¾Ð´Ð¾Ð²ÑÑ Ð±Ð°Ð·Ñ Ð¿ÑоÑе.</li> </ul> <h3 id="наблÑдаемоÑÑÑ-1">ÐаблÑдаемоÑÑÑ</h3> <ul> <li data-num="1544"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> <strong>ÐивÑе логи плаÑÑжного воÑкеÑа</strong> â вклÑÑÑн вÑÑÑоеннÑй мониÑоÑинг Cloudflare. ÐлаÑÑжнÑе оÑибки ÑепеÑÑ Ð¿Ð¸ÑÑÑÑÑ Ð¿Ð¾Ð»Ð½Ð¾ÑÑÑÑ, а не обÑÑвком ÑÑÑоки. СледÑÑÑий неожиданнÑй инÑÐ¸Ð´ÐµÐ½Ñ Ð½Ð° ÑоÑме пожеÑÑвований ÑазбеÑÑÑÑÑ Ð·Ð° минÑÑÑ Ð²Ð¼ÐµÑÑо ÑаÑов догадок.</li> </ul> </div> </details> <details class="changelog-section"> <summary class="changelog-summary"><span class="changelog-meta"><span class="changelog-meta__version">v9.136</span><span class="changelog-meta__date">17-04-2026</span></span><h2 id="v9136-17-04-2026--ÑлайдÑоÑ-в-ÑедакÑоÑе-подпиÑи-не-ÑеÑÑÑÑÑÑ-и-одна--на-вÑеÑ
">СлайдÑÐ¾Ñ Ð² ÑедакÑоÑе: подпиÑи не ÑеÑÑÑÑÑÑ Ð¸ одна â на вÑеÑ
</h2></summary> <div class="changelog-section__body"> <p>ÐелкаÑ, но Ð¾Ð±Ð¸Ð´Ð½Ð°Ñ Ð±ÐµÐ´Ð° ÑедакÑоÑа галеÑей побеждена: подпиÑÑ Ð¾Ð´Ð½Ð¾Ð³Ð¾ Ñлайда болÑÑе не «ÑÑедаеÑ» ÑоÑедей. Ð ÑепеÑÑ Ð¾Ð´Ð½Ð¸Ð¼ кликом можно ÑаÑÑÑавиÑÑ Ð¾Ð´Ð½Ñ Ð¸ ÑÑ Ð¶Ðµ подпиÑÑ Ð¿Ð¾ вÑем Ñлайдам â Ñдобно, когда ÑÑо ÑеÑÐ¸Ñ ÐºÐ°Ð´Ñов из ÑилÑма, Ñикл одного авÑоÑа или один иÑÑоÑник.</p> <ul> <li data-num="1532"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>ÐодпиÑи ÑоÑедниÑ
Ñлайдов не заÑиÑаÑÑÑÑ</strong> â ÑанÑÑе пÑи бÑÑÑÑом добавлении подпиÑей (оÑобенно пÑи ÑоавÑоÑÑÑве в ÑеалÑном вÑемени) подпиÑÑ Ð¿ÑедÑдÑÑего Ñлайда могла молÑа иÑÑезнÑÑÑ. ТепеÑÑ ÐºÐ°Ð¶Ð´Ð°Ñ Ð¶Ð¸Ð²ÑÑ Ð½ÐµÐ·Ð°Ð²Ð¸Ñимо, ÑоавÑÐ¾Ñ Ð·Ð° ÑоÑедним Ñлайдом ниÑего не ломаеÑ.</li> <li data-num="1533"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> <strong>Ðдна подпиÑÑ Ð½Ð° вÑÑ Ð³Ð°Ð»ÐµÑÐµÑ â один клик</strong> â в окне подпиÑи поÑвилаÑÑ Ð¸ÐºÐ¾Ð½ÐºÐ°-дÑбликаÑ. Ðажали, подÑвеÑдили â и вÑе ÑÐ»Ð°Ð¹Ð´Ñ Ð¿Ð¾Ð»ÑÑили одинаковÑй ÑекÑÑ. ÐенÑÑе ÑÑÑинного копипаÑÑа, оÑобенно пÑи вÑÑавке 5â10 изобÑажений Ñазом.</li> <li data-num="1534"><span class="changelog-tag changelog-tag--UX" data-tag-alias="UX">UX</span> <strong>ЧиÑе окно подпиÑи</strong> â лиÑнÑÑ ÐºÐ½Ð¾Ð¿ÐºÐ° «ÐÑмениÑÑ» ÑбÑана: кÑеÑÑик, Escape и клик мимо вÑÑ Ñавно закÑÑваÑÑ Ð¾ÐºÐ½Ð¾. ÐолÑÑе меÑÑа под Ñам ÑекÑÑ, менÑÑе визÑалÑного ÑÑма.</li> </ul> </div> </details> <details class="changelog-section"> <summary class="changelog-summary"><span class="changelog-meta"><span class="changelog-meta__version">v9.135</span><span class="changelog-meta__date">17-04-2026</span></span><h2 id="v9135-17-04-2026--поÑÑа-диÑкÑÑÑа-на-бÑоне-авÑооÑиÑÑка-ÑиÑÑование-заÑиÑа-оÑ-подделок">ÐоÑÑа ÐиÑкÑÑÑа на бÑоне: авÑооÑиÑÑка, ÑиÑÑование, заÑиÑа Ð¾Ñ Ð¿Ð¾Ð´Ð´ÐµÐ»Ð¾Ðº</h2></summary> <div class="changelog-section__body"> <p>ÐовÑй Ñлой бÑони â ÑепеÑÑ Ñ Ð¿Ð¾ÑÑÑ. ÐÑÑÑвÑе адÑеÑа Ñами иÑÑезаÑÑ Ð¸Ð· ÑпиÑков, Ð¶Ð°Ð»Ð¾Ð±Ñ Ð½Ð° Ñпам ÑÑÑ Ð¶Ðµ оÑпиÑÑваÑÑ, пиÑÑма к полÑÑаÑелÑм идÑÑ Ð¿Ð¾ пÑинÑдиÑелÑно ÑиÑÑÐ¾Ð²Ð°Ð½Ð½Ð¾Ð¼Ñ ÐºÐ°Ð½Ð°Ð»Ñ, а подделка Â«Ð¾Ñ @discours.io» ÑÑановиÑÑÑ ÑÑмно-замеÑной. ÐвÑоÑÑ Ð¿Ð¾Ð»ÑÑаÑÑ Ð½Ð°Ð´ÑжнÑÑ Ð´Ð¾ÑÑавкÑ, ÑиÑаÑели â ÑиÑÑÑй inbox.</p> <h3 id="ÑаÑÑÑлки-Ñами-забоÑÑÑÑÑ-о-ÑвоÑм-здоÑовÑе">РаÑÑÑлки Ñами забоÑÑÑÑÑ Ð¾ ÑвоÑм здоÑовÑе</h3> <ul> <li data-num="1525"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> <strong>ÐÑÑÑвÑе адÑеÑа иÑÑезаÑÑ Ð°Ð²ÑомаÑиÑеÑки</strong> â еÑли пиÑÑмо возвÑаÑаеÑÑÑ Ñ Ð¿Ð¾Ð¼ÐµÑкой «Ñакого адÑеÑа не ÑÑÑеÑÑвÑеÑ», адÑÐµÑ ÑÑÑ Ð¶Ðµ помеÑаеÑÑÑ ÐºÐ°Ðº неакÑивнÑй и вÑклÑÑаеÑÑÑ Ð¸Ð· бÑдÑÑиÑ
ÑаÑÑÑлок. ÐикакиÑ
ÑÑÑнÑÑ
ÑиÑÑок, и ÑепÑÑаÑÐ¸Ñ Ð¾ÑпÑавиÑÐµÐ»Ñ Ð½Ðµ ÑÑÑÐ°Ð´Ð°ÐµÑ Ð¾Ñ Ð½Ð°ÐºÐ¾Ð¿Ð»ÐµÐ½Ð½ÑÑ
оÑказов.</li> <li data-num="1526"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> <strong>ÐÐ°Ð»Ð¾Ð±Ñ Ð½Ð° Ñпам â Ð¼Ð³Ð½Ð¾Ð²ÐµÐ½Ð½Ð°Ñ Ð¾ÑпиÑка</strong> â ÑиÑаÑÐµÐ»Ñ Ð½Ð°Ð¶Ð°Ð» «в Ñпам» в Gmail или Outlook? ÐдÑÐµÑ ÑÑÐ°Ð·Ñ Ð²ÑклÑÑаеÑÑÑ. Уважение к ÑиÑаÑелÑ, заÑиÑа доÑÑавки Ð´Ð»Ñ Ð²ÑеÑ
оÑÑалÑнÑÑ
.</li> <li data-num="1527"><span class="changelog-tag changelog-tag--DEVOPS" data-tag-alias="DEVOPS">DEVOPS</span> <strong>ÐÐ¸Ð²Ð°Ñ ÐºÐ°ÑÑина доÑÑавки</strong> â каждое оÑпÑавленное пиÑÑмо, каждÑй оÑказ и ÐºÐ°Ð¶Ð´Ð°Ñ Ð¶Ð°Ð»Ð¾Ð±Ð° ÑикÑиÑÑÑÑÑÑ Ð² базе плаÑÑоÑÐ¼Ñ Ð² ÑеалÑном вÑемени. Ðидно, кÑда ÑеалÑно доÑ
одÑÑ ÑаÑÑÑлки и ÑÑо пÑоиÑÑ
Ð¾Ð´Ð¸Ñ Ñ ÐºÐ°Ð¶Ð´Ñм адÑеÑом.</li> </ul> <h3 id="пиÑÑма-под-заÑиÑой">ÐиÑÑма под заÑиÑой</h3> <ul> <li data-num="1528"><span class="changelog-tag changelog-tag--SEC" data-tag-alias="SEC">SEC</span> <strong>ÐÑинÑдиÑелÑное ÑиÑÑование на пÑÑи до полÑÑаÑелÑ</strong> â Gmail, Outlook, Yandex и дÑÑгие ÑеÑвеÑÑ Ð¿ÑовеÑÑÑÑ Ð½Ð°ÑÑ MTA-STS-полиÑÐ¸ÐºÑ Ð¸ обÑÐ·Ð°Ð½Ñ Ð¸ÑполÑзоваÑÑ TLS пÑи доÑÑавке пиÑем Ð¾Ñ ÐиÑкÑÑÑа. ÐеÑеÑ
Ð²Ð°Ñ ÑодеÑжимого недоÑÑÑпен даже пÑи аÑаке на пÑовайдеÑа.</li> <li data-num="1529"><span class="changelog-tag changelog-tag--SEC" data-tag-alias="SEC">SEC</span> <strong>ÐониÑоÑинг пÑоблем Ñ ÑиÑÑованием</strong> â еÑли Ñей-Ñо ÑеÑÐ²ÐµÑ Ð½Ðµ Ñмог ÑÑÑановиÑÑ Ð·Ð°ÑиÑÑннÑй канал Ñ Ð½Ð°Ð¼Ð¸, ÑзнаÑм об ÑÑом в оÑÑÑÑе. ÐидимоÑÑÑ Ñам, где ÑанÑÑе бÑла ÑÐ»ÐµÐ¿Ð°Ñ Ð·Ð¾Ð½Ð°.</li> <li data-num="1530"><span class="changelog-tag changelog-tag--SEC" data-tag-alias="SEC">SEC</span> <strong>УÑÐ¸Ð»ÐµÐ½Ð½Ð°Ñ Ð·Ð°ÑиÑа Ð¾Ñ Ð¿Ð¾Ð´Ð´ÐµÐ»ÐºÐ¸ пиÑем</strong> â пÑавила DMARC ÑаÑÑиÑенÑ: Ð¿Ð¾Ð´Ð´Ð¾Ð¼ÐµÐ½Ñ Ð¿Ð¾Ð´ Ñой же заÑиÑой, алгоÑиÑÐ¼Ñ Ð²ÑÑÐ°Ð²Ð½Ð¸Ð²Ð°Ð½Ð¸Ñ Ð·Ð°ÑикÑиÑÐ¾Ð²Ð°Ð½Ñ Ñвно, подозÑиÑелÑнÑе пÑÐ¾Ð²Ð°Ð»Ñ ÑлÑÑ Ð´ÐµÑалÑнÑе оÑÑÑÑÑ. ÐопÑÑка ÑпÑÑиÐ
1½Ð³Ð° Ð¾Ñ @discours.io ÑÑановиÑÑÑ ÑÑмной и логиÑÑеÑÑÑ.</li> </ul> <h3 id="ÑиÑÑка">ЧиÑÑка</h3> <ul> <li data-num="1531"><span class="changelog-tag changelog-tag--DEVOPS" data-tag-alias="DEVOPS">DEVOPS</span> <strong>Удалена забÑÑÐ°Ñ DNS-запиÑÑ MailChimp</strong> â Ñлед давно закÑÑÑого ÑкÑпеÑименÑа. ÐинÑÑ Ð¾Ð´Ð½Ð° запиÑÑ Ð² DNS, минÑÑ Ð¾Ð´Ð½Ð° ÑоÑка ÑÑзвимоÑÑи, ÑÑнее каÑÑина поÑÑовой инÑÑаÑÑÑÑкÑÑÑÑ.</li> </ul> </div> </details> <details class="changelog-section"> <summary class="changelog-summary"><span class="changelog-meta"><span class="changelog-meta__version">v9.134</span><span class="changelog-meta__date">16-04-2026</span></span><h2 id="v9134-16-04-2026--оÑкÑÑÑÑй-код-длÑ-ÑоÑÑаÑÑиÑ-гайд-ÑаблонÑ-маниÑеÑÑ-ÑазÑабоÑки">ÐÑкÑÑÑÑй код Ð´Ð»Ñ ÑоÑÑаÑÑиÑ: гайд, ÑаблонÑ, маниÑеÑÑ ÑазÑабоÑки</h2></summary> <div class="changelog-section__body"> <p>ÐиÑкÑÑÑ Ð²Ñегда бÑл оÑкÑÑÑÑм пÑоекÑом â ÑепеÑÑ Ð¸ код Ñоже. ÐеÑепиÑали README, добавили маниÑеÑÑ ÑазÑабоÑки, гайд Ð´Ð»Ñ ÐºÐ¾Ð½ÑÑибÑÑÑоÑов, ÐºÐ¾Ð´ÐµÐºÑ ÑообÑеÑÑва и ÑÐ°Ð±Ð»Ð¾Ð½Ñ issue/PR. ÐовÑй ÑазÑабоÑÑик â Ð¾Ñ Ð´Ð¶Ñна до желаÑÑего иÑпÑавиÑÑ Ð¾Ð¿ÐµÑаÑÐºÑ â Ð¼Ð¾Ð¶ÐµÑ Ð¿ÑиÑоединиÑÑÑÑ Ð·Ð° ÑаÑ, без вопÑоÑа Â«Ñ Ñего наÑаÑÑ».</p> <h3 id="виÑÑина-пÑоекÑа">ÐиÑÑина пÑоекÑа</h3> <ul> <li data-num="1517"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> <strong>README Ñ Ð´Ð²ÑÐ¼Ñ Ð²ÐºÐ»Ð°Ð´ÐºÐ°Ð¼Ð¸ и маниÑеÑÑом</strong> â ÑÑÑÑкий и английÑкий ваÑианÑÑ, иÑÑоÑиÑеÑÐºÐ°Ñ Ð¾Ð±Ð»Ð¾Ð¶ÐºÐ°-коллаж, бейджи CI и ÑÑаÑÑÑа, ÑÑÑлки на живой ÑайÑ. РепозиÑоÑий ÑепеÑÑ ÑаÑÑказÑÐ²Ð°ÐµÑ Ð¾ Ñебе пеÑвой же ÑÑÑаниÑей.</li> <li data-num="1518"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> <strong>ÐаниÑеÑÑ ÑазÑабоÑки на GitHub</strong> â девÑÑÑ Ð¿ÑинÑипов, по коÑоÑÑм Ð¼Ñ ÑÑÑоим код: оÑкÑÑÑоÑÑÑ, ÑавенÑÑво, без ÑензÑÑÑ, без пÑивÑзки к вендоÑам. РпÑнкÑе 8 â пÑÑÐ¼Ð°Ñ ÑÑÑлка на edit-ÑоÑмÑ: лÑбой Ð¼Ð¾Ð¶ÐµÑ Ð¿ÑедложиÑÑ Ð¿Ñавки маниÑеÑÑа одним кликом.</li> </ul> <h3 id="пÑÑÑ-длÑ-нового-ÑазÑабоÑÑика">ÐÑÑÑ Ð´Ð»Ñ Ð½Ð¾Ð²Ð¾Ð³Ð¾ ÑазÑабоÑÑика</h3> <ul> <li data-num="1519"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> <strong>Ðайд Ð´Ð»Ñ ÐºÐ¾Ð½ÑÑибÑÑÑоÑов</strong> â CONTRIBUTING.md на двÑÑ
ÑзÑкаÑ
: как запÑÑÑиÑÑ Ð»Ð¾ÐºÐ°Ð»Ñно, какой ÑÑÐ¸Ð»Ñ ÐºÐ¾Ð´Ð°, как оÑоÑмиÑÑ Pull Request. «С Ñего наÑаÑÑ» болÑÑе не вопÑоÑ.</li> <li data-num="1520"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> <strong>ÐÐ¾Ð´ÐµÐºÑ ÑообÑеÑÑва</strong> â Contributor Covenant 2.1 (ru/en), конÑакÑÑ ÑеÑез Telegram-боÑ. Уважение и конÑÑÑÑкÑив закÑÐµÐ¿Ð»ÐµÐ½Ñ Ð¿Ñавилом â Ð´Ð»Ñ Ð²ÑеÑ
, кÑо пиÑÐµÑ ÐºÐ¾Ð´, Ð´ÐµÐ»Ð°ÐµÑ ÑевÑÑ Ð¸Ð»Ð¸ оÑвеÑÐ°ÐµÑ Ð½Ð° issue.</li> <li data-num="1521"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> <strong>Ð¨Ð°Ð±Ð»Ð¾Ð½Ñ issue и PR</strong> â «ÐаÑли оÑибкÑ», «ÐдеÑ», гоÑовÑй PR-ÑеклиÑÑ. СообÑиÑÑ Ð¾ баге или пÑедложиÑÑ ÑиÑÑ â за минÑÑÑ, без вопÑоÑа «как пÑавилÑно оÑоÑмиÑÑ».</li> <li data-num="1522"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> <strong>Ðнопка Sponsor в Ñапке Ñепо</strong> â Patreon и donate-ÑÑÑаниÑа Discours.io. ÐоддеÑжаÑÑ Ð¿ÑÐ¾ÐµÐºÑ ÑинанÑово можно пÑÑмо из GitHub в один клик.</li> <li data-num="1523"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> <strong>LICENSE (ISC) и обложка Ð´Ð»Ñ ÑеÑинга</strong> â лиÑÐµÐ½Ð·Ð¸Ñ Ð°Ð²ÑомаÑиÑеÑки ÑаÑпознана GitHub, ÑÐ½Ð¸Ð¼Ð°ÐµÑ Ð²Ð¾Ð¿ÑÐ¾Ñ Â«Ð¼Ð¾Ð¶Ð½Ð¾ ли ÑоÑкнÑÑÑ». ÐÑевÑÑ-каÑÑинка Ð´ÐµÐ»Ð°ÐµÑ ÑÑÑÐ»ÐºÑ Ð½Ð° Ñепо Ñзнаваемой в Telegram и Twitter.</li> </ul> <h3 id="поÑинка">ÐоÑинка</h3> <ul> <li data-num="1524"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>Censor Shield drift-Ñек Ñнова зелÑнÑй</strong> â баг в GitHub Actions workflow (<code>grep -c || echo "0"</code> ломал ÑоÑÐ¼Ð°Ñ <code>$GITHUB_OUTPUT</code> и ÑонÑл job за 10 ÑекÑнд) ÑÑÑÑанÑн. ÐженеделÑÐ½Ð°Ñ Ð¿ÑовеÑка, ÑÑо ÑпиÑок гоÑÑензоÑÑкиÑ
ASN/CIDR не ÑазоÑÑлÑÑ Ñ upstream, Ñнова ÑабоÑаеÑ.
1</li> </ul> </div> </details> <details class="changelog-section"> <summary class="changelog-summary"><span class="changelog-meta"><span class="changelog-meta__version">v9.133</span><span class="changelog-meta__date">16-04-2026</span></span><h2 id="v9133-16-04-2026--пеÑеезд-на-github-бÑÑÑÑее-надÑжнее-Ñдобнее-длÑ-ÑоÑÑаÑÑиÑ">ÐеÑеезд на GitHub: бÑÑÑÑее, надÑжнее, Ñдобнее Ð´Ð»Ñ ÑоÑÑаÑÑиÑ</h2></summary> <div class="changelog-section__body"> <p>ÐиÑкÑÑÑ Ð¿Ð¾Ð»Ð½Ð¾ÑÑÑÑ Ð¿ÐµÑееÑ
ал Ñ Bitbucket на GitHub. ÐÑо не пÑоÑÑо Ñмена адÑеÑа: каждое изменение в коде ÑепеÑÑ Ð¿ÑоÑ
Ð¾Ð´Ð¸Ñ ÑеÑез авÑомаÑиÑеÑкие пÑовеÑки каÑеÑÑва, AI-ÑевÑÑ Ð¸ визÑалÑное ÑеÑÑиÑование. Ðаги ловÑÑÑÑ Ð´Ð¾ Ñого, как попадÑÑ Ð½Ð° ÑайÑ.</p> <h3 id="каÑеÑÑво-кода--на-авÑопилоÑе">ÐаÑеÑÑво кода â на авÑопилоÑе</h3> <ul> <li data-num="1509"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> <strong>AI-ÑевÑÑÐµÑ ÑиÑÐ°ÐµÑ ÐºÐ°Ð¶Ð´Ñй PR</strong> â CodeRabbit подклÑÑÑн к ÑепозиÑоÑÐ¸Ñ Ð¸ авÑомаÑиÑеÑки пÑовеÑÑÐµÑ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ: иÑÐµÑ Ð±Ð°Ð³Ð¸, ÑÑеÑки памÑÑи, XSS-ÑÑзвимоÑÑи и наÑÑÑÐµÐ½Ð¸Ñ Ð¿Ð°ÑÑеÑнов AngularJS. Ðак вÑоÑой ÑазÑабоÑÑик, коÑоÑÑй никогда не ÑÑÑаÑÑ Ð¸ не пÑопÑÑÐºÐ°ÐµÑ Ð¼ÐµÐ»Ð¾Ñей.</li> <li data-num="1510"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> <strong>ÐинÑÐµÑ Ð¸ ÑеÑÑÑ ÑепеÑÑ Ð±Ð»Ð¾ÐºÐ¸ÑÑÑÑ PR</strong> â ÑанÑÑе оÑибки линÑеÑа и падаÑÑие ÑеÑÑÑ Ð¿Ð¾ÐºÐ°Ð·ÑвалиÑÑ, но не меÑали меÑжиÑÑ. ТепеÑÑ â меÑаÑÑ. СломаннÑй код не попадÑÑ Ð² production.</li> <li data-num="1511"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> <strong>ÐизÑалÑÐ½Ð°Ñ ÑегÑеÑÑÐ¸Ñ Ñ ÑамовоÑÑÑановлением</strong> â Playwright Ð´ÐµÐ»Ð°ÐµÑ ÑкÑинÑоÑÑ ÐºÐ»ÑÑевÑÑ
ÑÑÑÐ°Ð½Ð¸Ñ Ð¸ ÑÑÐ°Ð²Ð½Ð¸Ð²Ð°ÐµÑ Ñ ÑÑалоном. ÐÑли ÑÑалона Ð´Ð»Ñ Ð½Ð¾Ð²Ð¾Ð¹ ÑÑÐµÐ´Ñ Ð½ÐµÑ â генеÑиÑÑÐµÑ Ð°Ð²ÑомаÑиÑеÑки и коммиÑÐ¸Ñ Ñам. Ðи одно визÑалÑное изменение не пÑоÑкоÑÐ¸Ñ Ð½ÐµÐ·Ð°Ð¼ÐµÑеннÑм.</li> </ul> <h3 id="storybook-Ñнова-ÑабоÑаеÑ">Storybook Ñнова ÑабоÑаеÑ</h3> <ul> <li data-num="1512"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>Storybook ÑобиÑаеÑÑÑ Ð½Ð° Netlify</strong> â поÑле пеÑеезда Storybook падал: Vite (в оÑлиÑие Ð¾Ñ webpack) не ÑÐ¼ÐµÐµÑ ÑезолвиÑÑ Ð¼Ð¾Ð´Ñли из <code>resolve.modules</code> и ÑÑгаеÑÑÑ Ð½Ð° SCSS-комменÑаÑии в ÑÑиле <code>//</code>. ÐÐ¾Ð±Ð°Ð²Ð»ÐµÐ½Ñ 6 explicit aliases и поÑинен ÑинÑакÑиÑ.</li> <li data-num="1513"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>SCSS-импоÑÑÑ ÑинÑ
ÑонизиÑованÑ</strong> â ÑÑи Ñайла Ñ Ð¼Ð¸ÐºÑинами (<code>embed-providers</code>, <code>z-index</code>, <code>link-card</code>) бÑли в main.scss, но не в storybook-styles.scss. ÐакопивÑийÑÑ drift â поÑинен. Ðизайн-ÑиÑÑема в Storybook ÑепеÑÑ Ð¾ÑобÑажаеÑÑÑ ÐºÐ¾ÑÑекÑно.</li> </ul> <h3 id="инÑÑаÑÑÑÑкÑÑÑа-и-безопаÑноÑÑÑ">ÐнÑÑаÑÑÑÑкÑÑÑа и безопаÑноÑÑÑ</h3> <ul> <li data-num="1514"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> <strong>Ðнопка «ÐеÑеÑобÑаÑÑ ÑайÑ»</strong> â новÑй workflow в GitHub Actions. Ðдин клик â и Netlify пеÑеÑобиÑÐ°ÐµÑ ÑÐ°Ð¹Ñ Ð±ÐµÐ· нового коммиÑа. Ðолезно, когда обновилÑÑ ÐºÐ¾Ð½ÑÐµÐ½Ñ Ð½Ð° бÑкенде или нÑжно ÑбÑоÑиÑÑ ÐºÑÑ.</li> <li data-num="1515"><span class="changelog-tag changelog-tag--SEC" data-tag-alias="SEC">SEC</span> <strong>УбÑан ÑÑÑкÑий API-клÑÑ</strong> â hardcoded клÑÑ ipwhois.pro в Netlify-ÑÑнкÑии <code>geo-service</code> заменÑн заглÑÑкой (ÑеÑÐ²Ð¸Ñ Ð±Ð¾Ð»ÑÑе не иÑполÑзÑеÑÑÑ). Ðдин из ÑеÑÑÑÑÑ
кÑиÑиÑеÑкиÑ
findings закÑÑÑ.</li> <li data-num="1516"><span class="changelog-tag changelog-tag--DEVOPS" data-tag-alias="DEVOPS">DEVOPS</span> <strong>BB-ÑепозиÑоÑии оÑклÑÑенÑ</strong>
1 â <code>origin</code> ÑепеÑÑ ÑказÑÐ²Ð°ÐµÑ Ð½Ð° GitHub Ð´Ð»Ñ Ð²ÑеÑ
ÑеÑÑÑÑÑ
пÑоекÑов ÐиÑкÑÑÑа. Bitbucket remotes ÑдаленÑ, двойной push болÑÑе не нÑжен.</li> </ul> </div> </details> <details class="changelog-section"> <summary class="changelog-summary"><span class="changelog-meta"><span class="changelog-meta__version">v9.132</span><span class="changelog-meta__date">15-04-2026</span></span><h2 id="v9132-15-04-2026--ÑензÑÑнÑй-ÑиÑ-ÑайÑ-невидим-длÑ-гоÑÑензоÑов">ЦензÑÑнÑй ÑиÑ: ÑÐ°Ð¹Ñ Ð½ÐµÐ²Ð¸Ð´Ð¸Ð¼ Ð´Ð»Ñ Ð³Ð¾ÑÑензоÑов</h2></summary> <div class="changelog-section__body"> <p>ÐÑли ÑÐµÐ½Ð·Ð¾Ñ Ð½Ðµ Ð¼Ð¾Ð¶ÐµÑ Ð¾ÑкÑÑÑÑ ÑÑÑаниÑÑ â он не Ð¼Ð¾Ð¶ÐµÑ ÑоÑÑавиÑÑ Ð°ÐºÑ Ð¸ иниÑииÑоваÑÑ Ð±Ð»Ð¾ÐºÐ¸ÑовкÑ. ÐиÑкÑÑÑ ÑепеÑÑ Ð¾Ð¿ÑеделÑÐµÑ Ð·Ð°Ð¿ÑоÑÑ Ñ 2013 гоÑÑдаÑÑÑвеннÑÑ
авÑономнÑÑ
ÑиÑÑем РФ и 768 IP-диапазонов â и оÑвеÑÐ°ÐµÑ Ð¸Ð¼ ÑÑаÑÑÑй 29 ÐонÑÑиÑÑÑии вмеÑÑо конÑенÑа. Ð©Ð¸Ñ ÑабоÑÐ°ÐµÑ Ð½Ð° вÑеÑ
ÑÑовнÑÑ
: оÑновной ÑайÑ, зеÑкало, API и GAE-пÑокÑи.</p> <h3 id="невидимоÑÑÑ-длÑ-ÑензоÑа">ÐевидимоÑÑÑ Ð´Ð»Ñ ÑензоÑа</h3> <ul> <li data-num="1495"><span class="changelog-tag changelog-tag--SEC" data-tag-alias="SEC">SEC</span> <strong>ÐвÑÑÐ»Ð¾Ð¹Ð½Ð°Ñ Ð´ÐµÑекÑÐ¸Ñ Ð³Ð¾ÑÑеÑей</strong> â Cloudflare Worker пÑовеÑÑÐµÑ ASN каждого запÑоÑа за O(1), а CIDR-бинаÑнÑй поиÑк за O(log n) Ð»Ð¾Ð²Ð¸Ñ Ð³Ð¾ÑÑÑÑÑкÑÑÑÑ, ÑидÑÑие в коммеÑÑеÑкиÑ
AS. Ð ÐÐ, ФСÐ, ÐÐÐ, ÐенпÑокÑÑаÑÑÑа, ФÐС, Следком â 2013 AS-номеÑов из ежедневно обновлÑемой Ð±Ð°Ð·Ñ RIPE.</li> <li data-num="1496"><span class="changelog-tag changelog-tag--SEC" data-tag-alias="SEC">SEC</span> <strong>Хамелеон вмеÑÑо единого оÑвеÑа</strong> â 60% запÑоÑов полÑÑаÑÑ 451 Ñ ÑиÑаÑой ÐонÑÑиÑÑÑии, 15% â Internal Server Error, 15% â Service Unavailable, 10% â молÑаливÑй обÑÑв. ÐвÑомаÑиÑеÑкий ÑÐºÐ°Ð½ÐµÑ ÑензоÑа не Ð¼Ð¾Ð¶ÐµÑ Ð¾ÑлиÑиÑÑ Ð±Ð»Ð¾ÐºÐ¸ÑÐ¾Ð²ÐºÑ Ð¾Ñ Ð¿Ð¾Ð»Ð¾Ð¼ÐºÐ¸.</li> <li data-num="1497"><span class="changelog-tag changelog-tag--SEC" data-tag-alias="SEC">SEC</span> <strong>Tarpit вÑÐ¶Ð¸Ð³Ð°ÐµÑ Ð²ÑÐµÐ¼Ñ ÑканеÑа</strong> â каждÑй запÑÐ¾Ñ ÑензоÑа задеÑживаеÑÑÑ Ð½Ð° 5â15 ÑекÑнд. Ðе ÑÑаÑÐ¸Ñ ÑеÑÑÑÑÑ ÑеÑвеÑа (async wait), но паÑализÑÐµÑ Ð°Ð²ÑомаÑиÑеÑкое ÑканиÑование. ÐÑи DDoS-попÑÑке â мгновеннÑй оÑÐ²ÐµÑ Ð±ÐµÐ· задеÑжки (cap 50 одновÑеменнÑÑ
).</li> <li data-num="1498"><span class="changelog-tag changelog-tag--SEC" data-tag-alias="SEC">SEC</span> <strong>СамоÑниÑÑожение 451-ÑÑÑаниÑÑ</strong> â <code><meta http-equiv="refresh"></code> ÑменÑÐµÑ ÑÑÑаниÑÑ Ð½Ð° пÑÑÑÑÑ ÑеÑез 1 ÑекÑндÑ. Headless-бÑаÑÐ·ÐµÑ ÑензоÑа не ÑÑÐ¿ÐµÐµÑ ÑделаÑÑ ÑкÑинÑоÑ.</li> </ul> <h3 id="мониÑоÑинг-и-ÑеагиÑование">ÐониÑоÑинг и ÑеагиÑование</h3> <ul> <li data-num="1499"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> <strong>ÐаÑбоÑд «ЦензÑÑнÑй ÑиÑ»</strong> â Ð½Ð¾Ð²Ð°Ñ ÐºÐ°ÑÑоÑка в <code>/_/dashboard</code>: заблокиÑовано вÑего, по ASN, по CIDR, ÑникалÑнÑе IP, Ñоп-10 ASN гоÑведомÑÑв, поÑледние 20 блокиÑовок Ñ IP/UA/path. ÐбновлÑеÑÑÑ Ð² ÑеалÑном вÑемени.</li> <li data-num="1500"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> <strong>ÐлеÑÑÑ Ð¿Ñи ÑканиÑовании</strong> â 100+ блокиÑовок за Ð¶Ð¸Ð·Ð½Ñ isolate â жÑлÑое пÑедÑпÑеждение, 500+ â кÑаÑнÑй алеÑÑ Ð½Ð° даÑбоÑде. Ðидно ÑÑÐ°Ð·Ñ Ð±ÐµÐ· Grafana.</li> <li data-num="1501"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> <strong>Webhook в Slack/Telegram</strong> â env <code>CENSOR_ALERT_WEBHOOK_URL</code> â JSON-Ñведомление пÑи каждÑÑ
10 блокиÑовкаÑ
. ÐедÑпликаÑÐ¸Ñ (не ÑаÑе Ñаза в 5 мин), SSRF-заÑиÑа, timeout.</li> <li data-num="1502"><span class="changelog-tag changelog-tag--DEVOPS" data-tag-alias="DEVOPS">DEVOPS</span> <strong>Prometheus-меÑÑики</strong>
1 â <code>worker_censor_blocked_total</code>, <code>worker_censor_blocked_asn_total</code>, <code>worker_censor_blocked_cidr_total</code>, <code>worker_censor_unique_ips</code>, <code>worker_censor_alerts_sent_total</code>.</li> </ul> <h3 id="зеÑкала-и-инÑÑаÑÑÑÑкÑÑÑа">ÐеÑкала и инÑÑаÑÑÑÑкÑÑÑа</h3> <ul> <li data-num="1503"><span class="changelog-tag changelog-tag--SEC" data-tag-alias="SEC">SEC</span> <strong>API-зеÑкало Ñоже заÑиÑено</strong> â <code>api.dscrs.site</code> пÑовеÑÑÐµÑ Ð¸ ASN, и CIDR (37 кÑÑпнÑÑ
гоÑдиапазонов). ÐÑвеÑÐ°ÐµÑ 451 JSON Ñ tarpit.</li> <li data-num="1504"><span class="changelog-tag changelog-tag--SEC" data-tag-alias="SEC">SEC</span> <strong>GAE-зеÑкала оÑдаÑÑ 451</strong> â Go-пÑокÑи на App Engine полÑÑил <code>isCensorIP()</code> â полноÑÐµÐ½Ð½Ð°Ñ 451-ÑÑÑаниÑа Ñ ÐонÑÑиÑÑÑией вмеÑÑо голого 429.</li> <li data-num="1505"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>JS-ÑÐ°Ð¹Ð»Ñ Ð½Ð° зеÑкалаÑ
болÑÑе не ломаÑÑÑÑ</strong> â ÑбÑана попÑÑка directory listing (Netlify его не поддеÑживаеÑ), вмеÑÑо ÑÑого пÑÑмой пÑокÑинг. ÐÑи обновлении бандла â авÑомаÑиÑеÑкий ÑбÑÐ¾Ñ ÐºÑÑа и redirect.</li> <li data-num="1506"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>ÐоÑ-зеÑкалÑÑик обновлÑеÑÑÑ Ð¿Ñи каждом деплое</strong> â entrypoint.sh ÑепеÑÑ Ð²Ñегда копиÑÑÐµÑ Ñвежие main.js и create-mirror.py из Docker-обÑаза, ÑоÑ
ÑанÑÑ venv и node_modules.</li> <li data-num="1507"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>GCP Cloud Build не Ð¿Ð°Ð´Ð°ÐµÑ Ð½Ð° новÑÑ
пÑоекÑаÑ
</strong> â добавлен Ñаг <code>grant-storage-access</code> пеÑед деплоем (roles/storage.admin Ð´Ð»Ñ App Engine SA), ÑÑебÑемÑй Google Ñ 2025 года.</li> <li data-num="1508"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>Python-завиÑимоÑÑи найденÑ</strong> â create-mirror.py ÑепеÑÑ Ð·Ð°Ð¿ÑÑкаеÑÑÑ ÑеÑез venv python (где ÑÑÑановлен <code>requests</code>), а не ÑеÑез ÑиÑÑемнÑй.</li> </ul> </div> </details> <details class="changelog-section"> <summary class="changelog-summary"><span class="changelog-meta"><span class="changelog-meta__version">v9.131</span><span class="changelog-meta__date">14-04-2026</span></span><h2 id="v9131-14-04-2026--бÑонÑ-длÑ-плаÑÑоÑмÑ-заÑиÑа-оÑ-аÑак-боÑов-и-блокиÑовок">ÐÑÐ¾Ð½Ñ Ð´Ð»Ñ Ð¿Ð»Ð°ÑÑоÑмÑ: заÑиÑа Ð¾Ñ Ð°Ñак, боÑов и блокиÑовок</h2></summary> <div class="changelog-section__body"> <p>ÐиÑкÑÑÑ Ð¿Ð¾Ð»ÑÑил многоÑлойнÑÑ Ð·Ð°ÑиÑÑ. IP-адÑÐµÑ API-ÑеÑвеÑа ÑепеÑÑ ÑкÑÑÑ â ни ÑензоÑÑ, ни ÑканеÑÑ ÑÑзвимоÑÑей его не видÑÑ. ÐаждÑй запÑÐ¾Ñ Ð¿ÑоÑ
Ð¾Ð´Ð¸Ñ ÑеÑез WAF-ÑилÑÑÑÑ, AI-кÑаÑлеÑÑ Ð¿Ð¾Ð»ÑÑаÑÑ Ð±ÐµÑконеÑнÑй лабиÑÐ¸Ð½Ñ Ð²Ð¼ÐµÑÑо конÑенÑа, а зеÑкала пÑодолжаÑÑ ÑабоÑаÑÑ Ð±ÐµÐ· пеÑебоев.</p> <h3 id="заÑиÑа-оÑ-аÑак">ÐаÑиÑа Ð¾Ñ Ð°Ñак</h3> <ul> <li data-num="1484"><span class="changelog-tag changelog-tag--SEC" data-tag-alias="SEC">SEC</span> <strong>WAF ÑилÑÑÑÑÐµÑ ÐºÐ°Ð¶Ð´Ñй запÑоÑ</strong> â на обоиÑ
доменаÑ
(discours.io и dscrs.site) вклÑÑÐµÐ½Ñ Cloudflare Managed Ruleset и OWASP Core Ruleset. SQL-инÑекÑии, XSS, попÑÑки ÑдалÑнного вÑÐ¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ ÐºÐ¾Ð´Ð° â вÑÑ Ð¾ÑÑекаеÑÑÑ Ð´Ð¾ Ñого, как дойдÑÑ Ð´Ð¾ ÑеÑвеÑа. ÐаннÑе авÑоÑов и ÑиÑаÑелей под заÑиÑой.</li> <li data-num="1485"><span class="changelog-tag changelog-tag--SEC" data-tag-alias="SEC">SEC</span> <strong>ÐоÑÑ Ð¿Ð¾Ð´ конÑÑолем</strong> â Super Bot Fight Mode акÑивен: ÑканеÑÑ, Ñпам-боÑÑ Ð¸ кÑаÑлеÑÑ Ð¾ÑÑеиваÑÑÑÑ Ð½Ð° ÑÑовне Cloudflare. ÐоиÑковики и обÑÑнÑе ÑиÑаÑели пÑоÑ
одÑÑ Ñвободно.</li> </ul> <h3 id="конÑенÑ-авÑоÑов--не-коÑм-длÑ-нейÑоÑеÑей">ÐонÑÐµÐ½Ñ Ð°Ð²ÑоÑов â не коÑм Ð´Ð»Ñ Ð½ÐµÐ¹ÑоÑеÑей</h3> <ul> <li data-num="1486"><span class="changelog-tag changelog-tag--SEC" data-tag-alias="SEC">SEC</span> <strong>AI-ÑкÑейпеÑÑ Ð·Ð°Ð±Ð»Ð¾ÐºÐ¸ÑованÑ</strong> â ChatGPT, Claude, Perplexity и дÑÑгие AI-кÑаÑлеÑÑ Ð±Ð¾Ð»ÑÑе не забиÑаÑÑ ÑекÑÑÑ Ð°Ð²ÑоÑов Ð´Ð»Ñ Ð¾Ð±ÑÑÐµÐ½Ð¸Ñ Ð¼Ð¾Ð´ÐµÐ»ÐµÐ¹. ÐаÑи маÑеÑÐ¸Ð°Ð»Ñ Ð¿ÑÐ¸Ð½Ð°Ð´Ð»ÐµÐ¶Ð°Ñ Ð²Ð°Ð¼.</li> <li data-num="1487"><span class="changelog-tag changelog-tag--SEC" data-tag-alias="SEC">SEC</span> <strong>AI Labyrinth Ð´Ð»Ñ Ð½Ð°ÑÑÑÑнÑÑ
</strong> â еÑли AI-Ð±Ð¾Ñ Ð¿ÑÑаеÑÑÑ Ð¾Ð±Ð¾Ð¹Ñи блокиÑовкÑ, Cloudflare подÑовÑÐ²Ð°ÐµÑ ÐµÐ¼Ñ Ð±ÐµÑконеÑнÑе ÑейковÑе ÑÑÑаниÑÑ, ÑÑаÑÑ ÐµÐ³Ð¾ ÑеÑÑÑÑÑ Ð²Ð¿ÑÑÑÑÑ. ÐмеÑÑо ваÑиÑ
ÑÑаÑей он полÑÑÐ°ÐµÑ Ð»Ð°Ð±Ð¸ÑÐ¸Ð½Ñ Ð¸Ð· ниÑего.</li> </ul> <h3 id="невидимÑй-ÑеÑвеÑ--ÑилÑнаÑ-заÑиÑа-оÑ-блокиÑовок">ÐевидимÑй ÑеÑÐ²ÐµÑ â ÑилÑÐ½Ð°Ñ Ð·Ð°ÑиÑа Ð¾Ñ Ð±Ð»Ð¾ÐºÐ¸Ñовок</h3> <ul> <li data-num="1488"><span class="changelog-tag changelog-tag--SEC" data-tag-alias="SEC">SEC</span> <strong>IP-адÑÐµÑ ÑеÑвеÑа ÑкÑÑÑ</strong>
1 â <code>api.discours.io</code> ÑепеÑÑ Ð·Ð° Cloudflare Proxy. ÐаÑÑоÑÑий IP невозможно ÑзнаÑÑ ÑеÑез DNS â <code>nslookup</code> Ð¿Ð¾ÐºÐ°Ð¶ÐµÑ ÑолÑко адÑеÑа Cloudflare. ÐаблокиÑоваÑÑ ÐиÑкÑÑÑ ÑÑало на поÑÑдок Ñложнее: нÑжно блокиÑоваÑÑ Ð²ÐµÑÑ Cloudflare, а ÑÑо пол-инÑеÑнеÑа.</li> <li data-num="1489"><span class="changelog-tag changelog-tag--SEC" data-tag-alias="SEC">SEC</span> <strong>ШиÑÑование без компÑомиÑÑов</strong> â Full Strict SSL + пÑинÑдиÑелÑнÑй HTTPS + HSTS (6 меÑÑÑев). Соединение Ð¼ÐµÐ¶Ð´Ñ ÑиÑаÑелем и ÑеÑвеÑом невозможно пеÑеÑ
ваÑиÑÑ Ð¸Ð»Ð¸ подмениÑÑ. ТоÑка.</li> </ul> <h3 id="Ñвои-ÑеÑвиÑÑ--не-боÑÑ">Свои ÑеÑвиÑÑ â не боÑÑ</h3> <p>Bot Fight Mode блокиÑÑÐµÑ Ð»Ñбой ÑÑаÑик Ñ IP даÑаÑенÑÑов â а наÑи ÑеÑвиÑÑ Ð¶Ð¸Ð²ÑÑ Ð¸Ð¼ÐµÐ½Ð½Ð¾ Ñам. ÐÑовели полнÑй аÑÐ´Ð¸Ñ 10+ ÑеÑвиÑов и Ñделали Ñак, ÑÑÐ¾Ð±Ñ Ð·Ð°ÑиÑа не меÑала Ñвоим.</p> <ul> <li data-num="1490"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>ÐеÑкала на AppEngine пÑоÑ
одÑÑ Ñвободно</strong> â WAF Skip-пÑавило по User-Agent пÑопÑÑÐºÐ°ÐµÑ Ð²Ñе appspot-зеÑкала мимо боÑ-ÑилÑÑÑов. ÐовÑй адÑÐµÑ Ð·ÐµÑкала заÑабоÑÐ°ÐµÑ ÑÑÐ°Ð·Ñ â без ÑÑÑной наÑÑÑойки.</li> <li data-num="1491"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>Astro-ÑÑонÑенд и коллаб-ÑеÑÐ²ÐµÑ Ð½Ðµ блокиÑÑÑÑÑÑ</strong> â Publy, HocusPocus и VPN-Ð±Ð¾Ñ Ð½Ð° Fly.io полÑÑили Skip-пÑавило по ASN. РедакÑоÑ, коллабоÑаÑивное ÑедакÑиÑование и ÑинÑ
ÑонизаÑÐ¸Ñ Ð¿Ð¾Ð´Ð¿Ð¸Ñок ÑабоÑаÑÑ Ð±ÐµÐ· пеÑебоев.</li> <li data-num="1492"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>ÐеÑкало пеÑедаÑÑ ÑеалÑнÑй IP ÑиÑаÑелÑ</strong> â mirror worker пÑобÑаÑÑÐ²Ð°ÐµÑ <code>CF-Connecting-IP</code> в <code>X-Forwarded-For</code>. Rate limiting на бÑкенде ÑÑиÑÐ°ÐµÑ Ð·Ð°Ð¿ÑоÑÑ Ð¿Ð¾-ÑеÑÑномÑ, а не Ð²Ð°Ð»Ð¸Ñ Ð²ÑÑ Ð½Ð° один IP зеÑкала.</li> <li data-num="1493"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> <strong>Сквозной Ñокен Ð´Ð»Ñ ÑеÑвеÑнÑÑ
запÑоÑов</strong> â Netlify-ÑÑнкÑии (sitemap, LCP-preload) ÑепеÑÑ Ð¾ÑпÑавлÑÑÑ ÑекÑеÑнÑй заголовок <code>X-Discours-Internal</code>, и WAF пÑопÑÑÐºÐ°ÐµÑ Ð¸Ñ
без вопÑоÑов. ÐÑбой новÑй ÑеÑÐ²Ð¸Ñ â пÑоÑÑо добавлÑÐµÑ Ð·Ð°Ð³Ð¾Ð»Ð¾Ð²Ð¾Ðº и ÑабоÑаеÑ. ÐикакиÑ
новÑÑ
пÑавил в Dashboard.</li> </ul> <h3 id="поÑÑоваÑ-заÑиÑа">ÐоÑÑÐ¾Ð²Ð°Ñ Ð·Ð°ÑиÑа</h3> <ul> <li data-num="1494"><span class="changelog-tag changelog-tag--SEC" data-tag-alias="SEC">SEC</span> <strong>DMARC Ð´Ð»Ñ Ð·ÐµÑкалÑного домена</strong> â dscrs.site полÑÑил DMARC-запиÑÑ. ÐоÑÑовÑе ÑеÑвеÑÑ Ð¿ÑовеÑÑÑÑ, ÑÑо пиÑÑма Ð¾Ñ Ð¸Ð¼ÐµÐ½Ð¸ зеÑкала дейÑÑвиÑелÑно оÑпÑÐ°Ð²Ð»ÐµÐ½Ñ Ð½Ð°Ð¼Ð¸. ФиÑинг и ÑпÑÑинг Ñ Ð½Ð°Ñего домена â невозможен.</li> </ul> </div> </details> <details class="changelog-section"> <summary class="changelog-summary"><span class="changelog-meta"><span class="changelog-meta__version">v9.130</span><span class="changelog-meta__date">14-04-2026</span></span><h2 id="v9130-14-04-2026--новаÑ-«ÑмнаÑ-двеÑÑ»-длÑ-обÑ
ода-блокиÑовок-и-обновление-ÑÑаÑого-зеÑкала">ÐÐ¾Ð²Ð°Ñ Â«ÑÐ¼Ð½Ð°Ñ Ð´Ð²ÐµÑÑ» Ð´Ð»Ñ Ð¾Ð±Ñ
ода блокиÑовок и обновление ÑÑаÑого зеÑкала</h2></summary> <div class="changelog-section__body"> <h3 id="зеÑкало">ÐеÑкало</h3> <ul> <li data-num="1477"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>ÐеÑкало Ñнова ÑоздаÑÑÑÑ</strong> â Google пÑекÑаÑила поддеÑÐ¶ÐºÑ Go 1.21 на Ap
1p Engine, и вÑе 10 попÑÑок ÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ Ð·ÐµÑкала молÑа падали на деплое. Ðбновили runtime до Go 1.22 â зеÑкала ÑоздаÑÑÑÑ Ð·Ð° 2 минÑÑÑ, как ÑанÑÑе.</li> <li data-num="1478"><span class="changelog-tag changelog-tag--DEVOPS" data-tag-alias="DEVOPS">DEVOPS</span> <strong>Ðеплой боÑа â одной кнопкой</strong> â наÑÑÑоен GitHub Actions: пÑÑ Ð² <code>main</code> авÑомаÑиÑеÑки пеÑеÑобиÑÐ°ÐµÑ Docker-обÑаз и Ð´ÐµÐ¿Ð»Ð¾Ð¸Ñ Ð½Ð° ÑеÑÐ²ÐµÑ ÑеÑез Dokku. ÐолÑÑе не нÑжно заÑ
одиÑÑ Ð½Ð° ÑеÑÐ²ÐµÑ Ð²ÑÑÑнÑÑ.</li> <li data-num="1479"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>Docker не ломаеÑÑÑ Ð¿Ñи ÑбоÑке Ñ Windows</strong> â <code>.gitattributes</code> гаÑанÑиÑÑÐµÑ Unix-пеÑеноÑÑ ÑÑÑок в shell-ÑкÑипÑаÑ
. Dockerfile дополниÑелÑно ÑиÑÑÐ¸Ñ <code>\\r</code> â деплой ÑабоÑÐ°ÐµÑ Ñ Ð»Ñбой ÐС.</li> <li data-num="1480"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>ÐеÑкало пеÑедаÑÑ ÑеалÑнÑй IP</strong> â mirror API worker ÑепеÑÑ Ð¿ÑобÑаÑÑÐ²Ð°ÐµÑ <code>CF-Connecting-IP</code> в <code>X-Forwarded-For</code> пÑи пÑокÑиÑовании на бÑкенд. Rate limiting и аналиÑика видÑÑ Ð½Ð°ÑÑоÑÑего ÑиÑаÑелÑ, а не IP зеÑкала.</li> </ul> <h3 id="discours-gate--ÑмнаÑ-ÑоÑка-вÑ
ода">Discours Gate â ÑÐ¼Ð½Ð°Ñ ÑоÑка вÑ
ода</h3> <ul> <li data-num="1481"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> <strong>СÑÑаниÑа-ÑлÑз Ð´Ð»Ñ ÑиÑаÑелей из-за блокиÑовки</strong> â оÑкÑÑваеÑÑ ÑÑÑлкÑ, видиÑÑ Ð»Ð¾Ð³Ð¾Ñип ÐиÑкÑÑÑа и ÑпиннеÑ. Ðа 1-2 ÑекÑÐ½Ð´Ñ ÑÑÑаниÑа пÑовеÑÑеÑ, доÑÑÑпен ли ÑайÑ, и незамеÑно пеÑенапÑавлÑÐµÑ â на <code>discours.io</code> или зеÑкало. ÐикакиÑ
инÑÑÑÑкÑий, VPN-ов, ÑелегÑам-боÑов â пÑоÑÑо ÑабоÑаеÑ.</li> <li data-num="1482"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> <strong>ÐеÑкало обновлÑеÑÑÑ Ñамо</strong> â пÑи Ñоздании нового зеÑкала ÑеÑез Telegram-боÑа <code>config.json</code> в GCS-бакеÑе обновлÑеÑÑÑ Ð°Ð²ÑомаÑиÑеÑки. ШлÑз вÑегда Ð·Ð½Ð°ÐµÑ Ð°ÐºÑÑалÑнÑй адÑеÑ.</li> <li data-num="1483"><span class="changelog-tag changelog-tag--UX" data-tag-alias="UX">UX</span> <strong>Fallback Ð´Ð»Ñ ÐºÑайниÑ
ÑлÑÑаев</strong> â еÑли и пÑовеÑка, и конÑиг не загÑÑзилиÑÑ (Ð½ÐµÑ ÑеÑи, вÑÑ Ð·Ð°Ð±Ð»Ð¾ÐºÐ¸Ñовано) â ÑеÑез 5 ÑекÑнд поÑвÑÑÑÑ Ð´Ð²Ðµ кнопки: «ÐÑкÑÑÑÑ discours.io» и «ÐÑкÑÑÑÑ Ð·ÐµÑкало». СÑÑаниÑа ÑабоÑÐ°ÐµÑ Ð´Ð°Ð¶Ðµ без JavaScript.</li> </ul> </div> </details> <details class="changelog-section"> <summary class="changelog-summary"><span class="changelog-meta"><span class="changelog-meta__version">v9.129</span><span class="changelog-meta__date">14-04-2026</span></span><h2 id="v9129-14-04-2026--английÑкий-инÑеÑÑейÑ-заглÑÑка-Ñ-Ñ
аÑакÑеÑом-ÑедакÑоÑ-без-гоÑизонÑалÑного-ÑкÑолла">ÐнглийÑкий инÑеÑÑейÑ, заглÑÑка Ñ Ñ
аÑакÑеÑом, ÑедакÑÐ¾Ñ Ð±ÐµÐ· гоÑизонÑалÑного ÑкÑолла</h2></summary> <div class="changelog-section__body"> <p>ÐиÑкÑÑÑ Ð·Ð°Ð³Ð¾Ð²Ð¾Ñил по-английÑки. Ðе веÑÑ â но Ñапка, подвал, геÑой-баннеÑ, ÑоÑма донаÑа, модалка логина и Ð»Ð¾Ð°Ð´ÐµÑ ÑÑÑÐ°Ð½Ð¸Ñ ÑепеÑÑ Ð¿ÐµÑеклÑÑаÑÑÑÑ Ð½Ð° EN пÑи пеÑеÑ
оде на <code>/en/â¦</code>. РзаглÑÑка неопÑбликованнÑÑ
маÑеÑиалов пÑевÑаÑилаÑÑ Ð¸Ð· невзÑаÑного ÑекÑÑа в ÑÑмнÑÑ ÐºÐ°ÑÑоÑкÑ, коÑоÑÐ°Ñ Ð¿ÑиглаÑаеÑ, а не оÑÑалкиваеÑ.</p> <h3 id="мÑлÑÑиÑзÑÑноÑÑÑ">ÐÑлÑÑиÑзÑÑноÑÑÑ</h3> <ul> <li data-num="1468"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> <strong>ÐиÑкÑÑÑ ÑепеÑÑ Ð¸ по-английÑки</strong> â пеÑеклÑÑаÑÐµÐ»Ñ RU/EN в подвале ÑепеÑÑ ÑиÑÑемно менÑÐµÑ Ð¸Ð½ÑеÑÑÐµÐ¹Ñ Ð¿ÑоекÑа. Шапка, подвал, геÑой-баннеÑ, пÑоÑилÑ-менÑ, модалка авÑоÑизаÑии, ÑоÑма донаÑа и ÑкÑан загÑÑзки â вÑÑ Ð¿ÐµÑеведено. ÐнглоÑзÑÑнÑй ÑиÑаÑÐµÐ»Ñ Ð½Ð°ÐºÐ¾Ð½ÐµÑ Ð²Ð¸Ð´Ð¸Ñ <code>Sign In</code>, а не <code>ÐойÑи</code>.</li> <li data-num="1469"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> <strong>EN-Ñежим запоминаеÑÑÑ Ð² ÑеÑÑии</strong> â пеÑеÑли на <code>/en/tags</code>, поÑом кликнÑли на ÑÑÑÐ»ÐºÑ Ð±ÐµÐ· <code>/en/</code> â localeService поймÑÑ, ÑÑо Ð²Ñ Ð² EN-Ñежиме, и пеÑенапÑÐ°Ð²Ð¸Ñ Ð¾Ð±ÑаÑно на <code>/en/tags</code>. ÐикакиÑ
внезапнÑÑ
ÑкаÑков Ð¼ÐµÐ¶Ð´Ñ ÑзÑками.</li> <li data-num="1470"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> <strong>Ð¡Ð»Ð¾Ð³Ð°Ð½Ñ Ð·Ð°Ð³ÑÑзки â на ÑзÑке ÑиÑаÑелÑ</strong> â пока ÑÑÑаниÑа гÑÑзиÑÑÑ, EN-полÑзоваÑÐµÐ»Ñ ÑÐ²Ð¸Ð´Ð¸Ñ Â«An open journal on culture, science and society» вмеÑÑо «ÐÑкÑÑÑÑй жÑÑнал о кÑлÑÑÑÑе, наÑке и обÑеÑÑве». ÐеÑÑÑÑ EN-Ñлоганов, деÑÑÑÑ RU â каждÑй Ñаз новÑй.</li> <li data-num="1471"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>Worker болÑÑе не блокиÑÑÐµÑ <code>/en/</code></strong> â Cloudflare Worker ÑанÑÑе ÑÑавил 301-ÑедиÑÐµÐºÑ Ñ <code>/en/â¦</code> на <code>/â¦</code>
1, ÑниÑÑÐ¾Ð¶Ð°Ñ Ð»Ñбой ÑÐ°Ð½Ñ Ð½Ð° EN-веÑÑиÑ. ТепеÑÑ Ð¿ÑопÑÑÐºÐ°ÐµÑ â Angular-ÑоÑÑинг ÑазбиÑаеÑÑÑ Ñам.</li> </ul> <h3 id="заглÑÑка-неопÑбликованнÑÑ
-маÑеÑиалов">ÐаглÑÑка неопÑбликованнÑÑ
маÑеÑиалов</h3> <ul> <li data-num="1472"><span class="changelog-tag changelog-tag--UX" data-tag-alias="UX">UX</span> <strong>ТÑÐ¼Ð½Ð°Ñ ÐºÐ°ÑÑоÑка вмеÑÑо ÑкÑÑной заглÑÑки</strong> â «ÐÑодолжение доÑÑÑпно ÑÑаÑÑникам» ÑепеÑÑ Ð½Ð° ÑÑÑном Ñоне (#111) Ñ Ð±ÐµÐ»Ñм ÑекÑÑом и декоÑаÑивной <code>â¦</code> винÑеÑкой. ТекÑÑ Ð·Ð°ÑÑÑ
Ð°ÐµÑ Ð³ÑадиенÑом, а ниже â ÑлеганÑÐ½Ð°Ñ ÑÑÐ¼Ð½Ð°Ñ ÐºÐ°ÑÑоÑка Ñ Ð¼Ñгкой entrance-анимаÑией. СÑоп-Ñигнал, коÑоÑÑй Ñ
оÑеÑÑÑ Ð½Ð°Ð¶Ð°ÑÑ, а не пÑоÑкÑоллиÑÑ.</li> <li data-num="1473"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>Ðнопка «ÐойÑи» болÑÑе не ÑÑÑÐ½Ð°Ñ Ð½Ð° Ñинем</strong> â CSS Cascade Layers баг: <code>button { color: inherit }</code> (unlayered) побеждал <code>ds-btn-primary { color: #fff }</code> (@layer). СиÑÑемнÑй ÑÐ¸ÐºÑ Ð² normalize â ÑепеÑÑ Ð²Ñе <code>button.ds-btn-primary</code> полÑÑаÑÑ Ð±ÐµÐ»Ñй ÑекÑÑ. ÐаÑÑонÑÑо 5 кнопок на ÑазнÑÑ
ÑÑÑаниÑаÑ
.</li> </ul> <h3 id="ÑедакÑоÑ-2">РедакÑоÑ</h3> <ul> <li data-num="1474"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>ÐлиннÑе Ñлова не ÑаздÑваÑÑ ÑедакÑоÑ</strong> â <code>overflow-wrap: anywhere</code> в ProseMirror-конÑенÑе: немеÑкие композиÑÑ, URL без пÑобелов, ÑпонÑкий ÑекÑÑ â вÑÑ Ð¿ÐµÑеноÑиÑÑÑ, гоÑизонÑалÑнÑй ÑкÑолл не поÑвлÑеÑÑÑ.</li> <li data-num="1475"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>ÐоÑизонÑалÑнÑй ÑкÑолл â на вÑеÑ
ÑкÑанаÑ
, не ÑолÑко мобилÑнÑÑ
</strong> â <code>overflow-x: hidden</code> ÑбÑан из <code>@media mobile</code> и пÑименÑн глобалÑно к конÑейнеÑÑ ÑедакÑоÑа. ÐлиннÑй ÑÑÐ»Ð±Ð°Ñ Ð±Ð¾Ð»ÑÑе не ÑаÑÑиÑÑÐµÑ ÑÑÑаниÑÑ Ð¸ на планÑеÑаÑ
.</li> </ul> <h3 id="мелоÑи">ÐелоÑи</h3> <ul> <li data-num="1476"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>ÐоковÑе баннеÑÑ Ð½Ðµ обÑезаÑÑÑÑ</strong> â поÑледний Ð±Ð°Ð½Ð½ÐµÑ Ð² ÑайдбаÑе ÑÑаÑÑи мог иÑÑезаÑÑ: <code>bottom: 0</code> обÑезал его Ñовно по конÑейнеÑÑ. ТепеÑÑ <code>bottom: -500px</code> + <code>overflow: clip</code> â видно вÑÑ, лиÑнего не вÑлезеÑ.</li> </ul> </div> </details> <details class="changelog-section"> <summary class="changelog-summary"><span class="changelog-meta"><span class="changelog-meta__version">v9.128</span><span class="changelog-meta__date">05-04-2026</span></span><h2 id="v9128-05-04-2026--зеÑкала-ÑабоÑаÑÑ-ÑообÑениÑ-Ñдобнее-Ñеги-Ñ-rss">ÐеÑкала ÑабоÑаÑÑ, ÑообÑÐµÐ½Ð¸Ñ Ñдобнее, Ñеги Ñ RSS</h2></summary> <div class="changelog-section__body"> <p>Ðлавное в ÑÑом Ñелизе â ÐиÑкÑÑÑ ÑепеÑÑ Ð¿Ð¾Ð»Ð½Ð¾Ñенно ÑабоÑÐ°ÐµÑ Ð½Ð° зеÑкалаÑ
. ÐаÑÑинки, обложки, аваÑаÑки â вÑÑ Ð·Ð°Ð³ÑÑжаеÑÑÑ ÑеÑез незаблокиÑованнÑй домен, пÑиÑÑм оÑновной ÑÐ°Ð¹Ñ Ð¾Ð± ÑÑом даже не знаеÑ. РеÑÑ â лиÑнÑе ÑообÑÐµÐ½Ð¸Ñ ÑÑали Ñдобнее, ÑÑÑаниÑÑ Ñегов полÑÑили RSS-ÐºÐ½Ð¾Ð¿ÐºÑ Ð¸ OG-каÑÑинкÑ.</p> <h3 id="доÑÑÑпноÑÑÑ-Ñ-зеÑкал">ÐоÑÑÑпноÑÑÑ Ñ Ð·ÐµÑкал</h3> <ul> <li data-num="1457"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> <strong>ÐаÑÑинки на зеÑкалаÑ
â болÑÑе не пÑÑÑÑе квадÑаÑÑ</strong> â пÑи оÑкÑÑÑии ÐиÑкÑÑÑа ÑеÑез зеÑкало вÑе изобÑÐ°Ð¶ÐµÐ½Ð¸Ñ Ð°Ð²ÑомаÑиÑеÑки загÑÑжаÑÑÑÑ Ñ Ð½ÐµÐ·Ð°Ð±Ð»Ð¾ÐºÐ¸Ñованного CDN. ÐÑновной ÑÐ°Ð¹Ñ Ð¿ÑÐ¾Ð´Ð¾Ð»Ð¶Ð°ÐµÑ ÑабоÑаÑÑ ÐºÐ°Ðº ÑанÑÑе â подмена пÑоиÑÑ
Ð¾Ð´Ð¸Ñ ÑолÑко Ñам, где нÑжно.</li> <li data-num="1458"><span class="changelog-tag changelog-tag--PERF" data-tag-alias="PERF">PERF</span> <strong>LCP-каÑÑинка на зеÑкале гÑÑзиÑÑÑ Ð¼Ð³Ð½Ð¾Ð²ÐµÐ½Ð½Ð¾</strong> â inline-ÑкÑÐ¸Ð¿Ñ Ð² <code><head></code> опÑеделÑÐµÑ Ð´Ð¾Ð¼ÐµÐ½ аÑÑеÑов до загÑÑзки лÑбого дÑÑгого кода. Preload-подÑказки в Netlify Edge Functions и Cloudflare Worker Ñоже адапÑиÑÑÑÑÑÑ Ðº зеÑкалÑ.</li> <li data-num="1459"><span class="changelog-tag changelog-tag--SEO" data-tag-alias="SEO">SEO</span> <strong>РаÑÑаÑивание Ñ Ð·ÐµÑкала â Ñ Ð¿ÑавилÑнÑми пÑевÑÑ</strong> â OG-Ñеги, JSON-LD, Twitter Card â везде ÑÑÑлки на доÑÑÑпнÑе каÑÑинки. ÐоделилиÑÑ ÑÑаÑÑÑй в Telegram Ñ Ð·ÐµÑкала? ÐÑевÑÑ Ð¿Ð¾ÐºÐ°Ð¶ÐµÑÑÑ.</li> <li data-num="1460"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>ÐÑÑавленнÑе каÑÑинки не пеÑезаливаÑÑÑÑ Ð·ÑÑ</strong> â ÑедакÑÐ¾Ñ Ð·Ð½Ð°ÐµÑ Ð¾Ð±Ð° домена аÑÑеÑов и не пÑÑаеÑÑÑ Ð¿ÐµÑезалиÑÑ Ð½Ð° S3 изобÑажение, коÑоÑое и Ñак Ð»ÐµÐ¶Ð¸Ñ Ð½Ð° наÑем CDN.</li> <li data-num="1461"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>Fancybox и адапÑивнÑй srcset ÑабоÑаÑÑ Ð½Ð° зеÑкале</strong> â диÑекÑива postImages ÑепеÑÑ ÑаÑпознаÑÑ Ð¸Ð·Ð¾Ð±ÑÐ°Ð¶ÐµÐ½Ð¸Ñ Ñ Ð¾Ð±Ð¾Ð¸Ñ
доменов. ÐликнÑл на каÑÑÐ¸Ð½ÐºÑ Ð² ÑÑаÑÑе â оÑкÑоеÑÑÑ Ð² полном ÑазмеÑе, как и на оÑновном ÑайÑе.</li> </ul> <h3 id="ÑообÑениÑ">СообÑениÑ</h3> <ul> <li data-num="1462"><span class="changelog-tag changelog-tag--UX" data-tag-alias="UX">UX</span> <strong>ÐÐµÑ Ð´Ð¾ÑÑÑпа к ÑÑÐ¶Ð¾Ð¼Ñ Ð´Ð¸Ð°Ð»Ð¾Ð³Ñ â понÑÑнÑй ÑкÑан</strong> â вмеÑÑо оÑибки или пÑÑÑоÑÑ Ð¿Ð¾ÐºÐ°Ð¶ÐµÑÑÑ ÑÑÑаниÑа Ñ Ð¸ÐºÐ¾Ð½ÐºÐ¾Ð¹ замка, обÑÑÑнением и кнопкой «РÑообÑениÑм». ÐикакиÑ
загадок.</li> <li data-num="1463"><span class="changelog-tag changelog-tag--UX" data-tag-alias="UX">UX</span> <strong>ÐейÑÑÐ²Ð¸Ñ Ñ ÑообÑением â по ÑапÑ</strong> â на мобилÑнÑÑ
длиннÑй Ñап по ÑообÑÐµÐ½Ð¸Ñ Ð¾ÑкÑÑÐ²Ð°ÐµÑ popup-Ð¼ÐµÐ½Ñ (копиÑоваÑÑ, оÑвеÑиÑÑ, ÑдалиÑÑ). РабоÑÐ°ÐµÑ Ð´Ð°Ð¶Ðµ без мÑÑи.</li> <li data-num="1464"><span class="changelog-tag changelog-tag--UX" data-tag-alias="UX">UX</span> <strong>ÐодÑвеÑка нового ÑообÑениÑ</strong> â пÑи полÑÑении нового ÑообÑÐµÐ½Ð¸Ñ Ð¾Ð½Ð¾ кÑаÑко подÑвеÑиваеÑÑÑ Ð¼Ñгким Ñоном, ÑÑÐ¾Ð±Ñ Ð³Ð»Ð°Ð· ÑÑÐ°Ð·Ñ Ð½Ð°ÑÑл его в поÑоке.</li> </ul> <h3 id="ÑÑÑаниÑÑ-Ñегов">СÑÑаниÑÑ Ñегов</h3> <ul> <li data-num="1465"><span class="changelog-tag changelog-tag--UX" data-tag-alias="UX">UX</span> <strong>RSS пÑÑмо Ñ ÑÑÑÑÑика</strong> â иконка RSS пеÑееÑ
ала вплоÑнÑÑ Ðº ÑиÑÐ»Ñ Ð¼Ð°ÑеÑиалов в заголовке Ñега. РанÑÑе ÑÑоÑла оÑделÑно и ÑеÑÑлаÑÑ â ÑепеÑÑ Ð²Ð¸Ð´Ð½Ð° ÑÑÐ°Ð·Ñ Ð¸ логиÑеÑки пÑивÑзана к ÑодеÑжимомÑ.</li> <li data-num="1466"><span class="changelog-tag changelog-tag--SEO" data-tag-alias="SEO">SEO</span> <strong>OG-каÑÑинка Ð´Ð»Ñ ÑÑÑÐ°Ð½Ð¸Ñ Ñегов</strong> â пÑи ÑеÑинге ÑÑÑлки на Ñег в ÑоÑÑеÑÑÑ
ÑепеÑÑ Ð¾ÑобÑажаеÑÑÑ Ð»Ð¾Ð³Ð¾Ñип ÐиÑкÑÑÑа вмеÑÑо пÑÑÑого пÑевÑÑ.</li> <li data-num="1467"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>ÐдминÑÐºÐ°Ñ ÑÑÑлка ÑабоÑÐ°ÐµÑ ÑеÑез proxy</strong> â кнопка «ÐÑкÑÑÑÑ Ð² админке» на ÑÑÑаниÑаÑ
Ñегов болÑÑе не ломаеÑÑÑ, еÑли API ÑабоÑÐ°ÐµÑ ÑеÑез пÑокÑи.</li> </ul> </div> </details> <details class="changelog-section"> <summary class="changelog-summary"><span class="changelog-meta"><span class="changelog-meta__version">v9.127</span><span class="changelog-meta__date">05-04-2026</span></span><h2 id="v9127-05-04-2026--ÑведомлениÑ-ÑиÑе-компакÑнее-живее">УведомлениÑ: ÑиÑе, компакÑнее, живее</h2></summary> <div class="changelog-section__body"> <p>СÑÑаниÑа Ñведомлений и вÑплÑваÑÑие ÑоÑÑÑ Ð¿ÑоÑли ÑеÑез ÑеÑÑÑзнÑÑ Ð¿ÐµÑеÑабоÑкÑ. ÐенÑÑе визÑалÑного ÑÑма, болÑÑе полезной инÑоÑмаÑии â и вÑÑ ÑÑо вÑглÑÐ´Ð¸Ñ Ñак, бÑдÑо бÑло задÑмано Ñ Ñамого наÑала.</p> <h3 id="ÑÑÑаниÑа-Ñведомлений">СÑÑаниÑа Ñведомлений</h3> <ul> <li data-num="1447"><span class="changelog-tag changelog-tag--UX" data-tag-alias="UX">UX</span> <strong>ÐваÑаÑки пеÑееÑ
али к именам</strong> â гÑомоздкий кÑÑжок Ñлева ÑбÑан. ÐмеÑÑо него â аккÑÑаÑнÑе мини-аваÑаÑки (20px) пÑÑмо ÑÑдом Ñ Ð¸Ð¼ÐµÐ½ÐµÐ¼ авÑоÑа. ÐеÑколÑко ÑÑаÑÑников? Ðо ÑÑÑÑ
аваÑаÑок Ñ Ð¼Ñгким пеÑекÑÑÑием, как в меÑÑенджеÑаÑ
.</li> <li data-num="1448"><span class="changelog-tag changelog-tag--UX" data-tag-alias="UX">UX</span> <strong>ÐаÑеÑиал â ÑÑÑлка, а не каÑÑоÑка</strong> â заголовок пÑбликаÑии ÑепеÑÑ ÑÑÐ¾Ð¸Ñ Ð¿ÑÑмо в ÑекÑÑе ÑÐ²ÐµÐ´Ð¾Ð¼Ð»ÐµÐ½Ð¸Ñ ÐºÐ°Ðº «Ðазвание» Ñо ÑÑÑлкой. ÐикакиÑ
вложеннÑÑ
каÑÑоÑек â ÑиÑÑÑй, ÑиÑаемÑй поÑок.</li> <li data-num="1449"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>ÐÑÑÑвÑе ÑÐ²ÐµÐ´Ð¾Ð¼Ð»ÐµÐ½Ð¸Ñ Ð¸ÑÑезаÑÑ</strong> â еÑли комменÑаÑий, ÑемаÑка или пÑиглаÑение ÑÐ´Ð°Ð»ÐµÐ½Ñ â Ñведомление о ниÑ
Ñоже пÑопадÑÑ. ÐенÑа болÑÑе не заÑоÑÑеÑÑÑ Ð¿ÑизÑаками.</li> <li data-num="1450"><span class="changelog-tag changelog-tag--UX" data-tag-alias="UX">UX</span> <strong>ÐоÑÑÑие клавиÑи â не загадка</strong> â иконка клавиаÑÑÑÑ ÑÑдом Ñ Ð·Ð°Ð³Ð¾Ð»Ð¾Ð²ÐºÐ¾Ð¼ ÑепеÑÑ ÑабоÑаеÑ: пÑи наведении показÑÐ²Ð°ÐµÑ Ð¿Ð¾Ð´ÑÐºÐ°Ð·ÐºÑ (j/k â навигаÑиÑ, x â пÑоÑиÑаÑÑ, Delete â ÑдалиÑÑ). РанÑÑе пÑоÑÑо ÑÑоÑла молÑа.</li> <li data-num="1451"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>ЦиÑÑÑ Ð² бейджаÑ
вкладок â Ñовно по ÑенÑÑÑ</strong> â пеÑеÑ
од на flexbox-ÑенÑÑиÑование ÑбÑал микÑоÑдвиг влево, коÑоÑÑй бÑл замеÑен на кÑÑпнÑÑ
ÑкÑанаÑ
.</li> </ul> <h3 id="вÑплÑваÑÑие-ÑведомлениÑ-ÑоÑÑÑ">ÐÑплÑваÑÑие ÑÐ²ÐµÐ´Ð¾Ð¼Ð»ÐµÐ½Ð¸Ñ (ÑоÑÑÑ)</h3> <ul> <li data-num="1452"><span class="changelog-tag changelog-tag--UX" data-tag-alias="UX">UX</span> <strong>ÐомпакÑнÑе, как конÑеÑÑ</strong> â ÑоÑÑÑ ÑепеÑÑ Ð¾Ð±ÑекаÑÑ ÑекÑÑ, а не ÑаÑÑÑгиваÑÑÑÑ Ð½Ð° ÑикÑиÑованнÑÑ ÑиÑинÑ. ÐоÑоÑкое «ÐпÑбликовано» не ÑаÑÐ¸Ñ Ð·Ð° Ñобой 200 пикÑелей пÑÑÑоÑÑ.</li> <li data-num="1453"><span class="changelog-tag changelog-tag--UX" data-tag-alias="UX">UX</span> <strong>ÐобилÑнÑе ÑоÑÑÑ â ÑкÑÑглÑннÑе и Ñ Ð²Ð¾Ð·Ð´ÑÑ
ом</strong> â пÑÑмоÑголÑнÑе полоÑки Ð¾Ñ ÐºÑÐ°Ñ Ð´Ð¾ кÑÐ°Ñ Ð·Ð°Ð¼ÐµÐ½ÐµÐ½Ñ Ð½Ð° аккÑÑаÑнÑе ÑкÑÑглÑннÑе каÑÑоÑки (14px) Ñ Ð¾ÑÑÑÑпами Ð¾Ñ ÐºÑаÑв (12px) и ÑенÑÑиÑованнÑм ÑекÑÑом.</li> <li data-num="1454"><span class="changelog-tag changelog-tag--UX" data-tag-alias="UX">UX</span> <strong>Ðконки в поÑоке ÑекÑÑа</strong> â галоÑка, кÑеÑÑик, ÑÑеÑголÑник ÑепеÑÑ ÑÑоÑÑ Ð¿ÐµÑед пеÑвÑм Ñловом ÑообÑÐµÐ½Ð¸Ñ ÐºÐ°Ðº его ÑаÑÑÑ, а не виÑÑÑ Ð¾ÑделÑно в пÑÑÑоÑе Ñлева. ÐомпакÑнее, еÑÑеÑÑвеннее.</li> <li data-num="1455"><span class="changelog-tag changelog-tag--UX" data-tag-alias="UX">UX</span> <strong>ТекÑÑ Ð½Ðµ оÑÑавлÑÐµÑ ÑиÑоÑ</strong>
1 â <code>text-wrap: balance</code> ÑавномеÑно ÑаÑпÑеделÑÐµÑ Ñлова по ÑÑÑокам. Ðдинокое Ñлово на поÑледней ÑÑÑоке? Такого болÑÑе не бÑдеÑ.</li> <li data-num="1456">[UI] <strong>ÐÑгÑе, деликаÑнее</strong> â ÑкÑÑгление 12â16px, Ñени легÑе, боÑдеÑÑ ÑонÑÑе и ÑониÑованнÑе в ÑÐ²ÐµÑ Ñипа, ÑÐ¾Ð½Ñ ÑÑÑÑ Ñеплее. ÐижнÑÑ ÑвеÑÐ½Ð°Ñ Ð¿Ð¾Ð»Ð¾Ñка ÑбÑана â Ñип и Ñак ÑÑиÑÑваеÑÑÑ Ð¿Ð¾ иконке и ÑонÑ.</li> </ul> </div> </details> <details class="changelog-section"> <summary class="changelog-summary"><span class="changelog-meta"><span class="changelog-meta__version">v9.126</span><span class="changelog-meta__date">04-04-2026</span></span><h2 id="v9126-04-04-2026--ÑообÑениÑ-Ñдобное-Ñоздание-гÑÑпповÑÑ
-ÑаÑов">СообÑениÑ: Ñдобное Ñоздание гÑÑпповÑÑ
ÑаÑов</h2></summary> <div class="changelog-section__body"> <p>Ðнопка «ÐÐ¾Ð²Ð°Ñ Ð³ÑÑппа» на ÑÑÑаниÑе ÑообÑений ÑепеÑÑ ÑÑÐ¾Ð¸Ñ ÑÑдом Ñ Ð·Ð°Ð³Ð¾Ð»Ð¾Ð²ÐºÐ¾Ð¼, как в клаÑÑнÑÑ
меÑÑенджеÑаÑ
, а веÑÑ ÑÐ»Ð¾Ñ ÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ ÑаÑов ÑÑал пÑиÑÑнее.</p> <ul> <li data-num="1441"><span class="changelog-tag changelog-tag--UX" data-tag-alias="UX">UX</span> <strong>«ÐÐ¾Ð²Ð°Ñ Ð³ÑÑппа» пеÑееÑ
ала в заголовок</strong> â кнопка ÑепеÑÑ ÑпÑава Ð¾Ñ Â«Ð¡Ð¾Ð¾Ð±ÑениÑ», Ñовно Ñам, где ÐµÑ Ð¸ÑÐµÑ Ð³Ð»Ð°Ð·. ÐоиÑк оÑÑалÑÑ Ð¾ÑделÑно â каждÑй ÑÐ»ÐµÐ¼ÐµÐ½Ñ Ð½Ð° ÑвоÑм меÑÑе.</li> <li data-num="1442"><span class="changelog-tag changelog-tag--UX" data-tag-alias="UX">UX</span> <strong>Ðа ÑелеÑоне â компакÑÐ½Ð°Ñ Ð¸ÐºÐ¾Ð½ÐºÐ°</strong> â ÑекÑÑ ÑкÑÑваеÑÑÑ Ð½Ð° ÑкÑанаÑ
до 767px, оÑÑаÑÑÑÑ Ð°ÐºÐºÑÑаÑÐ½Ð°Ñ ÐºÑÑÐ³Ð»Ð°Ñ ÐºÐ½Ð¾Ð¿ÐºÐ° Ñ Ð¸ÐºÐ¾Ð½ÐºÐ¾Ð¹. ÐоÑÑаÑоÑно кÑÑпнаÑ, ÑÑÐ¾Ð±Ñ Ð¿Ð¾Ð¿Ð°ÑÑÑ Ð¿Ð°Ð»ÑÑем.</li> <li data-num="1443"><span class="changelog-tag changelog-tag--A11Y" data-tag-alias="A11Y">A11Y</span> <strong>ÐлавиаÑÑÑнÑй ÑокÑÑ Ð²Ð¸Ð´ÐµÐ½ везде</strong> â кнопка ÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ Ð³ÑÑппÑ, кÑеÑÑик закÑÑÑÐ¸Ñ Ð¼Ð¾Ð´Ð°Ð»ÐºÐ¸ и кнопка ÑÐ´Ð°Ð»ÐµÐ½Ð¸Ñ ÑÑаÑÑника полÑÑили <code>:focus-visible</code>. ÐÑо ÑабоÑÐ°ÐµÑ Ñ ÐºÐ»Ð°Ð²Ð¸Ð°ÑÑÑÑ â болÑÑе не ÑгадÑваеÑ, где наÑ
одиÑÑÑ.</li> <li data-num="1444"><span class="changelog-tag changelog-tag--A11Y" data-tag-alias="A11Y">A11Y</span> <strong>ÐÑеÑÑик закÑÑÑÐ¸Ñ ÑÑал кÑÑпнее</strong> â padding ÑвелиÑен вдвое. Ðа мобилÑнÑÑ
попадÑÑÑ Ñ Ð¿ÐµÑвого каÑаниÑ.</li> <li data-num="1445"><span class="changelog-tag changelog-tag--PERF" data-tag-alias="PERF">PERF</span> <strong>ÐваÑаÑки коллажа не ÑдвигаÑÑ ÑаÑкладкÑ</strong> â Ñ Ð¼Ð¸Ð½Ð¸-аваÑаÑок в гÑÑпповÑÑ
диалогаÑ
поÑвилиÑÑ <code>width</code>/<code>height</code> â бÑаÑÐ·ÐµÑ ÑезеÑвиÑÑÐµÑ Ð¼ÐµÑÑо до загÑÑзки, ÑÑÑаниÑа не пÑÑгаеÑ.</li> <li data-num="1446"><span class="changelog-tag changelog-tag--UX" data-tag-alias="UX">UX</span> <strong>Ðодалка не вÑÐ»ÐµÐ·Ð°ÐµÑ Ð·Ð° ÑкÑан</strong> â на мобилÑнÑÑ
Ñоздание гÑÑÐ¿Ð¿Ñ Ð¾Ð³ÑаниÑено 80% вÑÑоÑÑ ÑкÑана Ñо ÑкÑоллом внÑÑÑи. ÐолÑÑе никакиÑ
обÑезаннÑÑ
кнопок.</li> </ul> </div> </details> <details class="changelog-section"> <summary class="changelog-summary"><span class="changelog-meta"><span class="changelog-meta__version">v9.125.0</span><span class="changelog-meta__date">03-04-2026</span></span><h2 id="v91250-03-04-2026--ÑобÑÑвеннÑе-ÑаÑÑÑлки-и-поÑÑоваÑ-инÑÑаÑÑÑÑкÑÑÑа">СобÑÑвеннÑе ÑаÑÑÑлки и поÑÑÐ¾Ð²Ð°Ñ Ð¸Ð½ÑÑаÑÑÑÑкÑÑÑа</h2></summary> <div class="changelog-section__body"> <p>ÐиÑкÑÑÑ Ð±Ð¾Ð»ÑÑе не завиÑÐ¸Ñ Ð¾Ñ ÑÑоÑонниÑ
ÑеÑвиÑов Ð´Ð»Ñ Ð¾ÑпÑавки пиÑем. ÐÑ Ð·Ð°Ð¿ÑÑÑили ÑобÑÑвеннÑй поÑÑовой движок полноÑÑÑÑ Ð½Ð° наÑей инÑÑаÑÑÑÑкÑÑÑе: Ð¾Ñ ÑпÑÐ°Ð²Ð»ÐµÐ½Ð¸Ñ Ð°ÑдиÑоÑией до аналиÑики оÑкÑÑÑий. Рв ÑÑловиÑÑ
блокиÑовок ÑÑо не пÑоÑÑо ÑдобÑÑво â ÑÑо надÑжнÑй канал ÑвÑзи Ñ ÑиÑаÑелÑми, коÑоÑÑй никÑо не оÑклÑÑиÑ.</p> <ul> <li data-num="1430"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> <strong>ÐиÑÑма ÑÑ
одÑÑ ÑеÑез Amazon SES â оÑделÑно Ð¾Ñ ÑиÑÑемнÑÑ
</strong> â ÑаÑÑÑлки идÑÑ ÑеÑез вÑделеннÑй SMTP-канал, а ÑÐ²ÐµÐ´Ð¾Ð¼Ð»ÐµÐ½Ð¸Ñ Ð¾ комменÑаÑиÑÑ
и ÑбÑоÑе паÑÐ¾Ð»Ñ â ÑеÑез пÑежний Mailgun. Ðдно не Ð»Ð¾Ð¼Ð°ÐµÑ Ð´ÑÑгое.</li> <li data-num="1431"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> <strong>ТеÑÑÐ¾Ð²Ð°Ñ Ð¾ÑпÑавка пÑоÑла вÑе пÑовеÑки</strong> â SPF, DKIM, DMARC = PASS. ÐиÑÑма доÑ
одÑÑ Ð² Inbox (не Ñпам) на Gmail, Ð¯Ð½Ð´ÐµÐºÑ Ð¸ Mail.ru â ÑÑи главнÑÑ
поÑÑовика аÑдиÑоÑии.</li> <li data-num="1432"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> <strong>ФиÑменнÑй HTML-Ñаблон</strong> â каÑÑоÑки пÑбликаÑий Ñ Ð¾Ð±Ð»Ð¾Ð¶ÐºÐ°Ð¼Ð¸, кнопка CTA, ÑоÑÑеÑи, адапÑÐ¸Ð²Ð½Ð°Ñ Ð²ÑÑÑÑка Ð´Ð»Ñ Ð¼Ð¾Ð±Ð¸Ð»ÑнÑÑ
. ÐеÑÐ¸Ñ 19 ÐÐ (Gmail обÑÐµÐ·Ð°ÐµÑ Ð¿Ð¾Ñле 102 ÐÐ) â огÑомнÑй запаÑ.</li> <li data-num="1433"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> <strong>СÑаÑÑÑ Ð¿Ð¾Ð´Ð¿Ð¸ÑÑика обновлÑеÑÑÑ Ð°Ð²ÑомаÑиÑеÑки</strong> â пиÑÑмо доÑÑавлено â <code>deliverable</code>, Ñ
аÑд-баÑÐ½Ñ â <code>bounced</code>, жалоба на Ñпам â <code>complained</code>. ÐÑи warm-up пеÑвÑй баÑÑ â ÑолÑко пÑовеÑеннÑе адÑеÑа.</li> <li data-num="1434"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> <strong>SES Webhook</strong> â Amazon SES ÑообÑÐ°ÐµÑ Ð¾ баÑнÑаÑ
и жалобаÑ
в ÑеалÑном вÑемени, а не по SMTP-кодам поÑÑÑакÑÑм. ÐÑоблемнÑй адÑÐµÑ Ð±Ð»Ð¾ÐºÐ¸ÑÑеÑÑÑ Ð¼Ð³Ð½Ð¾Ð²ÐµÐ½Ð½Ð¾ â до Ñого, как ÑÑÐ¿ÐµÐµÑ Ð¸ÑпоÑÑиÑÑ ÑепÑÑаÑÐ¸Ñ Ð´Ð¾Ð¼ÐµÐ½Ð°.</li> <li data-num="1435"><span class="changelog-tag changelog-tag--SEC" data-tag-alias="SEC">SEC</span> <strong>ÐÑпиÑка ÑабоÑÐ°ÐµÑ Ð²Ñегда</strong> â даже еÑли ÑпиÑок ÑаÑÑÑлки ÑдалÑн поÑле оÑпÑавки, ÑÑÑлка в пиÑÑме пÑиведÑÑ Ð½Ð° ÑÑÑаниÑÑ ÑпÑÐ°Ð²Ð»ÐµÐ½Ð¸Ñ Ð¿Ð¾Ð´Ð¿Ð¸Ñками. CAN-SPAM и GDPR ÑÑебÑÑÑ â ÐиÑкÑÑÑ Ð²ÑполнÑеÑ.</li> <li data-num="1436"><span class="changelog-tag changelog-tag--SEC" data-tag-alias="SEC">SEC</span> <strong>One-click unsubscribe</strong> â Gmail показÑÐ²Ð°ÐµÑ ÐºÐ½Ð¾Ð¿ÐºÑ Â«ÐÑпиÑаÑÑÑÑ» пÑÑмо в Ñапке пиÑÑма (RFC 8058). Ðдин клик â и гоÑово, без лиÑниÑ
ÑÑÑаниÑ.</li> <li data-num="1437"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> <strong>ÐаÑбоÑд кампаний</strong> â open rate, click rate, bounce rate Ð´Ð»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð¹ оÑпÑавленной кампании + ÑÑедние показаÑели по вÑем. Ðдна кнопка â и видно, ÑÑо ÑабоÑаеÑ, а ÑÑо неÑ.</li> <li data-num="1438"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> <strong>ТÑекинг оÑкÑÑÑий и кликов</strong> â пикÑÐµÐ»Ñ Ð¾ÑÑÐ»ÐµÐ¶Ð¸Ð²Ð°ÐµÑ Ð¾ÑкÑÑÑÐ¸Ñ (Ñ Ð·Ð°ÑиÑой Ð¾Ñ Ð±Ð¾Ñов), ÑÑÑлки â пеÑеÑ
одÑ. Unique open / unique click ÑÑиÑаÑÑÑÑ ÐºÐ¾ÑÑекÑно, без дÑбликаÑов.</li> <li data-num="1439"><span class="changelog-tag changelog-tag--DEVOPS" data-tag-alias="DEVOPS">DEVOPS</span> <strong>DNS: SPF + DKIM + DMARC</strong> â домен <code>discours.io</code> пÑоÑÑл полнÑÑ email-аÑÑенÑиÑикаÑиÑ. ÐиÑÑма подпиÑÐ°Ð½Ñ ÐºÑипÑогÑаÑиÑеÑки, подделаÑÑ Ð¾ÑпÑавиÑÐµÐ»Ñ Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾.</li> <li data-num="1440"><span class="changelog-tag changelog-tag--DEVOPS" data-tag-alias="DEVOPS">DEVOPS</span> <strong>Domain throttling</strong> â Gmail, ЯндекÑ, Mail.ru полÑÑаÑÑ Ð¿Ð¸ÑÑма Ñ ÐºÐ¾Ð½ÑÑолиÑÑемой ÑкоÑоÑÑÑÑ. Circuit breaker оÑÑÐ°Ð½Ð°Ð²Ð»Ð¸Ð²Ð°ÐµÑ Ð¾ÑпÑÐ°Ð²ÐºÑ Ð¿Ð¾Ñле 10 подÑÑд неÑдаÑнÑÑ
баÑÑей â заÑиÑа Ð¾Ñ Ð±Ð»Ð¾ÐºÐ»Ð¸ÑÑа.</li> </ul> </div> </details> <details class="changelog-section"> <summary class="changelog-summary"><span class="changelog-meta"><span class="changelog-meta__version">v9.124.0</span><span class="changelog-meta__date">01-04-2026</span></span><h2 id="v91240-01-04-2026--discours-connect-импоÑÑ-из-google-docs-и-множеÑÑво-дÑÑгиÑ
-ÑлÑÑÑений">Discours Connect, импоÑÑ Ð¸Ð· Google Docs и множеÑÑво дÑÑгиÑ
ÑлÑÑÑений</h2></summary> <div class="changelog-section__body"> <p>Ðа плаÑÑоÑме поÑвилÑÑ Ð¿Ð¾Ð»Ð½Ð¾ÑеннÑй VPN-поÑÑал â Ð¾Ñ Ð»ÐµÐ½Ð´Ð¸Ð½Ð³Ð° до вÑдаÑи клÑÑа и поддеÑжки. РедакÑÐ¾Ñ Ð½Ð°ÑÑилÑÑ Ð¸Ð¼Ð¿Ð¾ÑÑиÑоваÑÑ Google Docs Ñо ÑноÑками. Рпод капоÑом â деÑÑÑки ÑикÑов, коÑоÑÑе делаÑÑ ÐиÑкÑÑÑ Ð¾ÑзÑвÑивее, Ð
1½Ð°Ð´Ñжнее и пÑиÑÑнее в мелоÑаÑ
.</p> <h3 id="discours-connect--vpn-поÑÑал">Discours Connect â VPN-поÑÑал</h3> <ul> <li data-num="1405"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> <strong>СобÑÑвеннÑй VPN-ÑеÑÐ²Ð¸Ñ â пÑÑмо на плаÑÑоÑме</strong> â Discours Connect ÑабоÑÐ°ÐµÑ Ð½Ð° connect.discours.io: лендинг Ñ Ð¾Ð¿Ð¸Ñанием, капÑа, вÑдаÑа клÑÑа, QR-код Ð´Ð»Ñ Ð¼Ð¾Ð±Ð¸Ð»ÑнÑÑ
, кнопка «ÐÑкÑÑÑÑ Ð² пÑиложении» (deep-link), воÑÑÑановление клÑÑа и поддеÑжка â вÑÑ Ð±ÐµÐ· пеÑеÑ
ода на внеÑние ÑеÑвиÑÑ.</li> <li data-num="1406"><span class="changelog-tag changelog-tag--UX" data-tag-alias="UX">UX</span> <strong>ÐоÑаговÑй визаÑд</strong> â полÑÑение клÑÑа ÑазбиÑо на понÑÑнÑе Ñаги Ñ Ð·Ð°Ð³Ð¾Ð»Ð¾Ð²ÐºÐ°Ð¼Ð¸ и пÑогÑеÑÑ-баÑом. ÐаждÑй ÑкÑан â одно дейÑÑвие, никакой пеÑегÑÑзки. ÐÑибка на капÑе? ÐопÑÐ¾Ñ Ð°Ð²ÑомаÑиÑеÑки пеÑегенеÑиÑÑеÑÑÑ.</li> <li data-num="1407"><span class="changelog-tag changelog-tag--UX" data-tag-alias="UX">UX</span> <strong>Ðендинг VPN, доÑÑÑпеÑй ао ÑÑÑлке пÑÑмо из РоÑÑии</strong> â геÑой-ÑекÑÐ¸Ñ Ñо ÑÑÑÑÑиками, оÑзÑÐ²Ñ Ð¿Ð¾Ð»ÑзоваÑелей Ñ ÐºÐ°ÑÑÑелÑÑ, FAQ по каÑегоÑиÑм, инÑÑÑÑкÑии по наÑÑÑойке, блок поддеÑжки â ÑобÑаннÑе на единой ÑÑÑаниÑе Ñ ÑкоÑной навигаÑией.</li> <li data-num="1408"><span class="changelog-tag changelog-tag--A11Y" data-tag-alias="A11Y">A11Y</span> <strong>Ðодалки Ñ focus-trap и клавиаÑÑÑнÑм ÑпÑавлением</strong> â ÑезÑлÑÑаÑ, поддеÑжка, конÑеÑÑи пÑи ÑÑпеÑ
е â вÑе модалÑнÑе окна ловÑÑ ÑокÑÑ, закÑÑваÑÑÑÑ Ð¿Ð¾ Escape и возвÑаÑаÑÑ ÐµÐ³Ð¾ обÑаÑно.</li> <li data-num="1409"><span class="changelog-tag changelog-tag--SEC" data-tag-alias="SEC">SEC</span> <strong>ЧÑвÑÑвиÑелÑнÑе паÑамеÑÑÑ Ð½Ðµ ÑÑекÑÑ Ð² ÑедиÑекÑ</strong> â пÑи пеÑенапÑавлении connect.discours.io â discours.io/connect из URL вÑÑезаÑÑÑÑ token, email, password, recovery_code и еÑÑ 6 клÑÑей.</li> </ul> <h3 id="ÑедакÑоÑ-3">РедакÑоÑ</h3> <ul> <li data-num="1410"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> <strong>ÐмпоÑÑ Ð¸Ð· Google Docs</strong> â вÑÑавлÑеÑе пÑблиÑнÑÑ ÑÑÑлкÑ, нажимаеÑе «ÐмпоÑÑ» â ÑекÑÑ Ñо вÑей ÑазмеÑкой Ñже в ÑедакÑоÑе. СноÑки из GDocs авÑомаÑиÑеÑки ÑÑанÑÑоÑмиÑÑÑÑÑÑ Ð² наÑи footnote-tooltip.</li> <li data-num="1411"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>Создание ÑеÑновика не ÑоÑмозиÑ</strong> â авÑоÑоздание ÑеÑновика пÑи оÑкÑÑÑии ÑедакÑоÑа ÑепеÑÑ Ð¸Ð´ÑÑ Ñ retry и ÑаймаÑÑом. ÐÑли ÑеÑÑ Ð¼ÐµÐ´Ð»ÐµÐ½Ð½Ð°Ñ â повÑоÑÐ½Ð°Ñ Ð¿Ð¾Ð¿ÑÑка ÑеÑез 1,5 Ñ; еÑли ÑеÑÐ²ÐµÑ Ð½Ðµ оÑвеÑÐ°ÐµÑ 20 Ñ â ÑиÑ
ий пеÑеÑ
од в локалÑнÑй Ñежим, ниÑего не завиÑнеÑ.</li> <li data-num="1412"><span class="changelog-tag changelog-tag--UX" data-tag-alias="UX">UX</span> <strong>«ЧиÑайÑе Ñакже» ÑÑал <code><nav></code></strong> â блок ÑекомендаÑий полÑÑил ÑеманÑиÑеÑкÑÑ ÑазмеÑÐºÑ Ð¸ <code>aria-label</code>. Screen reader обÑÑвлÑÐµÑ ÐµÐ³Ð¾ как навигаÑиÑ, а не как безÑмÑннÑй <code><div></code>.</li> <li data-num="1413"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>ÐоиÑк в «ЧиÑайÑе Ñакже» не завиÑнеÑ</strong>
1 â добавлен 5-ÑекÑнднÑй ÑаймаÑÑ, per-slot abort-конÑÑоллеÑÑ (поиÑк в одном ÑлоÑе не оÑменÑÐµÑ Ð·Ð°Ð³ÑÑÐ·ÐºÑ Ð² дÑÑгом) и обÑий abort пÑи закÑÑÑии диалога.</li> <li data-num="1414"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>ÐпаÑнÑе URL в «ЧиÑайÑе Ñакже» оÑÑилÑÑÑованÑ</strong> â <code>javascript:</code>, <code>data:</code> и дÑÑгие опаÑнÑе ÑÑÑлки не пÑойдÑÑ Ð² блок ÑекомендаÑий.</li> <li data-num="1415"><span class="changelog-tag changelog-tag--UX" data-tag-alias="UX">UX</span> <strong>ÐÑли ÑноÑки не обÑабоÑалиÑÑ â ÑзнаеÑе</strong> â пÑи импоÑÑе HTML/DOCX, еÑли ÑÑанÑÑоÑмаÑÐ¸Ñ ÑноÑок Ñпала, поÑвиÑÑÑ Ð¿ÑедÑпÑеждение. ТекÑÑ ÑоÑ
ÑаниÑÑÑ ÐºÐ°Ðº еÑÑÑ, ниÑего не поÑеÑÑеÑÑÑ.</li> </ul> <h3 id="ÑÑабилÑноÑÑÑ-и-пÑоизводиÑелÑноÑÑÑ">СÑабилÑноÑÑÑ Ð¸ пÑоизводиÑелÑноÑÑÑ</h3> <ul> <li data-num="1416"><span class="changelog-tag changelog-tag--PERF" data-tag-alias="PERF">PERF</span> <strong>Ðжидание Slick-каÑÑÑели â без polling</strong> â ÑанÑÑе ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÐµÐ½Ñ Ð¿ÑовеÑÑл налиÑие плагина каждÑе 500 Ð¼Ñ (до 10 Ñаз). ТепеÑÑ â MutationObserver, коÑоÑÑй ÑеагиÑÑÐµÑ Ð¼Ð³Ð½Ð¾Ð²ÐµÐ½Ð½Ð¾ пÑи загÑÑзке ÑкÑипÑа и молÑиÑ, когда ниÑего не пÑоиÑÑ
одиÑ.</li> <li data-num="1417"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>ÐагÑÑзка Ñегов â без гонок</strong> â пÑи бÑÑÑÑой навигаÑии Ð¼ÐµÐ¶Ð´Ñ Ñемами ÑÑаÑÑй запÑÐ¾Ñ Ð¼Ð¾Ð³ пеÑезапиÑаÑÑ Ñвежие даннÑе. ТепеÑÑ Ñ ÐºÐ°Ð¶Ð´Ð¾Ð³Ð¾ запÑоÑа ÑникалÑнÑй ID â ÑÑÑаÑевÑий оÑÐ²ÐµÑ Ð¾ÑбÑаÑÑваеÑÑÑ.</li> <li data-num="1418"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>WebSocket â здоÑовее</strong> â health check Asteroid пеÑеведÑн на WebSocket-ÑеÑÐ²ÐµÑ Ð²Ð¼ÐµÑÑо HTTP, Ñайм-аÑÑ ÑвелиÑен. Ð ÐµÐºÐ¾Ð½Ð½ÐµÐºÑ ÑÑабилÑнее на медленнÑÑ
мобилÑнÑÑ
ÑеÑÑÑ
.</li> <li data-num="1419"><span class="changelog-tag changelog-tag--PERF" data-tag-alias="PERF">PERF</span> <strong>ÐоллабоÑаÑÐ¸Ñ Ð½Ðµ ÑоÑÐ¾Ð¿Ð¸Ñ safety-ÑаймаÑÑ</strong> â Ð»Ð¸Ð¼Ð¸Ñ ÑинÑ
ÑонизаÑии Yjs ÑвелиÑен Ñ 5 до 10 ÑекÑнд. ÐвÑоÑÑ Ñ Ð¼ÐµÐ´Ð»ÐµÐ½Ð½Ñм инÑеÑнеÑом долÑÑе оÑÑаÑÑÑÑ Ð½Ð° ÑвÑзи, пÑежде Ñем ÑедакÑÐ¾Ñ ÑеÑÐ¸Ñ Â«ÑÑо-Ñо поÑло не Ñак».</li> <li data-num="1420"><span class="changelog-tag changelog-tag--DX" data-tag-alias="DX">DX</span> <strong>Sentry Ð»Ð¾Ð²Ð¸Ñ Ð±Ð¾Ð»ÑÑе, ÑÑÐ¼Ð¸Ñ Ð¼ÐµÐ½ÑÑе</strong> â новÑй <code>sentry.js</code> Ñ Ð½Ð°ÑÑÑоеннÑми ÑилÑÑÑами оÑÑÐµÐºÐ°ÐµÑ ÑÑм Ð¾Ñ WKWebView, Facebook In-App Browser и ÑаÑÑиÑений, но пÑопÑÑÐºÐ°ÐµÑ Ð²Ñе ÑеалÑнÑе оÑибки.</li> </ul> <h3 id="uiux-полиÑовка">UI/UX-полиÑовка</h3> <ul> <li data-num="1421"><span class="changelog-tag changelog-tag--UX" data-tag-alias="UX">UX</span> <strong>Ð£Ð²ÐµÐ´Ð¾Ð¼Ð»ÐµÐ½Ð¸Ñ ÑазлиÑÐ¸Ð¼Ñ Ð¿Ð¾ ÑипÑ</strong> â error и warning полÑÑили мÑгкие ÑÑплÑе ÑÐ¾Ð½Ñ Ð²Ð¼ÐµÑÑо одинакового ÑÑÑного. ЦвеÑа не кÑиÑаÑ, но Ñип ÑообÑÐµÐ½Ð¸Ñ ÑÑиÑÑваеÑÑÑ Ð·Ð° Ð´Ð¾Ð»Ñ ÑекÑндÑ.</li> <li data-num="1422"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>ÐаÑÑÑÐµÐ»Ñ Ð½Ðµ дÑÑгаеÑÑÑ Ð¿Ñи ÑеÑайзе</strong> â ÑÑÑелки навигаÑии в ÑкÑпозиÑии плавно анимиÑÑÑÑÑÑ Ð¼ÐµÐ¶Ð´Ñ Ð¼Ð¾Ð±Ð¸Ð»Ñной и деÑкÑопной позиÑией вмеÑÑо Ñезкого ÑкаÑка.</li> <li data-num="1423"><span class="changelog-tag changelog-tag--UX" data-tag-alias="UX">UX</span> <strong>ÐобилÑÐ½Ð°Ñ Ð½Ð°Ð²Ð¸Ð³Ð°ÑÐ¸Ñ Connect</strong> â на connect-лендинге в Ñапке поÑвилÑÑ Ð³Ð¾ÑизонÑалÑно ÑкÑоллÑÑийÑÑ Ð½Ð°Ð²Ð±Ð°Ñ Ñ ÑкоÑнÑми ÑÑÑлками. ÐкÑÐ¸Ð²Ð½Ð°Ñ ÑекÑÐ¸Ñ Ð¿Ð¾Ð´ÑвеÑиваеÑÑÑ Ð¿Ñи ÑкÑолле, Ð½Ð°Ð²Ð±Ð°Ñ Ð°Ð²ÑомаÑиÑеÑки пÑокÑÑÑиваеÑÑÑ Ðº ней.</li> <li data-num="1424"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>ÐвÑоÑÑÐºÐ°Ñ Ð°Ð²Ð°ÑаÑка не Ð¼Ð¸Ð³Ð°ÐµÑ Ð¿Ñи 404</strong> â Ñмена URL аваÑаÑа ÑепеÑÑ Ð¿ÑовеÑÑÐµÑ Ð·Ð°Ð³ÑÑÐ·ÐºÑ ÑеÑез test-Image, пÑежде Ñем ÑбÑоÑиÑÑ Ð¾ÑибкÑ. ÐÑли новÑй URL Ñоже биÑÑй â fallback оÑÑаÑÑÑÑ.</li> <li data-num="1425"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>LoginModal â ÑбÑан дÑÐ±Ð»Ñ focus-visible</strong> â кнопка показа паÑÐ¾Ð»Ñ Ð¸Ð¼ÐµÐ»Ð° два конÑликÑÑÑÑиÑ
пÑавила ÑокÑÑа. ÐÑÑалоÑÑ Ð¾Ð´Ð½Ð¾, ÑиÑÑое.</li> </ul> <h3 id="кодоваÑ-база">ÐÐ¾Ð´Ð¾Ð²Ð°Ñ Ð±Ð°Ð·Ð°</h3> <ul> <li data-num="1426"><span class="changelog-tag changelog-tag--REFACTOR" data-tag-alias="REFACTOR">REFACTOR</span> <strong>Connect-конÑÑÐ¾Ð»Ð»ÐµÑ â 1167 ÑÑÑок â 8 модÑлей</strong> â монолиÑнÑй connectAccessCtrl ÑÐ°Ð·Ð±Ð¸Ñ Ð½Ð° sub-конÑÑоллеÑÑ: form-state, key-issuance, key-recovery, modals-accessibility, support-ticketing, ui-interactions, content-loading, utilities.</li> <li data-num="1427"><span class="changelog-tag changelog-tag--REFACTOR" data-tag-alias="REFACTOR">REFACTOR</span> <strong>Domain-regex â один иÑÑоÑник пÑавдÑ</strong> â пÑовеÑка <code>connect.discours.io</code> вÑнеÑена в <code>connect-domain.js</code> вмеÑÑо дÑблиÑÐ¾Ð²Ð°Ð½Ð¸Ñ Ð² 3 ÑайлаÑ
.</li> <li data-num="1428"><span class="changelog-tag changelog-tag--REFACTOR" data-tag-alias="REFACTOR">REFACTOR</span> <strong>Keyboard-handling в ÑаблонаÑ
</strong>
1 â <code>$event.preventDefault() || action()</code> заменÑн на <code>$event.preventDefault(); action()</code> â ÑиÑабелÑнее, а поведение Ñо же.</li> <li data-num="1429"><span class="changelog-tag changelog-tag--DX" data-tag-alias="DX">DX</span> <strong>ТеÑÑÑ auto-draft</strong> â 225 ÑÑÑок покÑÑваÑÑ retry-логикÑ, клаÑÑиÑикаÑÐ¸Ñ Ð¾Ñибок и гÑаниÑнÑе ÑлÑÑаи (destroyed scope, ÑаймаÑÑ).</li> </ul> </div> </details> <details class="changelog-section"> <summary class="changelog-summary"><span class="changelog-meta"><span class="changelog-meta__version">v9.123.0</span><span class="changelog-meta__date">25-03-2026</span></span><h2 id="v91230-25-03-2026--ÑпÑинÑ-по-ÑикÑам-ÑÑкоÑение-загÑÑзки-изобÑажений-ÑÑнÑе-оÑибки-и-ÑлÑÑÑение-ux">СпÑÐ¸Ð½Ñ Ð¿Ð¾ ÑикÑам: ÑÑкоÑение загÑÑзки изобÑажений, ÑÑнÑе оÑибки и ÑлÑÑÑение UX</h2></summary> <div class="changelog-section__body"> <p>ÐоÑинили деÑÑÑок меÑÑ, где можно бÑло ÑделаÑÑ Ð»ÑÑÑе: видео завиÑало без обÑаÑной ÑвÑзи, каÑÑинки не иÑполÑзовали Ñвой поÑенÑиал, оÑибки пÑÑали полÑзоваÑелей, а Firefox мог показÑваÑÑ Ð²ÐµÑнÑй ÑпиннеÑ. ÐаждÑÑ Ð·Ð°Ð¼ÐµÑеннÑÑ ÑеÑоÑ
оваÑоÑÑÑ ÑÑÑÑанили â Ð½Ð¾Ð»Ñ Ð½Ð¾Ð²ÑÑ
ÑиÑ, ÑÑо пÑоÑенÑов ÑлиÑовки.</p> <ul> <li data-num="1395"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>YouTube API не загÑÑзилÑÑ? Ðидео вÑÑ Ñавно запÑÑÑиÑÑÑ</strong> â еÑли API не оÑвеÑÐ°ÐµÑ 8 ÑекÑнд (блокиÑовка, Ð¼ÐµÐ´Ð»ÐµÐ½Ð½Ð°Ñ ÑеÑÑ), Ð¿Ð»ÐµÐµÑ Ð°Ð²ÑомаÑиÑеÑки пеÑеклÑÑаеÑÑÑ Ð½Ð° обÑÑнÑй iframe Ñ autoplay. РанÑÑе зÑиÑÐµÐ»Ñ Ð²Ð¸Ð´ÐµÐ» ÑÑÑнÑй пÑÑмоÑголÑник и не понимал, ÑÑо пÑоиÑÑ
одиÑ.</li> <li data-num="1396"><span class="changelog-tag changelog-tag--UX" data-tag-alias="UX">UX</span> <strong>Ð¡Ð¿Ð¸Ð½Ð½ÐµÑ Ð·Ð°Ð³ÑÑзки видео</strong> â Ð¼ÐµÐ¶Ð´Ñ Ð½Ð°Ð¶Ð°Ñием Play и поÑвлением плееÑа ÑепеÑÑ Ð²ÑаÑаеÑÑÑ Ð±ÐµÐ»Ñй индикаÑоÑ. ÐÑопадаеÑ, как ÑолÑко iframe гоÑов. ÐÐ»Ñ Ð¿Ð¾Ð»ÑзоваÑелей Ñ ÑÑвÑÑвиÑелÑноÑÑÑÑ Ðº Ð´Ð²Ð¸Ð¶ÐµÐ½Ð¸Ñ Ð°Ð½Ð¸Ð¼Ð°ÑÐ¸Ñ Ð¾ÑклÑÑена ÑеÑез <code>prefers-reduced-motion</code>.</li> <li data-num="1397"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>Firefox болÑÑе не показÑÐ²Ð°ÐµÑ Ð²ÐµÑнÑй ÑпиннеÑ</strong> â вмеÑÑо CSS-ÑелекÑоÑа <code>:has()</code>, коÑоÑÑй ÑÑаÑÑе Firefox не понимаÑÑ, видео-Ñ
елпеÑÑ Ð´Ð¾Ð±Ð°Ð²Ð»ÑÑÑ ÐºÐ»Ð°ÑÑ <code>.iframe-loaded</code> ÑеÑез JS. РабоÑÐ°ÐµÑ Ð²Ð¾ вÑеÑ
бÑаÑзеÑаÑ
без иÑклÑÑений.</li> <li data-num="1398"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>Ðдин клик â один плееÑ, без ваÑианÑов</strong> â guard <code>didExecute</code> гаÑанÑиÑÑеÑ, ÑÑо callback ÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ Ð¿Ð»ÐµÐµÑа вÑполниÑÑÑ Ñовно один Ñаз, даже еÑли ÑаймаÑÑ Ð¸ API ready ÑÑабоÑаÑÑ Ð¾Ð´Ð½Ð¾Ð²Ñеменно. ÐикакиÑ
дÑблиÑÑÑÑиÑ
ÑÑ iframe.</li> <li data-num="1399"><span class="changelog-tag changelog-tag--PERF" data-tag-alias="PERF">PERF</span> <strong>Hero-изобÑажение ÑÑаÑÑи гÑÑзиÑÑÑ Ñмнее</strong> â ÑÐµÐ¼Ñ Ð¿Ð¾Ð²ÑоÑнÑÑ
вÑзовов ÑилÑÑÑа в Ñаблоне Ð·Ð°Ð¼ÐµÐ½ÐµÐ½Ñ Ð¾Ð´Ð½Ð¸Ð¼ <code>imageSrcset:'hero'</code>. ÐÑаÑÐ·ÐµÑ Ð¿Ð¾Ð»ÑÑÐ°ÐµÑ Ð¾Ð¿ÑималÑнÑй ÑÐ°Ð·Ð¼ÐµÑ ÐºÐ°ÑÑинки: 320px на ÑелеÑоне, 1920px на Retina-мониÑоÑе â без лиÑнего ÑÑаÑика.</li> <li data-num="1400"><span class="changelog-tag changelog-tag--UX" data-tag-alias="UX">UX</span> <strong>SEO-ÑÑÑÑÑик подÑказÑÐ²Ð°ÐµÑ ÑвеÑом</strong> â пÑи ÑедакÑиÑовании заголовка и опиÑÐ°Ð½Ð¸Ñ Ð¿ÐµÑед пÑбликаÑией ÑÑÑÑÑик Ñимволов плавно менÑÐµÑ ÑвеÑ: ÑеÑÑй â жÑлÑÑй (пÑиближаеÑеÑÑ Ðº лимиÑÑ) â кÑаÑнÑй (поÑÑи вÑÑ). ÐолÑÑе не нÑжно ÑÑиÑаÑÑ Ð² Ñме, ÑколÑко еÑÑ Ð¼Ð¾Ð¶Ð½Ð¾ напиÑаÑÑ.</li> <li data-num="1401"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>ÐÑибки ÑеÑи и оÑибки кода болÑÑе не пÑÑаÑÑÑÑ</strong> â ÑанÑÑе лÑбой Ñбой показÑвал «ÐÑовеÑÑÑе Ñоединение», даже еÑли дело бÑло в баге на ÑÑÑаниÑе. ТепеÑÑ Ð¾Ð¿Ñеделение ÑоÑное: конкÑеÑнÑе паÑÑеÑÐ½Ñ Ð´Ð»Ñ Chrome, Firefox и Safari. ÐÑли пÑоблема в коде â ÑекÑÑ ÑеÑÑно ÑÐºÐ°Ð¶ÐµÑ Â«Ð§Ñо-Ñо поÑло Ð
1½Ðµ Ñак».</li> <li data-num="1402"><span class="changelog-tag changelog-tag--PERF" data-tag-alias="PERF">PERF</span> <strong>DNS-подгоÑовка к видео</strong> â бÑаÑÐ·ÐµÑ Ð·Ð°Ñанее ÑÐµÐ·Ð¾Ð»Ð²Ð¸Ñ Ð´Ð¾Ð¼ÐµÐ½Ñ YouTube и Vimeo (<code>dns-prefetch</code>), пока ÑиÑаÑÐµÐ»Ñ ÐµÑÑ Ð½Ðµ нажал Play. ÐеÑвое воÑпÑоизведение ÑÑаÑÑÑÐµÑ Ð½Ð° 50â100 Ð¼Ñ Ð±ÑÑÑÑее â незамеÑно, но пÑиÑÑно.</li> <li data-num="1403"><span class="changelog-tag changelog-tag--PERF" data-tag-alias="PERF">PERF</span> <strong>Ðидео-пÑевÑÑ Ð½Ðµ гÑÑзÑÑÑÑ Ð·Ð°Ñанее</strong> â thumbnail'Ñ YouTube и Vimeo полÑÑили <code>loading="lazy"</code>. ÐÑли видео ниже ÑкÑана â каÑÑинка подождÑÑ, пока ÑиÑаÑÐµÐ»Ñ Ð´Ð¾ Ð½ÐµÑ Ð´Ð¾ÑкÑоллиÑ.</li> <li data-num="1404"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>Ðодалка пÑбликаÑии не ÑпадÑÑ Ð¼Ð¾Ð»Ñа</strong> â еÑли Angular не ÑÐ¼Ð¾Ð¶ÐµÑ ÑкомпилиÑоваÑÑ Ñаблон пÑевÑÑ (Ñбой scope, биÑÑй HTML), оÑибка попадÑÑ Ð² конÑолÑ, а пÑбликаÑÐ¸Ñ Ð¿ÑодолжиÑÑÑ Ð±ÐµÐ· модалки â а не пÑоÑÑо завиÑнеÑ.</li> </ul> </div> </details> <details class="changelog-section"> <summary class="changelog-summary"><span class="changelog-meta"><span class="changelog-meta__version">v9.122.0</span><span class="changelog-meta__date">24-03-2026</span></span><h2 id="v91220-24-03-2026--кÑаÑивÑе-обложки-Ñ-видео-и-запÑÑк-плейÑов-Ñ-пеÑвого-клика">ÐÑаÑивÑе обложки Ñ Ð²Ð¸Ð´ÐµÐ¾ и запÑÑк плейÑов Ñ Ð¿ÐµÑвого клика</h2></summary> <div class="changelog-section__body"> <p>ÐажимаеÑÑ play на пÑевÑÑ Ð²Ð¸Ð´ÐµÐ¾ в ÑкÑпозиÑии â и ниÑего не пÑоиÑÑ
одиÑ. ÐÑиÑ
одиÑÑÑ ÐºÐ»Ð¸ÐºÐ°ÑÑ Ð²ÑоÑой Ñаз, Ñже по плееÑÑ YouTube. Ðнакомо? ÐÑо бÑл Ð½Ð°Ñ Ð±Ð°Ð³. ÐказалоÑÑ, Angular Ñоздавал iframe аÑинÑ
Ñонно, и Chrome ÑеÑÑл конÑекÑÑ Ð¿Ð¾Ð»ÑзоваÑелÑÑкого жеÑÑа â autoplay блокиÑовалÑÑ. ÐÑ Ð¿ÐµÑепиÑали подÑ
од: ÑепеÑÑ Ð²Ð¸Ð´ÐµÐ¾ ÑпÑавлÑеÑÑÑ ÑеÑез YouTube IFrame Player API Ñ Ð³Ð°ÑанÑиÑованнÑм пÑогÑаммнÑм запÑÑком. Ðаодно пÑивели в поÑÑдок вÑÑ, ÑÑо каÑаеÑÑÑ Ð²Ð¸Ð´ÐµÐ¾ на плаÑÑоÑме.</p> <ul> <li data-num="1385"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>Ðидео игÑÐ°ÐµÑ Ñ Ð¿ÐµÑвого клика</strong> â вмеÑÑо ненадÑжного <code>autoplay=1</code> в URL ÑепеÑÑ Ð¸ÑполÑзÑеÑÑÑ YouTube IFrame Player API. Ðо ÐºÐ»Ð¸ÐºÑ ÑоздаÑÑÑÑ <code>YT.Player</code>, пÑи гоÑовноÑÑи вÑзÑваеÑÑÑ <code>playVideo()</code> â Chrome не Ð¼Ð¾Ð¶ÐµÑ Ð·Ð°Ð±Ð»Ð¾ÐºÐ¸ÑоваÑÑ Ñо, ÑÑо запÑÑено Ñамим API. РабоÑÐ°ÐµÑ Ð´Ð°Ð¶Ðµ пÑи пеÑвом визиÑе на ÑайÑ.</li> <li data-num="1386"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> <strong>Vimeo Ñоже ÑÑал ленивÑм</strong> â ÑанÑÑе Vimeo-iframe гÑÑзилÑÑ ÑÑÐ°Ð·Ñ Ð¿Ñи оÑкÑÑÑии ÑÑÑаниÑÑ (~1 ÐÐ ÑÑаÑика на каждÑй embed). ТепеÑÑ â thumbnail + кнопка play, iframe ÑоздаÑÑÑÑ Ð¿Ð¾ ÐºÐ»Ð¸ÐºÑ Ñ <code>autoplay=1</code>. Ð¢Ð¾Ñ Ð¶Ðµ lazy-паÑÑеÑн, ÑÑо и Ð´Ð»Ñ YouTube.</li> <li data-num="1387"><span class="changelog-tag changelog-tag--UX" data-tag-alias="UX">UX</span> <strong>ÐÑевÑÑ Ð±ÐµÐ· ÑÑÑнÑÑ
полоÑ</strong> â каÑÑинки-обложки видео ÑепеÑÑ Ð·Ð°Ð¿Ð¾Ð»Ð½ÑÑÑ ÐºÐ¾Ð½ÑÐµÐ¹Ð½ÐµÑ Ñеликом (<code>object-fit: cover</code> вмеÑÑо <code>height: auto</code>). ÐикакиÑ
ÑÑÑнÑÑ
полей ÑвеÑÑ
Ñ-ÑнизÑ, даже еÑли thumbnail не ÑÑÑого 16:9.</li> <li data-num="1388"><span class="changelog-tag changelog-tag--UX" data-tag-alias="UX">UX</span> <strong>Ðлавное поÑвление плееÑа</strong> â пÑи нажаÑии play обложка иÑÑезаеÑ, а iframe поÑвл
1ÑеÑÑÑ Ñ Ð»Ñгким fade-in (0,3 Ñ). ÐÐµÑ Ñезкого ÑкаÑка.</li> <li data-num="1389"><span class="changelog-tag changelog-tag--A11Y" data-tag-alias="A11Y">A11Y</span> <strong>Ðидео доÑÑÑпно Ñ ÐºÐ»Ð°Ð²Ð¸Ð°ÑÑÑÑ</strong> â обложки YouTube и Vimeo полÑÑили <code>role="button"</code>, <code>tabindex="0"</code>, <code>aria-label="ÐоÑпÑоизвеÑÑи видео"</code> и ÑеагиÑÑÑÑ Ð½Ð° Enter/Space.</li> <li data-num="1390"><span class="changelog-tag changelog-tag--PERF" data-tag-alias="PERF">PERF</span> <strong>YouTube API гÑÑзиÑÑÑ Ð¾Ð´Ð¸Ð½ Ñаз</strong> â ÑкÑÐ¸Ð¿Ñ <code>iframe_api</code> подклÑÑаеÑÑÑ Ð¿Ñи пеÑвом клике и кеÑиÑÑеÑÑÑ. ÐовÑоÑнÑе клики иÑполÑзÑÑÑ Ñже загÑÑженнÑй API. ÐоÑÑекÑно ÑоÑÑÑеÑÑвÑÐµÑ Ñ Videogular (callback chain).</li> <li data-num="1391"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>ÐÐµÑ ÑÑеÑки памÑÑи пÑи навигаÑии</strong> â пÑи Ñмене Ñлайда каÑÑÑели или ÑÑ
оде Ñо ÑÑÑаниÑÑ Ð²Ñе YT.Player-инÑÑанÑÑ ÑниÑÑожаÑÑÑÑ ÑеÑез <code>destroy()</code>, iframe ÑдалÑÑÑÑÑ Ð¸Ð· DOM.</li> <li data-num="1392"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>Ðвойной клик не ÑоздаÑÑ Ð´Ð²Ð° плееÑа</strong> â guard <code>mediaItem.ytPlaying</code> оÑÑÐµÐºÐ°ÐµÑ Ð¿Ð¾Ð²ÑоÑнÑе нажаÑÐ¸Ñ Ð´Ð¾ завеÑÑÐµÐ½Ð¸Ñ Ð¸Ð½Ð¸ÑиализаÑии.</li> <li data-num="1393"><span class="changelog-tag changelog-tag--REFACTOR" data-tag-alias="REFACTOR">REFACTOR</span> <code>**video-helpers.js</code> â обÑий модÑлÑ** â логика YouTube/Vimeo lazy-load, ÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ iframe, cleanup вÑнеÑена в один Ñайл. ÐÑполÑзÑеÑÑÑ Ð¸ в ÑкÑпозиÑии, и в Ñежиме пÑевÑÑ ÑедакÑоÑа â Ð½Ð¾Ð»Ñ Ð´ÑблиÑованиÑ.</li> <li data-num="1394"><span class="changelog-tag changelog-tag--DX" data-tag-alias="DX">DX</span> <strong>ТеÑÑÑ Ð¿Ð¾ÐºÑÑваÑÑ Ð¾Ð±Ð° Ñежима</strong> â Ð´Ð¾Ð±Ð°Ð²Ð»ÐµÐ½Ñ ÑеÑÑÑ Ð´Ð»Ñ autoplay в Ñежиме ÑÑÐµÐ½Ð¸Ñ Ð¸ его оÑÑÑÑÑÑÐ²Ð¸Ñ Ð² ÑедакÑоÑе (ProseMirror ÑбÑаÑÑÐ²Ð°ÐµÑ src пÑи ÑаÑÑ
ождении). 12 ÑеÑÑов, вÑе зелÑнÑе.</li> </ul> </div> </details> <details class="changelog-section"> <summary class="changelog-summary"><span class="changelog-meta"><span class="changelog-meta__version">v9.121.0</span><span class="changelog-meta__date">24-03-2026</span></span><h2 id="v91210-24-03-2026--lighthouse-аÑдиÑ-бÑÑÑÑее-доÑÑÑпнее-надÑжнее">Lighthouse аÑдиÑ: бÑÑÑÑее, доÑÑÑпнее, надÑжнее</h2></summary> <div class="changelog-section__body"> <p>ÐÑогнали мобилÑнÑй Lighthouse по живой ÑÑаÑÑе â и Ñвидели, ÑÑо можно лÑÑÑе. Ðва CSS-Ñайла блокиÑовали пеÑвÑÑ Ð¾ÑÑиÑÐ¾Ð²ÐºÑ Ð½Ð° ÑекÑндÑ, ÑÑиÑÑÑ Ð²ÑÑÑÑаивалиÑÑ Ð² оÑеÑÐµÐ´Ñ Ð·Ð° ÑÑилÑми (ÑепоÑка до 4,4 Ñ), а навигаÑÐ¸Ñ Ð² Ñапке пÑÑала ÑкÑинÑидеÑÑ. ÐаждÑÑ Ð¸Ð· ÑÑиÑ
пÑоблем Ð¼Ñ ÑеÑили без поÑеÑÑ Ð´Ð»Ñ Ð¿Ð¾Ð»ÑзоваÑÐµÐ»Ñ â ÑÑÑаниÑа оÑÑаÑÑÑÑ Ñакой же, но пÑиÑ
Ð¾Ð´Ð¸Ñ ÑанÑÑе.</p> <ul> <li data-num="1381"><span class="changelog-tag changelog-tag--PERF" data-tag-alias="PERF">PERF</span> <strong>Tailwind CSS болÑÑе не блокиÑÑÐµÑ Ð¾ÑÑиÑовкÑ</strong> â 6,4 ÐÐ ÑÑилиÑаÑнÑÑ
ÑÑилей пеÑÐµÐ²ÐµÐ´ÐµÐ½Ñ Ð½Ð° аÑинÑ
ÑоннÑÑ Ð·Ð°Ð³ÑÑÐ·ÐºÑ (<code>media="print"</code> + <code>onload</code>). ÐÑÑ, ÑÑо нÑжно Ð´Ð»Ñ Ð¿ÐµÑвого кадÑа â ÑеÑка, конÑейнеÑ, адапÑивнÑе ÑиÑÐ¸Ð½Ñ â заинлайнено пÑÑмо в HTML. СÑÑаниÑа поÑвл
1ÑеÑÑÑ Ð½Ð° ~500 Ð¼Ñ ÑанÑÑе, а пÑи повÑоÑнÑÑ
визиÑаÑ
ÑазниÑа еÑÑ Ð±Ð¾Ð»ÑÑе.</li> <li data-num="1382"><span class="changelog-tag changelog-tag--PERF" data-tag-alias="PERF">PERF</span> <strong>ШÑиÑÑÑ ÑÑаÑÑÑÑÑ Ð¿Ð°ÑаллелÑно Ñ CSS</strong> â Muller и Spectral Regular полÑÑили <code><link rel="preload"></code>. РанÑÑе бÑаÑÐ·ÐµÑ Ñзнавал о ÑÑиÑÑаÑ
ÑолÑко из CSS (коÑоÑÑй Ñам гÑÑзилÑÑ Ð¸Ð· HTML) â Ð´Ð²Ð¾Ð¹Ð½Ð°Ñ Ð¾ÑеÑедÑ, до 4,4 Ñ Ð¾Ð¶Ð¸Ð´Ð°Ð½Ð¸Ñ. ТепеÑÑ Ð·Ð°Ð³ÑÑзка наÑинаеÑÑÑ Ð¾Ð´Ð½Ð¾Ð²Ñеменно Ñ HTML â ÑекÑÑ ÑендеÑиÑÑÑ Ð½Ð°ÑивнÑм ÑÑиÑÑом Ñ Ð¿ÐµÑвого кадÑа, подмена поÑÑи незамеÑна.</li> <li data-num="1383"><span class="changelog-tag changelog-tag--A11Y" data-tag-alias="A11Y">A11Y</span> <strong>ÐавигаÑÐ¸Ñ Ð² Ñапке ÑÑала ÑеманÑиÑеÑкой</strong> â <code><ul role="navigation"></code> (Ð½ÐµÐ²Ð°Ð»Ð¸Ð´Ð½Ð°Ñ ÐºÐ¾Ð¼Ð±Ð¸Ð½Ð°ÑиÑ, пÑÑавÑÐ°Ñ ÑкÑинÑидеÑÑ) заменÑн на <code><nav aria-label="РазделÑ"></code>. ТепеÑÑ Ð°ÑÑиÑÑивнÑе ÑеÑ
нологии коÑÑекÑно обÑÑвлÑÑÑ Ð½Ð°Ð²Ð¸Ð³Ð°ÑÐ¸Ñ Ð¿Ð¾ Ñазделам, а Lighthouse болÑÑе не ÑигнализиÑÑÐµÑ Ð¾Ð± оÑибке ARIA.</li> <li data-num="1384"><span class="changelog-tag changelog-tag--A11Y" data-tag-alias="A11Y">A11Y</span> <strong>Skip-to-content ÑабоÑÐ°ÐµÑ Ð´Ð¾ загÑÑзки Tailwind</strong> â ÑÑÑлка «ÐеÑейÑи к ÑодеÑжаниÑ» в Ñапке опиÑаеÑÑÑ Ð½Ð° <code>tw:sr-only</code> из Tailwind. ТепеÑÑ ÑÑили ÑкÑÑÑÐ¸Ñ Ð¸ показа по ÑокÑÑÑ Ð·Ð°Ð¸Ð½Ð»Ð°Ð¹Ð½ÐµÐ½Ñ â ÑÑÑлка доÑÑÑпна Ñ ÐºÐ»Ð°Ð²Ð¸Ð°ÑÑÑÑ Ñ Ð¿ÐµÑвого мгновениÑ, даже на медленном Ñоединении.</li> </ul> </div> </details> <details class="changelog-section"> <summary class="changelog-summary"><span class="changelog-meta"><span class="changelog-meta__version">v9.120.0</span><span class="changelog-meta__date">24-03-2026</span></span><h2 id="v91200-24-03-2026--иÑоги-болÑÑого-пеÑеÑ
ода">ÐÑоги болÑÑого пеÑеÑ
ода</h2></summary> <div class="changelog-section__body"> <p>Ðа Ð½ÐµÐ´ÐµÐ»Ñ ÐиÑкÑÑÑ Ð¿ÑоÑÑл пÑÑÑ, на коÑоÑÑй Ñ Ð¼Ð½Ð¾Ð³Ð¸Ñ
пÑоекÑов ÑÑ
одÑÑ Ð¼ÐµÑÑÑÑ. 34 Ñелиза, 150+ Ñайлов, Ð½Ð¾Ð»Ñ Ð´Ð°ÑнÑайма â и плаÑÑоÑма ÑÑала дÑÑгой. Ðе визÑалÑно (ÑнаÑÑжи Ð²Ñ Ð¿Ð¾ÑÑи ниÑего не замеÑиÑе), а по оÑÑÑениÑм: бÑÑÑÑее, оÑзÑвÑивее, доÑÑÑпнее. ÐÐ¾Ñ Ð³Ð»Ð°Ð²Ð½Ð¾Ðµ.</p> <h3 id="bootstrap--вÑÑ-ÑобÑÑвеннаÑ-дизайн-ÑиÑÑема--в-деле">Bootstrap â вÑÑ. СобÑÑÐ²ÐµÐ½Ð½Ð°Ñ Ð´Ð¸Ð·Ð°Ð¹Ð½-ÑиÑÑема â в деле</h3> <p>ÐеÑÑÑÑ Ð»ÐµÑ Bootstrap 3 дикÑовал каждÑй пикÑÐµÐ»Ñ ÐиÑкÑÑÑа. ТепеÑÑ â неÑ. 2544 ÑÑÑоки legacy-CSS ÑдаленÑ, ÑеÑка <code>.row</code>/<code>.col-*</code> заменена на Tailwind v4 Ñ ÑеманÑиÑеÑкими ÑÑилиÑами, а <code>ds-btn</code>, <code>ds-container</code>, <code>ds-input</code> â Ð½Ð°Ñ ÑобÑÑвеннÑй ÑзÑк компоненÑов. CSS ÑÑал легÑе на ~95 ÐÐ, а каждÑй новÑй ÑÐ»ÐµÐ¼ÐµÐ½Ñ Ð¾Ð¿Ð¸ÑаеÑÑÑ Ð½Ð° единÑе дизайн-ÑокенÑ: ÑвеÑа, ÑÑиÑÑÑ, оÑÑÑÑпÑ, Ñени, z-index â вÑÑ Ð² одном меÑÑе, видно в DevTools, ÑинÑ
ÑонизиÑовано Ð¼ÐµÐ¶Ð´Ñ SCSS и Tailwind.</p> <h3 id="jquery--поÑÑи-вÑÑ-vanilla-js--везде">jQuery â поÑÑи вÑÑ. Vanilla JS â везде</h3> <p>15 компоненÑов (Ñапка, комменÑаÑии, голоÑование, донаÑÑ, баннеÑÑ, ÑоÑÑаÑинг, модалкиâ¦) пеÑепиÑÐ°Ð½Ñ Ð½Ð° наÑивнÑе бÑаÑзеÑнÑе API. jQuery оÑÑалÑÑ ÑолÑко в vendor-каÑÑÑели Slick â поÑледнем паÑÑажиÑе, коÑоÑого вÑÑадим пÑи пеÑеÑ
оде на SolidJS. Ðодалки, ÑÑлÑипÑ, аккоÑÐ´ÐµÐ¾Ð½Ñ â вÑÑ Ð½Ð° ÑиÑÑом JS в 3â5 ÐРвмеÑÑо 18 ÐÐ Bootbox/Bootstrap-плагинов.</p> <h3 id="длÑ-ÑиÑаÑелей-бÑÑÑÑее-ÑиÑе-пÑиÑÑнее">ÐÐ»Ñ ÑиÑаÑелей: бÑÑÑÑее, ÑиÑе, пÑиÑÑнее</h3> <ul> <li data-num="1372"><strong>ÐеÑеÑ
Ð¾Ð´Ñ Ð¼ÐµÐ¶Ð´Ñ ÑÑÑаниÑами мгновеннÑе</strong> â вмеÑÑо View Transitions API, коÑоÑÑй замоÑаживал ÑкÑан на 3 ÑекÑндÑ, лÑгкий CSS-fade. СÑÑаниÑа оÑÑаÑÑÑÑ Ð¶Ð¸Ð²Ð¾Ð¹.</li> <li data-num="1373"><strong>СкелеÑÐ¾Ð½Ñ Ð²Ð¼ÐµÑÑо белого ÑкÑана</strong> â ленÑа, ÑведомлениÑ, каÑÑоÑки â вÑÑ Ð½Ð°ÑинаеÑÑÑ Ñ Ð¿Ð»Ð°Ð²Ð½ÑÑ
заглÑÑек, а не Ñ Ð¿ÑÑÑоÑÑ.</li> <li data-num="1374"><strong>Шапка из маÑового ÑÑекла</strong>, модалки Ñ ÑазмÑÑÑм Ñоном â инÑеÑÑÐµÐ¹Ñ Ð¾Ð±ÑÑл глÑбинÑ.</li> <li data-num="1375"><strong>ÐаннеÑÑ Ð²ÑплÑваÑÑ Ð¿Ñи ÑкÑолле</strong>, YouTube гÑÑзиÑÑÑ ÑолÑко по ÐºÐ»Ð¸ÐºÑ â менÑÑе ÑÑаÑика, болÑÑе конÑекÑÑа.</li> <li data-num="1376"><strong>ÐодпиÑки пеÑемеÑиваÑÑÑÑ ÐºÐ°Ð¶Ð´Ñй денÑ</strong> â ÑепеÑÑ Ð»ÐµÐ½Ñа наÑинаеÑÑÑ Ð½Ðµ Ñ Ð¾Ð´Ð½Ð¸Ñ
и ÑеÑ
же Ñем на «Ð».</li> </ul> <h3 id="длÑ-авÑоÑов-ÑедакÑоÑ-кÑепÑе-ÑоÑмÑ-ÑеÑÑнее">ÐÐ»Ñ Ð°Ð²ÑоÑов: ÑедакÑÐ¾Ñ ÐºÑепÑе, ÑоÑÐ¼Ñ ÑеÑÑнее</h3> <ul> <li data-num="1377"><strong>РедакÑÐ¾Ñ Ð²ÑÐ¶Ð¸Ð²Ð°ÐµÑ Ð¿Ñи Ñбое ÑаÑÑиÑениÑ</strong> â LanguageTool Ñпал? РабоÑаем далÑÑе, Sentry доложиÑ.</li> <li data-num="1378"><strong>СноÑки, заменÑ, поиÑк â поÑиненÑ</strong>. ÐÐ²Ð¸Ð·Ñ Ð¾ÑобÑажаÑÑÑÑ, каÑÑинки полÑÑили 4 новÑÑ
позиÑии, ÑеÑновик ÑоздаÑÑÑÑ Ð¼Ð³Ð½Ð¾Ð²ÐµÐ½Ð½Ð¾ Ð´Ð»Ñ ÐºÐ¾Ð»Ð»Ð°Ð±Ð¾ÑаÑии.</li> <li data-num="1379"><strong>ÐалидаÑÐ¸Ñ ÑоÑм â ÑолÑко пÑи нажаÑии кнопки</strong>, Ð¿Ð¾Ð»Ñ Ð½Ðµ кÑаÑнеÑÑ Ð¾Ñ ÑлÑÑайного blur. ÐобилÑÐ½Ð°Ñ Ð¼Ð¾Ð´Ð°Ð»ÐºÐ° вÑ
ода помеÑаеÑÑÑ Ð½Ð° ÑкÑан Ñеликом.</li> <li data-num="1380"><strong>3 379 ÑÑаÑей авÑомаÑиÑеÑки вÑÑиÑенÑ</strong> â мÑÑÐ¾Ñ Ð¾Ñ Word/Google Docs, legacy-оглавлениÑ, пÑÑÑÑе паÑагÑаÑÑ â вÑÑ ÑбÑано.</li> </ul> <h3 id="доÑÑÑпноÑÑÑ-a11y-каждÑй-ÑлеменÑ--Ñ-клавиаÑÑÑÑ">ÐоÑÑÑпноÑÑÑ (a11y): каждÑй ÑÐ»ÐµÐ¼ÐµÐ½Ñ â Ñ ÐºÐ»Ð°Ð²Ð¸Ð°ÑÑÑÑ</h3> <p>2000 ÑÑÑок inline SVG â 18 иконок в ÑпÑайÑе Ñ <code>aria-hidden</code>. ФокÑÑ-ловÑÑки в модалкаÑ
. <code>aria-expanded</code> на аккоÑдеонаÑ
. <code>role="tab"</code> на вкладкаÑ
. <code>aria-label</code> на 19 textarea. ÐÑоÑилÑ-Ð¼ÐµÐ½Ñ ÑпÑавлÑеÑÑÑ ÑÑÑелками ââ. «ÐеÑейÑи Ð
1º ÑодеÑжаниÑ» â одним Tab'ом. Ðнопки голоÑÐ¾Ð²Ð°Ð½Ð¸Ñ Ð³Ð¾Ð²Ð¾ÑÑÑ: «ÐлÑÑ 1», а не молÑаÑ.</p> <h3 id="real-time-websocket-ÑабоÑаеÑ-как-задÑмано">Real-time: WebSocket ÑабоÑÐ°ÐµÑ ÐºÐ°Ðº задÑмано</h3> <p>HTTP/2 молÑа Ñбивал заголовки Upgrade â DDP дегÑадиÑовал в long-polling. ÐоÑинили. Exponential backoff Ñ jitter, индикаÑÐ¾Ñ ÑÐ¾ÐµÐ´Ð¸Ð½ÐµÐ½Ð¸Ñ Ñ ÐºÐ¾Ð»Ð¾ÐºÐ¾Ð»ÑÑика, авÑовоÑÑÑановление поÑле даÑнÑайма, звÑк пÑи новом Ñведомлении, бейдж на вкладке, DDP-подпиÑки на комменÑаÑии и ÑообÑÐµÐ½Ð¸Ñ â вÑÑ Ð² ÑеалÑном вÑемени.</p> <h3 id="seo-36-покÑÑÑиÑ-авÑоÑÑ-веÑнÑлиÑÑ-в-поиÑк">SEO: +36% покÑÑÑиÑ, авÑоÑÑ Ð²ÐµÑнÑлиÑÑ Ð² поиÑк</h3> <p>ÐвÑоÑов в sitemap â Ñ 50 до 1000+. ÐодкаÑÑÑ (195 Ñпизодов) впеÑвÑе Ð²Ð¸Ð´Ð½Ñ Ð´Ð»Ñ Google. ХлебнÑе кÑоÑки в вÑдаÑе. ÐинамиÑеÑкий sitemap Ð´Ð»Ñ Ñвежего конÑенÑа (индекÑаÑÐ¸Ñ Ð·Ð° Ð´ÐµÐ½Ñ Ð²Ð¼ÐµÑÑо двÑÑ
неделÑ). Legacy expo-URL â 301. ÐбÑее покÑÑÑие: 3 000 â 4 967 URL.</p> <h3 id="безопаÑноÑÑÑ-и-мониÑоÑинг">ÐезопаÑноÑÑÑ Ð¸ мониÑоÑинг</h3> <p>Dashboard меÑÑик Worker'а Ñ sparklines, алеÑÑами и Prometheus-ÑкÑпоÑÑом. Rate limiting Ð´Ð»Ñ API и dashboard. SSRF-заÑиÑа, ReDoS-ÑикÑ, CSP-аÑдиÑ, regex-ÑкоÑÑ, localStorage-ÑилÑÑÑаÑÐ¸Ñ â 15+ ÑоÑеÑнÑÑ
SEC-ÑикÑов.</p> <h3 id="ÑиÑÑÑ-одним-взглÑдом">ЦиÑÑÑ Ð¾Ð´Ð½Ð¸Ð¼ взглÑдом</h3> <table> <thead> <tr> <th>ЧÑо</th> <th>ÐÑло</th> <th>СÑало</th> </tr> </thead> <tbody><tr> <td>Bootstrap CSS</td> <td>2544 ÑÑÑоки</td> <td>0</td> </tr> <tr> <td>jQuery в app-логике</td> <td>15 компоненÑов</td> <td>0 (ÑолÑко vendor Slick)</td> </tr> <tr> <td>Inline SVG в ÑаблонаÑ
</td> <td>~2000 ÑÑÑок</td> <td>18 иконок в ÑпÑайÑе</td> </tr> <tr> <td>CSS на ÑÑÑаниÑе</td> <td>+95 ÐРлиÑнего</td> <td>минÑÑ 95 ÐÐ</td> </tr> <tr> <td>Sitemap URL</td> <td>3 000</td> <td>4 967</td> </tr> <tr> <td>ÐвÑоÑÑ Ð² поиÑке</td> <td>50</td> <td>1 000+</td> </tr> <tr> <td>a11y-иÑпÑавлениÑ</td> <td>â</td> <td>60+</td> </tr> <tr> <td>ХаÑдкоднÑÑ
rgba()</td> <td>311</td> <td>30+ Ñокенов</td> </tr> <tr> <td>ÐагиÑеÑкиÑ
font-size</td> <td>65</td> <td>14 CSS-пеÑеменнÑÑ
</td> </tr> </tbody></table> </div> </details> <details class="changelog-section"> <summary class="changelog-summary"><span class="changelog-meta"><span class="changelog-meta__version">v9.119.0</span><span class="changelog-meta__date">24-03-2026</span></span><h2 id="v91190-24-03-2026--подпиÑки-вÑазнобой-донаÑÑ-Ñ-клавиаÑÑÑÑ-и-ÑиÑина-вмеÑÑо-меÑÑаниÑ">ÐодпиÑки вÑазнобой, донаÑÑ Ñ ÐºÐ»Ð°Ð²Ð¸Ð°ÑÑÑÑ Ð¸ ÑиÑина вмеÑÑо меÑÑаниÑ</h2></summary> <div class="changelog-section__body"> <p>ÐÑкÑÑваеÑÑ Ð¿Ð¾Ð´Ð¿Ð¸Ñки â а Ñам одни ÑÐµÐ¼Ñ Ð½Ð° «Ð». ÐеÑеклÑÑаеÑÑ Ð²Ð°Ð»ÑÑÑ Ð² ÑоÑме донаÑа â а Tab ÑлеÑÐ°ÐµÑ Ð¼Ð¸Ð¼Ð¾. СÑÑаниÑа гÑÑзиÑÑÑ â а overlay Ð¼Ð¸Ð³Ð°ÐµÑ Ð±ÐµÐ»Ñм на пол-ÑÑейма. ÐелоÑи, но из ниÑ
ÑкладÑваеÑÑÑ Ð¾ÑÑÑение незаконÑенноÑÑи. Ð ÑÑом Ñелизе Ð¼Ñ Ð²Ð·ÑлиÑÑ Ð·Ð° ÑоÑÑÑÐ¿Ñ ÑакиÑ
мелоÑей â и каждÑÑ Ð´Ð¾Ð²ÐµÐ»Ð¸ до ÑелÑка.</p> <ul> <li data-num="1355"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> <strong>ÐодпиÑки пеÑемеÑиваÑÑÑÑ ÐºÐ°Ð¶Ð´Ñй денÑ</strong> â вкладка «ÐÑе» в модалке подпиÑок болÑÑе не наÑинаеÑÑÑ Ñ Ð¾Ð´Ð½Ð¸Ñ
и ÑеÑ
же Ñем на «Ð». ÐвÑоÑÑ Ð¸ ÑÐµÐ¼Ñ Ð¿ÐµÑемеÑиваÑÑÑÑ Ð¿ÑевдоÑлÑÑайно (Fisher-Yates shuffle Ñ Ñидом Ð¾Ñ Ð´Ð°ÑÑ) â поÑÑдок вÑглÑÐ´Ð¸Ñ Ñ
аоÑиÑнÑм, но ÑÑабилен в пÑеделаÑ
днÑ. ÐавÑÑа â дÑÑгой. ÐÑÑ Ð¼Ð°Ð³Ð¸Ñ Ð½Ð° клиенÑе, 0 запÑоÑов к ÑеÑвеÑÑ.</li> <li data-num="1356"><span class="changelog-tag changelog-tag--UX" data-tag-alias="UX">UX</span> <strong>Уведомление о лимиÑе â внизÑ, а не повеÑÑ
ÑпиÑка</strong> â плаÑка «ÐÐ¾ÐºÐ°Ð·Ð°Ð½Ñ Ð¿ÐµÑвÑе 500 пÑнкÑов» пеÑееÑ
ала в ÑамÑй низ ÑпиÑка подпиÑок. ÐидиÑÑ ÐµÑ ÑолÑко доÑкÑоллив до конÑа â не оÑвлекаеÑ, не вÑÐ»ÐµÐ·Ð°ÐµÑ Ð·Ð° колонкÑ.</li> <li data-num="1357"><span class="changelog-tag changelog-tag--A11Y" data-tag-alias="A11Y">
1A11Y</span> <strong>ÐонаÑÑ ÑпÑавлÑÑÑÑÑ Ñ ÐºÐ»Ð°Ð²Ð¸Ð°ÑÑÑÑ</strong> â вкладки «РÑбли / ÐоллаÑÑ / ÐвÑо / ÐÑипÑа» ÑменилиÑÑ Ñ <code><div></code> на <code><button role="tab"></code>. СÑÑелки ââ пеÑеклÑÑаÑÑ Ð²Ð°Ð»ÑÑÑ, Home/End â к кÑайним, <code>aria-selected</code> обÑÑвлÑÐµÑ Ð°ÐºÑивнÑÑ Ð²ÐºÐ»Ð°Ð´ÐºÑ.</li> <li data-num="1358"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>Ðвойной клик по «ÐоддеÑжаÑÑ» не ÑведÑÑ Ð½Ð° Stripe дваждÑ</strong> â guard <code>stripeSubmitting</code> блокиÑÑÐµÑ Ð¿Ð¾Ð²ÑоÑнÑÑ Ð¾ÑпÑавкÑ. Ðнопка показÑÐ²Ð°ÐµÑ Â«ÐеÑенапÑавлениеâ¦Â» и полÑÑÐ°ÐµÑ <code>aria-busy</code>, пока ÑоздаÑÑÑÑ Checkout Session.</li> <li data-num="1359"><span class="changelog-tag changelog-tag--PERF" data-tag-alias="PERF">PERF</span> <strong>Overlay загÑÑзки болÑÑе не меÑÑаеÑ</strong> â на бÑÑÑÑÑÑ
пеÑеÑ
одаÑ
(когда даннÑе пÑиÑ
одÑÑ Ð´Ð¾ 200ms) овеÑлей даже не поÑвиÑÑÑ: CSS <code>ng-enter</code> Ñ Ð·Ð°Ð´ÐµÑжкой + <code>ng-leave</code> Ñ fade-out ÑбиÑаÑÑ Ð±ÐµÐ»ÑÑ Ð²ÑпÑÑкÑ. <code>prefers-reduced-motion</code> â без анимаÑий вообÑе.</li> <li data-num="1360"><span class="changelog-tag changelog-tag--PERF" data-tag-alias="PERF">PERF</span> <strong>ÐлиннÑе веÑки комменÑаÑиев не ÑоÑмозÑÑ ÑкÑолл</strong> â <code>content-visibility: auto</code> на каждом <code><comment></code> и <code><remark></code>. ÐÑаÑÐ·ÐµÑ Ð¿ÑопÑÑÐºÐ°ÐµÑ layout Ð´Ð»Ñ ÑлеменÑов за ÑкÑаном â на ÑÑаÑÑÑÑ
Ñ 50+ комменÑаÑиÑми пÑокÑÑÑка ÑÑала замеÑно легÑе.</li> <li data-num="1361"><span class="changelog-tag changelog-tag--A11Y" data-tag-alias="A11Y">A11Y</span> <strong>«ÐеÑейÑи к ÑодеÑжаниÑ»</strong> â пеÑÐ²Ð°Ñ ÑÑÑлка в Ñапке, Ð½ÐµÐ²Ð¸Ð´Ð¸Ð¼Ð°Ñ Ð´Ð¾ ÑокÑÑа. ÐлавиаÑÑÑнÑе полÑзоваÑели пеÑепÑÑгиваÑÑ Ð½Ð°Ð²Ð¸Ð³Ð°ÑÐ¸Ñ Ð¾Ð´Ð½Ð¸Ð¼ Tab'ом.</li> <li data-num="1362"><span class="changelog-tag changelog-tag--A11Y" data-tag-alias="A11Y">A11Y</span> <strong>Collapse ÑинÑ
ÑонизиÑÑÐµÑ <code>aria-expanded</code></strong> â пÑи ÑаÑкÑÑÑии/ÑвоÑаÑивании аккоÑдеона вÑе ÑвÑзаннÑе ÑÑиггеÑÑ Ð¾Ð±Ð½Ð¾Ð²Ð»ÑÑÑ <code>aria-expanded</code>. Screen reader вÑегда знаеÑ, оÑкÑÑÑо или закÑÑÑо.</li> <li data-num="1363"><span class="changelog-tag changelog-tag--A11Y" data-tag-alias="A11Y">A11Y</span> <strong>Dialog-lite ÑÑал доÑÑÑпнее</strong> â <code>aria-modal="true"</code>, заголовок пÑивÑзан ÑеÑез <code>aria-labelledby</code>, async-оÑибки в callbacks пеÑеÑ
ваÑÑваÑÑÑÑ (UI не Ð·Ð°Ð»Ð¸Ð¿Ð½ÐµÑ Ð¼Ð¾Ð»Ñа).</li> <li data-num="1364"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>Ðодалка не кÑадÑÑ ÑокÑÑ Ñ ÑÑлÑипов</strong> â <code>modal-lite</code> ÑепеÑÑ Ð½Ðµ пеÑеÑ
ваÑÑÐ²Ð°ÐµÑ ÑокÑÑ, еÑли он ÑÑÑл в <code>.tooltip</code>, Tippy-попап, tiptap-овеÑлей или mention-ÑпиÑок. ÐабиÑаеÑÑ <code>@</code> в комменÑаÑии â кÑÑÑÐ¾Ñ Ð¾ÑÑаÑÑÑÑ Ð² авÑокомплиÑе, а не ÑлеÑÐ°ÐµÑ Ð² модалкÑ.</li> <li data-num="1365"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>Ðаголовки ÑÑаÑей болÑÑе не обÑезаÑÑÑÑ</strong> â line-clamp на каÑÑоÑкаÑ
ленÑÑ ÑбÑан. ÐлиннÑй заголовок видно Ñеликом â на главной, в Ñеме, в expo, в read-also.</li> <li data-num="1366"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>ÐиÑÐ°Ñ ÐºÐ°ÑÑинка комменÑаÑÐ¸Ñ Ð½Ðµ ÑендеÑиÑÑÑ</strong>
1 â <code><img></code> лÑÑÑего комменÑаÑÐ¸Ñ Ð¿Ð¾Ð´ ÑÑаÑÑÑй ÑепеÑÑ ÑкÑÑÑ ÑеÑез <code>ng-if</code>, еÑли <code>image</code> пÑÑÑой. Ðикакого Ñломанного знаÑка.</li> <li data-num="1367"><span class="changelog-tag changelog-tag--UX" data-tag-alias="UX">UX</span> <strong>«ÐÑÑÑ Ð¸Ð´ÐµÐ¸?»</strong> â Ð±Ð°Ð½Ð½ÐµÑ Ð¿Ñедложений и ÑÑÑлка «СÑаÑÑ Ð°Ð²ÑоÑом» ÑепеÑÑ Ð¾Ð±ÑаÑаÑÑÑÑ Ð²Ð¾ множеÑÑвенном ÑиÑле. ÐелоÑÑ, но звÑÑÐ¸Ñ Ð´ÑÑжелÑбнее и ÑоÑнее.</li> <li data-num="1368"><span class="changelog-tag changelog-tag--UX" data-tag-alias="UX">UX</span> <strong>Connect заговоÑил по-ÑÑÑÑки</strong> â «Recovery code» â «Ðод воÑÑÑановлениÑ» на вÑей ÑÑÑаниÑе VPN (labels, подÑказки, кнопки). СкелеÑон-загÑÑзка пеÑееÑ
ала Ñ inline style на Tailwind-ÑÑилиÑÑ.</li> <li data-num="1369"><span class="changelog-tag changelog-tag--DX" data-tag-alias="DX">DX</span> <strong>Dark mode ÑвеÑа ÑедакÑоÑа</strong> â 13 ÑеманÑиÑеÑкиÑ
ÑвеÑов (suggestion-add, delete, resolve, comment-highlight и дÑ.) полÑÑили оÑвеÑлÑннÑе dark-mode ваÑианÑÑ Ð² <code>tailwind.css</code>. ÐÑавки в ÑÑмной Ñеме ÑиÑÐ°ÐµÐ¼Ñ Ð±ÐµÐ· ÑÑÑенÑÑ.</li> <li data-num="1370"><span class="changelog-tag changelog-tag--DX" data-tag-alias="DX">DX</span> <code>**unhandledrejection</code> ловиÑÑÑ Ð³Ð»Ð¾Ð±Ð°Ð»Ñно** â забÑÑÑй <code>.catch()</code> в async-ÑепоÑке болÑÑе не ÑиÑ
о пÑопадÑÑ â оÑибка попадÑÑ Ð² конÑÐ¾Ð»Ñ Ð¸ в Sentry.</li> <li data-num="1371"><span class="changelog-tag changelog-tag--REFACTOR" data-tag-alias="REFACTOR">REFACTOR</span> <strong>viewModal: â30 ÑÑÑок</strong> â дÑблиÑÑÑÑий Escape-handler ÑдалÑн; modal-lite Ñже обÑабаÑÑÐ²Ð°ÐµÑ Escape глобалÑно. ÐенÑÑе listeners â менÑÑе ÑÑеÑек.</li> </ul> </div> </details> <details class="changelog-section"> <summary class="changelog-summary"><span class="changelog-meta"><span class="changelog-meta__version">v9.118.0</span><span class="changelog-meta__date">23-03-2026</span></span><h2 id="v91180-23-03-2026--баннеÑÑ-веÑнÑлиÑÑ-sticky-sidebar-жив-анимаÑиÑ-пÑи-ÑкÑолле-и-ÑиÑÑÑй-vanilla-js">ÐаннеÑÑ Ð²ÐµÑнÑлиÑÑ: sticky sidebar жив, анимаÑÐ¸Ñ Ð¿Ñи ÑкÑолле и ÑиÑÑÑй vanilla JS</h2></summary> <div class="changelog-section__body"> <p>ÐоковÑе баннеÑÑ ÑÑдом Ñо ÑÑаÑÑÑй â Ñе ÑамÑе «Самое ÑиÑаемое», «ÐÑÑÑ Ð¸Ð´ÐµÐ¸?», «ÐоддеÑжиÑе ÐиÑкÑÑÑ» â ÑломалиÑÑ Ð¿Ñи мигÑаÑии Ñ Bootstrap. Ðни Ñо Ñбегали за ÑÑÑеÑ, Ñо иÑÑезали, Ñо ÑеÑÑли sticky-ÑÑÑекÑ. ÐÑ Ð´Ð¾ÐºÐ¾Ð¿Ð°Ð»Ð¸ÑÑ Ð´Ð¾ коÑнÑ: Angular <code>transclude: 'element'</code> вÑÑавлÑл ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÐµÐ½Ñ Ð½Ðµ ÑÑда, кÑда ожидалоÑÑ, а <code>$onInit</code> обÑаÑалÑÑ Ðº DOM до Ñого, как Ñаблон попадал в живое деÑево. ТепеÑÑ Ð²ÑÑ Ð½Ð° меÑÑе â баннеÑÑ Ð¿ÑилипаÑÑ Ðº ÑкÑÐ°Ð½Ñ Ð¿Ñи ÑÑении, плавно вÑплÑваÑÑ Ð¿Ñи ÑкÑолле и ÑабоÑаÑÑ Ð±ÐµÐ· единой ÑÑÑоÑки jQuery.</p> <ul> <li data-num="1349"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>ÐаннеÑÑ Ð±Ð¾Ð»ÑÑе не ÑлеÑаÑÑ Ð·Ð° ÑÑÑеÑ</strong> â Bootstrap <code>col-md-7</code> давал <code>position: relative</code>, а Tailwind-ÑÑилиÑÑ â неÑ. ÐбÑолÑÑно позиÑиониÑÐ¾Ð²Ð°Ð½Ð½Ð°Ñ Ð¾Ð±ÑÑÑка баннеÑов ÑеÑÑла containing block и позиÑиониÑовалаÑÑ Ð¾ÑноÑиÑелÑно вÑей ÑÑÑаниÑÑ. ÐовÑй клаÑÑ <code>.post-content-col</code> гаÑанÑиÑÑÐµÑ <code>position: relative</code> на колонке конÑенÑа â баннеÑÑ Ñнова живÑÑ ÑÑдом Ñо ÑÑаÑÑÑй.</li> <li data-num="1350"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>Sticky-ÑкÑолл воÑÑÑановлен</strong> â пÑи ÑÑении длинного маÑеÑиала баннеÑÑ Ñнова ÑикÑиÑÑÑÑÑÑ Ð½Ð° ÑкÑане, ÑопÑÐ¾Ð²Ð¾Ð¶Ð´Ð°Ñ ÑиÑаÑелÑ. Ðлок «Самое ÑиÑаемое» оÑÑанавливаеÑÑÑ Ð² конÑе ÑÑаÑÑи, а не в ÑеÑедине â Ñовно как бÑло до мигÑаÑии.</li> <li data-num="1351"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>ЧÑÑнÑй ÑекÑÑ Ð½Ð° ÑÑÑнÑÑ
кнопкаÑ
</strong>
1 â глобалÑное пÑавило <code>a:visited { color: #000 }</code> пеÑекÑаÑивало ÑекÑÑ ÐºÐ½Ð¾Ð¿Ð¾Ðº «ÐÑедложиÑÑ Ð¸Ð´ÐµÑ» и «ÐоддеÑжаÑÑ» в невидимÑй ÑÑÑнÑй. ТепеÑÑ <code>.banner-button</code> ÑоÑ
ÑанÑÐµÑ Ð±ÐµÐ»Ñй ÑекÑÑ Ð²Ð¾ вÑеÑ
ÑоÑÑоÑниÑÑ
â <code>:visited</code>, <code>:active</code>, <code>:focus</code>.</li> <li data-num="1352"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> <strong>ÐаннеÑÑ Ð²ÑплÑваÑÑ Ð¿Ñи ÑкÑолле</strong> â вмеÑÑо мгновенного поÑÐ²Ð»ÐµÐ½Ð¸Ñ ÐºÐ°Ð¶Ð´Ñй Ð±Ð°Ð½Ð½ÐµÑ Ð¼Ñгко поднимаеÑÑÑ ÑÐ½Ð¸Ð·Ñ Ð¿Ñи попадании во вÑÑпоÑÑ. IntersectionObserver запÑÑÐºÐ°ÐµÑ Ð°Ð½Ð¸Ð¼Ð°ÑÐ¸Ñ Ð·Ð° 100px до видимой облаÑÑи â ÑиÑаÑÐµÐ»Ñ Ð²Ð¸Ð´Ð¸Ñ Ð¿Ð¾Ð»Ð½Ð¾Ðµ движение, а не заÑÑÑвÑий ÑезÑлÑÑаÑ. ÐеÑвÑй Ð±Ð°Ð½Ð½ÐµÑ ÑÑÑÑ Ð²ÑÑазиÑелÑнее оÑÑалÑнÑÑ
.</li> <li data-num="1353"><span class="changelog-tag changelog-tag--A11Y" data-tag-alias="A11Y">A11Y</span> <code>**prefers-reduced-motion</code> оÑклÑÑÐ°ÐµÑ Ð°Ð½Ð¸Ð¼Ð°ÑиÑ** â полÑзоваÑели Ñ Ð²ÐµÑÑибÑлÑÑнÑми наÑÑÑениÑми видÑÑ Ð±Ð°Ð½Ð½ÐµÑÑ ÑÑазÑ, без движениÑ.</li> <li data-num="1354"><span class="changelog-tag changelog-tag--REFACTOR" data-tag-alias="REFACTOR">REFACTOR</span> <strong>jQuery полноÑÑÑÑ ÑдалÑн из баннеÑов</strong> â <code>$('#asideBannersWrapper').css()</code> и <code>$(window).height()</code> Ð·Ð°Ð¼ÐµÐ½ÐµÐ½Ñ Ð½Ð° <code>document.getElementById</code> и <code>window.innerHeight</code>. ÐÑе DOM-опеÑаÑии обÑÑнÑÑÑ Ð² <code>$timeout</code> â Ñаблон компоненÑа гаÑанÑиÑованно в живом DOM.</li> </ul> </div> </details> <details class="changelog-section"> <summary class="changelog-summary"><span class="changelog-meta"><span class="changelog-meta__version">v9.117.0</span><span class="changelog-meta__date">23-03-2026</span></span><h2 id="v91170-23-03-2026--мгновеннÑе-пеÑеÑ
одÑ-маÑовое-ÑÑекло-и-поÑледний-jquery-плаÑÑоÑма-дÑÑиÑ-Ñвободнее">ÐгновеннÑе пеÑеÑ
одÑ, маÑовое ÑÑекло и поÑледний jQuery: плаÑÑоÑма дÑÑÐ¸Ñ Ñвободнее</h2></summary> <div class="changelog-section__body"> <p>ÐнаеÑе оÑÑÑение, когда нажимаеÑÑ ÑÑÑÐ»ÐºÑ â а ÑÑÑаниÑа замиÑаеÑ? ÐÑо View Transitions API: бÑаÑÐ·ÐµÑ Ð´ÐµÐ»Ð°Ð» ÑкÑинÑÐ¾Ñ ÑÑаÑой ÑÑÑаниÑÑ Ð¸ ждал, пока Ð½Ð¾Ð²Ð°Ñ Ð·Ð°Ð³ÑÑзиÑÑÑ â до ÑÑÑÑ
ÑекÑнд замоÑозки Ñади анимаÑии в ÑеÑвеÑÑÑ ÑекÑндÑ. РиндикаÑÐ¾Ñ Ð·Ð°Ð³ÑÑзки мог не поÑвиÑÑÑÑ 2.5 ÑекÑÐ½Ð´Ñ Ð¸Ð·-за cooldown'а â и полÑзоваÑÐµÐ»Ñ Ð²Ð¸Ð´ÐµÐ» белÑй ÑкÑан без обÑÑÑнений. ТепеÑÑ Ð¿ÐµÑеÑ
Ð¾Ð´Ñ Ð½ÐµÐ±Ð»Ð¾ÐºÐ¸ÑÑÑÑие: конÑÐµÐ½Ñ Ð¿Ð»Ð°Ð²Ð½Ð¾ ÑÑ
Ð¾Ð´Ð¸Ñ Ð¸ поÑвлÑеÑÑÑ ÑеÑез CSS opacity, ÑÑÑаниÑа оÑÑаÑÑÑÑ Ð¶Ð¸Ð²Ð¾Ð¹. ÐаÑаллелÑно вÑÑиÑÑили поÑледние jQuery-вÑÐ·Ð¾Ð²Ñ Ð¸Ð· логики пÑиложениÑ, добавили маÑовое ÑÑекло на ÑÐ°Ð¿ÐºÑ Ð¸ модалки, поÑинили ÑедакÑÐ¾Ñ â и оконÑаÑелÑно Ñдалили Ñайл Ñ Ð¿ÐµÑеменнÑми Bootstrap.</p> <ul> <li data-num="1333"><span class="changelog-tag changelog-tag--PERF" data-tag-alias="PERF">PERF</span> <strong>ÐеÑеÑ
Ð¾Ð´Ñ Ð¼ÐµÐ¶Ð´Ñ ÑÑÑаниÑами â мгновеннÑе и живÑе</strong> â View Transitions API замоÑаживал ÑкÑан на вÑÐµÐ¼Ñ Ð·Ð°Ð³ÑÑзки маÑÑÑÑÑа (до 3 Ñек). ÐаменÑн на CSS opacity-пеÑеÑ
од: 0.12s fade-out + 0.15s fade-in ÑеÑез клаÑÑ <code>is-nav-transition</code> на body. СÑÑаниÑа оÑÑаÑÑÑÑ Ð¸Ð½ÑеÑакÑивной â клики ÑабоÑаÑÑ, ниÑего не блокиÑÑеÑÑÑ. ÐÑи оÑибке маÑÑÑÑÑа конÑÐµÐ½Ñ Ð½Ðµ завиÑÐ½ÐµÑ Ð½Ð° opacity: 0 â ÑÑи ÑÑÑаÑ
овоÑнÑÑ
ÑоÑки (<code>$routeChangeError</code>, <code>safeHideOverlay</code>, safety timeout`) гаÑанÑиÑованно ÑнимÑÑ ÐºÐ»Ð°ÑÑ.</li> <li data-num="1334"><span class="changelog-tag changelog-tag--PERF" data-tag-alias="PERF">PERF</span> <strong>
1Overlay поÑвлÑеÑÑÑ Ð¸ ÑÑ
Ð¾Ð´Ð¸Ñ Ð²Ð´Ð²Ð¾Ðµ бÑÑÑÑее</strong> â индикаÑÐ¾Ñ Ð·Ð°Ð³ÑÑзки ÑÑаÑÑÑÐµÑ ÑеÑез 200ms вмеÑÑо 350, минималÑÐ½Ð°Ñ Ð²ÑдеÑжка â 100ms вмеÑÑо 200, паÑза Ð¼ÐµÐ¶Ð´Ñ Ð¿Ð¾ÐºÐ°Ð·Ð°Ð¼Ð¸ â 0.6Ñ Ð²Ð¼ÐµÑÑо 2.5. Ðа бÑÑÑÑом Ñоединении овеÑлей не мелÑкнÑÑ, на медленном â поÑвиÑÑÑ ÑанÑÑе и иÑÑÐµÐ·Ð½ÐµÑ Ð±ÑÑÑÑее. CSS <code>ng-enter</code> Ñ Ð·Ð°Ð´ÐµÑжкой 200ms + <code>ng-leave</code> Ñ fade-out: еÑли навигаÑÐ¸Ñ Ð·Ð°Ð²ÐµÑÑиÑÑÑ Ð±ÑÑÑÑее задеÑжки â овеÑлей даже не пÑоÑвиÑÑÑ, никакиÑ
белÑÑ
вÑпÑÑек.</li> <li data-num="1335"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>ÐÑбликаÑÐ¸Ñ Ð±Ð¾Ð»ÑÑе не ведÑÑ Ð½Ð° 404</strong> â redirect поÑле «ÐпÑбликоваÑÑ» вÑÑиÑлÑлÑÑ Ð¸Ð· URL (<code>/edit/X4WdRAACsQ</code> â <code>/X4WdRAACsQ</code>), а маÑÑÑÑÑизаÑÐ¾Ñ Ñакой ÑÑÑаниÑÑ Ð½Ðµ знал. ТепеÑÑ â ÑÑÑÑ
ÑÑовневÑй fallback: даннÑе из API, заÑем URL-валидаÑиÑ, заÑем подгÑÑзка ÑÑÑлки Ñ ÑеÑвеÑа. ÐÑли ниÑего не помогло â пеÑенапÑавление в ÑеÑновики, а не в пÑÑÑоÑÑ.</li> <li data-num="1336"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>Ðвойной клик по «ÐпÑбликоваÑÑ» не дÑблиÑÑеÑ</strong> â guard в <code>sendForm()</code> блокиÑÑÐµÑ Ð¿Ð¾Ð²ÑоÑнÑе вÑзовÑ, пока пеÑвÑй запÑÐ¾Ñ Ð² полÑÑе. ÐеÑеÑпеливÑй Ñап на мобилÑном болÑÑе не ÑоздаÑÑ Ð´Ð²Ð° ÑеÑновика.</li> <li data-num="1337"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>СноÑки не падаÑÑ Ð¿Ñи бÑÑÑÑом Delete</strong> â Ñдаление в пÑÑÑом паÑагÑаÑе footnote-ÑедакÑоÑа ÑепеÑÑ Ð¿ÑовеÑÑÐµÑ ÑодеÑжимое (не ÑÑиÑÐ°Ñ zero-width spaces). ÐÑÑавка ÑоÑ
ÑанÑÐµÑ ÑоÑмаÑиÑование, конвеÑÑиÑÑÐµÑ <code><div></code> â <code><p></code>, ÑкÑаниÑÑÐµÑ ÑпеÑÑÐ¸Ð¼Ð²Ð¾Ð»Ñ ÑеÑез единÑй <code>escapeHtml()</code>.</li> <li data-num="1338"><span class="changelog-tag changelog-tag--UX" data-tag-alias="UX">UX</span> <strong>Шапка из маÑового ÑÑекла</strong> â пÑи пÑокÑÑÑке Ñ
ÐµÐ´ÐµÑ Ð¿Ð¾Ð»ÑÑÐ°ÐµÑ <code>backdrop-filter: blur(12px)</code> Ñ Ð¿Ð¾Ð»ÑпÑозÑаÑнÑм Ñоном и Ñонкой ÑенÑÑ. СодеÑжимое ÑÑÑаниÑÑ Ð¼Ñгко пÑоÑвеÑÐ¸Ð²Ð°ÐµÑ â менÑÑе ÑÑма, болÑÑе конÑекÑÑа.</li> <li data-num="1339"><span class="changelog-tag changelog-tag--UX" data-tag-alias="UX">UX</span> <strong>Ðодалки Ñ ÑазмÑÑÑм Ñоном</strong> â backdrop диалогов ÑепеÑÑ ÑазмÑÐ²Ð°ÐµÑ ÑодеÑжимое на 4px. ÐаÑемнение Ñнижено Ñ 60% до 50% â вмеÑÑе Ñ ÑазмÑÑием ÑÑо даÑÑ Ð¾ÑÑÑение глÑбинÑ, а не ÑÑÑной ÑÑенÑ.</li> <li data-num="1340"><span class="changelog-tag changelog-tag--UX" data-tag-alias="UX">UX</span> <strong>ТаблиÑÑ Ð² ÑÑаÑÑÑÑ
не ломаÑÑ Ð¼Ð¾Ð±Ð¸Ð»ÑнÑÑ Ð²ÑÑÑÑкÑ</strong> â авÑоÑÑкие ÑаблиÑÑ Ð² Ñеле маÑеÑиала полÑÑили гоÑизонÑалÑнÑй ÑкÑолл, гÑаниÑÑ ÑÑеек и вÑделение заголовков. Ðа ÑелеÑоне ÑаблиÑа лиÑÑаеÑÑÑ Ð¿Ð°Ð»ÑÑем.</li> <li data-num="1341"><span class="changelog-tag changelog-tag--PERF" data-tag-alias="PERF">PERF</span> <strong>jQuery ÑÑÑл из логики пÑиложениÑ</strong> â 15 компоненÑов (комменÑаÑии, ÑемаÑки, голоÑование, ÑоÑÑаÑинг, донаÑÑ, Ñбилей) пеÑеÑли на наÑивнÑе <code>addEventListener</code>, <code>window.scrollTo({ behavior: 'smooth' })</code>, <code>element.matches()</code>. С коÑÑекÑнÑм <code>removeEventListener</code> в <code>$destroy</code> â без ÑÑеÑек памÑÑи. jQuery оÑÑалÑÑ ÑолÑко в vendor-каÑÑÑели Slick.</li> <li data-num="1342"><span class="changelog-tag changelog-tag--UX" data-tag-alias="UX">UX</span> <strong>Ðнопки и инпÑÑÑ Ð´ÑÑÐ°Ñ ÑÑиÑÑом Muller</strong>
1 â <code>line-height: 1.428</code> (Bootstrap 3) заменÑн на <code>1.45</code>. РазниÑа в пикÑелÑ, но бÑÐºÐ²Ñ Ð¿ÐµÑеÑÑали ÑпиÑаÑÑÑÑ Ð² ÑамкÑ.</li> <li data-num="1343"><span class="changelog-tag changelog-tag--UX" data-tag-alias="UX">UX</span> <strong>ÐодкаÑÑÑ Ñо Ñвоей ÑеÑкой</strong> â ÑÑÑаниÑÑ Ð¿Ð¾Ð´ÐºÐ°ÑÑов пеÑеÑли Ñ Tailwind-ÑÑÐ¸Ð»Ð¸Ñ Ð½Ð° BEM-клаÑÑÑ <code>.podcast-page__grid-*</code> в SCSS. РаÑкладка ÑÑабилÑнее, не завиÑÐ¸Ñ Ð¾Ñ Ð¿Ð¾ÑÑдка загÑÑзки CSS.</li> <li data-num="1344"><span class="changelog-tag changelog-tag--A11Y" data-tag-alias="A11Y">A11Y</span> <strong>Ðнопка ÑедакÑиÑÐ¾Ð²Ð°Ð½Ð¸Ñ ÑноÑки озвÑÑиваеÑÑÑ</strong> â <code>aria-label="ÑедакÑиÑоваÑÑ ÑноÑкÑ"</code> на иконке-каÑандаÑе. Screen reader назÑÐ²Ð°ÐµÑ Ð´ÐµÐ¹ÑÑвие, а не молÑиÑ.</li> <li data-num="1345"><span class="changelog-tag changelog-tag--REFACTOR" data-tag-alias="REFACTOR">REFACTOR</span> <code>**bootstrap-vars-compat.scss</code> ÑдалÑн** â поÑледние 42 ÑÑÑоки SCSS-пеÑеменнÑÑ
из Bootstrap 3 Ð¸Ð½Ð»Ð°Ð¹Ð½ÐµÐ½Ñ Ð¿Ð¾ меÑÑÑ Ð¸ÑполÑзованиÑ. Ðа один Ñайл менÑÑе â на Ð¾Ð´Ð½Ñ Ð·Ð°Ð²Ð¸ÑимоÑÑÑ Ð¾Ñ 2015 года менÑÑе.</li> <li data-num="1346"><span class="changelog-tag changelog-tag--REFACTOR" data-tag-alias="REFACTOR">REFACTOR</span> <strong>30+ алÑÑа-Ñокенов вмеÑÑо <code>rgba()</code> ÑоÑÑÑпÑÑ</strong> â палиÑÑа <code>--alpha-black-*</code> и <code>--alpha-white-*</code> ÑаÑÑиÑена Ñ 18 до 30+ знаÑений Ñ Ð°Ð²ÑокоÑÑекÑией Ð´Ð»Ñ ÑÑмной ÑемÑ. 311 Ñ
аÑдкоднÑÑ
<code>rgba()</code> ÑепеÑÑ â ÑеÑез Ð¾Ð´Ð½Ñ Ð¿ÐµÑеменнÑÑ.</li> <li data-num="1347"><span class="changelog-tag changelog-tag--DX" data-tag-alias="DX">DX</span> <strong>СеманÑиÑеÑкие ÑвеÑа Ð´Ð»Ñ Ð¿Ñавок в ÑедакÑоÑе</strong> â новÑе ÑÐ¾ÐºÐµÐ½Ñ <code>--color-suggestion-add</code>, <code>--color-suggestion-delete</code>, <code>--color-comment-highlight</code> в <code>tailwind.css</code>. Diff-подÑвеÑка пÑивÑзана к оÑмÑÑленнÑм именам.</li> <li data-num="1348"><span class="changelog-tag changelog-tag--DX" data-tag-alias="DX">DX</span> <strong>Ðолонки Tailwind не ÑжимаÑÑÑÑ</strong> â <code>gutter-half</code> полÑÑил <code>flex: 0 0 auto</code> и <code>min-width: 0</code>. ÐлиннÑй <code><pre></code> или ÑиÑÐ¾ÐºÐ°Ñ ÐºÐ°ÑÑинка болÑÑе не ломаÑÑ ÑеÑкÑ.</li> </ul> </div> </details> <details class="changelog-section"> <summary class="changelog-summary"><span class="changelog-meta"><span class="changelog-meta__version">v9.116.0</span><span class="changelog-meta__date">23-03-2026</span></span><h2 id="v91160-23-03-2026--бÑÑÑÑее-доÑÑÑпнее-легÑе-2000-ÑÑÑок-svg-â-18-иконок-jquery-â-бÑаÑзеÑ-каждаÑ-кнопка--Ñ-клавиаÑÑÑÑ">ÐÑÑÑÑее, доÑÑÑпнее, легÑе: 2000 ÑÑÑок SVG â 18 иконок, jQuery â бÑаÑзеÑ, ÐºÐ°Ð¶Ð´Ð°Ñ ÐºÐ½Ð¾Ð¿ÐºÐ° â Ñ ÐºÐ»Ð°Ð²Ð¸Ð°ÑÑÑÑ</h2></summary> <div class="changelog-section__body"> <p>Ðогда в Ñаблоне ленÑÑ 34 Ñаза вклеена одна и Ñа же SVG-иконка â ÑÑо не дизайн, ÑÑо копипаÑÑ. Ðогда боковÑе баннеÑÑ ÑÑаÑÑи ждÑÑ ÑекÑÐ½Ð´Ñ Ð¿ÐµÑед поÑвлением â ÑÑо не анимаÑиÑ, ÑÑо <code>setTimeout(1000)</code>. Ðогда Tab ÑлеÑÐ°ÐµÑ Ð·Ð° Ð¼Ð¾Ð´Ð°Ð»ÐºÑ Ð²Ñ
ода â ÑÑо не UX, ÑÑо баг. ÐÑÐ¾Ñ Ñелиз â генеÑалÑÐ½Ð°Ñ ÑбоÑка: SVG-ÑпÑÐ°Ð¹Ñ Ð²Ð¼ÐµÑÑо копипаÑÑа, наÑивнÑе API бÑаÑзеÑа вмеÑÑо jQuery-обÑÑÑок деÑÑÑилеÑней давноÑÑи, ARIA-ÑазмеÑка на каждом инÑеÑакÑивном ÑлеменÑе. Ðи одной новой ÑиÑи â но плаÑÑоÑма ÑÑала бÑÑÑÑее, легÑе и дÑÑжелÑбнее к ÐºÐ°Ð¶Ð´Ð¾Ð¼Ñ Ð¿Ð¾Ð»ÑзоваÑелÑ.</p> <ul> <li data-num="1314"><span class="changelog-tag changelog-tag--PERF" data-tag-alias="PERF">PERF</span> <strong>2000 ÑÑÑок inline SVG â 18 иконок в ÑпÑайÑе</strong> â 34 svg-icon в ленÑе, 18 в Ñапке. Ðдна иконка â одно опÑеделение в ÑпÑайÑе, одна ÑÑÑлка <code><svg-icon name="article"></code> в Ñаблоне. ÐÑаÑÐ·ÐµÑ Ð¿Ð°ÑÑÐ¸Ñ HTML ленÑÑ Ð½Ð° ~40% бÑÑÑÑее пÑоÑÑо поÑомÑ, ÑÑо в нÑм на 1400 ÑÑÑок менÑÑе.</li> <li data-num="1315"><span class="changelog-tag changelog-tag--PERF" data-tag-alias="PERF">PERF</span> <strong>
1ÐоковÑе баннеÑÑ Ð¿Ð¾ÑвлÑÑÑÑÑ Ð¼Ð³Ð½Ð¾Ð²ÐµÐ½Ð½Ð¾</strong> â <code>setTimeout(1000)</code> и jQuery-измеÑение вÑÑоÑÑ ÑÑÑаниÑÑ ÑбÑанÑ. CSS <code>position: sticky</code> + <code>overflow: hidden</code> на grid-обÑÑÑке Ñами огÑаниÑиваÑÑ Ð±Ð°Ð½Ð½ÐµÑÑ Ð³ÑаниÑами ÑÑаÑÑи â JavaScript болÑÑе не гадаеÑ, помеÑÑÑÑÑÑ Ð»Ð¸.</li> <li data-num="1316"><span class="changelog-tag changelog-tag--PERF" data-tag-alias="PERF">PERF</span> <strong>СкелеÑон ленÑÑ Ð²Ð¼ÐµÑÑо ÑпиннеÑа</strong> â пÑи пеÑвой загÑÑзке ленÑÑ ÑÑи каÑÑоÑки-заглÑÑки Ñ shimmer-анимаÑией имиÑиÑÑÑÑ ÑеалÑнÑÑ ÑаÑкладкÑ. ÐÐµÑ Ð±ÐµÐ»Ð¾Ð³Ð¾ ÑкÑана, Ð½ÐµÑ Â«ÐºÑÑÑилки» â ÑиÑаÑÐµÐ»Ñ ÑÑÐ°Ð·Ñ Ð²Ð¸Ð´Ð¸Ñ ÑÑÑÑкÑÑÑÑ ÑÑÑаниÑÑ. ÐÑи пеÑеклÑÑении вкладок â компакÑнÑй ÑÐ¿Ð¸Ð½Ð½ÐµÑ Ð±ÐµÐ· меÑÑаниÑ.</li> <li data-num="1317"><span class="changelog-tag changelog-tag--PERF" data-tag-alias="PERF">PERF</span> <strong>jQuery ÑÑ
Ð¾Ð´Ð¸Ñ Ð¸Ð· Ñапки</strong> â <code>$(window).scrollTop()</code>, <code>$('html').addClass()</code>, <code>$('#mobile-menu').on()</code> â <code>window.scrollY</code>, <code>classList</code>, <code>addEventListener</code>. ШеÑÑÑ Ð¼ÐµÑÑ, Ð½Ð¾Ð»Ñ jQuery â мобилÑное менÑ, ÑкÑолл и dropdown'Ñ ÑабоÑаÑÑ Ð½Ð° голÑÑ
бÑаÑзеÑнÑÑ
API. ÐбÑабоÑÑики мобилÑного Ð¼ÐµÐ½Ñ ÑиÑÑÑÑÑÑ Ð² <code>$onDestroy</code> â Ð½ÐµÑ ÑÑеÑек. Dropdown-submenu закÑÑваÑÑÑÑ ÑеÑез <code>{ once: true }</code> â накопление listeners невозможно.</li> <li data-num="1318"><span class="changelog-tag changelog-tag--A11Y" data-tag-alias="A11Y">A11Y</span> <strong>Dropdown'Ñ Ð½Ð°Ð²Ð¸Ð³Ð°Ñии обÑÑвленÑ</strong> â ÑÑÑлки «СÑаÑÑи», «ÐÑкÑÑÑÑво», «ÐодкаÑÑÑ» полÑÑили <code>aria-haspopup="true"</code>. Screen reader ÑообÑаеÑ, ÑÑо за ÑÑÑлкой â вÑпадаÑÑее менÑ, а не обÑÑнÑй пеÑеÑ
од.</li> <li data-num="1319"><span class="changelog-tag changelog-tag--PERF" data-tag-alias="PERF">PERF</span> <strong>126 изобÑажений в ÑеÑке полÑÑили <code>decoding="async"</code></strong> â бÑаÑÐ·ÐµÑ Ð´ÐµÐºÐ¾Ð´Ð¸ÑÑÐµÑ JPEG/WebP в Ñоновом поÑоке, не блокиÑÑÑ Ð¾ÑÑиÑÐ¾Ð²ÐºÑ ÑекÑÑа и кнопок ÑÑдом. ÐÑобенно замеÑно на главной â 30 каÑÑоÑек Ñ Ð¾Ð±Ð»Ð¾Ð¶ÐºÐ°Ð¼Ð¸ болÑÑе не ÑоÑмозÑÑ ÑкÑолл.</li> <li data-num="1320"><span class="changelog-tag changelog-tag--A11Y" data-tag-alias="A11Y">A11Y</span> <strong>ФокÑÑ Ð½Ðµ ÑÐ±ÐµÐ¶Ð¸Ñ Ð¸Ð· модалки вÑ
ода</strong> â <code>createFocusTrap</code> пеÑеÑ
ваÑÑÐ²Ð°ÐµÑ Tab/Shift+Tab и ÑиклиÑеÑки обÑ
Ð¾Ð´Ð¸Ñ Ð¿Ð¾Ð»Ñ Ð²Ð½ÑÑÑи окна. ÐакÑÑÑие возвÑаÑÐ°ÐµÑ ÑокÑÑ Ð½Ð° кнопкÑ, коÑоÑÐ°Ñ Ð¾ÑкÑÑла модалкÑ. Ðи один клавиаÑÑÑнÑй полÑзоваÑÐµÐ»Ñ Ð½Ðµ поÑеÑÑеÑÑÑ Ð·Ð° backdrop'ом.</li> <li data-num="1321"><span class="changelog-tag changelog-tag--A11Y" data-tag-alias="A11Y">A11Y</span> <strong>ÐÑоÑилÑ-Ð¼ÐµÐ½Ñ Ð´Ð»Ñ ÐºÐ»Ð°Ð²Ð¸Ð°ÑÑÑÑ</strong> â <code>aria-haspopup</code>, <code>aria-expanded</code> на аваÑаÑе, <code>role="menu"</code> и <code>role="menuitem"</code> на каждом пÑнкÑе. СÑÑелки ââ пеÑемеÑаÑÑ ÑокÑÑ Ð¼ÐµÐ¶Ð´Ñ Ð¿ÑнкÑами, Home/End â к пеÑÐ²Ð¾Ð¼Ñ Ð¸ поÑледнемÑ, Escape â закÑÑваеÑ. ÐÑе ÑÑи ваÑианÑа Ñапки (деÑкÑоп, планÑеÑ, ÑедакÑоÑ) ведÑÑ ÑÐµÐ±Ñ Ð¾Ð´Ð¸Ð½Ð°ÐºÐ¾Ð²Ð¾.</li> <li data-num="1322"><span class="changelog-tag changelog-tag--A11Y" data-tag-alias="A11Y">
1A11Y</span> <strong>Ðнопки голоÑÐ¾Ð²Ð°Ð½Ð¸Ñ Ð³Ð¾Ð²Ð¾ÑÑÑ</strong> â <code>aria-label="ÐлÑÑ 1"</code> и <code>"ÐинÑÑ 2"</code> на каждой кнопке ÑейÑинга. Screen reader болÑÑе не ÑиÑÐ°ÐµÑ Ð±ÐµÑÑмÑÑленное «кнопка, плÑÑ» â он ÑÐºÐ°Ð¶ÐµÑ Â«ÐÐ¾Ð»Ð¾Ñ Ð¿Ð»ÑÑ Ð¾Ð´Ð¸Ð½Â».</li> <li data-num="1323"><span class="changelog-tag changelog-tag--A11Y" data-tag-alias="A11Y">A11Y</span> <strong>ÐенÑа ÑпÑавлÑеÑÑÑ Tab'ом</strong> â Ð±Ð¾ÐºÐ¾Ð²Ð°Ñ Ð½Ð°Ð²Ð¸Ð³Ð°ÑÐ¸Ñ (ÐÑÑ / ÐÐ¾Ñ Ð»ÐµÐ½Ñа / РедакÑиÑ), ÑоÑÑиÑовка (Ðовое / ÐопÑлÑÑное / ÐбÑÑждаемое) â вÑÑ Ð½Ð° <code><button role="tab"></code> Ñ <code>aria-selected</code>. Dropdown'Ñ ÑилÑÑÑов полÑÑили <code>aria-expanded</code> и <code>aria-haspopup</code>. ЧеÑновики â <code>role="listbox"</code> на каждом dropdown'е + Escape-to-close.</li> <li data-num="1324"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>SSR-ÑаÑкладка болÑÑе не пÑÑгаеÑ</strong> â <code>tw:md:ml-offset-2</code> (ÑамÑй иÑполÑзÑемÑй оÑÑÑÑп â 51 меÑÑо) оÑÑÑÑÑÑвовал в SSR-ÑолбÑке. ÐлÑÑ: <code>lg</code>-breakpoint иÑпÑавлен Ñ 1300px на 1200px (как в Tailwind). ÐеÑвÑй ÑкÑан ÑендеÑиÑÑÑ ÑоÑно Ñак же, как поÑле загÑÑзки ÑÑилей.</li> <li data-num="1325"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>СÑÑаниÑа оÑибки ÑенÑÑиÑÑеÑÑÑ</strong> â <code>top: 35%</code> + <code>transform: translate(0, -40%)</code> заменено на <code>top: 50%</code> + <code>translateY(-50%)</code>. ÐÐ¾Ñ Ñ 404 наконеÑ-Ñо ÑÑÑого по ÑенÑÑÑ, а не Ñлегка вÑÑе.</li> <li data-num="1326"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>Scroll-to-top пÑи навигаÑии</strong> â пеÑеÑ
од Ð¼ÐµÐ¶Ð´Ñ ÑÑÑаниÑами (но не по Ñ
еÑ-ÑÑÑлкам #comments) авÑомаÑиÑеÑки пÑокÑÑÑÐ¸Ð²Ð°ÐµÑ Ðº наÑалÑ. ÐолÑÑе никакиÑ
«оÑкÑÑл новÑÑ ÑÑаÑÑÑ â а она внизÑ».</li> <li data-num="1327"><span class="changelog-tag changelog-tag--SEC" data-tag-alias="SEC">SEC</span> <strong>Regex API-валидаÑии заÑкоÑен</strong> â URL <code>https://connect-api.discours.io.evil.com</code> болÑÑе не пÑойдÑÑ Ð¿ÑовеÑкÑ. Ðобавлен <code>(?:\\/|$)</code> в конÑе паÑÑеÑна â ÑолÑко ÑоÑнÑй домен или его подпÑÑÑ.</li> <li data-num="1328"><span class="changelog-tag changelog-tag--SEC" data-tag-alias="SEC">SEC</span> <strong>ÐлÑÑи не ÑÑекаÑÑ Ð² localStorage</strong> â <code>restoreResult</code> (как и <code>issueResult</code>) ÑепеÑÑ ÑилÑÑÑÑеÑÑÑ Ð¿ÐµÑед ÑоÑ
Ñанением: ÑолÑко <code>key_id</code>, <code>brigade</code>, <code>recovery_code</code>. ÐÑли API веÑнÑÑ <code>access_key</code> â он не окажеÑÑÑ Ð² Ñ
ÑанилиÑе бÑаÑзеÑа.</li> <li data-num="1329"><span class="changelog-tag changelog-tag--REFACTOR" data-tag-alias="REFACTOR">REFACTOR</span> <strong>ÐÑÑÑвÑй код вÑÑиÑен</strong> â 37 ÑÑÑок IE-ÑовмеÑÑимого <code>_getRangeAtCollapse</code> (нигде не вÑзÑвалÑÑ), CSS-клаÑÑÑ <code>.help-block</code>, <code>.control-label</code>, <code>.icon-bar</code> (нигде не пÑименÑлиÑÑ), дÑÐ±Ð»Ð¸ÐºÐ°Ñ <code>.small</code>, опеÑаÑка <code>AVAIBLE_TYPES</code>. ÐенÑÑе мÑÑоÑа â ÑиÑе голова.</li> <li data-num="1330"><span class="changelog-tag changelog-tag--UX" data-tag-alias="UX">UX</span> <strong>Connect: поле кÑаÑÐ½ÐµÐµÑ Ð¿Ñи оÑибке</strong> â пÑÑÑой recovery code пÑи нажаÑии «ÐоÑÑÑановиÑÑ» подÑвеÑÐ¸Ð²Ð°ÐµÑ Ð¸Ð½Ð¿ÑÑ ÐºÑаÑной Ñамкой + <code>aria-invalid</code>. ÐÑибка ÑбÑаÑÑваеÑÑÑ Ð¿Ñи вводе â без лиÑниÑ
ноÑиÑикаÑий.</li>
1 <li data-num="1331"><span class="changelog-tag changelog-tag--DX" data-tag-alias="DX">DX</span> <strong>ÐиÑекÑива <code><svg-icon></code></strong> â <code><svg-icon name="article" size="24"></code> ÑендеÑÐ¸Ñ <code><svg><use href="#icon-article"></svg></code>. Ð¦Ð²ÐµÑ â ÑеÑез <code>currentColor</code>, ÑÐ°Ð·Ð¼ÐµÑ â ÑеÑез аÑÑибÑÑ. <code>aria-hidden="true"</code> и <code>focusable="false"</code> по ÑмолÑаниÑ. ÐобавиÑÑ Ð¸ÐºÐ¾Ð½ÐºÑ â одна ÑÑÑока в ÑпÑайÑе, одна â в Ñаблоне.</li> <li data-num="1332"><span class="changelog-tag changelog-tag--DX" data-tag-alias="DX">DX</span> <strong>sessionStorage не ÐºÐ¾Ð¿Ð¸Ñ Ð¼ÑÑоÑ</strong> â Ñлаги <code>chunk-reload-*</code> (заÑиÑа Ð¾Ñ Ð±ÐµÑконеÑнÑÑ
пеÑезагÑÑзок пÑи Ñедеплое) оÑиÑаÑÑÑÑ Ð¿Ñи ÑÑпеÑной загÑÑзке <code>main.js</code>. ÐолгоживÑÑие вкладки болÑÑе не заÑÑÑеваÑÑ Ð½Ð° ÑÑаÑÑÑ
ÑлагаÑ
.</li> </ul> </div> </details> <details class="changelog-section"> <summary class="changelog-summary"><span class="changelog-meta"><span class="changelog-meta__version">v9.115.0</span><span class="changelog-meta__date">23-03-2026</span></span><h2 id="v91150-23-03-2026--единÑй-ÑзÑк-дизайна-ÑокенÑ-вмеÑÑо-магиÑеÑкиÑ
-ÑиÑел-клавиаÑÑÑа-вмеÑÑо-мÑÑи">ÐдинÑй ÑзÑк дизайна: ÑÐ¾ÐºÐµÐ½Ñ Ð²Ð¼ÐµÑÑо магиÑеÑкиÑ
ÑиÑел, клавиаÑÑÑа вмеÑÑо мÑÑи</h2></summary> <div class="changelog-section__body"> <p>65 Ñ
аÑдкоднÑÑ
font-size, 35 hex-ÑвеÑов, 4 z-index ловÑÑки, 19 textarea без подпиÑей â вÑÑ ÑÑо жило в коде незамеÑеннÑм. Ð ÑÑом Ñелизе Ð¼Ñ Ð¿ÑоÑлиÑÑ Ð¿Ð¾ ÑÑонÑÐµÐ½Ð´Ñ Ñ ÐµÐ´Ð¸Ð½ÑÑвенной ÑелÑÑ: каждое визÑалÑное ÑеÑение должно опиÑаÑÑÑÑ Ð½Ð° дизайн-Ñокен, каждÑй инÑеÑакÑивнÑй ÑÐ»ÐµÐ¼ÐµÐ½Ñ Ð´Ð¾Ð»Ð¶ÐµÐ½ ÑабоÑаÑÑ Ñ ÐºÐ»Ð°Ð²Ð¸Ð°ÑÑÑÑ, а модалки â не вÑпÑÑкаÑÑ ÑокÑÑ. Ðи одного нового пикÑÐµÐ»Ñ Ð½Ð° ÑкÑане â но под капоÑом плаÑÑоÑма ÑÑала оÑÑÑимо пÑоÑнее.</p> <ul> <li data-num="1307"><span class="changelog-tag changelog-tag--REFACTOR" data-tag-alias="REFACTOR">REFACTOR</span> <strong>65 магиÑеÑкиÑ
пикÑелей ÑÑали Ñокенами</strong> â в каÑÑоÑкаÑ
ленÑÑ Ð¸ на ÑÑÑаниÑе ÑÑаÑÑи каждÑй <code>font-size: 13px</code> ÑепеÑÑ â <code>var(--font-size-caption)</code>. 7 новÑÑ
ÑазмеÑов в Ñкале: Ð¾Ñ <code>--font-size-3xs</code> (10px) до <code>--font-size-5xl</code> (40px). ÐÐ¸Ð·Ð°Ð¹Ð½ÐµÑ Ð¼ÐµÐ½ÑÐµÑ Ð¾Ð´Ð¸Ð½ Ñокен â обновлÑÑÑÑÑ Ð¿Ð¾Ð´Ð¿Ð¸Ñи к ÑоÑо, ÑноÑки, ÑÑÑÑÑики и changelog Ñазом.</li> <li data-num="1308"><span class="changelog-tag changelog-tag--REFACTOR" data-tag-alias="REFACTOR">REFACTOR</span> <strong>Ðодалка вÑ
ода заговоÑила на ÑзÑке дизайн-ÑиÑÑемÑ</strong> â 35 Ñ
аÑдкоднÑÑ
ÑвеÑов (<code>#c62828</code>, <code>#000</code>, <code>#3b5998</code>â¦) Ð·Ð°Ð¼ÐµÐ½ÐµÐ½Ñ Ð½Ð° ÑокенÑ: <code>var(--color-error)</code>, <code>var(--color-on-surface)</code>, <code>var(--color-facebook)</code>. ÐÑли завÑÑа поÑвиÑÑÑ ÑÑÐ¼Ð½Ð°Ñ Ñема â модалка подÑ
ваÑÐ¸Ñ ÐµÑ Ð°Ð²ÑомаÑиÑеÑки.</li> <li data-num="1309"><span class="changelog-tag changelog-tag--REFACTOR" data-tag-alias="REFACTOR">REFACTOR</span> <strong>z-index болÑÑе не лоÑеÑеÑ</strong> â Ñ
аÑдкоднÑе <code>1010</code>, <code>1003</code>, <code>1500</code> Ð·Ð°Ð¼ÐµÐ½ÐµÐ½Ñ Ð½Ð° ÑеманÑиÑеÑкие <code>var(--z-sticky)</code>, <code>var(--z-hero-banner)</code>. ÐовÑй Ñокен <code>--z-hero-banner: 1500</code> занÑл меÑÑо Ð¼ÐµÐ¶Ð´Ñ <code>--z-link-preview</code> и <code>--z-footnote-modal</code>. ÐаконеÑ-Ñо каждÑй Ñлой инÑеÑÑейÑа Ð·Ð½Ð°ÐµÑ ÑÐ²Ð¾Ñ Ð¼ÐµÑÑо.</li> <li data-num="1310"><span class="changelog-tag changelog-tag--A11Y" data-tag-alias="A11Y">
1A11Y</span> <strong>19 textarea полÑÑили имена</strong> â каждое ÑекÑÑовое поле в ÑедакÑоÑе â Ð¾Ñ Ð·Ð°Ð³Ð¾Ð»Ð¾Ð²ÐºÐ° ÑÑаÑÑи до оÑвеÑа на комменÑаÑий â ÑепеÑÑ Ð¸Ð¼ÐµÐµÑ <code>aria-label</code>. Screen reader не ÑÐºÐ°Ð¶ÐµÑ Â«ÑекÑÑовое поле, пÑÑÑое» â он ÑÐºÐ°Ð¶ÐµÑ Â«Ðаголовок видео» или «ТекÑÑ Ð¾ÑвеÑа на комменÑаÑий».</li> <li data-num="1311"><span class="changelog-tag changelog-tag--A11Y" data-tag-alias="A11Y">A11Y</span> <strong>ФокÑÑ Ð½Ðµ ÑÐ±ÐµÐ¶Ð¸Ñ Ð¸Ð· модалки</strong> â Tab и Shift+Tab в loginModal, subscriptionsModal, inviteCollaborators и дÑÑгиÑ
AngularJS-модалкаÑ
ÑепеÑÑ ÑиклиÑеÑки обÑ
одÑÑ ÑлеменÑÑ Ð²Ð½ÑÑÑи окна. СÑÑеÑÑвÑÑÑий <code>focusTrap.js</code> инÑегÑиÑован в <code>modal-lite.js</code> â одна ÑÑÑока, а Tab болÑÑе не ÑлеÑÐ°ÐµÑ Ð½Ð° ÑÑÑаниÑÑ Ð¿Ð¾Ð·Ð°Ð´Ð¸.</li> <li data-num="1312"><span class="changelog-tag changelog-tag--DX" data-tag-alias="DX">DX</span> <strong>ÐенеÑаÑÐ¾Ñ Ñокенов не забÑÐ´ÐµÑ Ð½Ð¾Ð²Ñе ÑазмеÑÑ</strong> â 7 font-size и <code>z-hero-banner</code> Ð´Ð¾Ð±Ð°Ð²Ð»ÐµÐ½Ñ Ð² <code>design-tokens.js</code>. ÐапÑÑк <code>npm run tokens:generate</code> болÑÑе не ÑÑиÑÐ°ÐµÑ ÑÑÑнÑе пÑавки â ÑÐ¾ÐºÐµÐ½Ñ Ð¶Ð¸Ð²ÑÑ Ð² одном меÑÑе и ÑаÑÑ
одÑÑÑÑ Ð² SCSS, Tailwind и JSON ÑинÑ
Ñонно.</li> <li data-num="1313"><span class="changelog-tag changelog-tag--DX" data-tag-alias="DX">DX</span> <strong>13 ÑеманÑиÑеÑкиÑ
ÑвеÑов ÑедакÑоÑа Ð´Ð»Ñ ÑÑмной ÑемÑ</strong> â <code>--color-suggestion-add</code>, <code>-delete</code>, <code>-resolve</code>, <code>--color-comment-highlight</code> и еÑÑ 9 Ñокенов полÑÑили оÑвеÑлÑннÑе dark-mode ваÑианÑÑ Ð² <code>tailwind.css</code>. ÐÑавки, комменÑаÑии и поиÑк в ÑÑмной Ñеме ÑиÑÐ°ÐµÐ¼Ñ Ð±ÐµÐ· подÑÑÑойки ÑÑкоÑÑи мониÑоÑа.</li> </ul> </div> </details> <details class="changelog-section"> <summary class="changelog-summary"><span class="changelog-meta"><span class="changelog-meta__version">v9.114.0</span><span class="changelog-meta__date">22-03-2026</span></span><h2 id="v91140-22-03-2026--оÑ-каждого-пикÑелÑ--полÑза-оÑ-каждого-байÑа--ÑкоÑоÑÑÑ">ÐÑ ÐºÐ°Ð¶Ð´Ð¾Ð³Ð¾ пикÑÐµÐ»Ñ â полÑза, Ð¾Ñ ÐºÐ°Ð¶Ð´Ð¾Ð³Ð¾ байÑа â ÑкоÑоÑÑÑ</h2></summary> <div class="changelog-section__body"> <p>ÐÑоÑлиÑÑ Ð¿Ð¾ вÑем обновлениÑм поÑледниÑ
дней Ñ Ð»Ñпой и ÑкалÑпелем. РезÑлÑÑаÑ: ÑÑÑаниÑÑ Ð³ÑÑзÑÑÑÑ ÐµÑÑ Ð±ÑÑÑÑее (каÑÑоÑки за ÑкÑаном не ÑÑаÑÑÑ ÑеÑÑÑÑÑ Ð½Ð° оÑÑиÑовкÑ), ÑкоÑнÑе ÑÑÑлки болÑÑе не пÑÑÑÑÑÑÑ Ð·Ð° Ñапкой, анимаÑии не меÑаÑÑ Ð»ÑдÑм Ñ Ð²ÐµÑÑибÑлÑÑнÑми наÑÑÑениÑми, а дизайн-ÑиÑÑема полÑÑила полноÑеннÑÑ Ð²Ð°Ð»Ð¸Ð´Ð°ÑÐ¸Ñ ÑвеÑовÑÑ
Ñокенов. ÐÑо не новÑе ÑиÑи â ÑÑо ÑÑндаменÑ, на коÑоÑом ÑиÑи ÑабоÑаÑÑ Ð½Ð°Ð´Ñжно.</p> <ul> <li data-num="1297"><span class="changelog-tag changelog-tag--PERF" data-tag-alias="PERF">PERF</span> <strong>ÐаÑÑоÑки ленÑÑ ÑендеÑÑÑÑÑ ÑолÑко когда виднÑ</strong> â <code>content-visibility: auto</code> на каждой каÑÑоÑке ÑÑаÑÑи, комменÑаÑии (<code><comment></code>) и ÑемаÑке (<code><remark></code>). ÐÑаÑÐ·ÐµÑ Ð¿ÑопÑÑÐºÐ°ÐµÑ layout и paint Ð´Ð»Ñ ÑлеменÑов ниже ÑкÑана â на длиннÑÑ
ленÑаÑ
и ÑÑаÑÑÑÑ
Ñ 50+ комменÑаÑиÑми пÑокÑÑÑка ÑÑановиÑÑÑ Ð·Ð°Ð¼ÐµÑно оÑзÑвÑивее, оÑобенно на ÑелеÑонаÑ
.</li> <li data-num="1298"><span class="changelog-tag changelog-tag--PERF" data-tag-alias="PERF">PERF</span> <strong>СеÑка ÑÑаÑей на главной болÑÑе не ломаеÑÑÑ</strong>
1 â <code>.big-container</code> полÑÑил <code>display: flex</code>, без коÑоÑого колонки <code>tw:sm:w-1/2</code> не вÑÑавали в ÑÑд. УÑÑаÑевÑий clearfix-Ñ
ак ÑдалÑн â flexbox ÑпÑавлÑеÑÑÑ Ñам.</li> <li data-num="1299"><span class="changelog-tag changelog-tag--UX" data-tag-alias="UX">UX</span> <strong>ЯкоÑÑ Ð½Ðµ пÑÑÑÑÑÑÑ Ð·Ð° Ñапкой</strong> â глобалÑнÑй <code>scroll-margin-top: 80px</code> на вÑеÑ
ÑлеменÑаÑ
Ñ <code>id</code>. Ðлик по <code>#comments</code>, <code>#voting</code>, <code>#faq</code> â и ÑекÑÐ¸Ñ Ð¾ÑкÑÑваеÑÑÑ Ñовно Ñам, где нÑжно, а не под ÑикÑиÑованнÑм Ñ
едеÑом.</li> <li data-num="1300"><span class="changelog-tag changelog-tag--A11Y" data-tag-alias="A11Y">A11Y</span> <strong>ÐнимаÑии ÑважаÑÑ Ð¿Ð¾Ð»ÑзоваÑелÑ</strong> â глобалÑнÑй <code>prefers-reduced-motion</code> оÑклÑÑÐ°ÐµÑ Ð²Ñе transitions и animations Ñазом. РанÑÑе пÑиÑ
одилоÑÑ Ð¿ÑопиÑÑваÑÑ Ð¿Ñавило в каждом компоненÑе оÑделÑно â ÑепеÑÑ Ð¾Ð´Ð¸Ð½ catch-all покÑÑÐ²Ð°ÐµÑ Ð²ÑÑ.</li> <li data-num="1301"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>ÐÑибка голоÑÐ¾Ð²Ð°Ð½Ð¸Ñ ÑÑала ÑиÑаемой</strong> â блок Ñ ÑекÑÑом оÑибки в модалке оÑзÑва пÑбликаÑии пеÑеÑÑл Ñ Ñ
аÑдкоднÑÑ
hex-ÑвеÑов на ÑÐ¾ÐºÐµÐ½Ñ <code>tw:text-error</code>, <code>tw:bg-error-bg</code>. ÐонÑÑ: новÑе ÑÐ¾ÐºÐµÐ½Ñ <code>--color-error-bg</code> и <code>--color-error-border</code> доÑÑÑÐ¿Ð½Ñ Ð²Ð¾ вÑеÑ
компоненÑаÑ
.</li> <li data-num="1302"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>ÐеÑаÑÑ Ð½Ðµ Ð»Ð¾Ð²Ð¸Ñ Ð»Ð¸Ñнее</strong> â print.scss пеÑеÑÑал иÑполÑзоваÑÑ <code>[class*=...]</code> Ð´Ð»Ñ spacing-клаÑÑов. РанÑÑе <code>tw:mt-section</code> ловил и <code>tw:mt-section-xl</code> â ÑепеÑÑ ÐºÐ°Ð¶Ð´Ñй клаÑÑ ÑбÑаÑÑваеÑÑÑ ÑоÑеÑно.</li> <li data-num="1303"><span class="changelog-tag changelog-tag--DX" data-tag-alias="DX">DX</span> <strong>13 мÑÑÑвÑÑ
SCSS-пеÑеменнÑÑ
ÑдаленÑ</strong> â <code>$grid-gutter-width</code>, <code>$text-color</code>, <code>$headings-*</code>, <code>$navbar-height</code> и дÑÑгие пеÑеменнÑе, не иÑполÑзÑемÑе ни в одном Ñайле, вÑÑиÑÐµÐ½Ñ Ð¸Ð· <code>bootstrap-vars-compat.scss</code>. ÐенÑÑе ÑÑма â легÑе оÑиенÑиÑоваÑÑÑÑ.</li> <li data-num="1304"><span class="changelog-tag changelog-tag--DX" data-tag-alias="DX">DX</span> <strong>СкÑÐ¸Ð¿Ñ Ð²Ð°Ð»Ð¸Ð´Ð°Ñии ÑвеÑовÑÑ
Ñокенов</strong> â <code>npm run tokens:validate</code> ÑвеÑÑÐµÑ hardcoded-ÑвеÑа в <code>@layer components</code> Ñ <code>design-tokens.js</code>. ÐÑÐµÐ¹Ñ Ð·Ð°Ð¼ÐµÑаеÑÑÑ Ð´Ð¾ Ñого, как ÑÑановиÑÑÑ Ð¿Ñоблемой.</li> <li data-num="1305"><span class="changelog-tag changelog-tag--DX" data-tag-alias="DX">DX</span> <strong>Muller гоÑов к пеÑеÑ
одÑ</strong> â CSS-пеÑеменнÑе <code>--body-font-size</code>, <code>--body-line-height</code>, <code>--ui-font-size</code> опÑÐµÐ´ÐµÐ»ÐµÐ½Ñ Ð² <code>:root</code>. Ðогда Ð´Ð¸Ð·Ð°Ð¹Ð½ÐµÑ ÑÐºÐ°Ð¶ÐµÑ Â«Ð¼ÐµÐ½Ñем» â ÑÑо бÑÐ´ÐµÑ Ð¾Ð´Ð½Ð° пÑавка в одном Ñайле, а не оÑ
оÑа по ÑоÑне ÑелекÑоÑов.</li> <li data-num="1306"><span class="changelog-tag changelog-tag--DX" data-tag-alias="DX">DX</span> <strong>ÐаÑÑомнÑе breakpoints задокÑменÑиÑованÑ</strong> â 500px, 600px, 660px, 900px â каждÑй Ñ Ð¿Ð¾ÑÑнением, заÑем он нÑжен и где иÑполÑзÑеÑÑÑ. ÐовÑй ÑазÑабоÑÑик не бÑÐ´ÐµÑ Ð³Ð°Ð´Ð°ÑÑ, поÑÐµÐ¼Ñ Ð² article.scss ÑÑÐ¾Ð¸Ñ 660px, а не 768.</li> </ul> </div> </details> <details class="changelog-section"> <summary class="changelog-summary"><span class="changelog-meta"><span class="changelog-meta__version">v9.113.0</span><span class="changelog-meta__date">22-03-2026</span></span><h2 id="v91130-22-03-2026--вÑ
од-без-неÑвов-валидаÑиÑ-по-делÑ-модалка-без-пÑокÑÑÑки-и-Ñквозной-аÑдиÑ-доÑÑÑпноÑÑи">ÐÑ
од без неÑвов: валидаÑÐ¸Ñ Ð¿Ð¾ делÑ, модалка без пÑокÑÑÑки и Ñквозной аÑÐ´Ð¸Ñ Ð´Ð¾ÑÑÑпноÑÑи</h2></summary> <div class="changelog-section__body"> <p>ÐÑ ÑолÑко оÑкÑÑли окно вÑ
ода, ÑкнÑли мимо Ð¿Ð¾Ð»Ñ â и Ñже кÑаÑÐ½Ð°Ñ Ð¾Ñибка. Ðнакомо? ÐолÑÑе неÑ. ТепеÑÑ Ð²Ð°Ð»Ð¸Ð´Ð°ÑÐ¸Ñ ÑÑабаÑÑÐ²Ð°ÐµÑ ÑолÑко пÑи нажаÑии «ÐойÑи» или «ÐаÑегиÑÑÑиÑоваÑÑÑÑ» â когда Ð²Ñ Ð´ÐµÐ¹ÑÑвиÑелÑно гоÑÐ¾Ð²Ñ Ð¾ÑпÑавиÑÑ ÑоÑмÑ. Рна мобилÑнÑÑ
окно вÑ
ода наконеÑ-Ñо помеÑаеÑÑÑ Ð½Ð° ÑкÑан Ñеликом â без пÑокÑÑÑки и ÑкаÑков. Ðаодно пÑоÑли вÑе auth-ÑоÑÐ¼Ñ Ð¿Ð»Ð°ÑÑоÑÐ¼Ñ Ð½Ð°ÑÐºÐ²Ð¾Ð·Ñ Ð¸ закÑÑли 11 багов доÑÑÑпноÑÑи.</p> <ul> <li data-num="1283"><span class="changelog-tag changelog-tag--UX" data-tag-alias="UX">UX</span> <strong>ÐалидаÑÐ¸Ñ â ÑолÑко по нажаÑÐ¸Ñ ÐºÐ½Ð¾Ð¿ÐºÐ¸</strong> â Ð¿Ð¾Ð»Ñ Ð²Ñ
ода, ÑегиÑÑÑаÑии, ÑбÑоÑа паÑÐ¾Ð»Ñ Ð¸ disclaimer-ÑоÑÐ¼Ñ Ð±Ð¾Ð»ÑÑе не кÑаÑнеÑÑ Ð¿Ñи пÑоÑÑом ÑÑ
оде кÑÑÑоÑа. ÐÑибки поÑвл
1ÑÑÑÑÑ Ð¿Ñи оÑпÑавке ÑоÑмÑ, а иÑÑезаÑÑ â в ÑеалÑном вÑемени пÑи иÑпÑавлении. Ðдно изменение в <code>form-validation.js</code> â и вÑе ÑеÑÑÑе ÑоÑÐ¼Ñ ÑÑали дÑÑжелÑбнее.</li> <li data-num="1284"><span class="changelog-tag changelog-tag--UX" data-tag-alias="UX">UX</span> <strong>ÐобилÑÐ½Ð°Ñ Ð¼Ð¾Ð´Ð°Ð»ÐºÐ° помеÑаеÑÑÑ Ð½Ð° ÑкÑан</strong> â окно вÑ
ода поднÑлоÑÑ Ð²ÑÑе (top 56px вмеÑÑо 90), инпÑÑÑ, кнопки и OAuth-блок ÑÑали компакÑнее. Ðа iPhone SE ÑегиÑÑÑаÑÐ¸Ñ Ñ Ð¸Ð½Ð´Ð¸ÐºÐ°ÑоÑом паÑолÑ, ÑеÑÑÑÑÐ¼Ñ ÑоÑÑеÑÑми и ÑÑÑлкой «ÐÐµÑ Ð°ÐºÐºÐ°ÑнÑа?» ÑмеÑаеÑÑÑ Ð±ÐµÐ· пÑокÑÑÑки.</li> <li data-num="1285"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>ÐндикаÑÐ¾Ñ ÑложноÑÑи паÑÐ¾Ð»Ñ Ð±Ð¾Ð»ÑÑе не оÑÑÑаÑÑ</strong> â ÑбÑан 150ms debounce Ñ Ð¿Ð¾Ð»Ñ Ð¿Ð°ÑÐ¾Ð»Ñ Ð¿Ñи ÑегиÑÑÑаÑии и ÑбÑоÑе. ÐолоÑка «СлабÑй â СÑедний â СилÑнÑй» ÑепеÑÑ ÑеагиÑÑÐµÑ Ð½Ð° каждÑй Ñимвол мгновенно, без лага в 1â2 нажаÑиÑ.</li> <li data-num="1286"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>ÐндикаÑÐ¾Ñ Ð¿Ð°ÑÐ¾Ð»Ñ ÑбÑаÑÑваеÑÑÑ Ð¿Ñи Ñмене ÑоÑмÑ</strong> â ÑанÑÑе пеÑеклÑÑение вÑ
од â ÑегиÑÑÑаÑÐ¸Ñ Ð¼Ð¾Ð³Ð»Ð¾ оÑÑавиÑÑ Â«Ð¿ÑизÑак» ÑÑаÑого индикаÑоÑа. ТепеÑÑ <code>showRegisterForm()</code> и <code>showLoginForm()</code> обнÑлÑÑÑ strength-ÑоÑÑоÑние.</li> <li data-num="1287"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>Backdrop закÑÑÐ²Ð°ÐµÑ ÑолÑко веÑÑ
нÑÑ Ð¼Ð¾Ð´Ð°Ð»ÐºÑ</strong> â клик по заÑÐµÐ¼Ð½ÐµÐ½Ð¸Ñ Ð¿Ñи оÑкÑÑÑой модалке «ÐодÑвеÑдиÑе email» закÑÑÐ²Ð°ÐµÑ ÑолÑко еÑ, не ÑÑÐ¾Ð³Ð°Ñ Ð¾Ñновное окно вÑ
ода. РанÑÑе одним кликом ÑÑ
лопÑвалоÑÑ Ð²ÑÑ.</li> <li data-num="1288"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>Autofill не кÑадÑÑ ÑокÑÑнÑÑ ÑамкÑ</strong> â пÑи авÑозаполнении бÑаÑзеÑом поле ÑоÑ
ÑанÑÐµÑ ÑÑÑнÑй border в ÑокÑÑе, а не ÑбÑаÑÑваеÑÑÑ Ð½Ð° ÑеÑÑй.</li> <li data-num="1289"><span class="changelog-tag changelog-tag--A11Y" data-tag-alias="A11Y">A11Y</span> <strong>Ðдин заголовок â один <code>id</code></strong> â пÑÑÑ ÑлеменÑов Ñ <code>id="login-modal-title"</code> Ð·Ð°Ð¼ÐµÐ½ÐµÐ½Ñ Ð½Ð° один. Screen reader ÑепеÑÑ ÐºÐ¾ÑÑекÑно озвÑÑÐ¸Ð²Ð°ÐµÑ Ð·Ð°Ð³Ð¾Ð»Ð¾Ð²Ð¾Ðº модалки в лÑбом Ñежиме.</li> <li data-num="1290"><span class="changelog-tag changelog-tag--A11Y" data-tag-alias="A11Y">A11Y</span> <code>**aria-live</code> на заголовке модалки** â пÑи пеÑеклÑÑении «ÐÑ
од â РегиÑÑÑаÑÐ¸Ñ â ÐабÑли паÑолÑ?» screen reader озвÑÑÐ¸Ð²Ð°ÐµÑ Ð½Ð¾Ð²Ñй заголовок авÑомаÑиÑеÑки.</li> <li data-num="1291"><span class="changelog-tag changelog-tag--A11Y" data-tag-alias="A11Y">A11Y</span> <strong>СеÑвеÑнÑе оÑибки ÑвÑÐ·Ð°Ð½Ñ Ñ Ð¿Ð¾Ð»Ñми</strong> â form-level ÑообÑÐµÐ½Ð¸Ñ Â«ÐÑибка авÑоÑизаÑии» полÑÑили <code>id</code> и подклÑÑÐµÐ½Ñ ÑеÑез <code>aria-describedby</code>. Screen reader ÑиÑÐ°ÐµÑ Ð¾ÑÐ¸Ð±ÐºÑ Ð² конÑекÑÑе полÑ, а не как изолиÑованнÑй alert.</li> <li data-num="1292"><span class="changelog-tag changelog-tag--A11Y" data-tag-alias="A11Y">A11Y</span> <strong>Touch-target кнопки «показаÑÑ Ð¿Ð°ÑолÑ»</strong> â padding ÑвелиÑен до 44Ã44px (WCAG minimum). Ðа мобилÑном в Ð½ÐµÑ Ð½Ð°ÐºÐ¾Ð½ÐµÑ Ð¼Ð¾Ð¶Ð½Ð¾ попаÑÑÑ Ð¿Ð°Ð»ÑÑем Ñ Ð¿ÐµÑвого Ñаза.</li> <li data-num="1293"><span class="changelog-tag changelog-tag--A11Y" data-tag-alias="A11Y">
1A11Y</span> <strong>Focus-visible на кнопке закÑÑÑиÑ</strong> â пÑи навигаÑии Tab'ом кÑеÑÑик полÑÑÐ°ÐµÑ Ð²Ð¸Ð´Ð¸Ð¼Ñй ÑÑÑнÑй outline. ÐлавиаÑÑÑнÑе полÑзоваÑели болÑÑе не ÑеÑÑÑÑÑÑ.</li> <li data-num="1294"><span class="changelog-tag changelog-tag--A11Y" data-tag-alias="A11Y">A11Y</span> <strong>ÐонÑÑаÑÑ Ð¸Ð½Ð´Ð¸ÐºÐ°ÑоÑа паÑолÑ</strong> â подпиÑÑ Â«Ð¡Ñедний (добавÑÑе ÑиÑÑÑ)» ÑÑала Ñемнее (#555 вмеÑÑо #666) â WCAG AA на белом Ñоне гаÑанÑиÑован.</li> <li data-num="1295"><span class="changelog-tag changelog-tag--A11Y" data-tag-alias="A11Y">A11Y</span> <code>**lang="ru"</code> и <code>aria-label</code> на модалкаÑ
** â модалка вÑ
ода обÑÑвлÑÐµÑ ÑзÑк Ð´Ð»Ñ Ð¿ÑавилÑного пÑоизноÑениÑ, кнопка закÑÑÑÐ¸Ñ verify-email полÑÑила пÑопÑÑеннÑй label.</li> <li data-num="1296"><span class="changelog-tag changelog-tag--UX" data-tag-alias="UX">UX</span> <strong>Hover-ÑÑÑÐµÐºÑ Ð½Ð° полÑÑ
ввода</strong> â border плавно ÑÐµÐ¼Ð½ÐµÐµÑ Ð¿Ñи наведении, Ð´Ð°Ð²Ð°Ñ Ð²Ð¸Ð·ÑалÑнÑÑ Ð¾Ð±ÑаÑнÑÑ ÑвÑÐ·Ñ ÐµÑÑ Ð´Ð¾ клика. ÐелоÑÑ, но ÑоÑма оÑÑÑаеÑÑÑ Ð¶Ð¸Ð²Ð¾Ð¹.</li> </ul> </div> </details> <details class="changelog-section"> <summary class="changelog-summary"><span class="changelog-meta"><span class="changelog-meta__version">v9.112.0</span><span class="changelog-meta__date">22-03-2026</span></span><h2 id="v91120-22-03-2026--bootstrap-пÑоÑай-ÑобÑÑвеннаÑ-дизайн-ÑиÑÑема-вмеÑÑо-ÑÑеймвоÑка-2015-года">Bootstrap, пÑоÑай: ÑобÑÑÐ²ÐµÐ½Ð½Ð°Ñ Ð´Ð¸Ð·Ð°Ð¹Ð½-ÑиÑÑема вмеÑÑо ÑÑеймвоÑка 2015 года</h2></summary> <div class="changelog-section__body"> <p>ÐеÑÑÑÑ Ð»ÐµÑ Bootstrap задавал пÑавила игÑÑ Ð´Ð»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð³Ð¾ пикÑÐµÐ»Ñ ÐиÑкÑÑÑа â Ð¾Ñ ÑеÑки ÑÑаÑей до кнопки «ÐпÑбликоваÑÑ». ÐÑÐ¾Ñ Ñелиз завеÑÑÐ°ÐµÑ Ð¿ÐµÑеÑ
од на ÑобÑÑвеннÑÑ Ð´Ð¸Ð·Ð°Ð¹Ð½-ÑиÑÑемÑ: 2544 ÑÑÑоки Bootstrap ÑдаленÑ, ÑÑили ÑÐ°Ð·Ð´ÐµÐ»ÐµÐ½Ñ Ð½Ð° лÑгкий normalize и ÑоÑеÑнÑе class-опÑеделениÑ, а Tailwind v4 Ñ ÑеманÑиÑеÑкими Ñокенами ÑÑал единÑÑвеннÑм иÑÑоÑником новÑÑ
ÑÑилей. СÑÑаниÑÑ Ð·Ð°Ð³ÑÑжаÑÑÑÑ Ð±ÑÑÑÑее, код ÑÑал пÑозÑаÑнее, а пÑÑÑ Ðº SolidJS â коÑоÑе.</p> <ul> <li data-num="1267"><span class="changelog-tag changelog-tag--PERF" data-tag-alias="PERF">PERF</span> <strong>ÐинÑÑ 52 KB мÑÑÑвого CSS</strong> â <code>bootstrap-compat.scss</code> (2544 ÑÑÑоки) ÑдалÑн Ñеликом. ÐмеÑÑо монолиÑного Ñайла-компÑомиÑÑа â два компакÑнÑÑ
: <code>_normalize-compat.scss</code> (element-level resets) и <code>_bootstrap-backup.scss</code> (ÑолÑко Ñе клаÑÑÑ, ÑÑо ÑеалÑно иÑполÑзÑÑÑÑÑ). ÐаждÑй Ð±Ð°Ð¹Ñ Ð½Ð° ÑÑеÑÑ: ÑÑÑаниÑÑ Ð³ÑÑзÑÑÑÑ Ð¾ÑÑÑимо легÑе.</li> <li data-num="1268"><span class="changelog-tag changelog-tag--PERF" data-tag-alias="PERF">PERF</span> <strong>Tailwind поÑ
Ñдел вдвое</strong> â Ñ 33.8 KB до 14.6 KB. ЧиÑÑÑй <code>tailwind.css</code> ÑепеÑÑ ÑодеÑÐ¶Ð¸Ñ ÑолÑко design tokens и компоненÑÑ Ð´Ð¸Ð·Ð°Ð¹Ð½-ÑиÑÑÐµÐ¼Ñ (<code>.big-button</code>, <code>.linklike</code>, ÑиÑменнÑе 7px-боÑдеÑа). Ðикакого Bootstrap-баллаÑÑа.</li> <li data-num="1269"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> <strong>4 spacing-Ñокена вмеÑÑо магиÑеÑкиÑ
пикÑелей</strong> â <code>tw:mt-section</code> (30px), <code>tw:mt-content-top</code> (100px), <code>tw:mb-section-lg</code> (50px), <code>tw:mt-section-xl</code> (60px). 62 меÑÑа в ÑаблонаÑ
пеÑеÑли Ñ <code>tw:mt-[30px]</code> на оÑмÑÑленнÑе имена. ÐÐ¸Ð·Ð°Ð¹Ð½ÐµÑ Ð¼ÐµÐ½ÑÐµÑ Ð¾Ð´Ð¸Ð½ Ñокен â обновлÑеÑÑÑ Ð²ÐµÑÑ ÑайÑ.</li> <li data-num="1270"><span class="changelog-tag changelog-tag--REFACTOR" data-tag-alias="REFACTOR">REFACTOR</span> <strong>Scrollbar-микÑинÑ: два ÑÑали одним</strong> â дÑблиÑÑÑÑий <code>thin-scrollbar()</code> из tiptap-mixins ÑдалÑн, канониÑеÑкий <code>scrollbar-thin()</code> полÑÑил паÑамеÑÑ <code>$hover</code> Ð´Ð»Ñ Ñвного ÑвеÑа пÑи наведении. 6 вÑзовов в 4 ÑайлаÑ
мигÑиÑÐ¾Ð²Ð°Ð½Ñ Ð±ÐµÐ· визÑалÑнÑÑ
изменений.</li> <li data-num="1271"><span class="changelog-tag changelog-tag--REFACTOR" data-tag-alias="REFACTOR">REFACTOR</span> <strong>SCSS-квалиÑикаÑоÑÑ Ð±Ð¾Ð»ÑÑе не блокиÑÑÑÑ Ð¼Ð¸Ð³ÑаÑиÑ</strong> â 6 меÑÑ, где SCSS-ÑелекÑоÑÑ Ð·Ð°Ð²Ð¸Ñели Ð¾Ñ Ð¸Ð¼Ñн helper-клаÑÑов (<code>.row.margin-top-80px</code>, <code>.form-group.relative</code>), Ð·Ð°Ð¼ÐµÐ½ÐµÐ½Ñ Ð½Ð° ÑеманÑиÑеÑкие клаÑÑÑ. ТепеÑÑ HTML-клаÑÑÑ Ð¼Ð¾Ð¶Ð½Ð¾ менÑÑÑ, не Ð»Ð¾Ð¼Ð°Ñ ÑÑили.</li> <li data-num="1272"><span class="changelog-tag changelog-tag--REFACTOR" data-tag-alias="REFACTOR">REFACTOR</span> <strong>100% мигÑаÑÐ¸Ñ Ð½Ð° Tailwind</strong> â Ð½Ð¾Ð»Ñ <code>.row</code>, <code>.col-*</code>, <code>.hidden-xs</code> во вÑÑм пÑоекÑе. ÐоÑледний Ð¾Ð¿Ð»Ð¾Ñ â генеÑаÑÐ¾Ñ Changelog â Ñоже пеÑеведÑн на <code>tw:row-flex</code> и <code>tw:md:w-7/12</code>. Bootstrap grid полноÑÑÑÑ Ð²ÑÑеÑкнÑÑ Ð¸Ð· иÑÑоÑии â и из CSS, и из HTML.</li> <li data-num="1273"><span class="changelog-tag changelog-tag--PERF" data-tag-alias="PERF">PERF</span> <strong>Bootbox ÑÑÑл â dialog-lite пÑиÑÑл</strong> â 18 KB внеÑней библиоÑеки Ð·Ð°Ð¼ÐµÐ½ÐµÐ½Ñ Ð½Ð° 4 KB вÑÑÑоенного <code>dialog-lite.js</code>. ÐодалÑнÑе диалоги (оÑзÑв пÑбликаÑии, подÑвеÑждениÑ) ÑабоÑаÑÑ Ñак же, но не ÑÑнÑÑ Ð·Ð° Ñобой jQuery-плагин из 2014 года. ÐÑиÑиÑеÑкий пÑÑÑ Ð·Ð°Ð³ÑÑзки ÑÑал коÑоÑе на ~350ms.</li> <li data-num="1274"><span class="changelog-tag changelog-tag--UX" data-tag-alias="UX">UX</span> <strong>РедакÑÐ¾Ñ Ð±ÑÑÑÑее замеÑÐ°ÐµÑ Ð¾Ð±ÑÑв ÑвÑзи</strong> â ÑаймаÑÑ collab-ÑинÑ
ÑонизаÑии ÑокÑаÑилÑÑ Ñ 20 до 8 ÑекÑнд. ÐÑли HocusPocus не оÑвеÑÐ°ÐµÑ â авÑÐ¾Ñ ÑÐ²Ð¸Ð´Ð¸Ñ toast Ñ ÐºÐ½Ð¾Ð¿ÐºÐ¾Ð¹ «ÐовÑоÑиÑÑ Ð¿Ð¾Ð´ÐºÐ»ÑÑение», а не бÑÐ´ÐµÑ 20 ÑекÑнд гадаÑÑ, поÑÐµÐ¼Ñ ÐºÑÑÑÐ¾Ñ ÑоавÑоÑа замеÑ.</li> <li data-num="1275"><span class="changelog-tag changelog-tag--UX" data-tag-alias="UX">UX</span> <strong>LanguageTool не вклÑÑаеÑÑÑ Ð±ÐµÐ· ÑпÑоÑа</strong> â пÑовеÑка оÑÑогÑаÑии болÑÑе не воÑÑÑанавливаеÑÑÑ Ð¸Ð· localStorage пÑи оÑкÑÑÑии ÑедакÑоÑа. ТекÑÑ Ð½Ðµ ÑÑ
Ð¾Ð´Ð¸Ñ Ð½Ð° внеÑний API, пока авÑÐ¾Ñ Ñам не нажмÑÑ ÐºÐ½Ð¾Ð¿ÐºÑ. ÐÑÑÑÑее загÑÑзка, менÑÑе вопÑоÑов о пÑиваÑноÑÑи.</li> <li data-num="1276"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>СÑаÑÑÑ ÑемаÑки болÑÑе не ÑеÑÑеÑÑÑ</strong> â пÑи Ñливании ÑемаÑки Ñ Ð¿Ð¾Ð»Ð½Ñми даннÑми <code>resolved: false</code> ÑанÑÑе пеÑезапиÑÑвалÑÑ Ð·Ð½Ð°Ñением по ÑмолÑÐ°Ð½Ð¸Ñ (из-за <code>||</code> вмеÑÑо <code>!== undefined</code>). ТепеÑÑ Ñвно вÑÑÑавленнÑй <code>false</code> не пÑопадаеÑ.</li> <li data-num="1277"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>Чанки гÑÑзÑÑÑÑ Ñо вÑоÑой попÑÑки</strong> â еÑли динамиÑеÑкий import Ñпал на медленном 3G, ÑеÑез 1.5 ÑекÑÐ½Ð´Ñ Ð¿ÑоиÑÑ
Ð¾Ð´Ð¸Ñ Ð¿Ð¾Ð²ÑоÑÐ½Ð°Ñ Ð¿Ð¾Ð¿ÑÑка. ÐобилÑнÑе полÑзоваÑели болÑÑе не ÑеÑÑÑÑ ÑедакÑÐ¾Ñ Ð¸Ð·-за одного ÑеÑевого ÑбоÑ.</li> <li data-num="1278"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>Ðаг генеÑаÑоÑа Ñокенов</strong> â многоÑÑÑоÑнÑе комменÑаÑии в <code>design-tokens.js</code> ломали SCSS-вÑÑ
од (ÑÑÑоки Ñ <code>*</code> не полÑÑали пÑеÑÐ¸ÐºÑ <code>//</code>). СбоÑка падала пÑи лÑбом изменении Ñокенов. ÐÑпÑавлено в <code>generate-design-tokens.js</code>.</li> <li data-num="1279"><span class="changelog-tag changelog-tag--SEC" data-tag-alias="SEC">SEC</span> <strong>Rate limiting Ð´Ð»Ñ Connect API</strong> â Cloudflare Worker огÑаниÑÐ¸Ð²Ð°ÐµÑ <code>/api/access/</code> до 60 запÑоÑов в минÑÑÑ Ð½Ð° IP. ÐвÑооÑиÑÑка Map каждÑе 30 ÑекÑнд, LRU-вÑÑеÑнение пÑи 5000 запиÑей â памÑÑÑ Worker'а под конÑÑолем.</li> <li data-num="1280"><span class="changelog-tag changelog-tag--DX" data-tag-alias="DX">DX</span> <strong>ÐинÑÐµÑ Tailwind-ÑинÑакÑиÑа</strong>
1 â <code>npm run lint:tw</code> Ð»Ð¾Ð²Ð¸Ñ <code>md:tw:hidden</code> (непÑавилÑно) и пÑÐµÐ´Ð»Ð°Ð³Ð°ÐµÑ <code>tw:md:hidden</code> (пÑавилÑно). ÐнÑегÑиÑован в lint-staged â оÑибка не Ð´Ð¾ÐµÐ´ÐµÑ Ð´Ð¾ коммиÑа.</li> <li data-num="1281"><span class="changelog-tag changelog-tag--DX" data-tag-alias="DX">DX</span> <strong>bower_components/bootstrap ÑдаленÑ</strong> â 83 KB orphaned-Ñайлов Bootstrap 3.3.7 и bootstrap-sass болÑÑе не Ð»ÐµÐ¶Ð°Ñ Ð² ÑепозиÑоÑии. ÐÐ¾Ð»Ñ ÑÑÑлок, Ð½Ð¾Ð»Ñ Ð¸Ð¼Ð¿Ð¾ÑÑов.</li> <li data-num="1282"><span class="changelog-tag changelog-tag--DX" data-tag-alias="DX">DX</span> <strong>Scorecard: 100%</strong> â Ð½Ð¾Ð»Ñ legacy-клаÑÑов в source HTML. Scorecard ÑÑал ÑоÑнее: оÑлиÑÐ°ÐµÑ Ð¿ÑоекÑнÑе компоненÑÑ (<code>.border-*-7px</code>, <code>.linklike</code>) Ð¾Ñ legacy, не пÑÑÐ°ÐµÑ <code>social-buttons-absolute</code> Ñ <code>.absolute</code>, игноÑиÑÑÐµÑ <code>tw:relative</code> внÑÑÑи Tailwind-Ñокенов. 721 иÑполÑзование <code>tw:*</code> в 79 ÑайлаÑ
.</li> </ul> </div> </details> <details class="changelog-section"> <summary class="changelog-summary"><span class="changelog-meta"><span class="changelog-meta__version">v9.111.0</span><span class="changelog-meta__date">21-03-2026</span></span><h2 id="v91110-21-03-2026--ÑвÑзÑ-не-ÑвÑÑÑÑ-ÑмнÑй-reconnect-индикаÑоÑ-ÑоединениÑ-и-аÑдиÑ-доÑÑÑпноÑÑи">СвÑÐ·Ñ Ð½Ðµ ÑвÑÑÑÑ: ÑмнÑй reconnect, индикаÑÐ¾Ñ ÑÐ¾ÐµÐ´Ð¸Ð½ÐµÐ½Ð¸Ñ Ð¸ аÑÐ´Ð¸Ñ Ð´Ð¾ÑÑÑпноÑÑи</h2></summary> <div class="changelog-section__body"> <p>ЧÑо пÑоиÑÑ
одиÑ, когда ÑеÑÐ²ÐµÑ Ð¿ÑÐ¾Ð¿Ð°Ð´Ð°ÐµÑ Ð½Ð° ÑекÑндÑ? РанÑÑе â DDP ÑÑÑÑал в ÑÑÐµÐ½Ñ ÐºÐ°Ð¶Ð´Ñе 16 ÑекÑнд, пока не ÑдавалÑÑ, бÑаÑÐ·ÐµÑ Ð·Ð°Ð»Ð¸Ð²Ð°Ð» конÑÐ¾Ð»Ñ Ð¾Ñибками, а полÑзоваÑÐµÐ»Ñ Ð½Ð¸Ñего не знал. ТепеÑÑ â плаÑÑоÑма оÑÑÑÑÐ¿Ð°ÐµÑ Ð¿Ð»Ð°Ð²Ð½Ð¾ (exponential backoff Ñ jitter), показÑÐ²Ð°ÐµÑ ÑоÑкÑ-индикаÑÐ¾Ñ Ñ ÐºÐ¾Ð»Ð¾ÐºÐ¾Ð»ÑÑика, а поÑле воÑÑÑÐ°Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ ÑеÑвеÑа пеÑеподклÑÑаеÑÑÑ Ñама. ÐаÑаллелÑно пÑоÑÑл Ñквозной аÑÐ´Ð¸Ñ Ð´Ð¾ÑÑÑпноÑÑи â 8 ARIA-иÑпÑавлений в ÑведомлениÑÑ
, 12 новÑÑ
E2E-ÑеÑÑов и подÑказка о Ñвайпе Ð´Ð»Ñ Ð½Ð¾Ð²ÑÑ
мобилÑнÑÑ
полÑзоваÑелей.</p> <ul> <li data-num="1251"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> <strong>Exponential backoff Ð´Ð»Ñ WebSocket</strong> â пÑи обÑÑве ÑÐ¾ÐµÐ´Ð¸Ð½ÐµÐ½Ð¸Ñ DDP пеÑеподклÑÑаеÑÑÑ Ñ Ð½Ð°ÑаÑÑаÑÑей паÑзой: 1Ñ â 2Ñ â 4Ñ â ⦠â 60Ñ, плÑÑ ÑлÑÑайнÑй ÑазбÑÐ¾Ñ Â±25%, ÑÑÐ¾Ð±Ñ ÑÑÑÑÑа клиенÑов не ÑдаÑила в ÑеÑÐ²ÐµÑ Ð¾Ð´Ð½Ð¾Ð²Ñеменно. 8 попÑÑок вмеÑÑо 5 â и ÐºÐ°Ð¶Ð´Ð°Ñ ÑиÑе пÑедÑдÑÑей.</li> <li data-num="1252"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> <strong>ÐндикаÑÐ¾Ñ ÑÐ¾ÐµÐ´Ð¸Ð½ÐµÐ½Ð¸Ñ Ñ ÐºÐ¾Ð»Ð¾ÐºÐ¾Ð»ÑÑика</strong> â маленÑÐºÐ°Ñ ÑоÑка ÑÑдом Ñ Ð¸ÐºÐ¾Ð½ÐºÐ¾Ð¹ Ñведомлений. ÐÑлÑÐ°Ñ Ð¿ÑлÑÑиÑÑÑÑÐ°Ñ â идÑÑ Ð¿ÐµÑеподклÑÑение, оÑÐ°Ð½Ð¶ÐµÐ²Ð°Ñ â ÑеÑÐ²ÐµÑ Ð½ÐµÐ´Ð¾ÑÑÑпен (recovery), кÑаÑÐ½Ð°Ñ â Ñоединение поÑеÑÑно. Ðогда вÑÑ Ñ
оÑоÑо â ÑоÑки неÑ. ÐгновеннÑй оÑклик ÑеÑез eventBus, fallback-пÑовеÑка каждÑе 10 ÑекÑнд.</li> <li data-num="1253"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> <strong>ÐвÑовоÑÑÑановление поÑле даÑнÑайма</strong> â еÑли вÑе 8 попÑÑок reconnect иÑÑеÑпанÑ, плаÑÑоÑма пеÑеÑ
Ð¾Ð´Ð¸Ñ Ð² recovery mode: пеÑиодиÑеÑкие health-check'и Ñ Ð½Ð°ÑаÑÑаÑÑим инÑеÑвалом (1 â 5 мин). СеÑÐ²ÐµÑ Ð²ÐµÑнÑлÑÑ â Ñоединение пеÑеиниÑиализиÑÑеÑÑÑ Ð°Ð²ÑомаÑиÑеÑки, без пеÑезагÑÑзки ÑÑÑаниÑÑ.</li> <li data-num="1254"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> <strong>ÐодÑказка о Ñвайпе на мобилÑнÑÑ
</strong> â пÑи пеÑвом визиÑе на ÑÑÑаниÑÑ Ñведомлений Ñ ÑелеÑона поÑвл
1ÑеÑÑÑ Ð°ÐºÐºÑÑаÑÐ½Ð°Ñ Ð¿Ð»Ð°Ñка: «СвайпниÑе влево Ð´Ð»Ñ ÑдалениÑ, впÑаво â Ð´Ð»Ñ Ð¿ÑоÑÑениÑ». Ðдин Ñаз â и болÑÑе не меÑаеÑ. РабоÑÐ°ÐµÑ Ð´Ð°Ð¶Ðµ в пÑиваÑном Ñежиме.</li> <li data-num="1255"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> <strong>12 E2E-ÑеÑÑов Ð´Ð»Ñ Ñведомлений</strong> â Playwright пÑовеÑÑÐµÑ Ð²ÐºÐ»Ð°Ð´ÐºÐ¸, mark as read, expand/collapse, клавиаÑÑÑнÑÑ Ð½Ð°Ð²Ð¸Ð³Ð°ÑÐ¸Ñ (j/k/x/ÑÑÑелки), ARIA-ÑазмеÑкÑ, «загÑÑзиÑÑ ÐµÑÑ» и Ñвайп на мобилÑном. ТеÑÑÑ Ð½Ðµ пÑÑÑÑÑ Ð¾Ñибки â еÑли ÑлеменÑа неÑ, ÑеÑÑ ÑеÑÑно пÑопÑÑкаеÑÑÑ, а не молÑа пÑоÑ
одиÑ.</li> <li data-num="1256"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <code>**aria-pressed</code> на кнопке ÑÑÐµÐ½Ð¸Ñ Ð±Ñл пеÑевÑÑнÑÑ** â в ÑаÑкÑÑÑом ÑпиÑке деÑалей нажаÑие «пÑоÑиÑано» ÑообÑало screen reader'Ñ Ð¾Ð±ÑаÑное. ÐÑпÑавлено: pressed=true, когда Ñведомление пÑоÑиÑано, false â когда неÑ. Ðа обоиÑ
ÑÑовнÑÑ
(каÑÑоÑка и деÑалÑ) аÑÑибÑÑ ÑепеÑÑ Ð²Ñегда пÑиÑÑÑÑÑвÑеÑ, а не ÑдалÑеÑÑÑ Ð¿Ñи одном из ÑоÑÑоÑний.</li> <li data-num="1257"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>Desktop-ÑÑÑÑÑик Ñведомлений не обÑÑвлÑлÑÑ screen reader'Ñ</strong> â Ñ Ð±ÐµÐ¹Ð´Ð¶Ð° в desktop-Ñапке оÑÑÑÑÑÑвовал <code>aria-label</code> (мобилÑÐ½Ð°Ñ Ð²ÐµÑÑÐ¸Ñ Ð¸Ð¼ÐµÐ»Ð° его Ñ Ñамого наÑала). ТепеÑÑ Ð¿Ð°ÑиÑÐµÑ Ð¿Ð¾Ð»Ð½Ñй.</li> <li data-num="1258"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>Anti-thrashing на неÑÑабилÑнÑÑ
ÑоединениÑÑ
</strong> â еÑли WebSocket подклÑÑилÑÑ Ð¸ ÑÑÑ Ð¶Ðµ Ñпал (менее 30 ÑекÑнд), backoff-ÑÑÑÑÑик не обнÑлÑеÑÑÑ, а ÑоÑ
ÑанÑÐµÑ Ð¿Ð¾Ð»Ð¾Ð²Ð¸Ð½Ñ Ð½Ð°Ð±Ñанного знаÑениÑ. ÐнаÑе Ñикл «подклÑÑилÑÑ â оÑвалилÑÑ â подклÑÑилÑÑ â оÑвалилÑÑ» пÑевÑаÑалÑÑ Ð±Ñ Ð² агÑеÑÑивнÑй Ñпам.</li> <li data-num="1259"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>LRU-кÑÑ Ñведомлений ÑеÑÑл ÑлоÑÑ</strong> â пÑи пеÑеклÑÑении пÑоÑиÑано/непÑоÑиÑано ÑÑаÑÐ°Ñ Ð·Ð°Ð¿Ð¸ÑÑ ÑдалÑлаÑÑ Ð¸Ð· кÑÑа, но оÑÑавалаÑÑ Ð² order-маÑÑиве. Со вÑеменем маÑÑив заполнÑлÑÑ Ð¿ÑизÑаками, и полезнÑе запиÑи вÑÑеÑнÑлиÑÑ Ð²Ñ
олоÑÑÑÑ. ТепеÑÑ Ð¾Ð±Ðµ ÑÑÑÑкÑÑÑÑ ÑиÑÑÑÑÑÑ ÑинÑ
Ñонно.</li> <li data-num="1260"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>Recovery не кÑÑÑилÑÑ Ð²ÐµÑно</strong> â поÑле иÑÑеÑÐ¿Ð°Ð½Ð¸Ñ reconnect health-check'и повÑоÑÑлиÑÑ Ð±ÐµÑконеÑно. Ðобавлен лимиÑ: 30 попÑÑок (~45 мин), поÑом ÑиÑина. Ðкладка не бÑÐ´ÐµÑ ÑиÑ
о гÑÑзÑÑ Ð±Ð°ÑаÑÐµÑ Ð½Ð¾ÑÑбÑка.</li> <li data-num="1261"><span class="changelog-tag changelog-tag--A11Y" data-tag-alias="A11Y">A11Y</span> <code>**aria-busy</code> и <code>role="status"</code> на дейÑÑвиÑÑ
Ñ ÑведомлениÑми** â кнопка «ÐÑпÑавиÑÑ» в inline-оÑвеÑе, индикаÑоÑÑ Ð¾Ð±ÑабоÑки пÑиглаÑений и запÑоÑов â вÑе ÑепеÑÑ Ð¾Ð±ÑÑвлÑÑÑ Ñвой ÑÑаÑÑÑ screen reader'Ñ. ÐÑпÑавка идÑÑ â полÑзоваÑÐµÐ»Ñ Ð·Ð½Ð°ÐµÑ.</li> <li data-num="1262"><span class="changelog-tag changelog-tag--A11Y" data-tag-alias="A11Y">
1A11Y</span> <strong>Focus-visible Ð´Ð»Ñ ÐºÐ»Ð°Ð²Ð¸Ð°ÑÑÑной навигаÑии</strong> â каÑÑоÑки Ñведомлений и ÑÑÑлки внÑÑÑи ниÑ
полÑÑили ÑинÑÑ ÑÐ°Ð¼ÐºÑ Ð¿Ñи ÑокÑÑе Ñ ÐºÐ»Ð°Ð²Ð¸Ð°ÑÑÑÑ. j/k/Tab â и вÑегда видно, где ÑÑ Ð½Ð°Ñ
одиÑÑÑÑ.</li> <li data-num="1263"><span class="changelog-tag changelog-tag--A11Y" data-tag-alias="A11Y">A11Y</span> <strong>ÐонÑÑаÑÑ ÐºÐ°ÑегоÑий WCAG AA</strong> â ÑвеÑа меÑок «РемаÑки», «ÐÑиглаÑениÑ», «ÐÑбликаÑии» ÑÑали Ñемнее (4.6â5.1:1 вмеÑÑо 3.5â4.0:1), font-weight поднÑÑ Ð´Ð¾ 600. ЧиÑаемо даже на 11px.</li> <li data-num="1264"><span class="changelog-tag changelog-tag--UX" data-tag-alias="UX">UX</span> <strong>ÐндикаÑÐ¾Ñ Ð¿Ð»Ð°Ð²Ð½Ð¾ ÑÑ
одиÑ</strong> â поÑле ÑÑпеÑного reconnect ÑоÑка не иÑÑÐµÐ·Ð°ÐµÑ Ð¼Ð³Ð½Ð¾Ð²ÐµÐ½Ð½Ð¾, а ÑÐ°ÐµÑ Ð·Ð° 2 ÑекÑндÑ. ÐенÑÑе мелÑканий, болÑÑе ÑвеÑенноÑÑи.</li> <li data-num="1265"><span class="changelog-tag changelog-tag--UX" data-tag-alias="UX">UX</span> <strong>ÐогоÑип не ÑÐ´Ð²Ð¸Ð³Ð°ÐµÑ ÐºÐ¾Ð½ÑенÑ</strong> â SVG-лого в Ñапке полÑÑил ÑвнÑе <code>width</code> и <code>height</code> â бÑаÑÐ·ÐµÑ ÑезеÑвиÑÑÐµÑ Ð¼ÐµÑÑо до загÑÑзки изобÑажениÑ. ÐÑоÑай, Cumulative Layout Shift.</li> <li data-num="1266"><span class="changelog-tag changelog-tag--PERF" data-tag-alias="PERF">PERF</span> <strong>ÐаÑÑÑойки Ñведомлений ÑоÑ
ÑанÑÑÑÑÑ Ð½Ð° ÑеÑвеÑ</strong> â в пÑоÑиле поÑвилаÑÑ Ð²ÐºÐ»Ð°Ð´ÐºÐ° «УведомлениÑ» Ñ ÑаблиÑей 7 Ñипов à 2 канала (ÑÐ°Ð¹Ñ / email). ÐалоÑки â «СоÑ
ÑаниÑÑ» â бÑкенд запоминаеÑ. Email-дайджеÑÑ ÑÐ²Ð°Ð¶Ð°ÐµÑ Ð½Ð°ÑÑÑойки â оÑклÑÑил «РемаÑки по email» â пиÑÑма не пÑиÑ
одÑÑ.</li> </ul> </div> </details> <details class="changelog-section"> <summary class="changelog-summary"><span class="changelog-meta"><span class="changelog-meta__version">v9.110.0</span><span class="changelog-meta__date">20-03-2026</span></span><h2 id="v91100-20-03-2026--звÑки-Ñведомлений-бейджи-и-ÑеÑновики-коÑоÑÑе-никогда-не-поÑеÑÑÑÑ-ваÑи-ÑекÑÑÑ">ÐвÑки Ñведомлений, бейджи и ÑеÑновики, коÑоÑÑе никогда не поÑеÑÑÑÑ Ð²Ð°Ñи ÑекÑÑÑ</h2></summary> <div class="changelog-section__body"> <p>ÐеÑед вÑÑ
одом кÑÑпного Ñелиза плаÑÑоÑма пÑоÑла ÑеÑез ÑÑи ÑаÑнда аÑдиÑа â ÑÑонÑенд, бÑкенд и Cloudflare Worker. ÐаждÑй Ñайл Ñ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñми пÑовеÑен на ÑегÑеÑÑии, ÑÑеÑки памÑÑи и edge-case'Ñ. РезÑлÑÑаÑ: ÑÐ²ÐµÐ´Ð¾Ð¼Ð»ÐµÐ½Ð¸Ñ ÑÑали оÑÑÑимее (звÑк, бейдж на вкладке), ÑедакÑÐ¾Ñ â надÑжнее (lock не заÑÑÑÑнеÑ, комменÑаÑии пеÑеживÑÑ Ñбой API), а Worker полÑÑил health check Ñ Ð¿Ð¸Ð½Ð³Ð¾Ð¼ бÑкенда и Prometheus-меÑÑики Ð´Ð»Ñ Grafana.</p> <ul> <li data-num="1236"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> <strong>ÐвÑк пÑи новом Ñведомлении</strong> â мÑгкий ÑинÑезиÑованнÑй Ñон (Web Audio API, без загÑÑзки Ñайлов) звÑÑиÑ, когда пÑиÑ
Ð¾Ð´Ð¸Ñ Ð½Ð¾Ð²Ð¾Ðµ Ñведомление или ÑообÑение. Ðо ÑмолÑÐ°Ð½Ð¸Ñ Ð²ÑклÑÑен â вклÑÑаеÑÑÑ ÐºÐ½Ð¾Ð¿ÐºÐ¾Ð¹-динамиком на ÑÑÑаниÑе Ñведомлений. Ðа Ñоновой вкладке молÑиÑ.</li> <li data-num="1237"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> <strong>Ðейдж непÑоÑиÑаннÑÑ
на вкладке</strong> â заголовок ÑÑÑаниÑÑ Ð¿Ð¾ÐºÐ°Ð·ÑÐ²Ð°ÐµÑ <code>(5) УведомлениÑ</code>, пока еÑÑÑ Ð½ÐµÐ¿ÑоÑиÑаннÑе. ÐеÑеклÑÑилÑÑ Ð½Ð° дÑÑгÑÑ Ð²ÐºÐ»Ð°Ð´ÐºÑ â видиÑÑ ÑиÑÑÑ Ð±ÐµÐ· возвÑаÑа. ÐÑи ÑÑ
оде Ñо ÑÑÑаниÑÑ Ð±ÐµÐ¹Ð´Ð¶ ÑбÑаÑÑваеÑÑÑ.</li> <li data-num="1238"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> <strong>Deep health check</strong>
1 â <code>GET /api/health?deep</code> пингÑÐµÑ Ð±Ñкенд и показÑÐ²Ð°ÐµÑ ÐµÐ³Ð¾ ÑÑаÑÑÑ Ð¸ latency. ÐÑли API Ð»ÐµÐ¶Ð¸Ñ â оÑÐ²ÐµÑ <code>degraded</code> за 5 ÑекÑнд вмеÑÑо ÑиÑинÑ. ÐбÑÑнÑй <code>/api/health</code> по-пÑÐµÐ¶Ð½ÐµÐ¼Ñ Ð¼Ð³Ð½Ð¾Ð²ÐµÐ½Ð½Ñй.</li> <li data-num="1239"><span class="changelog-tag changelog-tag--UX" data-tag-alias="UX">UX</span> <strong>ТÑлÑÐ¸Ð¿Ñ Ð½Ð° обÑезаннÑÑ
каÑÑоÑкаÑ
</strong> â навÑл на заголовок или ÑекÑÑ ÑÐ²ÐµÐ´Ð¾Ð¼Ð»ÐµÐ½Ð¸Ñ â видиÑÑ Ð¿Ð¾Ð»Ð½ÑÑ Ð²ÐµÑÑÐ¸Ñ Ð±ÐµÐ· клика. ÐÑобенно полезно Ð´Ð»Ñ Ð´Ð»Ð¸Ð½Ð½ÑÑ
названий ÑÑаÑей на ÑзкиÑ
ÑкÑанаÑ
.</li> <li data-num="1240"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>РедакÑÐ¾Ñ Ð½Ðµ заÑÑÑÑÐ½ÐµÑ Ð½Ð° загÑÑзке</strong> â <code>try/finally</code> гаÑанÑиÑÑÐµÑ ÑбÑÐ¾Ñ lock-Ñлага <code>_collabInitInProgress</code> пÑи лÑбом иÑклÑÑении. РанÑÑе Ñедкий Ñбой ÑеÑи мог навÑегда заблокиÑоваÑÑ Ð¿Ð¾Ð²ÑоÑнÑÑ Ð¸Ð½Ð¸ÑиализаÑÐ¸Ñ â ÑепеÑÑ Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾.</li> <li data-num="1241"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>ÐомменÑаÑии пеÑеживаÑÑ Ð¾Ð±ÑÑв API</strong> â еÑли загÑÑзка комменÑаÑиев или пÑавок в боковой панели Ñпала, ÑеÑез 5 ÑекÑнд пÑоиÑÑ
Ð¾Ð´Ð¸Ñ Ð°Ð²ÑомаÑиÑеÑÐºÐ°Ñ Ð¿Ð¾Ð²ÑоÑÐ½Ð°Ñ Ð¿Ð¾Ð¿ÑÑка. DDP-ÑлÑÑаÑели ÑепеÑÑ ÑиÑÑÑÑÑÑ Ð¿ÐµÑед пеÑеподпиÑкой â никакиÑ
дÑблей.</li> <li data-num="1242"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>ЧеÑновик не поÑеÑÑÐµÑ ÐºÐ¾Ð´ пÑи гонке запÑоÑов</strong> â <code>draftCode</code> ÑепеÑÑ Ð³ÐµÐ½ÐµÑиÑÑеÑÑÑ Ð°ÑомаÑно (<code>$exists: false</code> в ÑÑловии update). Ðва паÑаллелÑнÑÑ
запÑоÑа за одним ÑеÑновиком не пеÑезапиÑÑÑ ÐºÐ¾Ð´ дÑÑг дÑÑга. РпÑи ÑникалÑном индекÑе collision â ÑÑи попÑÑки Ñ Ð½Ð¾Ð²Ñм кодом.</li> <li data-num="1243"><span class="changelog-tag changelog-tag--PERF" data-tag-alias="PERF">PERF</span> <strong>Prometheus ÑÑал полноÑеннÑм</strong> â histogram buckets Ñ <code>le</code>-лейблами Ð´Ð»Ñ response time и API latency, status codes Ñ <code>{code="200"}</code>, handler counts Ñ <code>{handler="unified-lcp"}</code>. Grafana подклÑÑаеÑÑÑ Ð±ÐµÐ· адапÑеÑов.</li> <li data-num="1244"><span class="changelog-tag changelog-tag--PERF" data-tag-alias="PERF">PERF</span> <strong>ÐеÑÑики не ÑаздÑваÑÑÑÑ</strong> â Ñоп-пÑÑи ÑÑиÑаÑÑÑÑ ÑеÑез O(1) ÑÑÑÑÑик вмеÑÑо <code>Object.keys()</code> на каждÑй запÑоÑ. Handlers и handlerTimes огÑаниÑÐµÐ½Ñ 200 запиÑÑми. ÐамÑÑÑ Worker'а под конÑÑолем на лÑбом ÑÑаÑике.</li> <li data-num="1245"><span class="changelog-tag changelog-tag--PERF" data-tag-alias="PERF">PERF</span> <strong>Свайп на мобилÑнÑÑ
ÑÑал плавнее</strong> â <code>will-change: transform</code> на каÑÑоÑкаÑ
Ñведомлений подÑказÑÐ²Ð°ÐµÑ Ð±ÑаÑзеÑÑ Ð¸ÑполÑзоваÑÑ GPU. РазниÑа замеÑна на ÑÑÑÑойÑÑваÑ
Ñо ÑлабÑм CPU.</li> <li data-num="1246"><span class="changelog-tag changelog-tag--SEC" data-tag-alias="SEC">SEC</span> <strong>CSP диагноÑÑиÑÑÐµÑ Ð½Ð°ÑÑÑениÑ</strong> â <code>'report-sample'</code> веÑнÑлÑÑ Ð² <code>script-src</code>. Ð ÑепеÑÑ Ð¿ÐµÑвÑе 40 Ñимволов заблокиÑованного кода попадаÑÑ Ð² CSP-оÑÑÑÑ â пÑÐ¾Ð±Ð»ÐµÐ¼Ñ Ð²Ð¸Ð´Ð½Ð¾ в логаÑ
, не нÑжно гадаÑÑ.</li> <li data-num="1247"><span class="changelog-tag changelog-tag--A11Y" data-tag-alias="A11Y">
1A11Y</span> <code>**aria-pressed</code> на кнопке пÑоÑиÑано/непÑоÑиÑано** â screen reader обÑÑвлÑÐµÑ ÐºÐ½Ð¾Ð¿ÐºÑ ÐºÐ°Ðº toggle и ÐµÑ ÑекÑÑее ÑоÑÑоÑние. РанÑÑе пÑиÑ
одилоÑÑ Ð´Ð¾Ð³Ð°Ð´ÑваÑÑÑÑ.</li> <li data-num="1248"><span class="changelog-tag changelog-tag--DEVOPS" data-tag-alias="DEVOPS">DEVOPS</span> <strong>Ðеплой Worker не ÑÐ¾Ð½Ð¸Ñ Ð±Ð¸Ð»Ð´</strong> â оÑибка пÑбликаÑии на Cloudflare болÑÑе не обнÑлÑÐµÑ Netlify-ÑбоÑÐºÑ (exit 0). HTML и JS доедÑÑ Ð´Ð¾ полÑзоваÑелÑ, Worker можно задеплоиÑÑ Ð¿Ð¾Ð²ÑоÑно. ÐÐ»Ñ ÑÑÑогого Ñежима â <code>WORKER_DEPLOY_STRICT=1</code>.</li> <li data-num="1249"><span class="changelog-tag changelog-tag--DEVOPS" data-tag-alias="DEVOPS">DEVOPS</span> <strong>ÐеÑÑики ÑоÑ
ÑанÑÑÑÑÑ Ð¼ÐµÐ¶Ð´Ñ ÑеÑÑаÑÑами</strong> â пÑи обÑаÑении к dashboard Ñнимок меÑÑик пиÑеÑÑÑ Ð² Cloudflare KV (еÑли binding наÑÑÑоен). РеÑÑаÑÑ isolate болÑÑе не обнÑлÑÐµÑ Ð²ÑÑ ÑÑаÑиÑÑикÑ.</li> <li data-num="1250"><span class="changelog-tag changelog-tag--DX" data-tag-alias="DX">DX</span> <strong>ÐÑÑÑвÑй код вÑÑиÑен</strong> â ÑдалÑн <code>patch-bootstrap-sass.js</code> (не иÑполÑзовалÑÑ Ð¿Ð¾Ñле пеÑеÑ
ода на bootstrap-compat), ÑбÑан невалиднÑй <code>.gitignore</code> Ð´Ð»Ñ tracked Ñайлов, добавлен паÑÑеÑн Ð´Ð»Ñ Ð»Ð¾Ð³Ð¾Ð² Cloudflare.</li> </ul> </div> </details> <details class="changelog-section"> <summary class="changelog-summary"><span class="changelog-meta"><span class="changelog-meta__version">v9.109.0</span><span class="changelog-meta__date">20-03-2026</span></span><h2 id="v91090-20-03-2026--ÑÑÑаж-вÑÑÑÑки-playwright-ÑледиÑ-ÑÑобÑ-ниÑего-не-поеÑ
ало">СÑÑаж вÑÑÑÑки: Playwright ÑледиÑ, ÑÑÐ¾Ð±Ñ Ð½Ð¸Ñего не поеÑ
ало</h2></summary> <div class="changelog-section__body"> <p>ÐÑ ÑÑого не ÑвидиÑе â и в ÑÑом веÑÑ ÑмÑÑл. ТепеÑÑ ÐºÐ°Ð¶Ð´Ð¾Ðµ изменение в ÑÑилÑÑ
, ÑаблонаÑ
и компоненÑаÑ
плаÑÑоÑÐ¼Ñ Ð¿ÑоÑ
Ð¾Ð´Ð¸Ñ Ð²Ð¸Ð·ÑалÑнÑй конÑÑолÑ: ÑÐ¾Ð±Ð¾Ñ Ð¾ÑкÑÑÐ²Ð°ÐµÑ ÐºÐ»ÑÑевÑе ÑÑÑаниÑÑ ÐиÑкÑÑÑа в наÑÑоÑÑем бÑаÑзеÑе, Ð´ÐµÐ»Ð°ÐµÑ ÑкÑинÑоÑÑ Ð¸ ÑÑÐ°Ð²Ð½Ð¸Ð²Ð°ÐµÑ Ñ ÑÑалоном попикÑелÑно. ÐÑли кнопка Ñползла, ÑÑиÑÑ Ð¿Ð¾Ð¼ÐµÐ½ÑлÑÑ Ð¸Ð»Ð¸ подвал наеÑ
ал на конÑÐµÐ½Ñ â Ð¼Ñ Ñзнаем об ÑÑом до Ñого, как ÑзнаеÑе вÑ.</p> <ul> <li data-num="1232"><span class="changelog-tag changelog-tag--DX" data-tag-alias="DX">DX</span> <strong>Playwright ÑÐ½Ð¸Ð¼Ð°ÐµÑ ÑÑÑаниÑÑ Ð½Ð° desktop и mobile</strong> â главнаÑ, ленÑа, поиÑк, «РпÑоекÑе», Ñапка и подвал пÑовеÑÑÑÑÑÑ Ð² двÑÑ
viewport-аÑ
(1280Ã720 и Pixel 5) плÑÑ Ð´Ð¾Ð¿Ð¾Ð»Ð½Ð¸ÑелÑно на планÑеÑе (768Ã1024) и ÑиÑоком мониÑоÑе (1920Ã1080). ÐÑли вÑÑÑÑка ÑломаеÑÑÑ Ñ
оÑÑ Ð½Ð° одном â CI оÑÑÐ°Ð½Ð¾Ð²Ð¸Ñ Ð´ÐµÐ¿Ð»Ð¾Ð¹.</li> <li data-num="1233"><span class="changelog-tag changelog-tag--DX" data-tag-alias="DX">DX</span> <strong>CI Ð»Ð¾Ð²Ð¸Ñ ÑегÑеÑÑии до меÑжа</strong> â GitHub Actions запÑÑÐºÐ°ÐµÑ ÑеÑÑÑ Ð½Ð° каждÑй pull request, push в master и еженеделÑно по понеделÑникам. Diff-ÑкÑинÑоÑÑ Ð¸ HTML-оÑÑÑÑ ÑоÑ
ÑанÑÑÑÑÑ ÐºÐ°Ðº artifact â можно оÑкÑÑÑÑ Ð¸ ÑвидеÑÑ, ÑÑо именно изменилоÑÑ.</li> <li data-num="1234"><span class="changelog-tag changelog-tag--DX" data-tag-alias="DX">DX</span> <strong>ÐÑоÑÑ-плаÑÑоÑменнÑе baseline-Ñ</strong> â ÑкÑинÑоÑÑ Ñ
ÑанÑÑÑÑ Ð¾ÑделÑно Ð´Ð»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð¹ ÐС (Linux, Windows, macOS). ШÑиÑÑÑ ÑендеÑÑÑÑÑ Ð¿Ð¾-ÑÐ°Ð·Ð½Ð¾Ð¼Ñ Ð½Ð° ÑазнÑÑ
ÑиÑÑемаÑ
, и ÑанÑÑе ÑÑо бÑло Ð±Ñ Ð¸ÑÑоÑником ложнÑÑ
ÑÑабаÑÑваний â ÑепеÑÑ Ð½ÐµÑ.</li> <li data-num="1235"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>ÐинамиÑеÑкий конÑÐµÐ½Ñ Ð½Ðµ ÑÑмиÑ</strong> â даÑÑ, аваÑаÑки, ÑÑÑÑÑики, lazy-каÑÑинки и cookie-баннеÑÑ Ð°Ð²ÑомаÑиÑеÑки ÑкÑÑваÑÑÑÑ Ð¿ÐµÑед ÑкÑинÑоÑом. ÐнимаÑии и CSS-transitions замоÑаживаÑÑÑÑ. ТеÑÑÑ ÑÑабилÑÐ½Ñ â падаÑÑ ÑолÑко на ÑеалÑнÑе поломки.</li> </ul> </div> </details> <details class="changelog-section"> <summary class="changelog-summary"><span class="changelog-meta"><span class="changelog-meta__version">v9.108.0</span><span class="changelog-meta__date">20-03-2026</span></span><h2 id="v91080-20-03-2026--каÑÑинки-веÑнÑлиÑÑ-ÑкÑÑÑеннÑй-ÑемонÑ-thumbor">ÐаÑÑинки веÑнÑлиÑÑ: ÑкÑÑÑеннÑй ÑÐµÐ¼Ð¾Ð½Ñ Thumbor</h2></summary> <div class="changelog-section__body"> <p>ÐÑе изобÑÐ°Ð¶ÐµÐ½Ð¸Ñ Ð½Ð° ÑайÑе пÑопали Ñазом â обложки ÑÑаÑей, аваÑаÑки, иллÑÑÑÑаÑии. СеÑÐ²ÐµÑ ÐºÐ°ÑÑинок (Thumbor) оÑдавал 504, а пÑи более глÑбоком копании â 500. ÐÑиÑина окаÐ
1·Ð°Ð»Ð°ÑÑ Ð´Ð²Ð¾Ð¹Ð½Ð¾Ð¹: ÑломалÑÑ Ð¼ÐµÑ
анизм загÑÑзки из S3 и одновÑеменно ÑлиÑком ÑÑÑогий Ð»Ð¸Ð¼Ð¸Ñ Ð½Ð° ÑÐ°Ð·Ð¼ÐµÑ Ð¸Ð·Ð¾Ð±Ñажений не давал обÑабоÑаÑÑ Ð¾Ð±Ð»Ð¾Ð¶ÐºÐ¸. ÐÑоблема ÑÑÑÑанена, обÑаз ÑоÑ
ÑанÑн, оÑÐºÐ°Ñ Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶ÐµÐ½.</p> <ul> <li data-num="1229"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>S3 Ñнова оÑвеÑаеÑ</strong> â библиоÑека <code>tornado_botocore</code> обÑаÑалаÑÑ Ðº ÑдалÑÐ½Ð½Ð¾Ð¼Ñ Ð°ÑÑибÑÑÑ <code>Endpoint.verify</code> в botocore, из-за Ñего каждÑй запÑÐ¾Ñ Ðº Ñ
ÑанилиÑÑ Ð¿Ð°Ð´Ð°Ð» Ñ <code>AttributeError</code>. ÐаÑÑ Ð² Ð¾Ð´Ð½Ñ ÑÑÑÐ¾ÐºÑ (<code>getattr</code> Ñ fallback) веÑнÑл доÑÑÑп ко вÑÐµÐ¼Ñ Ð±Ð°ÐºÐµÑÑ â а знаÑиÑ, ко вÑем каÑÑинкам плаÑÑоÑмÑ.</li> <li data-num="1230"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>ÐолÑÑие обложки болÑÑе не оÑвеÑгаÑÑÑÑ</strong> â Ð»Ð¸Ð¼Ð¸Ñ Ð¿Ð¸ÐºÑелей в Thumbor (<code>MAX_PIXELS</code>) бÑл 30 млн, а Ñвежие обложки â до 37,5 млн (7500Ã5000). PIL ÑÑиÑал ÑÑо «decompression bomb» и молÑа оÑбÑаÑÑвал Ñайл. ÐÐ¸Ð¼Ð¸Ñ Ð¿Ð¾Ð´Ð½ÑÑ Ð´Ð¾ 75 млн â Ñ
ваÑÐ¸Ñ Ð´Ð°Ð¶Ðµ Ð´Ð»Ñ ÑоÑобанковÑкиÑ
иÑÑ
одников.</li> <li data-num="1231"><span class="changelog-tag changelog-tag--DEVOPS" data-tag-alias="DEVOPS">DEVOPS</span> <strong>ÐаÑÑи пеÑеживÑÑ Ð»Ñбой ÑеÑÑаÑÑ</strong> â оба иÑпÑÐ°Ð²Ð»ÐµÐ½Ð¸Ñ ÑоÑ
ÑÐ°Ð½ÐµÐ½Ñ ÑеÑез <code>docker commit</code> в обÑаз <code>discours/thumbor:patched</code>, а ÑезеÑÐ²Ð½Ð°Ñ ÐºÐ¾Ð¿Ð¸Ñ Ð¾Ð±Ñаза Ð»ÐµÐ¶Ð¸Ñ Ð½Ð° ÑеÑвеÑе. Ðи <code>docker-compose down</code>, ни пеÑезагÑÑзка ÑеÑвеÑа не оÑкаÑÑÑ ÑикÑ.</li> </ul> </div> </details> <details class="changelog-section"> <summary class="changelog-summary"><span class="changelog-meta"><span class="changelog-meta__version">v9.107.1</span><span class="changelog-meta__date">20-03-2026</span></span><h2 id="v91071-20-03-2026--живÑе-ÑведомлениÑ-ddp-подпиÑки-мгновеннÑй-оÑклик-и-real-time-ÑведомлениÑ">ÐивÑе ÑведомлениÑ: DDP-подпиÑки, мгновеннÑй оÑклик и real-time ÑведомлениÑ</h2></summary> <div class="changelog-section__body"> <p>WebSocket подклÑÑен â и Ð¼Ñ ÑÑÐ°Ð·Ñ Ð¿Ð¾Ñли далÑÑе. ТепеÑÑ ÐºÐ¾Ð¼Ð¼ÐµÐ½ÑаÑии в ÑедакÑоÑе, ÑообÑÐµÐ½Ð¸Ñ Ð² ÑаÑе и ÑÐ²ÐµÐ´Ð¾Ð¼Ð»ÐµÐ½Ð¸Ñ Ð»ÐµÑÑÑ ÑеÑез DDP в ÑеалÑном вÑемени â без polling, без пеÑезагÑÑзки. СеÑÐ²ÐµÑ Ð¿ÑÑÐ¸Ñ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð¼Ð³Ð½Ð¾Ð²ÐµÐ½Ð½Ð¾, а пÑи ÑазÑÑве ÑÐ¾ÐµÐ´Ð¸Ð½ÐµÐ½Ð¸Ñ Ð²ÑÑ Ð²Ð¾ÑÑÑанавливаеÑÑÑ Ð°Ð²ÑомаÑиÑеÑки. ÐонÑÐ¾Ð»Ñ Ð½Ð°ÐºÐ¾Ð½ÐµÑ-Ñо ÑиÑÑаÑ.</p> <ul> <li data-num="1219"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> <strong>ÐомменÑаÑии в ÑедакÑоÑе обновлÑÑÑÑÑ Ð¼Ð³Ð½Ð¾Ð²ÐµÐ½Ð½Ð¾</strong> â DDP-подпиÑка на InlineComments пÑÑÐ¸Ñ Ð½Ð¾Ð²Ñе комменÑаÑии и ÑемаÑки ÑоавÑоÑов за 200 мÑ. ÐолÑÑе не нÑжно обновлÑÑÑ ÑÑÑаниÑÑ, ÑÑÐ¾Ð±Ñ ÑвидеÑÑ ÑÑжой комменÑаÑий.</li> <li data-num="1220"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> <strong>Ðовое ÑообÑение â toast в лÑбом меÑÑе плаÑÑоÑмÑ</strong> â пÑи поÑÑÑплении ÑообÑÐµÐ½Ð¸Ñ ÑеÑез DDP поÑвлÑеÑÑÑ Ð´ÐµÐ»Ð¸ÐºÐ°Ñное Ñведомление «Ðовое ÑообÑение». Ðа ÑÑÑаниÑе ÑаÑа и Ñведомлений toast не показÑваеÑÑÑ â Ñам даннÑе и Ñак на видÑ.</li> <li data-num="1221"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> <strong>СообÑÐµÐ½Ð¸Ñ Ð² ÑаÑе ÑеÑез DDP</strong>
1 â <code>subscribeDDPConversation(id)</code> подпиÑÑÐ²Ð°ÐµÑ Ð½Ð° конкÑеÑнÑй диалог Ñ Ð¿Ð°Ð³Ð¸Ð½Ð°Ñией. ÐоÑово Ð´Ð»Ñ Ð¸Ð½ÑегÑаÑии в конÑÑÐ¾Ð»Ð»ÐµÑ ÑаÑа â ÑообÑÐµÐ½Ð¸Ñ ÑобеÑедника бÑдÑÑ Ð¿Ð¾ÑвлÑÑÑÑÑ Ð±ÐµÐ· refresh.</li> <li data-num="1222"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>Соединение воÑÑÑанавливаеÑÑÑ Ñамо</strong> â пÑи ÑеконнекÑе WebSocket вÑе DDP-подпиÑки (messages, inlineComments) авÑомаÑиÑеÑки пеÑеÑоздаÑÑÑÑ. СÑаÑÑе ÑлÑÑаÑели гаÑанÑиÑованно ÑиÑÑÑÑÑÑ Ð¿ÐµÑед пеÑеподпиÑкой â никакиÑ
дÑблей-пÑизÑаков. РанÑÑе поÑле ÑазÑÑва даннÑе пеÑеÑÑавали пÑиÑ
одиÑÑ Ð´Ð¾ пеÑезагÑÑзки.</li> <li data-num="1223"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>HocusPocus не ÑÐ¿Ð°Ð¼Ð¸Ñ ÐºÐ¾Ð½ÑолÑ</strong> â ÑдалÑн неÑÑÑеÑÑвÑÑÑий паÑамеÑÑ <code>quiet: true</code>, добавлен capture-phase error handler, коÑоÑÑй пеÑеÑ
ваÑÑÐ²Ð°ÐµÑ Ð±ÑаÑзеÑнÑе оÑибки WebSocket. ÐÑи недоÑÑÑпном collab-ÑеÑвеÑе в конÑоли â ÑиÑина вмеÑÑо беÑконеÑнÑÑ
кÑаÑнÑÑ
ÑÑÑок.</li> <li data-num="1224"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>Свайп Ñведомлений не залипаеÑ</strong> â <code>releasePointerCapture</code> в <code>onPointerCancel</code> оÑÐ²Ð¾Ð±Ð¾Ð¶Ð´Ð°ÐµÑ touch поÑле ÑиÑÑемнÑÑ
жеÑÑов (pull-to-refresh, пеÑеклÑÑение пÑиложений). ÐолÑÑе никакиÑ
«замоÑоженнÑÑ
» каÑÑоÑек.</li> <li data-num="1225"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>ÐÑÑ Ñведомлений не ÑаздÑваеÑÑÑ</strong> â пÑи пеÑеклÑÑении пÑоÑиÑано/непÑоÑиÑано orphaned запиÑÑ Ñ Ð¿ÑоÑивоположнÑм клÑÑом ÑдалÑеÑÑÑ Ð¸Ð· LRU-кÑÑа. ÐамÑÑÑ Ð¿Ð¾Ð´ конÑÑолем даже пÑи ÑÑÑÑÑаÑ
Ñведомлений.</li> <li data-num="1226"><span class="changelog-tag changelog-tag--PERF" data-tag-alias="PERF">PERF</span> <strong>Ð¤Ð¾Ð½Ð¾Ð²Ð°Ñ Ð²ÐºÐ»Ð°Ð´ÐºÐ° не гÑÑÐ·Ð¸Ñ ÑеÑÑ</strong> â пÑи ÑкÑÑÑой вкладке DDP-ÑобÑÑÐ¸Ñ Ð¾Ñ InlineComments копÑÑÑÑ Ð¸ вÑполнÑÑÑÑÑ Ð¾Ð´Ð½Ð¸Ð¼ refresh ÑеÑез 5 ÑекÑнд вмеÑÑо 200 мÑ. ÐенÑÑе запÑоÑов, менÑÑе CPU â ноÑÑбÑк не гÑееÑÑÑ.</li> <li data-num="1227"><span class="changelog-tag changelog-tag--PERF" data-tag-alias="PERF">PERF</span> <strong>ÐÑибки DNS, оÑказов и ÑаймаÑÑов подавлÑÑÑÑÑ</strong> â asteroid.js ÑепеÑÑ Ð¿ÐµÑеÑ
ваÑÑÐ²Ð°ÐµÑ <code>ERR_CONNECTION_REFUSED</code> и <code>ERR_CONNECTION_TIMED_OUT</code> помимо DNS. ЧиÑÑÐ°Ñ ÐºÐ¾Ð½ÑÐ¾Ð»Ñ Ð½Ð° localhost без запÑÑенного бÑкенда.</li> <li data-num="1228"><span class="changelog-tag changelog-tag--SEC" data-tag-alias="SEC">SEC</span> <strong>Regex-валидаÑÐ¸Ñ conversationId</strong> â DDP-пÑбликаÑÐ¸Ñ messages пÑÐ¸Ð½Ð¸Ð¼Ð°ÐµÑ ÑолÑко alphanumeric ID (1â64 Ñимвола). СпеÑÑимволÑ, опеÑаÑоÑÑ Ð¸ null-байÑÑ Ð¾ÑÑекаÑÑÑÑ Ð´Ð¾ запÑоÑа в MongoDB.</li> </ul> </div> </details> <details class="changelog-section"> <summary class="changelog-summary"><span class="changelog-meta"><span class="changelog-meta__version">v9.107.0</span><span class="changelog-meta__date">20-03-2026</span></span><h2 id="v91070-20-03-2026--websocket-без-компÑомиÑÑов-наÑÑоÑÑий-real-time-вмеÑÑо-ÑиÑ
ого-fallbackа">WebSocket без компÑомиÑÑов: наÑÑоÑÑий real-time вмеÑÑо ÑиÑ
ого fallback'а</h2></summary> <div class="changelog-section__body"> <p>ÐÑе ÑведомлениÑ, комменÑаÑии и коллабоÑаÑивнÑй ÑедакÑÐ¾Ñ ÑабоÑаÑÑ ÑеÑез WebSocket â мгновенно, без задеÑжек. Ðо окаÐ
1·Ð°Ð»Ð¾ÑÑ, ÑÑо на пÑоде WebSocket молÑа дегÑадиÑовал в long-polling: HTTP/2 на nginx обÑезал заголовки Upgrade (RFC 7540), бÑаÑÐ·ÐµÑ Ð½Ðµ мог ÑÑÑановиÑÑ Ñоединение и заваливал конÑÐ¾Ð»Ñ Ð¾Ñибками. ÐолÑзоваÑÐµÐ»Ñ ÑÑого не видел â пÑоÑÑо ÑÐ²ÐµÐ´Ð¾Ð¼Ð»ÐµÐ½Ð¸Ñ Ð¿ÑиÑ
одили ÑÑÑÑ Ð¿Ð¾Ð·Ð¶Ðµ, а ÑовмеÑÑное ÑедакÑиÑование подÑоÑмаживало. ТепеÑÑ Ð²ÑÑ ÑабоÑÐ°ÐµÑ ÐºÐ°Ðº задÑмано.</p> <ul> <li data-num="1214"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>WebSocket наконеÑ-Ñо WebSocket</strong> â коÑÐ½ÐµÐ²Ð°Ñ Ð¿ÑиÑина найдена и ÑÑÑÑанена: HTTP/2 ÑÑиÑÐ°ÐµÑ Ð·Ð°Ð³Ð¾Ð»Ð¾Ð²ÐºÐ¸ <code>Upgrade</code> и <code>Connection</code> запÑеÑÑннÑми (hop-by-hop), поÑÑÐ¾Ð¼Ñ nginx иÑ
оÑбÑаÑÑвал. Meteor полÑÑал обÑÑнÑй HTTP-запÑÐ¾Ñ Ð¸ пеÑеклÑÑалÑÑ Ð½Ð° SockJS â медленнÑй, ненадÑжнÑй полинг. ТепеÑÑ HTTP/2 оÑклÑÑÑн Ð´Ð»Ñ API ÑеÑез ÑÑаÑнÑÑ Ð¿ÐµÑеменнÑÑ nginxâproxy <code>ENABLE_HTTP2=false</code>. Соединение ÑÑÑанавливаеÑÑÑ Ð·Ð° один handshake, даннÑе леÑÑÑ Ð±ÐµÐ· задеÑжек.</li> <li data-num="1215"><span class="changelog-tag changelog-tag--UX" data-tag-alias="UX">UX</span> <strong>ÐонÑÐ¾Ð»Ñ Ð±Ð¾Ð»ÑÑе не кÑиÑиÑ</strong> â ÑанÑÑе пÑи пÑоблемаÑ
Ñ ÑеÑвеÑом в DevTools поÑвлÑлоÑÑ Ð¼Ð¾Ñе оÑибок <code>WebSocket connection failed</code>. ТепеÑÑ Ð¿ÐµÑед Ñозданием WebSocket вÑполнÑеÑÑÑ HTTP healthâcheck: еÑли ÑеÑÐ²ÐµÑ Ð½ÐµÐ´Ð¾ÑÑÑпен â Ñоединение пÑоÑÑо не ÑоздаÑÑÑÑ. ÐÐ¾Ð»Ñ Ð¾Ñибок, Ð½Ð¾Ð»Ñ ÑÑма.</li> <li data-num="1216"><span class="changelog-tag changelog-tag--PERF" data-tag-alias="PERF">PERF</span> <strong>5 попÑÑок вмеÑÑо беÑконеÑноÑÑи</strong> â DDP-ÐºÐ»Ð¸ÐµÐ½Ñ ÑанÑÑе пеÑеподклÑÑалÑÑ Ð²ÐµÑно, генеÑиÑÑÑ Ð¾ÑÐ¸Ð±ÐºÑ ÐºÐ°Ð¶Ð´Ñе 16 ÑекÑнд. ТепеÑÑ â макÑимÑм 5 попÑÑок (~40 Ñек), поÑом ÑиÑина. ЧеÑез минÑÑÑ healthâcheck пÑовеÑÑÐµÑ ÑеÑвеÑ, и пÑи воÑÑÑановлении DDP пеÑеиниÑиализиÑÑеÑÑÑ Ð°Ð²ÑомаÑиÑеÑки.</li> <li data-num="1217"><span class="changelog-tag changelog-tag--DEVOPS" data-tag-alias="DEVOPS">DEVOPS</span> <strong>Zero-downtime пÑи деплое</strong> â Ð´Ð¾Ð±Ð°Ð²Ð»ÐµÐ½Ñ Ð´Ð¸ÑекÑÐ¸Ð²Ñ <code>proxy_next_upstream</code> в nginx: еÑли новÑй конÑÐµÐ¹Ð½ÐµÑ Ð¿Ñи деплое еÑÑ Ð½Ðµ гоÑов, запÑÐ¾Ñ Ð°Ð²ÑомаÑиÑеÑки ÑÑ
Ð¾Ð´Ð¸Ñ Ð½Ð° ÑÑаÑÑй. ÐолÑзоваÑÐµÐ»Ñ Ð½Ðµ ÑÐ²Ð¸Ð´Ð¸Ñ Ð½Ð¸ 502, ни 503 â даже в Ð¼Ð¾Ð¼ÐµÐ½Ñ Ð¾Ð±Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ.</li> <li data-num="1218"><span class="changelog-tag changelog-tag--DEVOPS" data-tag-alias="DEVOPS">DEVOPS</span> <strong>ÐонÑиг, коÑоÑÑй не ÑеÑÑеÑÑÑ</strong> â WebSocket-наÑÑÑойки nginx (заголовки Upgrade, 24-ÑаÑовÑе ÑаймаÑÑÑ, blue-green retry) ÑепеÑÑ Ñ
ÑанÑÑÑÑ Ð² ÑепозиÑоÑии и авÑомаÑиÑеÑки монÑиÑÑÑÑÑÑ Ð¿Ñи каждом деплое. Ð ÑÑÐ½Ð°Ñ Ð¿Ñавка на ÑеÑвеÑе болÑÑе не нÑжна â и не пÑопадÑÑ Ð¿Ñи пеÑеÑоздании конÑейнеÑа.</li> </ul> </div> </details> <details class="changelog-section"> <summary class="changelog-summary"><span class="changelog-meta"><span class="changelog-meta__version">v9.106.0</span><span class="changelog-meta__date">20-03-2026</span></span><h2 id="v91060-20-03-2026--ÑемаÑки-Ñ-обÑаÑной-ÑвÑзÑÑ-оÑвеÑÑ-авÑоÑов-ÑÑаÑÑÑÑ-и-ÑмнаÑ-ÑилÑÑÑаÑиÑ-Ñведомлений">РемаÑки Ñ Ð¾Ð±ÑаÑной ÑвÑзÑÑ: оÑвеÑÑ Ð°Ð²ÑоÑов, ÑÑаÑÑÑÑ Ð¸ ÑÐ¼Ð½Ð°Ñ ÑилÑÑÑаÑÐ¸Ñ Ñведомлений</h2></summary> <div class="changelog-section__body"> <p>РемаÑки пеÑеÑÑали бÑÑÑ Ð¾Ð´Ð½Ð¾ÑÑоÑонними. ТепеÑÑ Ð¼Ð¾Ð¶Ð½Ð¾ оÑвеÑаÑÑ Ð½Ð° пÑÐµÐ´Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ Ð¿ÑÑмо на ÑÑÑаниÑе ÑÑаÑÑи â без ÑедакÑоÑа, мгновенно. Ð ÑиÑаÑели видÑÑ ÑÑаÑÑÑ ÑвоиÑ
пÑедложений: «ÐÑинÑÑо» или «ÐакÑÑÑо». Ð£Ð²ÐµÐ´Ð¾Ð¼Ð»ÐµÐ½Ð¸Ñ Ð¾ ÑемаÑкаÑ
и пÑавкаÑ
ÑазделилиÑÑ Ð½Ð° вÑ
одÑÑие и иÑÑ
одÑÑие , оÑиенÑиÑоваÑÑÑÑ Ð² ÑекÑÑаÑ
в ÑабоÑе ÑÑало пÑоÑе.</p> <ul> <li data-num="1205"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> <strong>ÐÑÐ²ÐµÑ Ð°Ð²ÑоÑа пÑÑмо под ÑемаÑкой</strong>
1 â ÑоÑма «ÐÑвеÑиÑÑ» поÑвлÑеÑÑÑ Ñ ÐºÐ°Ð¶Ð´Ð¾Ð¹ ÑемаÑки Ð´Ð»Ñ Ð°Ð²ÑоÑа маÑеÑиала. Ctrl+Enter â оÑпÑавиÑÑ, Esc â оÑмениÑÑ. ÐÑÐ²ÐµÑ Ð¿Ð¾ÑвлÑеÑÑÑ Ð¼Ð³Ð½Ð¾Ð²ÐµÐ½Ð½Ð¾ (опÑимиÑÑиÑнÑй UI), а еÑли ÑеÑÐ²ÐµÑ Ð¾ÑÐºÐ°Ð¶ÐµÑ â ÑекÑÑ Ð²ÐµÑнÑÑÑÑ Ð² ÑоÑмÑ. ÐиÑего не поÑеÑÑеÑÑÑ.</li> <li data-num="1206"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> <strong>СÑаÑÑÑ ÑемаÑки виден ÑиÑаÑелÑ</strong> â бейдж «â ÐÑинÑÑо» (зелÑнÑй) или «ÐакÑÑÑо» (ÑеÑÑй) Ñ ÑемаÑки, коÑоÑÑÑ Ð°Ð²ÑÐ¾Ñ ÑаÑÑмоÑÑел. ÐолÑÑе не нÑжно гадаÑÑ, доÑло ли пÑедложение.</li> <li data-num="1207"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> <strong>ÐодÑÐ°Ð±Ñ Â«Ð Ð¼Ð¾Ð¸Ð¼ маÑеÑиалам» и «Ðои ÑемаÑки / Ðои пÑавки»</strong> â вкладки Ñведомлений «РемаÑки» и «ÐÑавки» ÑÐ°Ð·Ð´ÐµÐ»ÐµÐ½Ñ Ð½Ð° два ÑÑовнÑ: «Рмоим» â кÑо оÑÑавил ÑемаÑÐºÑ Ð½Ð° ваÑей ÑÑаÑÑе, «Ðои» â оÑвеÑили ли на ваÑÑ Ðº ÑÑжой. Ðейдж Ñо ÑÑÑÑÑиком на каждом подÑабе.</li> <li data-num="1208"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> <strong>«ÐÑкÑÑÑÑ Ð² ÑедакÑоÑе» Ñ ÐºÐ°Ð¶Ð´Ð¾Ð¹ ÑемаÑки</strong> â Ð´Ð»Ñ Ð°Ð²ÑоÑов поÑвилаÑÑ ÑÑÑлка Ñ Ð¸ÐºÐ¾Ð½ÐºÐ¾Ð¹ пеÑа, оÑкÑÑваÑÑÐ°Ñ ÑедакÑÐ¾Ñ ÑÑÐ°Ð·Ñ Ñ Ð¿ÑокÑÑÑкой к нÑÐ¶Ð½Ð¾Ð¼Ñ Ð¼ÐµÑÑÑ Ð² ÑекÑÑе. Удобно, когда ÑемаÑок много и нÑжно ÑазобÑаÑÑ Ð¸Ñ
по оÑеÑеди.</li> <li data-num="1209"><span class="changelog-tag changelog-tag--UX" data-tag-alias="UX">UX</span> <strong>РемаÑка во вÑÑпоÑÑе â Ñведомление пÑоÑиÑано авÑомаÑиÑеÑки</strong> â пеÑеÑ
одиÑÑ Ð¿Ð¾ ÑÑÑлке из ÑведомлениÑ, ÑемаÑка поÑвлÑеÑÑÑ Ð½Ð° ÑкÑане â ÑÑаÑÑÑ Ð¼ÐµÐ½ÑеÑÑÑ Ñам ÑеÑез IntersectionObserver. ÐикакиÑ
лиÑниÑ
Ñапов.</li> <li data-num="1210"><span class="changelog-tag changelog-tag--UX" data-tag-alias="UX">UX</span> <strong>ÐÑÑÑой подÑаб «Ðои ÑемаÑки» â Ñ ÐºÐ¾Ð½ÑекÑÑом</strong> â еÑли оÑвеÑов на ваÑи ÑемаÑки еÑÑ Ð½ÐµÑ, показÑваеÑÑÑ Ð¾ÑмÑÑленное «ÐÑвеÑов на ваÑи ÑемаÑки пока неÑ», а не обÑее «ÐÐµÑ Ñведомлений». Ðконка Ñоже менÑеÑÑÑ Ð¿Ð¾Ð´ конÑекÑÑ.</li> <li data-num="1211"><span class="changelog-tag changelog-tag--PERF" data-tag-alias="PERF">PERF</span> <strong>ÐÑвеÑÑ Ðº ÑемаÑкам гÑÑзÑÑÑÑ Ð»ÐµÐ½Ð¸Ð²Ð¾</strong> â дополниÑелÑнÑй API-запÑÐ¾Ñ Ð·Ð° replies оÑпÑавлÑеÑÑÑ ÑолÑко пÑи пеÑвом оÑкÑÑÑии вкладки «РемаÑки», а не пÑи каждой загÑÑзке ÑÑÑаниÑÑ ÑÑаÑÑи. ÐенÑÑе ÑÑаÑика, бÑÑÑÑее оÑкÑÑÑие.</li> <li data-num="1212"><span class="changelog-tag changelog-tag--PERF" data-tag-alias="PERF">PERF</span> <strong>ФилÑÑÑаÑÐ¸Ñ Ñведомлений: один O(N) пÑоÑ
од</strong> â подÑÐ°Ð±Ñ Ð¸ ÑÑÑÑÑики вÑÑиÑлÑÑÑÑÑ Ð² едином Ñикле Ñ O(1)-поиÑком по пÑедвÑÑиÑÐ»ÐµÐ½Ð½Ð¾Ð¼Ñ lookup вмеÑÑо вложеннÑÑ
обÑ
одов. ÐÑзÑвÑивоÑÑÑ ÑÑÑаниÑÑ Ñведомлений не завиÑÐ¸Ñ Ð¾Ñ Ð¾Ð±ÑÑма даннÑÑ
.</li> <li data-num="1213"><span class="changelog-tag changelog-tag--A11Y" data-tag-alias="A11Y">A11Y</span> <strong>Aria-ÑазмеÑка, role="form", aria-live</strong> â ÑоÑма оÑвеÑа, ÑекÑÐ¸Ñ ÑемаÑок и блок ÑÑаÑÑÑа коÑÑекÑно опиÑÐ°Ð½Ñ Ð´Ð»Ñ screen reader; бейдж ÑÑаÑÑÑа обÑÑвлÑеÑÑÑ Ð¿Ñи изменении. ÐнимаÑии ÑважаÑÑ prefers-reduced-motion.</li> </ul> </div> </details> <details class="changelog-section"> <summary class="changelog-summary"><span class="changelog-meta"><span class="changelog-meta__version">v9.105.0</span><span class="changelog-meta__date">20-03-2026</span></span><h2 id="v91050-20-03-2026--ÑеÑновиками-можно-делиÑÑÑÑ-Ñ-пеÑвÑÑ
-Ñлов--Ñ-оÑкÑÑÑиÑ-ÑедакÑоÑа">ЧеÑновиками можно делиÑÑÑÑ Ñ Ð¿ÐµÑвÑÑ
Ñлов â Ñ Ð¾ÑкÑÑÑÐ¸Ñ ÑедакÑоÑа</h2></summary> <div class="changelog-section__body"> <p>ЧеÑновик ÑепеÑÑ ÑождаеÑÑÑ Ð³Ð¾ÑовÑм к жизни. РанÑÑе, ÑÑÐ¾Ð±Ñ Ð¿ÑиглаÑиÑÑ ÑоавÑоÑа, нÑжно бÑло ÑнаÑала вÑÑÑнÑÑ ÑоÑ
ÑаниÑÑ Ð¼Ð°ÑеÑиал. ТепеÑÑ Ð´Ð¾ÑÑаÑоÑно оÑкÑÑÑÑ ÑедакÑÐ¾Ñ â ÑеÑновик ÑоздаÑÑÑÑ Ð½Ð° ÑеÑвеÑе авÑомаÑиÑеÑки, коллабоÑаÑивнÑй Ñежим вклÑÑаеÑÑÑ Ð¼Ð³Ð½Ð¾Ð²ÐµÐ½Ð½Ð¾, ÑÑÑÐ»ÐºÑ Ð¼Ð¾Ð¶Ð½Ð¾ оÑпÑавиÑÑ ÐµÑÑ Ð´Ð¾ пеÑвой напиÑанной ÑÑÑоÑки. ÐаÑаллелÑно ÑедакÑÐ¾Ñ Ð½Ð°ÑÑилÑÑ Ð¿Ð¾ÐºÐ°Ð·ÑваÑÑ ÑÑаÑÑÑ Ð°Ð²ÑоÑоÑ
ÑанениÑ, URL ÑÑал Ñмнее, а orphan-ÑеÑновики болÑÑе не заÑоÑÑÑÑ Ð±Ð°Ð·Ñ.</p> <ul> <li data-num="1194"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> <strong>ÐÐ³Ð½Ð¾Ð²ÐµÐ½Ð½Ð°Ñ ÐºÐ¾Ð»Ð»Ð°Ð±Ð¾ÑаÑÐ¸Ñ Ð±ÐµÐ· ÑÑÑного ÑоÑ
ÑанениÑ</strong> â пÑи оÑкÑÑÑии ÑедакÑоÑа Ð´Ð»Ñ Ð½Ð¾Ð²Ð¾Ð³Ð¾ маÑеÑиала ÑеÑновик ÑоздаÑÑÑÑ Ð½Ð° ÑеÑвеÑе за Ð¾Ð´Ð½Ñ ÑеÑевÑÑ Ñ
одкÑ, HocusPocus подклÑÑаеÑÑÑ ÑÑазÑ. Ðнопка «ÐÑиглаÑиÑÑ» видна Ñ Ð¿ÐµÑвой ÑекÑÐ½Ð´Ñ â можно зваÑÑ ÑоавÑоÑов, не дожидаÑÑÑ Ð½Ð¸ заголовка, ни каÑегоÑии.</li> <li data-num="1195"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> <strong>ÐндикаÑÐ¾Ñ Ð°Ð²ÑоÑоÑ
ÑÐ°Ð½ÐµÐ½Ð¸Ñ Ð² Ñапке ÑедакÑоÑа</strong> â ÑÑдом Ñ Ð±ÐµÐ¹Ð´Ð¶ÐµÐ¼ «ЧеÑновик» ÑепеÑÑ Ð¶Ð¸Ð²Ð¾Ð¹ ÑÑаÑÑÑ: «СоÑ
Ñанениеâ¦Â» Ñо ÑпиннеÑом, зелÑÐ½Ð°Ñ Ð³Ð°Ð»Ð¾Ñка «СоÑ
Ñанено» (ÑÐ°ÐµÑ ÑеÑез 3 ÑекÑндÑ), оÑÐ°Ð½Ð¶ÐµÐ²Ð°Ñ ÑоÑка «Ðе ÑоÑ
Ñанено». ÐвÑÐ¾Ñ Ð²Ð¿ÐµÑвÑе видиÑ, ÑÑо его ÑекÑÑ Ð´Ð¾ÑÑл до ÑеÑвеÑа â как в Google Docs.</li> <li data-num="1196"><span class="changelog-tag changelog-tag--UX" data-tag-alias="UX">UX</span> <strong>URL обновлÑеÑÑÑ Ð¿Ñи вÑбоÑе каÑегоÑии</strong> â пока ÑÑбÑика не вÑбÑана, адÑÐµÑ Ð²ÑглÑÐ´Ð¸Ñ ÐºÐ°Ðº <code>/edit/articles/draft/slug</code>. ÐÑбÑал «Ðедиа» â URL мгновенно пÑевÑаÑаеÑÑÑ Ð² <code>/edit/articles/media/slug</code>. СÑÑлка, коÑоÑой делиÑÑÑÑ, вÑегда акÑÑалÑна.</li> <li data-num="1197"><span class="changelog-tag changelog-tag--UX" data-tag-alias="UX">UX</span> <strong>ÐаÑегоÑÐ¸Ñ Ð½Ðµ обÑзаÑелÑна Ð´Ð»Ñ ÑеÑновика</strong> â ÑоÑ
ÑанÑй заголовок, Ñеги и Ð¾Ð±Ð»Ð¾Ð¶ÐºÑ Ð±ÐµÐ· вÑбоÑа ÑÑбÑики. ÐаÑегоÑÐ¸Ñ Ð¿Ð¾ÑÑебÑеÑÑÑ ÑолÑко пÑи пÑбликаÑии â когда авÑÐ¾Ñ Ñже ÑоÑно знаеÑ, кÑда оÑноÑиÑÑÑ Ð¼Ð°ÑеÑиал.</li> <li data-num="1198"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>Ðнопка «СоÑ
ÑаниÑÑ ÑеÑновик» болÑÑе не молÑиÑ</strong> â ÑанÑÑе поÑле auto-draft кнопка вÑглÑдела ÑабоÑей, но нажаÑие ниÑего не делало. ТепеÑÑ Ð¿Ñи клике меÑаданнÑе ÑоÑ
ÑанÑÑÑÑÑ ÑеÑез REST PUT, даже еÑли collab-versioning еÑÑ Ð½Ðµ иниÑиализиÑован.</li> <li data-num="1199"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>ÐÐ²Ð¾Ð¹Ð½Ð°Ñ Ð¸Ð½Ð¸ÑиализаÑÐ¸Ñ ÑедакÑоÑа невозможна</strong> â lock-меÑ
анизм <code>_collabInitInProgress</code> обÑÑнÑÑ Ð² <code>try/finally</code> â Tiptap ÑоздаÑÑÑÑ Ñовно один Ñаз, а lock гаÑанÑиÑованно ÑбÑаÑÑваеÑÑÑ Ð´Ð°Ð¶Ðµ пÑи ÑеÑевом Ñбое. ÐикакиÑ
завиÑÑиÑ
загÑÑзок.</li> <li data-num="1200"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>ÐавигаÑÐ¸Ñ Ð¿ÑоÑÑ Ð½Ðµ Ð»Ð¾Ð¼Ð°ÐµÑ ÑедакÑоÑ</strong> â еÑли полÑзоваÑÐµÐ»Ñ ÑÑ
Ð¾Ð´Ð¸Ñ Ñо ÑÑÑаниÑÑ, пока auto-draft еÑÑ Ð² полÑÑе, promise-chain коÑÑекÑно оÑÑанавливаеÑÑÑ ÑеÑез <code>$scope.$$destroyed</code>. ÐикакиÑ
оÑибок в конÑоли, никакиÑ
зомби-ÑедакÑоÑов.</li> <li data-num="1201"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>localStorage не подÑовÑÐ²Ð°ÐµÑ Ð¿ÑизÑаков</strong> â поÑле ÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ auto-draft кÑÑ Ð¿ÑедÑдÑÑей ÑеÑÑии оÑиÑаеÑÑÑ. ÐÑи пеÑезагÑÑзке полÑзоваÑÐµÐ»Ñ Ð²Ð¸Ð´Ð¸Ñ Ñвежий ÑеÑновик, а не оÑÑаÑки вÑеÑаÑней ÑÑаÑÑи.</li> <li data-num="1202"><span class="changelog-tag changelog-tag--PERF" data-tag-alias="PERF">PERF</span> <strong>
1Orphan-ÑеÑновики ÑдалÑÑÑÑÑ Ð°Ð²ÑомаÑиÑеÑки</strong> â кÑон-задаÑа каждÑе 6 ÑаÑов наÑ
Ð¾Ð´Ð¸Ñ Ð¿ÑÑÑÑе ÑеÑновики Ñ Ð·Ð°Ð³Ð¾Ð»Ð¾Ð²ÐºÐ¾Ð¼ «Ðез названиÑ» ÑÑаÑÑе 7 дней и ÑдалÑÐµÑ Ð¸Ñ
. ÐолÑзоваÑÐµÐ»Ñ Ð¾ÑкÑÑл ÑедакÑÐ¾Ñ Ð¸ ÑÑÑл â мÑÑÐ¾Ñ ÑбеÑÑÑÑÑ Ñам.</li> <li data-num="1203"><span class="changelog-tag changelog-tag--PERF" data-tag-alias="PERF">PERF</span> <strong>ÐÐ½Ð´ÐµÐºÑ Ð´Ð»Ñ Ð´ÐµÐ´ÑпликаÑии ÑеÑновиков</strong> â partial index <code>autoDraft_dedup</code> покÑÑÐ²Ð°ÐµÑ Ð·Ð°Ð¿ÑÐ¾Ñ Ð¿Ð¾Ð¸Ñка ÑÑÑеÑÑвÑÑÑего пÑÑÑого ÑеÑновика. РабоÑÐ°ÐµÑ ÑолÑко Ð´Ð»Ñ draft-докÑменÑов â запиÑÑ Ð¾Ð¿ÑбликованнÑÑ
ÑÑаÑей не замедлÑеÑÑÑ.</li> <li data-num="1204"><span class="changelog-tag changelog-tag--DX" data-tag-alias="DX">DX</span> <strong>16 unit-ÑеÑÑов Ð´Ð»Ñ auto-draft</strong> â <code>persistCollabMetadata</code> Ñ ÐºÐ°ÑегоÑией и без, <code>saveDraft</code> Ð´Ð»Ñ ÑÑÑÑ
ÑÑенаÑиев, <code>saveDraftBtnClick</code> Ñ ÑÑÐµÐ¼Ñ Ð²ÐµÑками, пÑбликаÑиÑ. ÐÑе 820 ÑеÑÑов пÑоекÑа пÑоÑ
одÑÑ, 0 ÑегÑеÑÑий.</li> </ul> </div> </details> <details class="changelog-section"> <summary class="changelog-summary"><span class="changelog-meta"><span class="changelog-meta__version">v9.104.0</span><span class="changelog-meta__date">20-03-2026</span></span><h2 id="v91040-20-03-2026--пÑоÑиÑано-или-неÑ-ÑпÑавление-ÑÑаÑÑÑом-Ñведомлений">ÐÑоÑиÑано. Ðли неÑ: ÑпÑавление ÑÑаÑÑÑом Ñведомлений</h2></summary> <div class="changelog-section__body"> <p>РанÑÑе единÑÑвеннÑй ÑпоÑоб помеÑиÑÑ Ñведомление пÑоÑиÑаннÑм â пеÑейÑи по ÑÑÑлке. ÐепÑоÑиÑаннÑм â никак. ТепеÑÑ Ñ ÐºÐ°Ð¶Ð´Ð¾Ð¹ каÑÑоÑки и Ñ ÐºÐ°Ð¶Ð´Ð¾Ð³Ð¾ оÑделÑного ÑÐ²ÐµÐ´Ð¾Ð¼Ð»ÐµÐ½Ð¸Ñ Ð² ÑаÑкÑÑÑом ÑпиÑке поÑвилаÑÑ ÐºÐ½Ð¾Ð¿ÐºÐ°-конвеÑÑик: нажал â пÑоÑиÑано, нажал еÑÑ Ñаз â Ñнова непÑоÑиÑано. РабоÑÐ°ÐµÑ Ð¼Ð³Ð½Ð¾Ð²ÐµÐ½Ð½Ð¾, оÑибки не замалÑиваÑÑÑÑ, а Ñвайп на мобилÑнÑÑ
ÑÑал двÑÑÑоÑонним.</p> <ul> <li data-num="1181"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> <strong>Ðнопка «пÑоÑиÑано / непÑоÑиÑано» на каждой каÑÑоÑке</strong> â конвеÑÑик Ñ Ð¿Ñавого кÑÐ°Ñ ÐºÐ°ÑÑоÑки. ÐÑкÑÑÑÑй â непÑоÑиÑано, закÑÑÑÑй â пÑоÑиÑано. Ðдин клик пеÑеклÑÑÐ°ÐµÑ ÑоÑÑоÑние, не ÑÐ²Ð¾Ð´Ñ Ñо ÑÑÑаниÑÑ. Ðа кнопке â мини-бейдж Ñ ÑиÑлом непÑоÑиÑаннÑÑ
(еÑли болÑÑе одного).</li> <li data-num="1182"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> <strong>ÐндивидÑалÑнÑй toggle в ÑаÑкÑÑÑом ÑпиÑке</strong> â ÑазвеÑнÑл каÑÑоÑÐºÑ Â«ÐоказаÑÑ Ð²Ñе» â ÐºÐ°Ð¶Ð´Ð°Ñ ÑемаÑка, комменÑаÑий или пÑавка Ð¸Ð¼ÐµÐµÑ Ñвой конвеÑÑик. Ðожно помеÑиÑÑ Ð¿ÑоÑиÑаннÑм одно конкÑеÑное Ñведомление, не ÑÑÐ¾Ð³Ð°Ñ Ð¾ÑÑалÑнÑе.</li> <li data-num="1183"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> <strong>Свайп впÑаво ÑепеÑÑ ÑабоÑÐ°ÐµÑ Ð² обе ÑÑоÑонÑ</strong> â на мобилÑнÑÑ
Ñвайп впÑаво ÑанÑÑе ÑолÑко помеÑал пÑоÑиÑаннÑм. ТепеÑÑ â пеÑеклÑÑаеÑ: пÑоÑиÑанное ÑÑановиÑÑÑ Ð½ÐµÐ¿ÑоÑиÑаннÑм и наобоÑоÑ. ÐндикаÑÐ¾Ñ Ð¿Ð¾Ð´ каÑÑоÑкой Ñоже динамиÑеÑкий.</li> <li data-num="1184"><span class="changelog-tag changelog-tag--UX" data-tag-alias="UX">UX</span> <strong>Ðнопка вÑегда видна</strong> â не пÑÑÑеÑÑÑ Ð·Ð° hover, как «УдалиÑÑ» и «ÐÑпиÑаÑÑÑÑ». ÐолÑпÑозÑаÑÐ½Ð°Ñ Ð² покое, ÑÑÐºÐ°Ñ Ð¿Ñи наведении, ÑинÑÑ Ð´Ð»Ñ Ð½ÐµÐ¿ÑоÑиÑаннÑÑ
. ÐÑо главное дейÑÑвие â оно должно бÑÑÑ Ð½Ð° видÑ.</li> <li data-num="1185"><span class="changelog-tag changelog-tag--UX" data-tag-alias="UX">UX</span> <strong>
1Pulse-оÑклик пÑи нажаÑии</strong> â кнопка кÑаÑко ÑвелиÑиваеÑÑÑ Ð¿Ñи клике. ÐÐ³Ð½Ð¾Ð²ÐµÐ½Ð½Ð°Ñ Ð²Ð¸Ð·ÑалÑÐ½Ð°Ñ Ð¾Ð±ÑаÑÐ½Ð°Ñ ÑвÑзÑ, пока ÑеÑÐ²ÐµÑ Ð´ÑмаеÑ.</li> <li data-num="1186"><span class="changelog-tag changelog-tag--UX" data-tag-alias="UX">UX</span> <strong>Ðаголовок не дÑблиÑÑеÑÑÑ</strong> â еÑли ÑекÑÑ ÑÐ²ÐµÐ´Ð¾Ð¼Ð»ÐµÐ½Ð¸Ñ Ñже ÑодеÑÐ¶Ð¸Ñ Ð½Ð°Ð·Ð²Ð°Ð½Ð¸Ðµ маÑеÑиала (как Ñ Ð¿Ñавок: «пÑедложил 6 пÑавок в маÑеÑиале ЧеÑновик»), оÑделÑнÑй заголовок ÑвеÑÑ
Ñ Ð¿ÑÑÑеÑÑÑ. Ðазвание в Ñеле â жиÑнÑм Ñо ÑÑÑлкой на пÑбликаÑиÑ. ЧиÑе, компакÑнее, без повÑоÑов.</li> <li data-num="1187"><span class="changelog-tag changelog-tag--UX" data-tag-alias="UX">UX</span> <strong>ÐоÑÑдок кнопок по ÑаÑÑоÑе иÑполÑзованиÑ</strong> â конвеÑÑик (оÑновное дейÑÑвие) ближе вÑего к кÑаÑ, Ñдаление и оÑпиÑка â глÑбже. Ð Ñка и кÑÑÑÐ¾Ñ ÑÑнÑÑÑÑ Ðº нÑÐ¶Ð½Ð¾Ð¼Ñ Ð¿ÐµÑвÑм.</li> <li data-num="1188"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>Ðконка конвеÑÑика бÑла невидима</strong> â <code>fa-envelope-open</code> оÑÑÑÑÑÑвовал в подмножеÑÑве ÑÑиÑÑов. ÐаменÑн на <code>fa-envelope-open-text</code>, коÑоÑÑй и вÑÑазиÑелÑнее, и еÑÑÑ Ð² набоÑе.</li> <li data-num="1189"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>ТÑлÑÐ¸Ð¿Ñ Ð½Ðµ обÑезаÑÑÑÑ</strong> â подÑказки вÑеÑ
кнопок каÑÑоÑки вÑÑавниваÑÑÑÑ Ð¿Ð¾ пÑÐ°Ð²Ð¾Ð¼Ñ ÐºÑÐ°Ñ Ð¸ не вÑлезаÑÑ Ð·Ð° гÑаниÑÑ.</li> <li data-num="1190"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>ÐобилÑнÑй ÑекÑÑ Ð½Ðµ Ð·Ð°Ð»ÐµÐ·Ð°ÐµÑ Ð¿Ð¾Ð´ кнопки</strong> â padding-right каÑÑоÑек и деÑалей пеÑеÑÑиÑан под ÑÑи кнопки Ñ 44px touch-target.</li> <li data-num="1191"><span class="changelog-tag changelog-tag--A11Y" data-tag-alias="A11Y">A11Y</span> <strong>ÐÑе анимаÑии ÑважаÑÑ <code>prefers-reduced-motion</code></strong> â pulse-оÑклик и transition кнопок оÑклÑÑаÑÑÑÑ Ð¿Ñи наÑÑÑойке «УменÑÑиÑÑ Ð°Ð½Ð¸Ð¼Ð°ÑиÑ». Ðи один новÑй ÑÐ»ÐµÐ¼ÐµÐ½Ñ Ð½Ðµ наÑÑÑÐ°ÐµÑ ÑÑÐ¾Ñ ÐºÐ¾Ð½ÑÑакÑ. <code>aria-pressed</code> на toggle-кнопке â screen reader озвÑÑÐ¸Ð²Ð°ÐµÑ ÑоÑÑоÑние.</li> <li data-num="1192"><span class="changelog-tag changelog-tag--UX" data-tag-alias="UX">UX</span> <strong>ТÑлÑип на длиннÑÑ
заголовкаÑ
</strong> â пÑи наведении на обÑезаннÑй заголовок или ÑекÑÑ ÐºÐ°ÑÑоÑки виден полнÑй ÑекÑÑ. Удобно на ÑзкиÑ
ÑкÑанаÑ
, где название не помеÑаеÑÑÑ.</li> <li data-num="1193"><span class="changelog-tag changelog-tag--PERF" data-tag-alias="PERF">PERF</span> <strong>Optimistic UI не мигаеÑ</strong> â Ð½Ð°Ð±Ð¾Ñ <code>_pendingReadIds</code> пÑедоÑвÑаÑÐ°ÐµÑ Ð²Ð¸Ð·ÑалÑнÑй оÑкаÑ, еÑли Asteroid Ð¾Ð±Ð½Ð¾Ð²Ð¸Ñ Ð´Ð°Ð½Ð½Ñе бÑÑÑÑее, Ñем ÑеÑÐ²ÐµÑ Ð¿Ð¾Ð´ÑвеÑÐ´Ð¸Ñ Ð¾Ð¿ÐµÑаÑиÑ. Ðажал â гоÑово, без дÑÑганий.</li> </ul> </div> </details> <details class="changelog-section"> <summary class="changelog-summary"><span class="changelog-meta"><span class="changelog-meta__version">v9.103.0</span><span class="changelog-meta__date">20-03-2026</span></span><h2 id="v91030-20-03-2026--ÑоÑмÑ-вÑ
ода-надÑжнÑе-ÑведомлениÑ-и-мгновеннÑе-ÑеÑновики">ФоÑÐ¼Ñ Ð²Ñ
ода, надÑжнÑе ÑÐ²ÐµÐ´Ð¾Ð¼Ð»ÐµÐ½Ð¸Ñ Ð¸ мгновеннÑе ÑеÑновики</h2></summary> <div class="changelog-section__body"> <p>Ðве болÑÑие ÑÐµÐ¼Ñ Ð² одном Ñелизе. ÐвÑоÑизаÑÐ¸Ñ Ð½Ð° ÐиÑкÑÑÑе пеÑеÑÑала бÑÑÑ Ð»Ð¾ÑеÑеей «нажми и жди» â ÑоÑÐ¼Ñ Ð²Ñ
ода полÑÑили inline-валидаÑиÑ, показ паÑÐ¾Ð»Ñ Ð¸ авÑоÑокÑÑ. Ð ÑиÑÑема Ñведомлений пÑоÑла ÑеÑез капиÑаÐ
1»ÑнÑй ÑемонÑ: ÑдалÑннÑе ÑÐ²ÐµÐ´Ð¾Ð¼Ð»ÐµÐ½Ð¸Ñ ÑепеÑÑ Ð¼Ð¾Ð¶Ð½Ð¾ веÑнÑÑÑ, опеÑаÑии ÑÑали бÑÑÑÑее в ÑазÑ, а Ñоздание ÑеÑновика Ð´Ð»Ñ ÑоавÑоÑÑÑва â безопаÑнее и Ñмнее.</p> <ul> <li data-num="1159"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> <strong>Inline-валидаÑÐ¸Ñ Ð²Ð¾ вÑеÑ
ÑоÑмаÑ
авÑоÑизаÑии</strong> â оÑибки поÑвлÑÑÑÑÑ Ð¿Ð¾Ð´ конкÑеÑнÑм полем ÑÑÐ°Ð·Ñ Ð¿Ñи ÑÑ
оде ÑокÑÑа, а иÑÑезаÑÑ Ð¼Ð³Ð½Ð¾Ð²ÐµÐ½Ð½Ð¾ пÑи иÑпÑавлении. ÐолÑÑе не нÑжно жаÑÑ Â«ÐойÑи», ÑÑÐ¾Ð±Ñ ÑзнаÑÑ, ÑÑо забÑл ввеÑÑи паÑолÑ.</li> <li data-num="1160"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> <strong>ÐоказаÑÑ Ð¿Ð°ÑолÑ</strong> â иконка-глаз в полÑÑ
паÑÐ¾Ð»Ñ Ð½Ð° вÑеÑ
ÑеÑÑÑÑÑ
ÑоÑмаÑ
: вÑ
од, ÑегиÑÑÑаÑиÑ, воÑÑÑановление, paywall-логин. Ðдно нажаÑие â видно, ÑÑо набÑал; повÑоÑное â ÑкÑÑÑо обÑаÑно.</li> <li data-num="1161"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> <strong>ÐндикаÑÐ¾Ñ ÑложноÑÑи паÑÐ¾Ð»Ñ Ð¿Ñи Ñмене</strong> â ÑÑÑаниÑа «ÐовÑй паÑолÑ» полÑÑила ÑÐ¾Ñ Ð¶Ðµ индикаÑÐ¾Ñ (ÑлабÑй / ÑÑедний / ÑилÑнÑй), ÑÑо и ÑегиÑÑÑаÑиÑ. ÐвÑÐ¾Ñ Ð²Ð¸Ð´Ð¸Ñ Ð½Ð°Ð´ÑжноÑÑÑ Ð½Ð¾Ð²Ð¾Ð³Ð¾ паÑÐ¾Ð»Ñ Ð´Ð¾ ÑоÑ
ÑанениÑ, а не поÑле оÑказа ÑеÑвеÑа.</li> <li data-num="1162"><span class="changelog-tag changelog-tag--UX" data-tag-alias="UX">UX</span> <strong>ÐвÑоÑокÑÑ Ð¿Ñи оÑкÑÑÑии и пеÑеклÑÑении</strong> â модалка ÑÑÐ°Ð²Ð¸Ñ ÐºÑÑÑÐ¾Ñ Ð² пеÑвое поле пÑи оÑкÑÑÑии, пеÑеклÑÑении вÑ
ода â ÑегиÑÑÑаÑии, пеÑеÑ
оде в «ÐабÑли паÑолÑ?» и обÑаÑно. ÐлавиаÑÑÑа â ÑÑÐ°Ð·Ñ Ð² деле.</li> <li data-num="1163"><span class="changelog-tag changelog-tag--UX" data-tag-alias="UX">UX</span> <strong>«Email Ñже заÑегиÑÑÑиÑован â войдиÑе»</strong> â пÑи попÑÑке заÑегиÑÑÑиÑоваÑÑÑÑ Ñ Ñже ÑÑÑеÑÑвÑÑÑим адÑеÑом вмеÑÑо ÑÑÑ
ого ÑекÑÑа поÑвлÑеÑÑÑ ÐºÐ»Ð¸ÐºÐ°Ð±ÐµÐ»ÑÐ½Ð°Ñ ÑÑÑлка «войдиÑе», коÑоÑÐ°Ñ Ð¿ÐµÑеклÑÑÐ°ÐµÑ Ð½Ð° ÑоÑÐ¼Ñ Ð²Ñ
ода и подÑÑавлÑÐµÑ email. ÐÐ¾Ð»Ñ Ð»Ð¸ÑниÑ
дейÑÑвий.</li> <li data-num="1164"><span class="changelog-tag changelog-tag--UX" data-tag-alias="UX">UX</span> <strong>Email авÑомаÑиÑеÑки ÑÑимиÑÑÑ</strong> â пÑÐ¾Ð±ÐµÐ»Ñ Ð² наÑале и конÑе адÑеÑа ÑбиÑаÑÑÑÑ Ð¿Ñи ÑÑ
оде ÑокÑÑа и пÑи оÑпÑавке. СкопиÑовал адÑÐµÑ Ñ Ð¿Ñобелом из пиÑÑма â ÑоÑма ÑазбеÑÑÑÑÑ Ñама.</li> <li data-num="1165"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>ÐаÑÐ¾Ð»Ñ Ð¾ÑиÑаеÑÑÑ Ð¿Ñи закÑÑÑии модалки</strong> â ÑанÑÑе набÑаннÑй паÑÐ¾Ð»Ñ Ð¾ÑÑавалÑÑ Ð² поле до ÑледÑÑÑего оÑкÑÑÑиÑ. ТепеÑÑ â ÑбÑÐ¾Ñ Ð²Ð¼ÐµÑÑе Ñ Ð¾ÑÑалÑнÑми даннÑми.</li> <li data-num="1166"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>ÐÑибки не залипаÑÑ Ð¼ÐµÐ¶Ð´Ñ ÑоÑмами</strong> â пеÑеклÑÑение «ÐÑ
од â ÐабÑли паÑолÑ? â Ðазад» полноÑÑÑÑ ÑбÑаÑÑÐ²Ð°ÐµÑ Ð¾Ñибки, touched-ÑоÑÑоÑниÑ, видимоÑÑÑ Ð¿Ð°ÑолÑ. ÐикакиÑ
пÑизÑаков из пÑедÑдÑÑей ÑоÑмÑ.</li> <li data-num="1167"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>УбÑана задеÑжка ввода на ÑÑÑаниÑе ÑÐ¼ÐµÐ½Ñ Ð¿Ð°ÑолÑ</strong> â ÑÑаÑÑй <code>ng-model-options</code> Ñ debounce 1 Ñек и обновлением ÑолÑко на blur заменÑн на ÑÑандаÑÑное поведение. ÐаÑÐ¾Ð»Ñ ÑепеÑÑ ÑеагиÑÑÐµÑ Ð½Ð° каждÑй Ñимвол.</li> <li data-num="1168"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>Ðнопка «СоÑ
ÑаниÑÑ» блокиÑÑеÑÑÑ Ð¿Ñи оÑибкаÑ
</strong> â на ÑÑÑаниÑе ÑÐ¼ÐµÐ½Ñ Ð¿Ð°ÑÐ¾Ð»Ñ ÐºÐ½Ð¾Ð¿ÐºÐ° неакÑивна, пока еÑÑÑ Ð¾Ñибки валидаÑии (коÑоÑкий паÑолÑ, неÑовпадение). РанÑÑе можно бÑло Ð
1½Ð°Ð¶Ð°ÑÑ Ð¸ полÑÑиÑÑ ÑеÑвеÑнÑÑ Ð¾ÑибкÑ.</li> <li data-num="1169"><span class="changelog-tag changelog-tag--SEC" data-tag-alias="SEC">SEC</span> <strong>maxlength на вÑеÑ
полÑÑ
</strong> â email (254), паÑÐ¾Ð»Ñ (128) огÑаниÑÐµÐ½Ñ Ð²Ð¾ вÑеÑ
ÑоÑмаÑ
, вклÑÑÐ°Ñ paywall-логин и ÑÑÑаниÑÑ ÑÐ¼ÐµÐ½Ñ Ð¿Ð°ÑолÑ. ÐÑовеÑка ÑложноÑÑи паÑÐ¾Ð»Ñ Ð´Ð¾Ð¿Ð¾Ð»Ð½Ð¸ÑелÑно огÑаниÑена 256 Ñимволами на ÑÑовне JS â заÑиÑа Ð¾Ñ exotic-input аÑак.</li> <li data-num="1170"><span class="changelog-tag changelog-tag--A11Y" data-tag-alias="A11Y">A11Y</span> <strong>aria-invalid, aria-describedby, role="alert"</strong> â каждое поле Ñ Ð²Ð°Ð»Ð¸Ð´Ð°Ñией ÑвÑзано Ñ Ð¾Ñибкой ÑеманÑиÑеÑки. Screen reader озвÑÑÐ¸Ð²Ð°ÐµÑ Ð¾ÑÐ¸Ð±ÐºÑ ÑÑÐ°Ð·Ñ Ð¿Ñи поÑвлении, не дожидаÑÑÑ submit.</li> <li data-num="1171"><span class="changelog-tag changelog-tag--REFACTOR" data-tag-alias="REFACTOR">REFACTOR</span> <strong>ÐонÑÑанÑÑ Ð²Ð°Ð»Ð¸Ð´Ð°Ñии вÑнеÑÐµÐ½Ñ Ð² наÑало конÑÑоллеÑа</strong> â <code>EMAIL_REGEX</code> и <code>MIN_PASSWORD_LENGTH</code> обÑÑÐ²Ð»ÐµÐ½Ñ Ð´Ð¾ пеÑвого иÑполÑзованиÑ, а не в конÑе Ñайла. Ðод ÑÑал безопаÑнее Ð´Ð»Ñ ÑеÑакÑоÑинга.</li> <li data-num="1172"><span class="changelog-tag changelog-tag--REFACTOR" data-tag-alias="REFACTOR">REFACTOR</span> <strong>Inline-логика в ÑаблонаÑ
заменена меÑодами</strong> â кнопки «ÐабÑли паÑолÑ?» и «Я Ð·Ð½Ð°Ñ Ð¿Ð°ÑолÑ!» ÑепеÑÑ Ð²ÑзÑваÑÑ <code>showForgotPassword()</code> / <code>hideForgotPassword()</code> вмеÑÑо мÑÑаÑии <code>$ctrl.passwordForgot</code> пÑÑмо в HTML. СбÑÐ¾Ñ ÑоÑÑоÑÐ½Ð¸Ñ â в одном меÑÑе.</li> <li data-num="1173"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> <strong>«ÐÑмениÑÑ Ñдаление» Ñведомлений â по-наÑÑоÑÑемÑ</strong> â Ñвайп-Ñдаление ÑепеÑÑ Ð¸ÑполÑзÑÐµÑ soft delete: ÑÐ²ÐµÐ´Ð¾Ð¼Ð»ÐµÐ½Ð¸Ñ Ð½Ðµ ÑÑиÑаÑÑÑÑ, а пÑÑÑÑÑÑÑ Ð½Ð° 30 дней. Ðажал «ÐÑмениÑÑ» в ÑоÑÑе â они возвÑаÑаÑÑÑÑ. РанÑÑе undo ÑабоÑал ÑолÑко до ÑаймаÑÑа в 5 ÑекÑнд, а поÑом даннÑе ÑеÑÑлиÑÑ Ð½Ð°Ð²Ñегда.</li> <li data-num="1174"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> <strong>ЧеÑновик Ð´Ð»Ñ ÑоавÑоÑÑÑва ÑоздаÑÑÑÑ Ð¼Ð³Ð½Ð¾Ð²ÐµÐ½Ð½Ð¾</strong> â новÑй API auto-draft наÑ
Ð¾Ð´Ð¸Ñ Ð¸Ð»Ð¸ ÑоздаÑÑ Ð¿ÑÑÑой ÑеÑновик нÑжного Ñипа за один запÑоÑ. ÐÑли Ñ Ð°Ð²ÑоÑа Ñже еÑÑÑ Ð½ÐµÐ·Ð°Ð¿Ð¾Ð»Ð½ÐµÐ½Ð½Ñй ÑеÑновик â иÑполÑзÑеÑÑÑ Ð¾Ð½, а не плодиÑÑÑ Ð´ÑбликаÑ. ÐÐ¸Ð¼Ð¸Ñ â 50 ÑеÑновиков на авÑоÑа, ÑÑÐ¾Ð±Ñ Ð±Ð°Ð·Ð° не заÑоÑÑлаÑÑ.</li> <li data-num="1175"><span class="changelog-tag changelog-tag--PERF" data-tag-alias="PERF">PERF</span> <strong>ÐомеÑиÑÑ Ð¿ÑоÑиÑаннÑми паÑкой, а не по одномÑ</strong> â новÑе batch-меÑÐ¾Ð´Ñ <code>markManyAsRead</code>/<code>markManyAsUnread</code> обÑабаÑÑваÑÑ Ð´Ð¾ 100 Ñведомлений одним запÑоÑом вмеÑÑо ÑоÑни оÑделÑнÑÑ
. ÐенÑÑе ÑÑаÑика â бÑÑÑÑее оÑклик.</li> <li data-num="1176"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> <strong>Ðейдж непÑоÑиÑаннÑÑ
без ÑÑжÑлой подпиÑки</strong> â REST-ÑÐ½Ð´Ð¿Ð¾Ð¸Ð½Ñ <code>/api/v2/notifications/unread-count</code> оÑдаÑÑ ÑиÑло непÑоÑиÑаннÑÑ
одним GET-запÑоÑом. ÐÐ»Ñ Ñапки ÑайÑа на лÑгкиÑ
ÑÑÑаниÑаÑ
Ñ
ваÑÐ¸Ñ polling Ñаз в минÑÑÑ Ð²Ð¼ÐµÑÑо полноÑенной DDP-подпиÑки.</li> <li data-num="1177"><span class="changelog-tag changelog-tag--UX" data-tag-alias="UX">UX</span> <strong>ÐÑибки пÑи пеÑеклÑÑении пÑоÑиÑано/непÑоÑиÑано не молÑаÑ</strong> â еÑли ÑеÑÐ²ÐµÑ Ð½Ðµ оÑвеÑил, полÑзоваÑÐµÐ»Ñ Ð²Ð¸Ð´Ð¸Ñ toast «Ðе ÑдалоÑÑ Ð¾Ð±Ð½Ð¾Ð²Ð¸ÑÑ ÑÑаÑÑÑ ÑведомлениÑ» вмеÑÑо молÑаливого оÑкаÑа. ÐÑпÑавлено Ð´Ð»Ñ Ð²ÑеÑ
ÑÑÑÑ
ваÑианÑов: каÑÑоÑка, деÑалÑнÑй ÑпиÑок, Ñвайп.</li> <li data-num="1178"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>«ÐепÑоÑиÑано» ÑилÑÑÑÑÐµÑ Ð¿Ð¾ ÑипÑ, как и «ÐÑоÑиÑано»</strong> â меÑод <code>markAsUnread</code> полÑÑил опÑионалÑнÑй ÑилÑÑÑ <code>documentCollection</code>. РанÑÑе пÑи нажаÑии на вкладке «ÐомменÑаÑии» непÑоÑиÑаннÑми ÑÑановилиÑÑ Ð²Ñе ÑÐ²ÐµÐ´Ð¾Ð¼Ð»ÐµÐ½Ð¸Ñ Ð¿Ð¾ маÑеÑиалÑ, вклÑÑÐ°Ñ Ð¿ÑиглаÑÐµÐ½Ð¸Ñ Ð¸ ÑемаÑки.</li> <li data-num="1179"><span class="changelog-tag changelog-tag--SEC" data-tag-alias="SEC">SEC</span> <strong>Auto-draft заÑиÑÑн Ð¾Ñ Ñпама и коллизий</strong> â rate limiter (10 запÑоÑов/мин) + Ð»Ð¸Ð¼Ð¸Ñ ÑеÑновиков (50 на авÑоÑа) + валидаÑÐ¸Ñ Ñипа конÑенÑа. ÐÑи ÑедÑайÑем Ñовпадении <code>draftCode</code> â ÑÑи авÑомаÑиÑеÑкиÑ
повÑоÑнÑÑ
попÑÑки Ñ Ð½Ð¾Ð²Ñм кодом вмеÑÑо оÑибки 500.</li> <li data-num="1180"><span class="changelog-tag changelog-tag--PERF" data-tag-alias="PERF">PERF</span> <strong>УдалÑннÑе ÑÐ²ÐµÐ´Ð¾Ð¼Ð»ÐµÐ½Ð¸Ñ Ð½Ðµ нагÑÑжаÑÑ Ð±Ð°Ð·Ñ</strong> â TTL-Ð¸Ð½Ð´ÐµÐºÑ Ð°Ð²ÑомаÑиÑеÑки вÑÑиÑÐ°ÐµÑ soft-deleted запиÑи ÑеÑез 30 дней. Ðи cron-задаÑ, ни ÑÑÑной оÑиÑÑки â MongoDB Ð´ÐµÐ»Ð°ÐµÑ ÑÑо Ñама.</li> </ul> </div> </details> <details class="changelog-section"> <summary class="changelog-summary"><span class="changelog-meta"><span class="changelog-meta__version">v9.102.0</span><span class="changelog-meta__date">20-03-2026</span></span><h2 id="v91020-20-03-2026--ÑенÑген-длÑ-плаÑÑоÑмÑ-мониÑоÑинг-workerа-подкаÑÑÑ-в-поиÑке-лÑгкий-bootstrap-и-авÑодеплой">РенÑген Ð´Ð»Ñ Ð¿Ð»Ð°ÑÑоÑмÑ: мониÑоÑинг Worker'а, подкаÑÑÑ Ð² поиÑке, лÑгкий Bootstrap и авÑодеплой</h2></summary> <div class="changelog-section__body"> <p>ÐлаÑÑоÑма наÑÑилаÑÑ ÑмоÑÑеÑÑ Ð½Ð° ÑÐµÐ±Ñ Ð¸Ð·Ð½ÑÑÑи. Cloudflare Worker полÑÑил ÑобÑÑвеннÑй dashboard Ñ Ð¼ÐµÑÑиками в ÑеалÑном вÑемени â впеÑвÑе можно ÑвидеÑÑ, ÑколÑко мÑÑоÑного ÑÑаÑика блокиÑÑеÑÑÑ, как ÑабоÑÐ°ÐµÑ ÐºÑÑ, какие боÑÑ Ð¿ÑиÑ
одÑÑ Ð¸ ÑÑо ломаеÑÑÑ. Dashboard пÑоÑÑл ÑеÑез два ÑаÑнда ÑлÑÑÑений: sparkline-гÑаÑики, алеÑÑÑ, ÑÑекинг плаÑежей, latency бÑкенда, per-handler timing, Prometheus-ÑкÑпоÑÑ. ÐодкаÑÑÑ Ð²Ð¿ÐµÑвÑе попали в sitemap â 195 Ñпизодов пÑÑи ÑеÑий ÑÑали Ð²Ð¸Ð´Ð¸Ð¼Ñ Ð´Ð»Ñ Google, а вÑÑ Ð³ÐµÐ½ÐµÑаÑÐ¸Ñ sitemap ÑÑкоÑена вдвое. ÐаÑаллелÑно â Bootstrap поÑ
Ñдел, ÑкÑипÑÑ Ð²ÑÑиÑенÑ, деплой Worker'а пеÑеÑÑал бÑÑÑ ÑÑÑной опеÑаÑией. ÐÑделÑнÑй пÑоÑ
од по боевÑм логам Cloudflare вÑÑиÑÑил 15 иÑÑоÑников оÑибок: Ð¾Ñ CSP-наÑÑÑений до race conditions в UI â плаÑÑоÑма ÑÑала замеÑно ÑÑабилÑнее и оÑзÑвÑивее.</p> <ul> <li data-num="1119"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> <strong>Dashboard меÑÑик Worker'а</strong> â по адÑеÑÑ <code>/_/dashboard</code> поÑвилÑÑ Ð¿Ð¾Ð»Ð½Ð¾ÑеннÑй мониÑоÑинг: cache hit/miss Ñ Ð¿ÑоÑенÑом попаданий, ÑÑÑÑÑик заблокиÑованнÑÑ
ÑканеÑов и мÑÑоÑнÑÑ
URL, Ñазбивка боÑов по Ñипам (ÑоÑÑеÑи vs поиÑковики), гиÑÑогÑамма вÑемени оÑвеÑа, поÑледние 404 и оÑибки, Ñоп пÑÑей и handler'ов. ТÑмнÑй инÑеÑÑейÑ, авÑообновление каждÑе 10 ÑекÑнд, заÑиÑа ÑекÑеÑнÑм клÑÑом. ÐÑÐ¾Ð±Ð»ÐµÐ¼Ñ Ð²Ð¸Ð´Ð¸ÑÑ ÑанÑÑе, Ñем о ней напиÑÑÑ.</li> <li data-num="1120"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> <strong>Sparklines и живÑе ÑÑендÑ</strong> â RPS и cache hit ÑиÑÑÑÑÑÑ ÐºÐ°Ðº мини-гÑаÑики за поÑледние 10 минÑÑ. ÐÑплеÑк нагÑÑзки или пÑовал кÑÑа замеÑен Ñ Ð¾Ð´Ð½Ð¾Ð³Ð¾ взглÑда â без пÑиÑÑалÑного изÑÑÐµÐ½Ð¸Ñ ÑиÑÑ. Ðод капоÑом 60 бакеÑов по 10 ÑекÑнд, обновлÑÑÑÑÑ Ð² ÑеалÑном вÑемени.</li> <li data-num="1121"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> <strong>ÐлеÑÑÑ Ð¿ÑÑмо на dashboard</strong> â ÑÐµÐ¼Ñ ÑÑловий авÑомаÑиÑеÑки анализиÑÑÑÑ Ð¼ÐµÑÑики: error rate вÑÑе поÑога, кÑÑ Ð¿ÑоÑел, API ÑаймаÑÑиÑ, Stripe ÑбоиÑ. ЦвеÑнÑе баннеÑÑ Ð²Ð²ÐµÑÑ
Ñ ÑкÑана и ÑÑаÑÑÑ-ÑоÑка (зелÑнаÑ/жÑлÑаÑ/кÑаÑнаÑ) даÑÑ Ð¾ÑÐ²ÐµÑ Ð·Ð° ÑекÑÐ½Ð´Ñ â «вÑÑ Ð½Ð¾ÑмалÑно» или «поÑа ÑазбиÑаÑÑÑÑ».</li> <li data-num="1122"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> <strong>Per-handler timing</strong> â ÑаблиÑа Ñ P50/P95 Ð´Ð»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð³Ð¾ Ñипа ÑÑÑаниÑ: ÑÑаÑÑи, Ñеги, авÑоÑÑ, подкаÑÑÑ, OG-инÑекÑии. Ð
1идно, какие ÑÑÑаниÑÑ ÑамÑе медленнÑе, и где опÑимизаÑÐ¸Ñ Ð´Ð°ÑÑ Ð½Ð°Ð¸Ð±Ð¾Ð»ÑÑий ÑÑÑекÑ.</li> <li data-num="1123"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> <strong>API latency бÑкенда</strong> â оÑделÑÐ½Ð°Ñ Ð³Ð¸ÑÑогÑамма и ÑаблиÑа endpoint'ов показÑваÑÑ ÑкоÑоÑÑÑ Ð±Ñкенда (homepage, content, author, tag, categories). Ðогда ÑÐ°Ð¹Ñ ÑоÑÐ¼Ð¾Ð·Ð¸Ñ â ÑÑÐ°Ð·Ñ Ð¿Ð¾Ð½ÑÑно, пÑоблема в edge или в API.</li> <li data-num="1124"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> <strong>Prometheus endpoint</strong> â <code>&prometheus</code> оÑдаÑÑ Ð¼ÐµÑÑики в ÑоÑмаÑе Prometheus exposition Ñ histogram buckets (<code>le</code>-Ð»ÐµÐ¹Ð±Ð»Ñ Ð´Ð»Ñ response time и API latency), status codes (<code>{code="200"}</code>), per-handler counts. ÐодклÑÑиÑÑ Grafana â дело одного URL.</li> <li data-num="1125"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> <strong>JSON API Ð´Ð»Ñ Ð¼Ð¾Ð½Ð¸ÑоÑинга</strong> â <code>&json=1</code> оÑдаÑÑ ÑиÑÑÑй JSON. Ðожно подклÑÑиÑÑ Telegram-боÑа или пÑоÑÑой ÑкÑÐ¸Ð¿Ñ â даннÑе гоÑÐ¾Ð²Ñ Ð´Ð»Ñ Ð°Ð²ÑомаÑизаÑии.</li> <li data-num="1126"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>ÐеÑÑики кÑÑа ÑÑали ÑоÑнÑми</strong> â ÑанÑÑе ÑÑекинг ÑÑоÑл ÑолÑко в двÑÑ
ÑоÑкаÑ
(404-кÑÑ Ð¸ resilience), а 12 handler'ов оÑдавали edge-кÑÑ Ð±ÐµÐ· подÑÑÑÑа. ТепеÑÑ ÐºÐ°Ð¶Ð´Ñй <code>cache.match()</code>/<code>cache.put()</code> во вÑеÑ
обÑабоÑÑикаÑ
(ÑÑаÑÑи, Ñеги, авÑоÑÑ, подкаÑÑÑ, OG, боÑÑ) ÑеÑÑно ÑÑиÑÐ°ÐµÑ hit/miss/expired. Cache hit rate на dashboard â ÑеалÑнÑй.</li> <li data-num="1127"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>Dashboard обновлÑÐµÑ Ð²ÑÑ, а не ÑолÑко ÑиÑла</strong> â auto-refresh каждÑе 10Ñ ÑепеÑÑ Ð¿ÐµÑеÑиÑовÑÐ²Ð°ÐµÑ ÑаблиÑÑ ÑÑаÑÑÑов, top paths, 404, оÑибки, timing, sparklines. РанÑÑе половина даннÑÑ
замеÑзала на пеÑвом ÑендеÑе.</li> <li data-num="1128"><span class="changelog-tag changelog-tag--SEC" data-tag-alias="SEC">SEC</span> <strong>Rate limit на авÑоÑизаÑÐ¸Ñ dashboard</strong> â пÑÑÑ Ð½ÐµÑдаÑнÑÑ
попÑÑок Ñ Ð¾Ð´Ð½Ð¾Ð³Ð¾ IP блокиÑÑÑÑ Ð´Ð¾ÑÑÑп на 5 минÑÑ. Brute-force ÑекÑеÑа ÑÑал беÑÑмÑÑленнÑм.</li> <li data-num="1129"><span class="changelog-tag changelog-tag--PERF" data-tag-alias="PERF">PERF</span> <strong>topPaths не замеÑзаÑÑ</strong> â каждÑе 5 минÑÑ counts делÑÑÑÑ Ð¿Ð¾Ð¿Ð¾Ð»Ð°Ð¼, Ñедкие пÑÑи вÑÑеÑнÑÑÑÑÑ Ð³Ð¾ÑÑÑими. ЧеÑез ÑÐ°Ñ ÑабоÑÑ dashboard показÑÐ²Ð°ÐµÑ Ð°ÐºÑÑалÑнÑÑ ÐºÐ°ÑÑинÑ, а не ÑоÑо пеÑвÑÑ
минÑÑ Ð¿Ð¾Ñле деплоÑ.</li> <li data-num="1130"><span class="changelog-tag changelog-tag--DEVOPS" data-tag-alias="DEVOPS">DEVOPS</span> <strong>Ðеплой Worker'а одной командой</strong> â <code>node cloudflare/workers/deploy.js</code> авÑомаÑиÑеÑки ÑобиÑÐ°ÐµÑ Ð¸ пÑбликÑÐµÑ Worker ÑеÑез Cloudflare API. ÐмеÑÑо ÑÑÑного копиÑÐ¾Ð²Ð°Ð½Ð¸Ñ 4000 ÑÑÑок в бÑаÑзеÑнÑÑ ÐºÐ¾Ð½ÑÐ¾Ð»Ñ â одна команда в ÑеÑминале.</li> <li data-num="1131"><span class="changelog-tag changelog-tag--DEVOPS" data-tag-alias="DEVOPS">DEVOPS</span> <strong>ÐлаÑежи под наблÑдением</strong> â Stripe checkouts, оÑибки и email-ÑÐ²ÐµÐ´Ð¾Ð¼Ð»ÐµÐ½Ð¸Ñ Ð¾ донаÑаÑ
ÑепеÑÑ ÑÑекаÑÑÑÑ. ÐÑли плаÑÑж не пÑоÑ
Ð¾Ð´Ð¸Ñ â видно ÑÑазÑ, не ÑеÑез Ð´ÐµÐ½Ñ Ð¸Ð· пиÑÑма доноÑа.</li> <li data-num="1132"><span class="changelog-tag changelog-tag--PERF" data-tag-alias="PERF">PERF</span> <strong>Bootstrap поÑ
Ñдел вдвое</strong> â из полного набоÑа (вÑе компоненÑÑ, вÑе ÑÑилиÑÑ) оÑÑавлена ÑолÑко ÑеÑка, ÑоÑÐ¼Ñ Ð¸ визÑалÑно необÑ
одимое. jQuery-Ð¿Ð»Ð°Ð³Ð¸Ð½Ñ (modal, collapse, tooltip) Ð·Ð°Ð¼ÐµÐ½ÐµÐ½Ñ Ð²Ð°Ð½Ð¸Ð»ÑнÑми микÑобиблиоÑеками по 3â5 ÐÐ â без jQuery вообÑе.</li> <li data-num="1133"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>Ð£Ð²ÐµÐ´Ð¾Ð¼Ð»ÐµÐ½Ð¸Ñ Ð¾ пÑавкаÑ
: каÑегоÑиÑ-меÑка</strong> â каÑÑоÑки Ñведомлений Ñипа <code>suggestions</code> ÑепеÑÑ Ð¿Ð¾ÐºÐ°Ð·ÑваÑÑ Ð¼ÐµÑÐºÑ Â«ÐÑавки» Ñ Ð¿ÑавилÑнÑм ÑвеÑом, а не безÑмÑннÑй пÑÑÑой бейдж. ÐвÑÐ¾Ñ ÑÑÐ°Ð·Ñ Ð²Ð¸Ð´Ð¸Ñ, ÑÑо ÑÑо за Ñип.</li> <li data-num="1134"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> <strong>ÐодкаÑÑÑ Ð½Ð° каÑÑе Google</strong> â вÑе пÑÑÑ Ð¿Ð¾Ð´ÐºÐ°ÑÑов ÐиÑкÑÑÑа (195 Ñпизодов) попали в sitemap. ÐаждÑй Ñпизод â оÑделÑнÑй URL Ñ Ð´Ð°Ñой пÑбликаÑии. ÐоиÑковики впеÑвÑе видÑÑ Ð¿Ð¾Ð´ÐºÐ°ÑÑ-конÑÐµÐ½Ñ ÐºÐ°Ðº полноÑеннÑе ÑÑÑаниÑÑ, а не ÑÑÑнÑÑ Ð´ÑÑÑ Ð·Ð° SPA-ÑоÑÑеÑом. ÐÑо +201 URL к обÑÐµÐ¼Ñ Ð¿Ð¾ÐºÑÑÑиÑ.</li> <li data-num="1135"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> <strong>Свежие ÑÐ¿Ð¸Ð·Ð¾Ð´Ñ Ð¸Ð½Ð´ÐµÐºÑиÑÑÑÑÑÑ Ð·Ð° ÑаÑÑ</strong> â динамиÑеÑкий sitemap <code>sitemap-recent</code> ÑепеÑÑ Ð¿Ð°ÑÑÐ¸Ñ RSS-ÑÐ¸Ð´Ñ Mave Digital и подÑÑавлÑÐµÑ ÑпизодÑ, вÑÑедÑие за поÑледние 30 дней. ÐÑпÑÑÑил Ñпизод â Google ÑÐ·Ð½Ð°ÐµÑ Ð² ÑÐ¾Ñ Ð¶Ðµ денÑ, не ÑеÑез две недели.</li> <li data-num="1136"><span class="changelog-tag changelog-tag--PERF" data-tag-alias="PERF">PERF</span> <strong>СбоÑка sitemaps ÑÑкоÑена вдвое</strong> â ÑÑаÑÑи (5 каÑегоÑий), ÑкÑпо (4 Ñипа), авÑоÑÑ Ð¸ Ñеги загÑÑжаÑÑÑÑ Ð¿Ð°ÑаллелÑно, а не по оÑеÑеди. ÐÑло ~28 ÑекÑнд â ÑÑало ~13. Ðилд бÑÑÑÑее, CI деÑевле.</li> <li data-num="1137"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>API не оÑвеÑÐ°ÐµÑ â не беда</strong> â ÑÑи авÑомаÑиÑеÑкиÑ
retry Ñ exponential backoff (1â2â4 Ñ) Ð´Ð»Ñ 5xx, 429, ÑаймаÑÑов и ÑазÑÑвов ÑоединениÑ. ÐдиниÑнÑй Ñбой API болÑÑе не обнÑлÑÐµÑ sitemap Ñеликом.</li> <li data-num="1138"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>ÐÑблей подкаÑÑ-URL не бÑдеÑ</strong>
1 â ÑÐ¿Ð¸Ð·Ð¾Ð´Ñ Ñ Ð¾Ð´Ð¸Ð½Ð°ÐºÐ¾Ð²Ñми названиÑми (ÑемаÑÑеÑÑ, ÑаÑÑи) дедÑплиÑиÑÑÑÑÑÑ Ð¿Ð¾ slug. ÐоиÑковик не ÑÐ²Ð¸Ð´Ð¸Ñ Ð´Ð²Ð¾Ð¹Ð½ÑÑ
запиÑей.</li> <li data-num="1139"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>ÐалидаÑÐ¸Ñ sitemap не ломаеÑÑÑ Ð½Ð° подкаÑÑаÑ
</strong> â ÑкÑÐ¸Ð¿Ñ <code>validate-sitemap-urls.js</code> ÑаÑпознаÑÑ <code>/podcasts/*</code> и не пÑÑаеÑÑÑ Ð¿ÑовеÑиÑÑ Ð¸Ñ
ÑеÑез API (ÑÐ¿Ð¸Ð·Ð¾Ð´Ñ Ð¶Ð¸Ð²ÑÑ Ð² RSS, не в базе). РанÑÑе <code>/podcasts</code> ложно ÑÑиÑалÑÑ Ð½ÐµÑÑÑеÑÑвÑÑÑим пÑоÑилем авÑоÑа.</li> <li data-num="1140"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <code>**staticPageSlugs</code> болÑÑе не ÑаÑÑинÑ
ÑонизиÑÑеÑÑÑ** â валидаÑÐ¾Ñ sitemap ÑепеÑÑ Ð¸Ð¼Ð¿Ð¾ÑÑиÑÑÐµÑ ÑпиÑок извеÑÑнÑÑ
пÑÑей из <code>known-paths.js</code>, а не Ñ
ÑÐ°Ð½Ð¸Ñ ÑобÑÑвеннÑй ÑÑÑаÑевÑий Ñ
аÑдкод. Ðобавил маÑÑÑÑÑ â он ÑÑÐ°Ð·Ñ ÑÑÑÑн.</li> <li data-num="1141"><span class="changelog-tag changelog-tag--SEO" data-tag-alias="SEO">SEO</span> <strong>ШеÑÑÑ Ð½Ð¾Ð²ÑÑ
ÑÑÑÐ°Ð½Ð¸Ñ Ð² sitemap</strong> â <code>/almanac</code>, <code>/donate</code>, <code>/join</code>, <code>/collab</code>, <code>/idea</code> и еÑÑ Ð¾Ð´Ð½Ð° ÑÑÑаниÑа Ð´Ð¾Ð±Ð°Ð²Ð»ÐµÐ½Ñ Ð² ÑÑаÑиÑеÑкий sitemap Ñ ÐºÐ¾ÑÑекÑнÑм <code>changefreq</code>. ÐбÑее покÑÑÑие â 4967 URL.</li> <li data-num="1142"><span class="changelog-tag changelog-tag--SEO" data-tag-alias="SEO">SEO</span> <strong>ÐÐ°Ð¶Ð´Ð°Ñ ÑÑÑаниÑа знаеÑ, как ÑаÑÑо менÑеÑÑÑ</strong> â вÑе 35 ÑÑаÑиÑеÑкиÑ
URL полÑÑили ÑвнÑй <code>changefreq</code> (Ð¾Ñ <code>daily</code> Ð´Ð»Ñ Ð³Ð»Ð°Ð²Ð½Ð¾Ð¹ до <code>yearly</code> Ð´Ð»Ñ ÐºÐ¾Ð½ÑÑиÑÑÑии). РанÑÑе Ñ Ð´ÐµÐ²ÑÑи ÑÑÑÐ°Ð½Ð¸Ñ Ð¿Ð°ÑамеÑÑ Ð¾ÑÑÑÑÑÑвовал, и Google ÑгадÑвал Ñам.</li> <li data-num="1143"><span class="changelog-tag changelog-tag--DX" data-tag-alias="DX">DX</span> <strong>ÐÑог ÑбоÑки видно Ñ Ð¾Ð´Ð½Ð¾Ð³Ð¾ взглÑда</strong> â ÑиналÑÐ½Ð°Ñ ÑÑÑока генеÑаÑоÑа показÑÐ²Ð°ÐµÑ ÑÐ°Ð·Ð±Ð¸Ð²ÐºÑ Ð¿Ð¾ Ñипам (<code>articles: 1872, expo: 1113, authors: 1135, tags: 612, podcasts: 201</code>) и вÑÐµÐ¼Ñ Ð²ÑполнениÑ. Sanity check авÑомаÑиÑеÑки пÑедÑпÑедиÑ, еÑли какой-Ñо Ñип конÑенÑа подозÑиÑелÑно мал.</li> <li data-num="1144"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>Sitemap-генеÑаÑÐ¾Ñ Ð½Ðµ Ð¿Ð°Ð´Ð°ÐµÑ Ð½Ð° Node 20</strong> â <code>generate-sitemaps.js</code> иÑполÑзовал ÑÑÑаÑевÑие API (<code>url.parse</code>) и невалиднÑе <code>require</code> в ESM-конÑекÑÑе. ÐеÑепиÑан на ÑиÑÑÑй ESM Ñ <code>URL()</code>, ÑабоÑÐ°ÐµÑ ÑÑабилÑно на Node 18â22.</li> <li data-num="1145"><span class="changelog-tag changelog-tag--DX" data-tag-alias="DX">DX</span> <strong>Sync дизайн-Ñокенов пеÑеÑÑал ломаÑÑ CI</strong> â <code>sync-design-tokens.js</code> полÑÑил коÑÑекÑнÑÑ Ð¾Ð±ÑабоÑÐºÑ Ð¿ÑÑей на Windows и более ÑÑÑогий паÑÑинг â болÑÑе не даÑÑ Ð»Ð¾Ð¶Ð½ÑÑ
ÑÑабаÑÑваний пÑи пÑовеÑке <code>variables.scss â tailwind.css</code>.</li> <li data-num="1146"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>AngularJS болÑÑе не ÑÑоÑиÑÑÑ Ñ CSP</strong> â 123 оÑибки <code>eval</code> в логаÑ
Cloudflare оказалиÑÑ â AngularJS иÑполÑзÑÐµÑ <code>new Function()</code> Ð´Ð»Ñ ÐºÐ¾Ð¼Ð¿Ð¸Ð»ÑÑии вÑÑажений. Ðобавлен <code>'unsafe-eval'</code> в <code>script-src</code> â ÑÑÑаниÑÑ Ð¿ÐµÑеÑÑали ÑеÑÑÑÑ ÑÑнкÑионалÑноÑÑÑ Ð¸Ð·-за блокиÑовки ÑкÑипÑов.</li> <li data-num="1147"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>RSS-Ñид 304 болÑÑе не кÑиÑÐ¸Ñ Â«Ð¾Ñибка»</strong> â бÑаÑÐ·ÐµÑ Ð¿ÑиÑÑÐ»Ð°ÐµÑ <code>If-None-Match</code>, бÑкенд ÑеÑÑно оÑвеÑÐ°ÐµÑ Â«Ð½Ð¸Ñего не изменилоÑÑ». РанÑÑе Worker запиÑÑвал ÑÑо как оÑÐ¸Ð±ÐºÑ â 10 ложнÑÑ
ÑÑевог в ÑаÑ. ТепеÑÑ Ð»Ð¾Ð³Ð¸ ÑиÑÑÑ.</li> <li data-num="1148"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <code>**/offline.html</code> пеÑеÑÑал пÑиÑвоÑÑÑÑÑÑ Ð°Ð²ÑоÑом** â Worker пÑинимал лÑбой single-segment пÑÑÑ Ð·Ð° пÑоÑилÑ. Ð¤Ð°Ð¹Ð»Ñ Ñ ÑаÑÑиÑениÑми (.html, .ico, .js и дÑ.) ÑепеÑÑ ÑаÑпознаÑÑÑÑ Ð´Ð¾ API-запÑоÑа â менÑÑе ненÑжнÑÑ
обÑаÑений к бÑкендÑ, бÑÑÑÑее оÑвеÑ.</li> <li data-num="1149"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>Range-запÑоÑÑ Ð½Ðµ ломаÑÑ ÐºÑÑ</strong> â бÑаÑÐ·ÐµÑ Ð¸Ð½Ð¾Ð³Ð´Ð° пÑоÑÐ¸Ñ ÑаÑÑÑ ÑÑÑаниÑÑ (206 Partial Content), а Cloudflare Cache API Ñакое не пÑинимаеÑ. СÑаÑÑÑ Ð½Ð¾ÑмализÑеÑÑÑ Ð´Ð¾ 200 â кÑÑ ÑабоÑаеÑ, оÑибки иÑÑезли.</li> <li data-num="1150"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>ЧеÑновик не пÑоÑоÑиÑÑÑ Ð² кÑÑ Ð¿Ñи Ñбое API</strong> â еÑли бÑкенд оÑвеÑÐ°ÐµÑ Ð¾Ñибкой, Worker болÑÑе не пÑÑаеÑÑÑ Ð¿ÑовеÑиÑÑ Â«Ð° ÑÑо ÑеÑновик?» на обÑекÑе без нÑжнÑÑ
полей. ÐÑблиÑнÑй конÑÐµÐ½Ñ Ð¾ÑÑаÑÑÑÑ Ð¿ÑблиÑнÑм, ÑеÑновики â пÑиваÑнÑми.</li> <li data-num="1151"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>ÐвÑокомплиÑ: клик по ÑезÑлÑÑаÑÑ Ð±Ð¾Ð»ÑÑе не ÑеÑÑеÑÑÑ</strong> â ÑанÑÑе blur input'а мог закÑÑÑÑ dropdown на 1 Ð¼Ñ ÑанÑÑе, Ñем долеÑал клик по ваÑианÑÑ. ТепеÑÑ mousedown на ÑпиÑке оÑменÑÐµÑ ÑÐ°Ð¹Ð¼ÐµÑ Ð·Ð°ÐºÑÑÑÐ¸Ñ â вÑÐ±Ð¾Ñ ÑÑабаÑÑÐ²Ð°ÐµÑ Ñ Ð¿ÐµÑвого Ñаза.</li> <li data-num="1152"><span class="changelog-tag changelog-tag--PERF" data-tag-alias="PERF">PERF</span> <strong>API-запÑоÑÑ Ð¿Ð¾Ð»ÑÑили вÑоÑой ÑанÑ</strong> â еÑли бÑкенд не оÑвеÑил за 15 ÑекÑнд, GET-запÑоÑÑ Ð°Ð²ÑомаÑиÑеÑки повÑоÑÑÑÑÑÑ Ñ ÑкоÑоÑеннÑм ÑаймаÑÑом (8Ñ). ÐÑаÑковÑеменнÑй Ñбой â не повод показÑваÑÑ Ð¾ÑибкÑ; пÑи ÑÑабилÑном оÑказе полÑзоваÑÐµÐ»Ñ Ð²ÑÑ Ñавно ÑÐ²Ð¸Ð´Ð¸Ñ SPA.</li> <li data-num="1153"><span class="changelog-tag changelog-tag--PERF" data-tag-alias="PERF">PERF</span> <strong>ФилÑÑÑÑ Ð·Ð°Ð¿Ð¾Ð¼Ð½ÑÑ Ð³Ð¾ÑÑÑее</strong> â ÑÑи ÑекÑÑовÑÑ
ÑилÑÑÑа (markdown, mention, HTML-обÑезка) пеÑеÑли Ñ FIFO на LRU-кÑÑ. ÐомменÑаÑий, коÑоÑÑй мелÑÐºÐ°ÐµÑ Ð½Ð° каждом digest-Ñикле, ÑепеÑÑ Ð½Ðµ вÑÑеÑнÑеÑÑÑ ÑлÑÑайнÑм новиÑком â менÑÑе пеÑеÑÑÑÑов, плавнее ÑкÑолл.</li> <li data-num="1154"><span class="changelog-tag changelog-tag--PERF" data-tag-alias="PERF">PERF</span> <strong>Tailwind ÑобиÑаеÑÑÑ Ð±ÑÑÑÑее</strong> â из ÑканиÑÑемÑÑ
пÑÑей ÑбÑан каÑалог <code>cloudflare/</code> â Worker не генеÑиÑÑÐµÑ UI-клаÑÑÑ, а ÑканиÑование 4000 ÑÑÑок JS оÑнимало вÑÐµÐ¼Ñ Ð½Ð° каждой пеÑеÑбоÑке.</li> <li data-num="1155"><span class="changelog-tag changelog-tag--UX" data-tag-alias="UX">UX</span> <strong>«ÐоиÑкâ¦Â» в авÑокомплиÑе</strong> â пока ÑезÑлÑÑаÑÑ Ð»ÐµÑÑÑ Ñ ÑеÑвеÑа, dropdown показÑÐ²Ð°ÐµÑ Â«ÐоиÑкâ¦Â» вмеÑÑо пÑÑÑоÑÑ. ÐолÑзоваÑÐµÐ»Ñ Ð²Ð¸Ð´Ð¸Ñ, ÑÑо ÑиÑÑема ÑабоÑаеÑ, а не завиÑла.</li> <li data-num="1156"><span class="changelog-tag changelog-tag--SEC" data-tag-alias="SEC">SEC</span> <strong>ReDoS в ÑилÑÑÑе HTML-обÑезки закÑÑÑ</strong> â regex'Ñ Ð´Ð»Ñ ÑÐ´Ð°Ð»ÐµÐ½Ð¸Ñ <code><figure></code>, <code><style></code> и дÑÑгиÑ
Ñегов полÑÑили гÑаниÑÑ 50 ÐÐ. Ð¡ÐºÐ¾Ð»Ñ Ñгодно вложеннÑй мÑÑоÑнÑй HTML болÑÑе не заÑÑÐ°Ð²Ð¸Ñ Ð±ÑаÑÐ·ÐµÑ Ð·Ð°Ð´ÑмаÑÑÑÑ Ð½Ð° неÑколÑко ÑекÑнд.</li> <li data-num="1157"><span class="changelog-tag changelog-tag--SEC" data-tag-alias="SEC">SEC</span> <strong>IPv6 unique-local полноÑÑÑÑ Ð·Ð°ÐºÑÑÑ</strong> â SSRF-пÑовеÑка CSP-вебÑ
Ñка покÑÑвала <code>fc00::/8</code>, но пÑопÑÑкала <code>fd00::/8</code>. ТепеÑÑ Ð¾Ð±Ðµ Ð¿Ð¾Ð»Ð¾Ð²Ð¸Ð½Ñ fc00::/7 блокиÑÑÑÑÑÑ â defense-in-depth, как положено.</li> <li data-num="1158"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>ÐдновÑеменнÑй Ñбой неÑколÑкиÑ
Ñанков â одна пеÑезагÑÑзка</strong> â ÑанÑÑе еÑли ÑÑи ÑкÑипÑа ломалиÑÑ Ñазом, бÑаÑÐ·ÐµÑ Ð¼Ð¾Ð³ дÑÑнÑÑÑ reload ÑÑиждÑ. ТепеÑÑ Ñлаг <code>_reloadScheduled</code> гаÑанÑиÑÑÐµÑ Ñовно Ð¾Ð´Ð½Ñ Ð¿Ð¾Ð¿ÑÑкÑ.</li> </ul> </div> </details> <details class="changelog-section"> <summary class="changelog-summary"><span class="changelog-meta"><span class="changelog-meta__version">v9.101.0</span><span class="changelog-meta__date">19-03-2026</span></span><h2 id="v91010-19-03-2026--ÑиналÑнÑй-ÑÑÑиÑ
-анимаÑии-ÑакÑилÑноÑÑÑ-и-ÑлиÑовка-пеÑед-вÑÑ
одом">ФиналÑнÑй ÑÑÑиÑ
: анимаÑии, ÑакÑилÑноÑÑÑ Ð¸ ÑлиÑовка пеÑед вÑÑ
одом</h2></summary> <div class="changelog-section__body"> <p>Ðа поÑледнÑÑ Ð½ÐµÐ´ÐµÐ»Ñ Ð¿Ð»Ð°ÑÑоÑма пÑоÑла ÑеÑез 20 веÑÑий и болÑÑе 300 Ñайлов изменений â PDF-книги, кадÑиÑование ÑоÑо, ÑмнÑй оÑÑлайн, ÑилÑÑÑÑ Ñегов, живÑе ÑведомлениÑ, SEO, доÑÑÑпноÑÑÑ, ÑкоÑоÑÑÑ Ð·Ð°Ð³ÑÑзки, ÑеÑакÑоÑинг, Tailwind, каÑÑоÑки в ÑоÑÑеÑÑÑ
. Ð ÑÑом обновлении â лакиÑовка Ñ
1ÑнкÑий, ÑÑÐ¾Ð±Ñ Ð²ÑÑ ÑабоÑало пÑиÑÑнее. ÐаÑÑоÑки Ñведомлений и ÑÑаÑÑи на ÑÑÑаниÑе ÑÐµÐ¼Ñ Ð²Ð¿Ð»ÑваÑÑ ÐºÐ°Ñкадом, а не пÑÑгаÑÑ. Mention-авÑÐ¾ÐºÐ¾Ð¼Ð¿Ð»Ð¸Ñ Ð¼Ð³Ð½Ð¾Ð²ÐµÐ½Ð½Ð¾ оÑвеÑÐ°ÐµÑ Ð¸Ð· кеÑа даже на медленной ÑеÑи. Ðа Android â ÑакÑилÑнÑй ÑелÑок пÑи Ñвайпе, как в наÑивном пÑиложении.</p> <ul> <li data-num="1111"><span class="changelog-tag changelog-tag--UX" data-tag-alias="UX">UX</span> <strong>Ð£Ð²ÐµÐ´Ð¾Ð¼Ð»ÐµÐ½Ð¸Ñ Ð²Ð¿Ð»ÑваÑÑ ÐºÐ°Ñкадом</strong> â ÐºÐ°Ð¶Ð´Ð°Ñ ÐºÐ°ÑÑоÑка поÑвлÑеÑÑÑ Ñ Ð»Ñгким fade + translateY, пеÑвÑе воÑÐµÐ¼Ñ Ñ Ð½Ð°ÑаÑÑаÑÑей задеÑжкой (0 â 235 мÑ). СпиÑок пеÑеÑÑал «ÑиÑоваÑÑÑÑ» â он поÑвлÑеÑÑÑ Ð¶Ð¸Ð²Ð¾. ÐÑи воÑÑÑановленном Ñоединении новÑе ÑÐ²ÐµÐ´Ð¾Ð¼Ð»ÐµÐ½Ð¸Ñ Ð°Ð½Ð¸Ð¼Ð¸ÑÑÑÑÑÑ Ð¾ÑделÑно, не дÑÑÐ³Ð°Ñ Ñже загÑÑженнÑе.</li> <li data-num="1112"><span class="changelog-tag changelog-tag--UX" data-tag-alias="UX">UX</span> <strong>СÑаÑÑи ÑÐµÐ¼Ñ â Ñоже</strong> â нажал «ÐоказаÑÑ ÐµÑÑ», и новÑе каÑÑоÑки вплÑваÑÑ ÑÐ½Ð¸Ð·Ñ Ð²Ð¾Ð»Ð½Ð¾Ð¹, а не ÑелепоÑÑиÑÑÑÑÑÑ. ÐÑÑÑение живого ÑкÑолла, а не ÑÑаÑиÑного деÑева. РабоÑÐ°ÐµÑ ÑеÑез <code>track by</code> в <code>ng-repeat</code> â анимиÑÑÑÑÑÑ ÑолÑко новÑе DOM-ÑзлÑ.</li> <li data-num="1113"><span class="changelog-tag changelog-tag--UX" data-tag-alias="UX">UX</span> <strong>ТакÑилÑнÑй ÑелÑок пÑи Ñвайпе ÑведомлениÑ</strong> â на Android 10 Ð¼Ñ Ð²Ð¸Ð±ÑаÑии в моменÑ, когда Ñвайп влево или впÑаво заÑÑиÑан. Ðе навÑзÑиво, но на подÑознаÑелÑном ÑÑовне пÑиложение ÑÑвÑÑвÑеÑÑÑ ÐºÐ°Ðº наÑивное. iOS и деÑкÑоп â без изменений (API игноÑиÑÑеÑÑÑ).</li> <li data-num="1114"><span class="changelog-tag changelog-tag--PERF" data-tag-alias="PERF">PERF</span> <strong>@Ð£Ð¿Ð¾Ð¼Ð¸Ð½Ð°Ð½Ð¸Ñ Ð¾ÑвеÑаÑÑ Ð¸Ð· кеÑа</strong> â ÑезÑлÑÑаÑÑ Ð¿Ð¾Ð¸Ñка полÑзоваÑелей (<code>/api/v2/users/search</code>) ÑепеÑÑ Ñ
ÑÐ°Ð½Ð¸Ñ Service Worker по ÑÑÑаÑегии StaleWhileRevalidate, TTL 5 минÑÑ. ÐÑоÑой Ñаз набÑал <code>@Ðик</code> â оÑÐ²ÐµÑ Ð¼Ð³Ð½Ð¾Ð²ÐµÐ½Ð½Ð¾ из кеÑа, ÑеÑÑ Ð¾Ð±Ð½Ð¾Ð²Ð»ÑеÑÑÑ Ð² Ñоне. РплоÑ
ом Ñигнале ÑазниÑа оÑобенно оÑÑÑима.</li> <li data-num="1115"><span class="changelog-tag changelog-tag--PERF" data-tag-alias="PERF">PERF</span> <strong>ÐваÑаÑки в ÑведомлениÑÑ
â Retina-ÑÑÑкоÑÑÑ</strong> â добавлен <code>srcset</code> Ñ 40Ã40 и 80Ã80 ÑеÑез Thumbor. ÐÑаÑÐ·ÐµÑ Ñам вÑбиÑÐ°ÐµÑ Ð½ÑжнÑй ÑазмеÑ: на обÑÑнÑÑ
ÑкÑанаÑ
â легÑе, Ð
1½Ð° HiDPI-ÑÑÑÑойÑÑваÑ
â ÑÑÑко. ÐлÑÑ <code>loading="lazy"</code>: ÑоÑо авÑоÑа не гÑÑзиÑÑÑ, пока каÑÑоÑка за ÑкÑаном.</li> <li data-num="1116"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>ÐÐ²Ð¾Ð¹Ð½Ð°Ñ ÐºÑÑÑилка на ÑÑÑаниÑе Ñега â ликвидиÑована</strong> â ÑÐ¿Ð¸Ð½Ð½ÐµÑ Â«ÐагÑÑзка...» и skeleton-заглÑÑка показÑвалиÑÑ Ð¾Ð´Ð½Ð¾Ð²Ñеменно: один повеÑÑ
дÑÑгого. Ð¡Ð¿Ð¸Ð½Ð½ÐµÑ ÑбÑан, skeleton ÑепеÑÑ ÐµÐ´Ð¸Ð½ÑÑвенное ÑоÑÑоÑние загÑÑзки â без пеÑекÑÑÑий и без ÑкаÑков вÑÑÑÑки.</li> <li data-num="1117"><span class="changelog-tag changelog-tag--REFACTOR" data-tag-alias="REFACTOR">REFACTOR</span> <strong>9 лиÑниÑ
<code>!important</code> вÑÑиÑÐµÐ½Ñ Ð¸Ð· ÑÑилей Ñведомлений</strong> â вÑе <code>text-decoration: none !important</code> ÑбÑанÑ: наÑи CSS-ÑелекÑоÑÑ Ð´Ð¾ÑÑаÑоÑно ÑпеÑиÑиÑнÑ, ÑÑÐ¾Ð±Ñ Ð¿Ð¾Ð±ÐµÐ´Ð¸ÑÑ Bootstrap без коÑÑÑлей. Ðаодно каждÑй <code>z-index</code> в компоненÑе полÑÑил комменÑаÑий â болÑÑе не нÑжно деÑжаÑÑ Ð² голове, поÑÐµÐ¼Ñ Ñам ÑÑÐ¾Ð¸Ñ ÐµÐ´Ð¸Ð½Ð¸Ñа.</li> <li data-num="1118"><span class="changelog-tag changelog-tag--DX" data-tag-alias="DX">DX</span> <strong>Ðизайн-ÑÐ¾ÐºÐµÐ½Ñ Ð½Ðµ ÑаÑÑинÑ
ÑонизиÑÑÑÑÑÑ Ð¼Ð¾Ð»Ñа</strong> â pre-commit hook ÑепеÑÑ Ð°Ð²ÑомаÑиÑеÑки запÑÑÐºÐ°ÐµÑ Ð¿ÑовеÑÐºÑ <code>variables.scss â tailwind.css</code>, еÑли в ÐºÐ¾Ð¼Ð¼Ð¸Ñ Ð¿Ð¾Ð¿Ð°Ð» Ñ
оÑÑ Ð±Ñ Ð¾Ð´Ð¸Ð½ из ÑÑиÑ
Ñайлов. ÐеÑооÑвеÑÑÑвие â блокиÑовка Ñ Ð¿Ð¾Ð´Ñказкой. РанÑÑе Ñакое обнаÑÑживалоÑÑ ÑлÑÑайно, Ñже на деплое.</li> </ul> </div> </details> <details class="changelog-section"> <summary class="changelog-summary"><span class="changelog-meta"><span class="changelog-meta__version">v9.100.0</span><span class="changelog-meta__date">19-03-2026</span></span><h2 id="v91000-19-03-2026--ÑведомлениÑ-о-пÑавкаÑ
-пÑоÑÑение-ÑообÑение-sitemaps-rss-ленÑÑ-и-единÑе-дизайн-ÑокенÑ">Ð£Ð²ÐµÐ´Ð¾Ð¼Ð»ÐµÐ½Ð¸Ñ Ð¾ пÑавкаÑ
, пÑоÑÑение ÑообÑение, sitemaps, rss-ленÑÑ Ð¸ единÑе дизайн-ÑокенÑ</h2></summary> <div class="changelog-section__body"> <p>ÐиÑего видимого ÑнаÑÑжи â ÑолÑко Ñо, ÑÑо должно бÑло ÑабоÑаÑÑ Ð¿ÑавилÑно, ÑепеÑÑ ÑабоÑÐ°ÐµÑ Ð¿ÑавилÑно. ÐÑвеÑÑ Ð² ÑÑедаÑ
комменÑаÑиев, RSS-ленÑÑ Ð±ÐµÐ· обÑÑвов, ÑÑаÑÑÑÑ Ñведомлений без завиÑаний, обложки без ÑÑеÑек памÑÑи. ÐоÑÐµÐ¼Ñ ÑиÑ
иÑ
пÑоблем, коÑоÑÑе пÑоÑвлÑлиÑÑ Ð² ÑамÑй неÑдобнÑй моменÑ, закÑÑÑÑ Ð´Ð¾ Ñелиза.</p> <ul> <li data-num="1101"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>ÐÑвеÑÑ Ð² ÑÑедаÑ
комменÑаÑиев Ñнова оÑкликаÑÑÑÑ</strong> â в аÑÑибÑÑе <code>newComentCallback</code> годами пÑопÑÑкали бÑÐºÐ²Ñ Â«m»: поÑле оÑвеÑа или ÑедакÑиÑÐ¾Ð²Ð°Ð½Ð¸Ñ Ð² веÑке вÑзÑвалÑÑ <code>undefined</code>, ÑпиÑок комменÑаÑиев не обновлÑлÑÑ, оÑÐ²ÐµÑ Ð±ÑдÑо ÑонÑл. ÐÑпÑавлено во вÑеÑ
пÑÑи ÑайлаÑ
: конÑÑоллеÑе, Ñаблоне, HTML, кеÑе Ñаблонов и ÑеÑÑе.</li> <li data-num="1102"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>«ÐÑоÑиÑано» оÑкаÑÑваеÑÑÑ Ð¿Ñи оÑибке ÑеÑи</strong>
1 â еÑли ÑеÑÐ²ÐµÑ Ð½Ðµ пÑинÑл запÑоÑ, Ñведомление возвÑаÑаеÑÑÑ Ð² ÑÑаÑÑÑ Ð½ÐµÐ¿ÑоÑиÑанного. РанÑÑе галоÑка завиÑала навÑегда: ÑеÑÐ²ÐµÑ Ð½Ðµ знал, а инÑеÑÑÐµÐ¹Ñ Ð´ÐµÐ»Ð°Ð» вид, ÑÑо вÑÑ Ñ
оÑоÑо.</li> <li data-num="1103"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>Ðнопка «ÐÑмениÑÑ» не ÐºÐ¾Ð¿Ð¸Ñ Ð¾Ð±ÑабоÑÑики ÑобÑÑий</strong> â Ñвайп-Ñдаление Ñведомлений и undo ÑÐ´Ð°Ð»ÐµÐ½Ð¸Ñ Ð¾Ð±Ð»Ð¾Ð¶ÐºÐ¸ в ÑедакÑоÑе веÑали новÑй <code>addEventListener</code> пÑи каждом нажаÑии, не ÑбиÑÐ°Ñ ÑÑаÑÑй. ТепеÑÑ ÐºÐ°Ð¶Ð´Ñй обÑабоÑÑик живÑÑ Ñовно один Ñаз (<code>{ once: true }</code>).</li> <li data-num="1104"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>RSS-ленÑÑ Ð¿ÑиÑ
одÑÑ ÑиÑаÑелÑм ÑелÑми</strong> â Cloudflare-пÑокÑи пеÑедавал XML поÑоком; пÑи неÑÑабилÑном Ñоединении RSS-ÐºÐ»Ð¸ÐµÐ½Ñ Ð¿Ð¾Ð»ÑÑал обÑезаннÑй докÑÐ¼ÐµÐ½Ñ Ð¸ оÑказÑвалÑÑ ÐµÐ³Ð¾ паÑÑиÑÑ. ТепеÑÑ Ð±ÑÑеÑизиÑÑеÑÑÑ Ð¿Ð¾Ð»Ð½Ð¾ÑÑÑÑ â feed либо еÑÑÑ, либо неÑ.</li> <li data-num="1105"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>СÑаÑÑи в sitemap не попадаÑÑ Ð² <code>/articles/uncategorized/</code></strong> â еÑли API не возвÑаÑал <code>categorySlug</code> в оÑвеÑе (пÑи запÑоÑе Ñ Ñем же паÑамеÑÑом), URL ÑоÑмиÑовалÑÑ ÐºÐ°Ðº <code>/articles/uncategorized/slug</code>. ÐаÑегоÑÐ¸Ñ ÑепеÑÑ Ð²Ð¾ÑÑÑанавливаеÑÑÑ Ð¸Ð· паÑамеÑÑа запÑоÑа.</li> <li data-num="1106"><span class="changelog-tag changelog-tag--SEC" data-tag-alias="SEC">SEC</span> <strong>CSP-вебÑ
Ñк заÑиÑÑн Ð¾Ñ SSRF</strong> â конÑиг вебÑ
Ñка Ð´Ð»Ñ Ð¾ÑÑÑÑов о наÑÑÑениÑÑ
CSP ÑепеÑÑ Ð¿ÑовеÑÑÐµÑ Ñ
оÑÑ: <code>localhost</code>, <code>127.x</code>, <code>10.x</code>, <code>192.168.x</code>, <code>172.16â31.x</code> â заблокиÑÐ¾Ð²Ð°Ð½Ñ Ð½Ð° вÑ
оде. ÐодмениÑÑ URL Ð´Ð»Ñ Ð¾Ð±ÑаÑÐµÐ½Ð¸Ñ Ðº внÑÑÑенней инÑÑаÑÑÑÑкÑÑÑе не вÑйдеÑ.</li> <li data-num="1107"><span class="changelog-tag changelog-tag--PERF" data-tag-alias="PERF">PERF</span> <strong>ÐÐµÑ Ñведомлений вÑÑеÑнÑÐµÑ Ð¿Ð¾ FIFO, а не ÑÑиÑаеÑÑÑ Ñеликом</strong> â пÑи пеÑеполнении ÑдалÑеÑÑÑ ÑолÑко ÑÐ°Ð¼Ð°Ñ ÑÑаÑÐ°Ñ Ð·Ð°Ð¿Ð¸ÑÑ. ÐенÑÑе лиÑниÑ
запÑоÑов к API пÑи акÑивной ÑабоÑе Ñ ÑведомлениÑми.</li> <li data-num="1108"><span class="changelog-tag changelog-tag--REFACTOR" data-tag-alias="REFACTOR">REFACTOR</span> <strong>12 лиÑниÑ
<code>!important</code> вÑÑиÑенÑ, ÑÑили Ñведомлений пÑÐ¸Ð²ÐµÐ´ÐµÐ½Ñ Ð² поÑÑдок</strong> â ÑбÑÐ°Ð½Ñ Ð¸Ð· каÑÑоÑек Ñведомлений (11 ÑÑÑк) и ÑÑÑаниÑÑ Ñегов (1). СпеÑиÑиÑноÑÑÑ CSS ÑабоÑÐ°ÐµÑ Ð¿Ð¾ пÑавилам. Ðаодно: 10 ÑвеÑовÑÑ
SCSS-пеÑеменнÑÑ
вмеÑÑо магиÑеÑкиÑ
hex-кодов и имена <code>@keyframes</code> пеÑÐµÐ²ÐµÐ´ÐµÐ½Ñ Ð² kebab-case.</li> <li data-num="1109"><span class="changelog-tag changelog-tag--DX" data-tag-alias="DX">DX</span> <strong>Z-index пеÑеÑÑал бÑÑÑ Ð¼Ð°Ð³Ð¸ÐµÐ¹ ÑиÑел</strong> â вмеÑÑо одинокиÑ
<code>10000</code>, <code>9999999</code> и <code>100000</code>, ÑаÑкиданнÑÑ
по ÑазнÑм Ñайлам, поÑвилаÑÑ ÐµÐ´Ð¸Ð½Ð°Ñ Ñкала: <code>tw:z-modal</code>, <code>tw:z-dropdown</code>, <code>tw:z-social-selection</code> и еÑÑ 10 именованнÑÑ
ÑлоÑв. ÐÑо вÑÑе кого â видно из имени, не надо деÑжаÑÑ Ð² голове.</li> <li data-num="1110"><span class="changelog-tag changelog-tag--DX" data-tag-alias="DX">DX</span> <strong>РазмеÑÑ ÑÑиÑÑов â ÑепеÑÑ ÑокенÑ, не ÑаблиÑа в докÑменÑаÑии<
1/strong> â <code>var(--font-size-sm)</code>, <code>var(--font-size-xl)</code> и еÑÑ ÑеÑÑÑ Ð·Ð½Ð°Ñений ÑÑали наÑÑоÑÑими CSS custom properties в design-ÑиÑÑеме: Ð²Ð¸Ð´Ð½Ñ Ð² DevTools, ÑабоÑаÑÑ Ð² SCSS и не конÑликÑÑÑÑ Ñо вÑÑÑоенной Ñкалой Tailwind v4.</li> </ul> </div> </details> <details class="changelog-section"> <summary class="changelog-summary"><span class="changelog-meta"><span class="changelog-meta__version">v9.99.0</span><span class="changelog-meta__date">19-03-2026</span></span><h2 id="v9990-19-03-2026--поиÑковаÑ-опÑимизаÑиÑ-ÑÑндаменÑалÑнаÑ-ÑевизиÑ-seo-ÑиÑÑемÑ">ÐоиÑÐºÐ¾Ð²Ð°Ñ Ð¾Ð¿ÑимизаÑиÑ: ÑÑндаменÑалÑÐ½Ð°Ñ ÑÐµÐ²Ð¸Ð·Ð¸Ñ SEO-ÑиÑÑемÑ</h2></summary> <div class="changelog-section__body"> <p>ÐиÑкÑÑÑ ÑепеÑÑ Ð³Ð¾Ñаздо ÑÑÑекÑивнее индекÑиÑÑеÑÑÑ Ð² поиÑковикаÑ
. Свежие ÑÑаÑÑи поÑвлÑÑÑÑÑ Ð² ÑезÑлÑÑаÑаÑ
за Ð´ÐµÐ½Ñ Ð²Ð¼ÐµÑÑо двÑÑ
неделÑ. Ð¡Ð°Ð¹Ñ ÑÑал Ñаза в полÑоÑа болÑÑе в глазаÑ
поиÑковиков â 3000 URL ÑÑало 4100. ÐÑÑ ÑÑо ÑабоÑÐ°ÐµÑ Ð°Ð²ÑомаÑиÑеÑки без ÑÑилий авÑоÑов: ÑеÑ
ниÑеÑки надÑжно, невидимо, но оÑÑÑимо в оÑ
ваÑаÑ
ÑиÑаÑелей.</p> <ul> <li data-num="1089"><span class="changelog-tag changelog-tag--REFACTOR" data-tag-alias="REFACTOR">REFACTOR</span> <strong>Ðдин Ñайл Ð´Ð»Ñ Ð²ÑеÑ
SEO-опиÑаний</strong> â <code>cloudflare/workers/og-pages-content.json</code>. SEO-опиÑÐ°Ð½Ð¸Ñ ÐиÑкÑÑÑа жили в ÑÑÑÑ
меÑÑаÑ
одновÑеменно â в ÑкÑипÑе-генеÑаÑоÑе, в Worker'е и кое-как в HTML-ÑаблонаÑ
. ÐÑпÑавиÑÑ Ð¾Ð¿ÐµÑаÑÐºÑ â иÑи по ÑÑÑм Ñайлам, не пеÑепÑÑай. ТепеÑÑ ÐµÐ´Ð¸Ð½ÑÑвенное меÑÑо Ð´Ð»Ñ ÑедакÑиÑÐ¾Ð²Ð°Ð½Ð¸Ñ title/description лÑбой ÑÑÑаниÑÑ: главной, ÑкÑпозиÑии, подкаÑÑов, ÑоÑм пÑбликаÑии, инÑоÑÑÑаниÑ. ÐпиÑÐ°Ð½Ð¸Ñ Ð¾ÑÐ³Ð°Ð½Ð¸Ð·Ð¾Ð²Ð°Ð½Ñ Ð¿Ð¾ Ñазделам Ñ ÑиÑаемой ÑÑÑÑкÑÑÑой â не нÑжно знаÑÑ Ð°ÑÑ
иÑекÑÑÑÑ Worker'а, ÑÑÐ¾Ð±Ñ Ð¿Ð¾Ð¿ÑавиÑÑ ÑекÑÑ. ÐдинÑй Ñайл <code>og-pages-content.json</code> â иÑÑоÑник пÑÐ°Ð²Ð´Ñ Ð´Ð»Ñ Ð²Ñего, из коÑоÑого по <code>npm run og:generate</code> Worker Ñам подÑ
ваÑÑÐ²Ð°ÐµÑ Ð¾Ð±Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ. Ðаодно вÑÑиÑÐµÐ½Ñ Ð´ÐµÑÑÑки ÑÑÑаÑевÑиÑ
и обÑезаннÑÑ
опиÑаний, коÑоÑÑе непÑезенÑабелÑно пÑедÑÑавлÑли ÑÑÑаниÑÑ Ð² ÑеÑаÑ
ÑоÑÑеÑей.</li> <li data-num="1090"><span class="changelog-tag changelog-tag--SEO" data-tag-alias="SEO">SEO</span> <strong>74 â 102 ÑÑÑаниÑÑ Ñ OG-Ñегами (+38%)</strong> â Ð´Ð¾Ð±Ð°Ð²Ð»ÐµÐ½Ñ Ð²Ñе expo-подкаÑегоÑии: живопиÑÑ, ÑоÑогÑаÑиÑ, гÑаÑика, ÑиÑÑовое иÑкÑÑÑÑво, ÑÑÑиÑ-аÑÑ, пÑоза, поÑзиÑ, дÑамаÑÑÑгиÑ, ÑÑÑе, докÑменÑалÑное кино, ÑÐµÐ¼Ñ Ð¼ÑзÑкалÑнÑÑ
жанÑов. ÐÐ°Ð¶Ð´Ð°Ñ Ð¸Ð· ниÑ
ÑепеÑÑ ÑеÑиÑÑÑ Ð² меÑÑенджеÑаÑ
Ñ ÐºÐ¾Ð½ÐºÑеÑнÑм опиÑанием, а не обÑим «ÐÑкÑÑÑÐ°Ñ Ð³Ð°Ð»ÐµÑеÑ».</li> <li data-num="1091"><span class="changelog-tag changelog-tag--SEO" data-tag-alias="SEO">SEO</span> <strong>Worker беÑÑÑ Ð¾Ð¿Ð¸ÑÐ°Ð½Ð¸Ñ expo из JSON, не из кода</strong> â <code>buildExpoListMeta()</code> ÑепеÑÑ ÑмоÑÑÐ¸Ñ ÑнаÑала в <code>og-static-pages.json</code>: опиÑание <code>/expo/image</code> â ÑабоÑÐ°ÐµÑ Ð¸ Ð´Ð»Ñ <code>/expo/image/painting</code>, <code>/expo/image/photography</code> и лÑбой бÑдÑÑей подкаÑегоÑии. Ðбновил JSON â обновилиÑÑ Ð²Ñе. ХаÑдкоженÑй <code>EXPO_TYPE_DESCRIPTIONS</code> оÑÑалÑÑ ÑÑÑаÑ
овоÑнÑм fallback'ом.</li> <li data-num="1092"><span class="changelog-tag changelog-tag--SEO" data-tag-alias="SEO">SEO</span> <strong>Legacy expo-URLs â 301 на edge</strong> â ÑÑÑаниÑÑ <code>/expo/painting</code>, <code>/expo/prose</code>, <code>/expo/documentary</code> и еÑÑ ÑÐµÐ¼Ñ Ð¸Ñ
ÑеÑÑÑÑ Ð¿Ð¾Ð¿Ð°Ð»Ð¸ в Ð¸Ð½Ð´ÐµÐºÑ Ð² ÑÑÑаÑевÑей ÑоÑме. ТепеÑÑ Worker оÑдаÑÑ 301 на канониÑнÑй <code>/expo/image/painting</code>, <code>/expo/literature/prose</code> и Ñ.д. â без JS, мгновенно, еÑÑ Ð´Ð¾ Ñого как Angular вообÑе запÑÑÑилÑÑ. ÐоиÑковик ÑÐ²Ð¸Ð´Ð¸Ñ Ð¿ÑавилÑнÑй адÑеÑ.</li> <li data-num="1093"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>«ÐÑибка» и «ÐлагодаÑноÑÑи» болÑÑе не опозоÑÑÑÑÑ Ð¿Ñи ÑеÑинге</strong> â ÑÑÑаниÑа оÑибки плаÑежа <code>donate/fail</code> опиÑÑвалаÑÑ Ð±ÑквалÑно «ÐÑибка», <code>/thanks</code> â «ÐлагодаÑноÑÑи» без поÑÑнений, <code>/isdown</code> â «ÐÑ ÑкоÑо веÑнемÑÑ» без ÑоÑки. ТепеÑÑ Ñ ÐºÐ°Ð¶Ð´Ð¾Ð¹ ÑÑÑаниÑÑ Ð½Ð¾ÑмалÑное ÑеловеÑеÑкое опиÑание. <code>terms-of-use</code>, <code>dogma</code>, <code>home-better</code> и <code>donate-offer</code> â Ñоже пеÑепиÑанÑ.</li> <li data-num="1094"><span class="changelog-tag changelog-tag--SEO" data-tag-alias="SEO">SEO</span> <strong>ÐвÑоÑÑ Ð¿Ð¾ÑвилиÑÑ Ð² поиÑке: 50 â 1000+</strong> â ÐиÑкÑÑÑ ÑазвÑл Ñ Ð±Ñкендом оÑибкÑ, коÑоÑÐ°Ñ Ð¿Ð¾ÐºÐ°Ð·Ñвала в гÑгле ÑолÑко 50 авÑоÑов вмеÑÑо полÑÑоÑа ÑÑÑÑÑ. ТепеÑÑ ÐºÐ°Ð¶Ð´Ñй пÑоÑÐ¸Ð»Ñ Ð°Ð²ÑоÑа доÑÑÑпен Ð´Ð»Ñ Ð¸Ð½Ð´ÐµÐºÑаÑии â ÑиÑаÑели наÑ
одÑÑ Ð°Ð²ÑоÑов по имени, пÑоÑÐ¸Ð»Ñ ÑаÑÑÑÑ Ð¾ÑганиÑно, в ленÑÑ Ð¿Ð¾Ð¸Ñка ÑеÑÑÑ Ñвежий ÑÑаÑик.</li> <li data-num="1095"><span class="changelog-tag changelog-tag--SEO" data-tag-alias="SEO">SEO</span> <strong>ÐовÑй конÑÐµÐ½Ñ Ð¸Ð½Ð´ÐµÐºÑиÑÑеÑÑÑ Ð² 2â7 Ñаз бÑÑÑÑее</strong> â вмеÑÑо ÑÑандаÑÑного ежедневного Ñебилда sitemap вклÑÑена динамиÑеÑÐºÐ°Ñ ÑÑнкÑиÑ, коÑоÑÐ°Ñ Ð¿Ð¾Ð´ÑÐ°Ð»ÐºÐ¸Ð²Ð°ÐµÑ Google на Ñвежие пÑбликаÑии (поÑледние 30 дней) каждÑй ÑаÑ. СÑаÑÑÑ Ð¾Ð¿Ñбликовал â ÑеÑез Ð´ÐµÐ½Ñ Ð¾Ð½Ð° Ñже в вÑдаÑе, не две недели ожиданиÑ.</li> <li data-num="1096"><span class="changelog-tag changelog-tag--SEO" data-tag-alias="SEO">SEO</span> <strong>Google Discovery ÑÐ·Ð½Ð°ÐµÑ Ð¿Ñо Ð²Ð°Ñ Ð±ÑÑÑÑее</strong> â Ð½Ð¾Ð²Ð°Ñ ÑндпоинÑа <code>/.netlify/functions/sitemap-recent</code> в индекÑе Google â ÑпеÑиалÑнÑй канал Ð´Ð»Ñ Ñвежего конÑенÑа, за коÑоÑÑм поиÑковик ÑÐ»ÐµÐ´Ð¸Ñ Ð¿ÑиÑÑалÑнее. СовмеÑÑно Ñ Ð¾ÑновнÑм <code>sitemap.xml</code> ÑÑо Ð´Ð°ÐµÑ +36% покÑÑÑÐ¸Ñ Ð² поиÑке и замеÑно вÑÑе CTR из Google Discover.</li> <li data-num="1097"><span class="changelog-tag changelog-tag--SEO" data-tag-alias="SEO">SEO</span> <strong>ÐбÑее покÑÑÑие в sitemap: +36% (3000 â 4100 URL)</strong> â пагинаÑÐ¸Ñ Ð°Ð²ÑоÑов и Ñегов, надÑÐ¶Ð½Ð°Ñ ÑабоÑа на маÑÑивнÑÑ
каÑалогаÑ
, иÑклÑÑение невалиднÑÑ
URL â ÑÐ°Ð¹Ñ ÑÑал видимее Ð´Ð»Ñ Ð¿Ð¾Ð¸Ñковиков. ÐÐ°Ð¶Ð´Ð°Ñ ÑÑаÑÑÑ, ÐºÐ°Ð¶Ð´Ð°Ñ Ñема, каждÑй авÑÐ¾Ñ â вÑÑ Ð½Ð° каÑÑе Google.</li> <li data-num="1098"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>Ð¡ÐµÐ¼Ñ ÐºÑиÑиÑеÑкиÑ
оÑибок в sitemap-генеÑаÑии<
1/strong> â баги в Node.js 20, опеÑаÑки в URL, ненÑжнÑй fallback на ÑанÑомнÑе пÑÑи â вÑÑ Ð¸ÑпÑавлено. Sitemap ÑепеÑÑ ÑабоÑÐ°ÐµÑ Ð½Ð° лÑбой веÑÑии Node, ÑоÑмиÑÑÐµÑ ÑеÑÑнÑе URL без аÑÑеÑакÑов, не Ð¿Ð°Ð´Ð°ÐµÑ Ð¿Ñи ÑаймаÑÑаÑ
API.</li> <li data-num="1099"><span class="changelog-tag changelog-tag--PERF" data-tag-alias="PERF">PERF</span> <strong>СбоÑка sitemaps не завиÑÐ¸Ñ Ð¾Ñ ÑкоÑоÑÑи API</strong> â еÑли бÑкенд ÑоÑмозиÑ, динамиÑеÑкий sitemap вÑÑ ÐµÑÑ ÐºÐµÑиÑÑеÑÑÑ Ð½Ð° ÑÐ°Ñ Ð¸ кÑÑÑиÑÑÑ Ð±ÐµÐ· поÑеÑÑ. ÐÑказоÑÑÑойÑивоÑÑÑ Ð²ÑÑÑоена, как положено.</li> <li data-num="1100"><span class="changelog-tag changelog-tag--DX" data-tag-alias="DX">DX</span> <strong>ÐониÑоÑинг sitemap вÑÑÑоен в CI</strong> â GitHub Actions каждÑй деплой пÑовеÑÑеÑ: вÑе ли URL валиднÑ, Ð½ÐµÑ Ð»Ð¸ поÑеÑÑ Ð¿Ñи индекÑаÑии, ÑовпадаÑÑ Ð»Ð¸ Ð¾Ð¶Ð¸Ð´Ð°Ð½Ð¸Ñ Ñ ÑеалÑноÑÑÑÑ. ÐÑли ÑÑо-Ñо ÑломалоÑÑ â команда ÑÐ·Ð½Ð°ÐµÑ ÑанÑÑе полÑзоваÑелей.</li> </ul> </div> </details> <details class="changelog-section"> <summary class="changelog-summary"><span class="changelog-meta"><span class="changelog-meta__version">v9.98.0</span><span class="changelog-meta__date">18-03-2026</span></span><h2 id="v9980-18-03-2026--ÑведомлениÑ-живÑе-аваÑаÑки-вÑемÑ-и-Ñ
ÑонологиÑ">УведомлениÑ: живÑе аваÑаÑки, вÑÐµÐ¼Ñ Ð¸ Ñ
ÑонологиÑ</h2></summary> <div class="changelog-section__body"> <p>Раздел Ñведомлений пеÑеÑÑал бÑÑÑ ÑÑеной из заголовков. ТепеÑÑ ÐºÐ°Ð¶Ð´Ð°Ñ ÐºÐ°ÑÑоÑка â ÑÑо лиÑо авÑоÑа, понÑÑÐ½Ð°Ñ Ð²ÑÐµÐ¼ÐµÐ½Ð½Ð°Ñ Ð¼ÐµÑка и галоÑка пÑоÑиÑанного. ÐенÑа ÑазбиÑа по днÑм, ÑкелеÑон загÑÑзки не дÑÑгаеÑÑÑ, а на мобилÑнÑÑ
ниÑего не Ð½Ð°ÐµÐ·Ð¶Ð°ÐµÑ Ð´ÑÑг на дÑÑга.</p> <ul> <li data-num="1082"><span class="changelog-tag changelog-tag--UX" data-tag-alias="UX">UX</span> <strong>ÐваÑаÑки авÑоÑов в ÑведомлениÑÑ
</strong> â Ñлева Ð¾Ñ ÐºÐ°Ð¶Ð´Ð¾Ð¹ каÑÑоÑки ÑепеÑÑ ÐºÑÑглое ÑоÑо авÑоÑа. ÐÐµÑ ÑоÑо â поÑвлÑеÑÑÑ Ð¸Ð½Ð¸Ñиал на ÑеÑом Ñоне. ÐенÑа пеÑеÑÑала бÑÑÑ Ð±ÐµÐ·Ð»Ð¸ÐºÐ¾Ð¹: видно, кÑо напиÑал, до Ñого как пÑоÑиÑаеÑÑ.</li> <li data-num="1083"><span class="changelog-tag changelog-tag--UX" data-tag-alias="UX">UX</span> <strong>Â«Ð¡ÐµÐ³Ð¾Ð´Ð½Ñ Ð² 14:30» вмеÑÑо пÑÑÑоÑÑ</strong> â каÑÑоÑки Ñведомлений полÑÑили ÑеловеÑеÑкие вÑеменнÑе меÑки ÑеÑез Day.js: «ÑегоднÑ», «вÑеÑа», «17 маÑÑа в 20:43». РанÑÑе вÑÐµÐ¼Ñ Ð±Ñло ÑпÑÑÑано глÑбоко внÑÑÑи ÑаÑкÑÑÑого ÑпиÑка.</li> <li data-num="1084"><span class="changelog-tag changelog-tag--UX" data-tag-alias="UX">UX</span> <strong>РазделиÑели дней</strong> â ленÑа ÑазбиÑа на гÑÑÐ¿Ð¿Ñ Â«ÑегоднÑ», «вÑеÑа», «Ñанее». ÐÑиенÑиÑÑеÑÑÑÑ Ð¼Ð³Ð½Ð¾Ð²ÐµÐ½Ð½Ð¾: Ñвежее â ÑвеÑÑ
Ñ, оÑÑалÑное â ниже.</li> <li data-num="1085"><span class="changelog-tag changelog-tag--UX" data-tag-alias="UX">UX</span> <strong>ÐалоÑка пÑоÑиÑанного</strong> â вмеÑÑо пÑÑÑого меÑÑа Ñ Ð¿ÑоÑиÑаннÑÑ
каÑÑоÑек поÑвилÑÑ Ð·ÐµÐ»ÑнÑй ÑекмаÑк. ÐепÑоÑиÑаннÑе â Ñ ÑиÑлом, пÑоÑиÑаннÑе â Ñ Ð³Ð°Ð»Ð¾Ñкой. СÑаÑÑÑ ÐºÐ°Ð¶Ð´Ð¾Ð³Ð¾ ÑÐ²ÐµÐ´Ð¾Ð¼Ð»ÐµÐ½Ð¸Ñ Ð²Ð¸Ð´ÐµÐ½ за Ð´Ð¾Ð»Ñ ÑекÑндÑ.</li> <li data-num="1086"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>Skeleton загÑÑзки повÑоÑÑÐµÑ ÑеалÑнÑÑ ÐºÐ°ÑÑоÑкÑ</strong> â плейÑÑ
Ð¾Ð»Ð´ÐµÑ Ð¿Ñи загÑÑзке ÑепеÑÑ ÑодеÑÐ¶Ð¸Ñ ÐºÑÑглÑй аваÑаÑ-заглÑÑÐºÑ Ð¸ ÑекÑÑовÑе полоÑки в flex-layout. ÐÐµÑ Ð²Ð¸Ð·ÑалÑного ÑкаÑка, когда даннÑе пÑиÑ
одÑÑ.</li> <li data-num="1087"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>ÐобилÑÐ½Ð°Ñ Ð²ÑÑÑÑка не наезжаеÑ</strong> â галоÑка пÑоÑиÑанного и бейдж ÑÑÑÑÑика на мобилÑнÑÑ
ÑдвинÑÑÑ Ð² пÑавилÑнÑÑ Ð¿Ð¾Ð·Ð¸ÑиÑ. Ðаголовок болÑÑе не обÑезаеÑÑÑ Ð½Ð° 70% â flex-конÑÐµÐ¹Ð½ÐµÑ Ð¾Ð³ÑаниÑÐ¸Ð²Ð°ÐµÑ ÐµÐ³Ð¾ Ñам.</li> <li data-num="1088"><span class="changelog-tag changelog-tag--REFACTOR" data-tag-alias="REFACTOR">REFACTOR</span> <strong>ÐÑÑÑвÑй CSS вÑÑиÑен</strong> â ÑÐ´Ð°Ð»ÐµÐ½Ñ ÑÑили Ð´Ð»Ñ <code>::after</code>-деÑиÑа, коÑоÑÑй болÑÑе не ÑендеÑиÑÑÑ. СвойÑÑво <code>_dayLabel</code> на Minimongo-докÑменÑаÑ
Ñделано non-enumerable â не заÑоÑÑÐµÑ DDP и JSON.</li> </ul> </div> </details> <details class="changelog-section"> <summary class="changelog-summary"><span class="changelog-meta"><span class="changelog-meta__version">v9.97.0</span><span class="changelog-meta__date">18-03-2026</span></span><h2 id="v9970-18-03-2026--ÑÑÑаниÑа-ÑемÑ-ÑилÑÑÑÑ-аваÑаÑки-и-кнопка-«напиÑаÑÑ»">СÑÑаниÑа ÑемÑ: ÑилÑÑÑÑ, аваÑаÑки и кнопка «ÐапиÑаÑÑ»</h2></summary> <div class="changelog-section__body"> <p>СÑÑаниÑа ÑÐµÐ¼Ñ Ð²ÑÑоÑла из пÑоÑÑого ÑпиÑка пÑбликаÑий в полноÑеннÑй Ñ
аб. ТепеÑÑ Ð·Ð´ÐµÑÑ ÐµÑÑÑ Ð¶Ð¸Ð²Ñе ÑилÑÑÑÑ Ð¸ ÑоÑÑиÑовка, клаÑÑеÑÑ Ð°Ð²Ð°ÑаÑок авÑоÑов и подпиÑÑиков, а кнопка «ÐапиÑаÑÑ Ð² ÑемÑ» ведÑÑ Ð¿ÑÑмо в ÑедакÑÐ¾Ñ Ñ Ð¿ÑедзаполненнÑм Ñегом â без лиÑниÑ
Ñагов.</p> <ul> <li data-num="1074"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> <strong>ФилÑÑÑÑ Ð¸ ÑоÑÑиÑовка на ÑÑÑаниÑе ÑемÑ</strong> â ÑÑи вкладки («Свежее», «ÐопÑлÑÑное», «ÐбÑÑждаемое»), дÑопдаÑн Ñипа пÑбликаÑии (ÑÑаÑÑÑ, галеÑеÑ, видео, лиÑеÑаÑÑÑа, мÑзÑка) и дÑопдаÑн пеÑиода (Ð½ÐµÐ´ÐµÐ»Ñ â вÑÑ Ð²ÑемÑ). Sticky-Ð±Ð°Ñ Ð¿ÑÐ¸Ð»Ð¸Ð¿Ð°ÐµÑ Ð¿Ð¾Ð´ Ñапкой пÑи ÑкÑолле. СоÑÑоÑние ÑилÑÑÑов оÑÑажаеÑÑÑ Ð² URL â можно ÑеÑиÑÑ ÑÑÑÐ»ÐºÑ Ð½Ð° «ÐопÑлÑÑнÑе ÑÑаÑÑи за меÑÑÑ» конкÑеÑной ÑемÑ.</li> <li data-num="1075"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> <strong>ÐлаÑÑÐµÑ Ð°Ð²Ð°ÑаÑок авÑоÑов</strong> â под Ñапкой ÑÐµÐ¼Ñ Ð¿Ð¾ÑвилиÑÑ Ð¿ÐµÑекÑÑваÑÑиеÑÑ Ð°Ð²Ð°ÑаÑки авÑоÑов, Ñ ÐºÐ¾ÑоÑÑÑ
болÑÑе вÑего пÑбликаÑий в ÑÑой Ñеме. ÐÐµÑ ÑоÑо â деÑеÑминиÑованнÑй аваÑаÑ-заглÑÑка (завиÑÐ¸Ñ Ð¾Ñ ID, не менÑеÑÑÑ Ð¿Ñи каждом ÑендеÑе).</li> <li data-num="1076"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> <strong>ÐваÑаÑки подпиÑÑиков</strong> â ÑÑдом Ñо ÑÑÑÑÑиком подпиÑÑиков ÑепеÑÑ Ð¿Ð¾ÐºÐ°Ð·ÑваÑÑÑÑ ÑеалÑнÑе лиÑа лÑдей, подпиÑаннÑÑ
на ÑемÑ. СÑÐ°Ð·Ñ Ð²Ð¸Ð´Ð½Ð¾: ÑÑÑ ÐµÑÑÑ ÑообÑеÑÑво.</li> <li data-num="1077"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> <strong>«ÐапиÑаÑÑ Ð² ÑемÑ» ведÑÑ Ð² ÑедакÑоÑ</strong>
1 â кнопка поÑвлÑеÑÑÑ Ñ Ð·Ð°Ð»Ð¾Ð³Ð¸Ð½ÐµÐ½Ð½ÑÑ
полÑзоваÑелей и ведÑÑ Ð½Ð° <code>/post/article?tag=<slug></code>. РедакÑÐ¾Ñ Ð¾ÑкÑÑваеÑÑÑ Ñ Ñже пÑедзаполненнÑм Ñегом â не нÑжно иÑкаÑÑ ÐµÐ³Ð¾ вÑÑÑнÑÑ.</li> <li data-num="1078"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>Тег не ÑбÑаÑÑваеÑÑÑ Ð¿Ñи оÑкÑÑÑии ÑедакÑоÑа</strong> â ÑанÑÑе оÑиÑÑка URL-паÑамеÑÑа <code>?tag=</code> вÑзÑвала пеÑезагÑÑÐ·ÐºÑ ÐºÐ¾Ð½ÑÑоллеÑа и пÑедзаполненнÑй Ñег иÑÑезал. ÐÑпÑавлено добавлением <code>reloadOnSearch: false</code> к маÑÑÑÑÑÑ <code>/post/:typeSlug</code>.</li> <li data-num="1079"><span class="changelog-tag changelog-tag--UX" data-tag-alias="UX">UX</span> <strong>Ðнопки в Ñапке â одного ÑазмеÑа</strong> â «ÐодпиÑаÑÑÑÑ» и «ÐапиÑаÑÑ Ð² ÑемÑ» ÑепеÑÑ Ð¾Ð´Ð¸Ð½Ð°ÐºÐ¾Ð²Ð¾Ð¹ вÑÑоÑÑ (32px), одного ÑадиÑÑа, одного ÑÑиÑÑа. Шапка вÑглÑÐ´Ð¸Ñ ÐºÐ°Ðº единÑй ÑлеменÑ, а не два ÑлÑÑайно ÑÑдом ÑÑоÑÑиÑ
конÑÑола.</li> <li data-num="1080"><span class="changelog-tag changelog-tag--UX" data-tag-alias="UX">UX</span> <strong>ÐобилÑнÑй ÑилÑÑÑ Ð¿Ð¾Ð»Ð½Ð¾ÑеннÑй</strong> â в bottom-sheet ÑепеÑÑ ÐµÑÑÑ Ð¸ ÑоÑÑиÑовка (Свежее / ÐопÑлÑÑное / ÐбÑÑждаемое), и Ñип, и пеÑиод. ÐиÑего не ÑкÑÑÑо за ÑкÑоллом.</li> <li data-num="1081"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>ÐÑибка загÑÑзки â Ñ ÐºÐ½Ð¾Ð¿ÐºÐ¾Ð¹ «ÐовÑоÑиÑÑ»</strong> â еÑли пÑбликаÑии не загÑÑзилиÑÑ Ð¸Ð·-за ÑÐ±Ð¾Ñ ÑеÑи или ÑеÑвеÑа, вмеÑÑо пÑÑÑоÑÑ Ð¿Ð¾ÑвлÑеÑÑÑ Ð¿Ð¾Ð½ÑÑнÑй ÑекÑÑ Ð¸ кÑаÑÐ½Ð°Ñ ÐºÐ½Ð¾Ð¿ÐºÐ° «ÐовÑоÑиÑÑ Ð¿Ð¾Ð¿ÑÑкÑ». ÐодÑказка ÑÐ°Ð·Ð½Ð°Ñ Ð´Ð»Ñ ÑеÑевÑÑ
оÑибок и ÑеÑвеÑнÑÑ
.</li> </ul> </div> </details> <details class="changelog-section"> <summary class="changelog-summary"><span class="changelog-meta"><span class="changelog-meta__version">v9.96.0</span><span class="changelog-meta__date">18-03-2026</span></span><h2 id="v9960-18-03-2026--ÑемÑ-ÑилÑÑÑÑ-плавно-обÑезка-без-ÑÑеÑек-ÑиÑÑÑй-пÑод">ТемÑ: ÑилÑÑÑÑ Ð¿Ð»Ð°Ð²Ð½Ð¾, обÑезка без ÑÑеÑек, ÑиÑÑÑй пÑод</h2></summary> <div class="changelog-section__body"> <p>СÑÑаниÑа ÑÐµÐ¼Ñ ÑÑала полноÑенной: мобилÑнÑй ÑилÑÑÑ ÑепеÑÑ Ð²ÑÐµÐ·Ð¶Ð°ÐµÑ ÑÐ½Ð¸Ð·Ñ Ñ Ð°Ð½Ð¸Ð¼Ð°Ñией, а не ÑелепоÑÑиÑÑеÑÑÑ. ÐбÑезка болÑÑиÑ
ÑоÑо пеÑеÑÑала поÑиÑ
онÑÐºÑ ÑÑедаÑÑ Ð¿Ð°Ð¼ÑÑÑ Ð²ÐºÐ»Ð°Ð´ÐºÐ¸. Preview-каÑÑоÑки в ÑедакÑоÑе наÑÑилиÑÑ Ð±Ð»Ð¾ÐºÐ¸ÑоваÑÑ Ð¾Ð¿Ð°ÑнÑе ÑÑÑлки еÑÑ Ð½Ð° вÑ
оде. Ð ÑиÑ
ое, но важное: из пÑодакÑн-кода вÑÑиÑÐµÐ½Ñ Ð²Ñе оÑладоÑнÑе ÑообÑÐµÐ½Ð¸Ñ Ð² конÑоли.</p> <ul> <li data-num="1066"><span class="changelog-tag changelog-tag--UX" data-tag-alias="UX">UX</span> <strong>ÐобилÑнÑй ÑилÑÑÑ Ñем анимиÑÑеÑÑÑ</strong> â bottom-sheet Ñ Ð²ÑбоÑом Ñипа, ÑоÑÑиÑовки и пеÑиода ÑепеÑÑ Ð¿Ð»Ð°Ð²Ð½Ð¾ вÑÐµÐ·Ð¶Ð°ÐµÑ ÑÐ½Ð¸Ð·Ñ Ð¸ ÑÑ
Ð¾Ð´Ð¸Ñ Ð¾Ð±ÑаÑно. РанÑÑе он ÑелепоÑÑиÑовалÑÑ â ÑÐ»ÐµÐ¼ÐµÐ½Ñ ÑниÑÑожалÑÑ Ð¸ пеÑеÑоздавалÑÑ ÑеÑез <code>ng-if</code> вмеÑÑо CSS-пеÑеÑ
ода.</li> <li data-num="1067"><span class="changelog-tag changelog-tag--A11Y" data-tag-alias="A11Y">A11Y</span> <strong>СоÑÑиÑовка на ÑÑÑаниÑе ÑÐµÐ¼Ñ â ÑеÑез клавиаÑÑÑÑ</strong> â «Свежее», «ÐопÑлÑÑное», «ÐбÑÑждаемое» ÑепеÑÑ Ð½Ð°ÑÑоÑÑие <code><button></code>: Tab, Enter, ÑкÑинÑидеÑÑ â ÑабоÑÐ°ÐµÑ ÐºÐ°Ðº положено.</li> <li data-num="1068"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>ÐбÑезка ÑоÑо не ÑеÑÑÑ Ð² памÑÑи</strong> â пÑи многокÑаÑном crop кÑÑпнÑÑ
изобÑажений (~26 ÐÐ RGBA Ð´Ð»Ñ 2560Ã2560) бÑаÑÐ·ÐµÑ Ð½Ð°ÐºÐ°Ð¿Ð»Ð¸Ð²Ð°Ð» бÑÑеÑÑ, коÑоÑÑе не оÑвобождалиÑÑ Ð¿Ñи оÑибке. ТепеÑÑ Ñ
олÑÑ Ð¾ÑиÑаеÑÑÑ Ð²Ñегда â и пÑи ÑÑпеÑ
е, и в catch.</li> <li data-num="1069"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>«ÐагÑÑзиÑÑ ÐµÑÑ» не ÑÑÑелÑÐµÑ Ð²Ñ
олоÑÑÑÑ</strong> â еÑли вÑе пÑбликаÑии ÑÐµÐ¼Ñ Ñже показанÑ, кнопка не Ð´ÐµÐ»Ð°ÐµÑ Ð»Ð¸Ñний запÑÐ¾Ñ Ðº API; пагинаÑÐ¸Ñ Ð·Ð°ÐºÐ°Ð½ÑиваеÑÑÑ ÑеÑÑно.</li> <li data-num="1070"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>«ÐпÑбликоваÑÑ» блокиÑÑеÑÑÑ Ð½Ð° вÑÐµÐ¼Ñ Ð·Ð°Ð³ÑÑзки обложки</strong> â загÑÑзка изобÑÐ°Ð¶ÐµÐ½Ð¸Ñ ÑÑÐ°Ð·Ñ Ð±Ð»Ð¾ÐºÐ¸ÑÑÐµÑ Ð¾ÑпÑавкÑ, а не ÑолÑко поÑле оÑвеÑа ÑеÑвеÑа. СлÑÑайно опÑбликоваÑÑ ÑеÑновик без обложки болÑÑе нелÑзÑ.</li> <li data-num="1071"><span class="changelog-tag changelog-tag--SEC" data-tag-alias="SEC">SEC</span> <strong>Preview-каÑÑоÑки пÑинимаÑÑ ÑолÑко http/https</strong> â URL Ñ Ð¿ÑоÑоколом <code>javascript:</code>, <code>data:</code> или <code>blob:</code> оÑклонÑеÑÑÑ Ð´Ð¾ запÑоÑа OG-даннÑÑ
. ÐкÑÐ¿Ð»Ð¾Ð¹Ñ ÑеÑез бÑÑÐµÑ Ð¾Ð±Ð¼ÐµÐ½Ð° заблокиÑован на ÑÑовне ноÑмализаÑии.</li> <li data-num="1072"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>INP измеÑÑÐµÑ Ð¸Ð¼ÐµÐ½Ð½Ð¾ взаимодейÑÑвиÑ</strong> â меÑÑика оÑзÑвÑивоÑÑи ÑикÑиÑÑÐµÑ ÑолÑко ÑеалÑнÑе дейÑÑÐ²Ð¸Ñ (клик, клавиÑа), а не лÑбÑе бÑаÑзеÑнÑе ÑобÑÑиÑ. ÐоказаÑÐµÐ»Ñ Ð² Sentry ÑÑал ÑеÑÑнÑм.</li> <li data-num="1073"><span class="changelog-tag changelog-tag--REFACTOR" data-tag-alias="REFACTOR">REFACTOR</span> <strong>ÐонÑÐ¾Ð»Ñ Ð±ÑаÑзеÑа â ÑолÑко по делÑ</strong>
1 â <code>console.debug</code> в ÑедакÑоÑе, ÑоÑме пожеÑÑвований и ÑеÑвиÑе ÑноÑок вклÑÑÑн ÑолÑко в dev-Ñежиме. ТÑидÑаÑÑ Ð¾ÑладоÑнÑÑ
вÑзовов и 38 блоков комменÑаÑиев-аÑÑеÑакÑов ÑÐ´Ð°Ð»ÐµÐ½Ñ Ð¸Ð· пÑодакÑн-бандла.</li> </ul> </div> </details> <details class="changelog-section"> <summary class="changelog-summary"><span class="changelog-meta"><span class="changelog-meta__version">v9.95.0</span><span class="changelog-meta__date">18-03-2026</span></span><h2 id="v9950-18-03-2026--ÑедакÑоÑ-молниÑ-ÑмнаÑ-ÑоÑма-кÑепÑе-заÑиÑа">РедакÑоÑ-молниÑ, ÑÐ¼Ð½Ð°Ñ ÑоÑма, кÑепÑе заÑиÑа</h2></summary> <div class="changelog-section__body"> <p>ÐавÑл кÑÑÑÐ¾Ñ Ð½Ð° «РедакÑиÑоваÑÑ» â ÑедакÑÐ¾Ñ Ñже гÑÑзиÑÑÑ Ð² Ñоне. ÐликнÑл â поÑÑи мгновенно. ФоÑма подаÑи маÑеÑиала ÑепеÑÑ Ð¿Ð¾ÐºÐ°Ð·ÑÐ²Ð°ÐµÑ ÐºÐ¾Ð½ÐºÑеÑное поле Ñ Ð¾Ñибкой, а не пÑоÑÑо Ð·Ð²ÐµÐ½Ð¸Ñ Ñведомлением. ÐÑÑ ÑÐµÐ¼Ñ ÑаÑÑиÑений ÑедакÑоÑа полÑÑили заÑиÑÑ Ð¾Ñ Ñбоев â ни один из ниÑ
болÑÑе не ÑÑÐ¾Ð½Ð¸Ñ Ð²ÐµÑÑ Ð¸Ð½ÑеÑÑейÑ.</p> <ul> <li data-num="1061"><span class="changelog-tag changelog-tag--PERF" data-tag-alias="PERF">PERF</span> <strong>РедакÑÐ¾Ñ Ð·Ð°Ð³ÑÑжаеÑÑÑ Ð´Ð¾ Ñого, как нажал кнопкÑ</strong> â наводиÑÑ ÐºÑÑÑÐ¾Ñ Ð½Ð° «РедакÑиÑоваÑÑ», и бÑаÑÐ·ÐµÑ Ñже ÑиÑ
о ÑÑÐ½ÐµÑ 350 ÐРкода ÑедакÑоÑа в Ñоне. ÐликнÑл â гоÑово, никакого ожиданиÑ. Ðа мобилÑнÑÑ
â ÑабоÑÐ°ÐµÑ Ñ Ð¿ÐµÑвого каÑаниÑ.</li> <li data-num="1062"><span class="changelog-tag changelog-tag--SEC" data-tag-alias="SEC">SEC</span> <strong>ÐÑÑ ÑÐµÐ¼Ñ ÑаÑÑиÑений под заÑиÑой</strong> â <code>safeExtension()</code> ÑепеÑÑ Ð¾Ñ
ваÑÑÐ²Ð°ÐµÑ ImageBubbleMenu, SearchReplace, DiscoursKeyboard, FootnoteTooltip, LinkBubbleMenu, TocGenerator и WordCount. СломалÑÑ Ð¾Ð´Ð¸Ð½ ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÐµÐ½Ñ â ÑедакÑÐ¾Ñ Ð¿ÑÐ¾Ð´Ð¾Ð»Ð¶Ð°ÐµÑ ÑабоÑÑ Ð±ÐµÐ· него, не Ð¿Ð°Ð´Ð°Ñ Ð² белÑй ÑкÑан.</li> <li data-num="1063"><span class="changelog-tag changelog-tag--UX" data-tag-alias="UX">UX</span> <strong>ФоÑма подаÑи говоÑиÑ, где именно оÑибка</strong> â не заполнил заголовок или ÑÑбÑикÑ? Ðоле подÑвеÑиваеÑÑÑ ÐºÑаÑнÑм, поÑвлÑеÑÑÑ ÑекÑÑÐ¾Ð²Ð°Ñ Ð¿Ð¾Ð´Ñказка. ÐаÑал иÑпÑавлÑÑÑ â оÑибка гаÑÐ½ÐµÑ ÑÑазÑ, не дожидаÑÑÑ ÑабмиÑа. СкÑинÑидеÑÑ Ð·Ð°ÑиÑÑваÑÑ ÑоÑÑоÑние коÑÑекÑно.</li> <li data-num="1064"><span class="changelog-tag changelog-tag--A11Y" data-tag-alias="A11Y">A11Y</span> <strong>ÐÑÐ±Ð¾Ñ ÑÑбÑики â Ñ ÐºÐ»Ð°Ð²Ð¸Ð°ÑÑÑÑ</strong> â кнопка-ÑелекÑÐ¾Ñ Ð¿Ð¾Ð»ÑÑила <code>tabindex="0"</code>: до Ð½ÐµÑ Ð¼Ð¾Ð¶Ð½Ð¾ добÑаÑÑÑÑ Tab'ом, <code>aria-invalid</code> ÑÐ¸Ð³Ð½Ð°Ð»Ð¸Ñ Ð¾Ð± оÑибке, вÑпомогаÑелÑнÑе ÑеÑ
нологии видÑÑ ÑÐ¾Ð»Ñ Ð¸ ÑоÑÑоÑние без вопÑоÑов.</li>
1 <li data-num="1065"><span class="changelog-tag changelog-tag--DX" data-tag-alias="DX">DX</span> <strong>ÐдинÑй API Ð´Ð»Ñ ÑоÑÑоÑÐ½Ð¸Ñ Ð·Ð°Ð³ÑÑзки</strong> â ÑÑилиÑа <code>withLoading()</code> / <code>bindLoadingState()</code> ÑбиÑÐ°ÐµÑ Ð±Ð¾Ð¹Ð»ÐµÑÐ¿Ð»ÐµÐ¹Ñ <code>isLoading = true / finally isLoading = false</code> из вÑего кода. Guard Ð¾Ñ Ð¿Ð¾Ð²ÑоÑнÑÑ
запÑоÑов вÑÑÑоен, ÑбÑÐ¾Ñ Ñлага гаÑанÑиÑован в лÑбом иÑÑ
оде.</li> </ul> </div> </details> <details class="changelog-section"> <summary class="changelog-summary"><span class="changelog-meta"><span class="changelog-meta__version">v9.94.0</span><span class="changelog-meta__date">18-03-2026</span></span><h2 id="v9940-18-03-2026--надÑжноÑÑÑ-безопаÑноÑÑÑ-доÑÑÑпноÑÑÑ">ÐадÑжноÑÑÑ, безопаÑноÑÑÑ, доÑÑÑпноÑÑÑ</h2></summary> <div class="changelog-section__body"> <p>РедакÑÐ¾Ñ Ð±Ð¾Ð»ÑÑе не ÑмиÑÐ°ÐµÑ Ñ Ð±ÐµÐ»Ñм ÑкÑаном пÑи Ñбое ÑаÑÑиÑÐµÐ½Ð¸Ñ â вÑÐ¶Ð¸Ð²Ð°ÐµÑ Ð¸ обÑÑÑнÑеÑ, ÑÑо ÑлÑÑилоÑÑ. ÐÑÑки в безопаÑноÑÑи внеÑниÑ
ÑÑÑлок закÑÑÑÑ ÑиÑÑемно, а инÑеÑÑÐµÐ¹Ñ ÑÑал замеÑно доÑÑÑпнее: ÑкÑинÑидеÑÑ ÑиÑаÑÑ ÐºÐ½Ð¾Ð¿ÐºÐ¸, ÑÑÑÑÑик без ÑиÑÑ Ð½Ðµ Ð¼Ð¾Ð·Ð¾Ð»Ð¸Ñ Ð³Ð»Ð°Ð·, поиÑк Ð½Ð°ÐºÐ¾Ð½ÐµÑ ÑÐ¼ÐµÐµÑ ÑÑиÑÑваÑÑ ÑегиÑÑÑ.</p> <ul> <li data-num="1053"><span class="changelog-tag changelog-tag--SEC" data-tag-alias="SEC">SEC</span> <strong>РедакÑÐ¾Ñ Ð²ÑÐ¶Ð¸Ð²Ð°ÐµÑ Ð¿Ñи Ñбое ÑаÑÑиÑениÑ</strong> â еÑли LanguageTool, поиÑк или embed-блок Ñпали пÑи иниÑиализаÑии, ÑедакÑÐ¾Ñ Ð¿ÑÐ¾Ð´Ð¾Ð»Ð¶Ð°ÐµÑ ÑабоÑÑ Ð±ÐµÐ· ниÑ
. Sentry полÑÑÐ°ÐµÑ Ð¾ÑÑÑÑ, полÑзоваÑÐµÐ»Ñ â внÑÑное ÑообÑение вмеÑÑо пÑÑÑого ÑкÑана.</li> <li data-num="1054"><span class="changelog-tag changelog-tag--SEC" data-tag-alias="SEC">SEC</span> <code>**rel="noopener noreferrer"</code> на внеÑниÑ
ÑÑÑлкаÑ
** â 71 ÑÑÑлка в ÑаблонаÑ
полÑÑила заÑиÑÑ Ð¾Ñ tab-napping: оÑкÑÑÑÐ°Ñ Ð²ÐºÐ»Ð°Ð´ÐºÐ° болÑÑе не Ð¼Ð¾Ð¶ÐµÑ Ð¿Ð¾Ð´Ð¼ÐµÐ½Ð¸ÑÑ ÑодиÑелÑÑкÑÑ ÑÑÑаниÑÑ.</li> <li data-num="1055"><span class="changelog-tag changelog-tag--SEC" data-tag-alias="SEC">SEC</span> <strong>iFrame-вайÑлиÑÑ Ð²Ð¼ÐµÑÑо дÑÑÑвого ÑилÑÑÑа</strong> â YouTube, Vimeo, ÐÐонÑакÑе, SoundCloud, ЯндекÑâÐÑзÑка ÑазÑеÑÐµÐ½Ñ ÑеÑез <code>$sceDelegateProvider</code>. УÑÑаÑевÑий ÑилÑÑÑ <code>unsafeResource</code>, обÑ
одивÑий Angular SCE, ÑдалÑн.</li> <li data-num="1056"><span class="changelog-tag changelog-tag--UX" data-tag-alias="UX">UX</span> <strong>ÐоиÑк по ÑекÑÑÑ ÑепеÑÑ ÑÐ¼ÐµÐµÑ ÑегиÑÑÑ</strong> â в «ÐайÑи и замениÑÑ» поÑвилаÑÑ ÐºÐ½Ð¾Ð¿ÐºÐ° «Ðа». ÐклÑÑена â иÑÐµÑ ÑоÑно <code>Hello</code>, вÑклÑÑена â наÑ
Ð¾Ð´Ð¸Ñ Ð¸ <code>hello</code>, и <code>HELLO</code>. РабоÑÐ°ÐµÑ Ð² ÑÑмной Ñеме.</li> <li data-num="1057"><span class="changelog-tag changelog-tag--UX" data-tag-alias="UX">UX</span> <strong>СÑÑÑÑик Ñведомлений иÑÑезаеÑ, когда неÑего ÑÑиÑаÑÑ</strong> â пÑÑÑой бейдж Ñ ÐºÐ¾Ð»Ð¾ÐºÐ¾Ð»ÑÑика и конвеÑÑика болÑÑе не Ð·Ð°Ð½Ð¸Ð¼Ð°ÐµÑ Ð¼ÐµÑÑо. ÐÐ¾Ð»Ñ JS, Ð½Ð¾Ð»Ñ Angular-дайджеÑÑов â ÑиÑÑÑй CSS <code>:empty</code>.</li> <li data-num="1058"><span class="changelog-tag changelog-tag--PERF" data-tag-alias="PERF">PERF</span> <strong>ÐаÑÑинки гÑÑзÑÑÑÑ Ð¿Ð¾ меÑе ÑкÑолла</strong> â <code>loading="lazy"</code> добавлен к изобÑажениÑм в гÑидаÑ
, баннеÑаÑ
и ÑÑаÑиÑеÑкиÑ
ÑÑÑаниÑаÑ
. ÐÑаÑÐ·ÐµÑ Ð½Ðµ каÑÐ°ÐµÑ Ñо, до Ñего ÑиÑаÑÐµÐ»Ñ ÐµÑÑ Ð½Ðµ долиÑÑал.</li> <li data-num="1059"><span class="changelog-tag changelog-tag--DX" data-tag-alias="DX">DX</span> <strong>Web Vitals ÑепеÑÑ Ð²Ð¸Ð´Ð½Ñ Ð² мониÑоÑинге</strong> â LCP, FCP, CLS, INP, TTFB ÑобиÑаÑÑÑÑ ÑеÑез наÑивнÑй <code>PerformanceObserver</code> и леÑÑÑ Ð² Sentry. СÑало ÑоÑмозиÑÑ â команда ÑÐ·Ð½Ð°ÐµÑ ÑанÑÑе полÑзоваÑелей.</li> <li data-num="1060"><span class="changelog-tag changelog-tag--A11Y" data-tag-alias="A11Y">
1A11Y</span> <strong>Ðнопки ÑÑлбаÑа говоÑÑÑ, ÑÑо делаÑÑ</strong> â «ÐÑÑавиÑÑ ÑÑÑлкÑ», «ÐобавиÑÑ Ð¸Ð·Ð¾Ð±Ñажение», «ÐÑÑавиÑÑ Ð¼ÐµÐ´Ð¸Ð°Â» и дÑÑгие полÑÑили <code>aria-label</code>. СкÑинÑÐ¸Ð´ÐµÑ Ð·Ð°ÑиÑÑÐ²Ð°ÐµÑ Ð½Ð°Ð·Ð²Ð°Ð½Ð¸Ðµ, а не молÑиÑ.</li> </ul> </div> </details> <details class="changelog-section"> <summary class="changelog-summary"><span class="changelog-meta"><span class="changelog-meta__version">v9.93.0</span><span class="changelog-meta__date">18-03-2026</span></span><h2 id="v9930-18-03-2026--Ñ
лебнÑе-кÑоÑки-в-поиÑке-и-полиÑовка-ÑедакÑоÑа">ХлебнÑе кÑоÑки в поиÑке и полиÑовка ÑедакÑоÑа</h2></summary> <div class="changelog-section__body"> <p>ÐеболÑÑой, но вÑвеÑеннÑй апдейÑ. СÑаÑÑи ÐиÑкÑÑÑа ÑепеÑÑ Ð¿Ð¾ÑвлÑÑÑÑÑ Ð² вÑдаÑе Google и ЯндекÑа Ñ Ð¼Ð°ÑÑÑÑÑом «ÐиÑкÑÑÑ âº Ð ÑбÑика ⺠Ðазвание» â ÑÑо не пÑоÑÑо кÑаÑивоÑÑÑ, а ÑеалÑнÑй Ñигнал Ð´Ð»Ñ Ð¿Ð¾Ð¸Ñковиков и подÑказка ÑиÑаÑелÑ. Ð ÑедакÑоÑе: вÑÑавка ÑÑÑлок ÑÑала ÑеÑÑнее (видно, ÑÑо каÑÑоÑка гÑÑзиÑÑÑ), надÑжнее (завиÑание иÑклÑÑено) и дÑÑжелÑбнее в ÑÑмной Ñеме. РпаÑка мелкиÑ
кнопоÑнÑÑ
багов закÑÑÑа Ñаз и навÑегда.</p> <ul> <li data-num="1048"><span class="changelog-tag changelog-tag--SEO" data-tag-alias="SEO">SEO</span> <strong>ХлебнÑе кÑоÑки в Google и ЯндекÑе</strong> â ÑÑаÑÑи, ÑÑÑаниÑÑ Ñегов и авÑоÑов ÑепеÑÑ Ð½ÐµÑÑÑ <code>BreadcrumbList</code> schema.org. Ð ÑезÑлÑÑаÑаÑ
поиÑка поÑвлÑеÑÑÑ Â«ÐиÑкÑÑÑ âº Ð ÑбÑика ⺠Ðаголовок» â поиÑковик лÑÑÑе Ð¿Ð¾Ð½Ð¸Ð¼Ð°ÐµÑ ÑÑÑÑкÑÑÑÑ ÑайÑа, ÑиÑаÑÐµÐ»Ñ Ð²Ð¸Ð´Ð¸Ñ ÐºÐ¾Ð½ÑекÑÑ ÐµÑÑ Ð´Ð¾ клика.</li> <li data-num="1049"><span class="changelog-tag changelog-tag--UX" data-tag-alias="UX">UX</span> <strong>Ð¡Ð¿Ð¸Ð½Ð½ÐµÑ Ð¿Ñи вÑÑавке ÑÑÑлки</strong> â вÑÑавил URL в ÑÑаÑÑÑ, и пока каÑÑоÑка-пÑевÑÑ Ð·Ð°Ð³ÑÑÐ¶Ð°ÐµÑ Ð·Ð°Ð³Ð¾Ð»Ð¾Ð²Ð¾Ðº и каÑÑинкÑ, видно живой анимиÑованнÑй индикаÑоÑ. ÐолÑÑе не гадаеÑÑ: завиÑло или пÑоÑÑо гÑÑзиÑÑÑ.</li> <li data-num="1050"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>Тайм-аÑÑ 5 Ñ Ð´Ð»Ñ OG-пÑевÑÑ</strong> â еÑли ÑайÑ-иÑÑоÑник ÑоÑмозиÑ, каÑÑоÑка не блокиÑÑÐµÑ ÑедакÑÐ¾Ñ Ð±ÐµÑконеÑно: ÑеÑез пÑÑÑ ÑекÑнд â аккÑÑаÑнÑй fallback Ñ Ð³Ð¾Ð»Ð¾Ð¹ ÑÑÑлкой вмеÑÑо веÑного ожиданиÑ.</li> <li data-num="1051"><span class="changelog-tag changelog-tag--UX" data-tag-alias="UX">UX</span> <strong>ÐоÑной Ñежим: skeleton болÑÑе не ÑлепиÑ</strong> â в ÑÑмной Ñеме skeleton-анимаÑÐ¸Ñ Ð·Ð°Ð³ÑÑзки ÑÑÑлоÑной каÑÑоÑки иÑполÑзÑÐµÑ ÑÑмнÑе ÑвеÑа вмеÑÑо ÑÑкого белого пÑÑмоÑголÑника. ÐÐ»Ñ <code>prefers-reduced-motion</code> â ÑÑаÑиÑнÑй ÑÑмнÑй Ñон без миганиÑ.</li> <li data-num="1052"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>Ðнопки без ÑÑÑпÑизов</strong> â аÑÐ´Ð¸Ñ Ð²ÑеÑ
HTML-Ñаблонов: кнопки полÑÑили ÑвнÑй <code>type="button"</code> или <code>type="submit"</code>. ÐÑаÑÐ·ÐµÑ Ð¿Ð¾ ÑмолÑÐ°Ð½Ð¸Ñ ÑÑиÑÐ°ÐµÑ Ð»ÑбÑÑ ÐºÐ½Ð¾Ð¿ÐºÑ Ð² ÑоÑме ÑабмиÑом â ÑепеÑÑ Ð¿Ð¾Ð²ÐµÐ´ÐµÐ½Ð¸Ðµ ÑÑÑого задано везде, ÑлÑÑайнÑÑ
оÑпÑавок неÑ.</li> </ul> </div> </details> <details class="changelog-section"> <summary class="changelog-summary"><span class="changelog-meta"><span class="changelog-meta__version">v9.92.0</span><span class="changelog-meta__date">18-03-2026</span></span><h2 id="v9920-18-03-2026--ÑмбедÑ-конеÑ-ÑеÑого-пÑÑмоÑголÑника-lite-youtube-и-полиÑовка">ÐмбедÑ: ÐºÐ¾Ð½ÐµÑ ÑеÑого пÑÑмоÑголÑника, lite-YouTube и полиÑовка</h2></summary> <div class="changelog-section__body"> <p>ÐÑÑавленнÑе Ñолики и медиа-блоки пÑоÑли ÑеÑез полнÑй ÑÐ°Ð·Ð±Ð¾Ñ Ð¸ пеÑеÑабоÑкÑ. СеÑÑй пÑÑмоÑголÑник под конÑенÑом â в пÑоÑлом. YouTube ÑепеÑÑ Ð½Ðµ гÑÑÐ·Ð¸Ñ ÑÑжÑлÑй iframe, пока ÑиÑаÑÐµÐ»Ñ Ñам не нажмÑÑ Play â одна ÑÑаÑÑÑ Ñ ÑÑÐµÐ¼Ñ Ñоликами ÑÐºÐ¾Ð½Ð¾Ð¼Ð¸Ñ Ð±Ð¾Ð»ÐµÐµ мегабайÑа ÑÑаÑика пÑи оÑкÑÑÑии. Ð
1меÑÑе Ñ ÑÑим поÑинено неÑколÑко ÑиÑ
иÑ
оÑибок, коÑоÑÑе пÑоÑвлÑлиÑÑ Ð² ÑамÑй неÑдобнÑй Ð¼Ð¾Ð¼ÐµÐ½Ñ â пÑи плоÑ
ом Ñоединении или вÑеменном Ñбое ÑеÑвиÑа.</p> <ul> <li data-num="1038"><span class="changelog-tag changelog-tag--PERF" data-tag-alias="PERF">PERF</span> <strong>YouTube: пÑевÑÑ Ð²Ð¼ÐµÑÑо ÑÑжÑлого iframe</strong> â вмеÑÑо авÑомаÑиÑеÑкой загÑÑзки Ñоликового плееÑа (~400 ÐÐ) ÑиÑаÑÐµÐ»Ñ ÑÑÐ°Ð·Ñ Ð¿Ð¾ÐºÐ°Ð·ÑваеÑÑÑ HD-миниаÑÑÑа Ñ ÐºÑаÑной кнопкой Play. Iframe загÑÑжаеÑÑÑ ÑолÑко по кликÑ. РабоÑÐ°ÐµÑ Ð¸ в ÑедакÑоÑе, и на ÑиÑаÑелÑÑкиÑ
ÑÑÑаниÑаÑ
.</li> <li data-num="1039"><span class="changelog-tag changelog-tag--UX" data-tag-alias="UX">UX</span> <strong>HD-пÑевÑÑ YouTube вмеÑÑо мÑлÑного пÑÑмоÑголÑника</strong> â авÑомаÑиÑеÑки пÑобÑем миниаÑÑÑÑ 1280Ã720, пÑи недоÑÑÑпноÑÑи â плавно пеÑеклÑÑаемÑÑ Ð½Ð° 480Ã360. Ðа ÑиÑоком ÑкÑане болÑÑе не ÑазмÑÑÐ°Ñ ÐºÐ°ÑÑинка.</li> <li data-num="1040"><span class="changelog-tag changelog-tag--UX" data-tag-alias="UX">UX</span> <strong>Timestamp на пÑевÑÑ: видно оÑкÑда наÑинаеÑÑÑ Ð²Ð¸Ð´ÐµÐ¾</strong> â вÑÑавили Ñолик Ñ ÑÑÑлкой «ÑмоÑÑеÑÑ Ñ 1:23»? Ðа пÑевÑÑ Ð¿Ð¾ÑвлÑеÑÑÑ Ð±ÐµÐ¹Ð´Ð¶Ð¸Ðº Ñ Ð¼ÐµÑкой. ЧиÑаÑÐµÐ»Ñ Ð¿Ð¾Ð½Ð¸Ð¼Ð°ÐµÑ ÐºÐ¾Ð½ÑекÑÑ ÐµÑÑ Ð´Ð¾ клика.</li> <li data-num="1041"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>СеÑÑй пÑÑмоÑголÑник под вÑÑавленнÑм конÑенÑом</strong> â конÑÐµÐ¹Ð½ÐµÑ embed'а в Ñежиме ÑÑÐµÐ½Ð¸Ñ Ð¾ÑÑавалÑÑ Â«ÑаздÑÑÑм» до иÑÑ
одного min-height из ÑедакÑоÑа, и ÑÐ½Ð¸Ð·Ñ ÑоÑÑал пÑÑÑой Ñон. ТепеÑÑ Ð²ÑÑоÑа ÑнимаеÑÑÑ ÑÑÐ°Ð·Ñ Ð¿Ð¾Ñле загÑÑзки iframe; Ð´Ð»Ñ Piktochart, Datawrapper, iFrameSizer â подÑ
ваÑÑваеÑÑÑ ÑоÑÐ½Ð°Ñ Ð²ÑÑоÑа ÑеÑез postMessage.</li> <li data-num="1042"><span class="changelog-tag changelog-tag--UX" data-tag-alias="UX">UX</span> <strong>Ðнопка «ÐовÑоÑиÑÑ» пÑи оÑибке загÑÑзки</strong> â еÑли embed не загÑÑзилÑÑ Ð¸Ð·-за плоÑ
ого Ñигнала или вÑеменного ÑÐ±Ð¾Ñ ÑеÑвиÑа, вмеÑÑо пÑÑÑоÑÑ Ð¿Ð¾ÑвлÑеÑÑÑ â , понÑÑнÑй ÑекÑÑ Ð¾Ñибки, кнопка «⻠ÐовÑоÑиÑÑ» и ÑÑÑлка на оÑигинал.</li> <li data-num="1043"><span class="changelog-tag changelog-tag--UX" data-tag-alias="UX">UX</span> <strong>Ðазвание пÑовайдеÑа пока гÑÑзиÑÑÑ</strong> â Ð´Ð»Ñ Ð²Ð¸Ð´ÐµÐ¾Ð¿Ð»Ð°ÑÑоÑм (Vimeo, Rutube, TED, Coub, Ðзен, Twitch) placeholder во вÑÐµÐ¼Ñ Ð·Ð°Ð³ÑÑзки показÑÐ²Ð°ÐµÑ Ð½Ð°Ð·Ð²Ð°Ð½Ð¸Ðµ ÑеÑвиÑа по ÑенÑÑÑ. Ðидно, ÑÑо Ñам бÑдеÑ, еÑÑ Ð´Ð¾ поÑÐ²Ð»ÐµÐ½Ð¸Ñ Ð¿Ð»ÐµÐµÑа.</li> <li data-num="1044"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>Ðнопка «ÐовÑоÑиÑÑ» ÑепеÑÑ ÑабоÑÐ°ÐµÑ Ð±ÐµÑконеÑно</strong> â оÑибка замÑÐºÐ°Ð½Ð¸Ñ Ð¿Ñиводила к ÑомÑ, ÑÑо повÑоÑÐ½Ð°Ñ Ð·Ð°Ð³ÑÑзка поÑле вÑоÑой оÑибки молÑа падала без UI. ÐÑпÑавлено: ÐºÐ°Ð¶Ð´Ð°Ñ Ð¿Ð¾Ð¿ÑÑка полÑÑÐ°ÐµÑ Ñвежий обÑабоÑÑик.</li> <li data-num="1045"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>Fallback-ÑÑÑлки ведÑÑ Ð½Ð° ÑиÑаемÑй URL</strong> â ÑÑÑлка «ÐÑкÑÑÑÑ Ð¿Ð¾ ÑÑÑлке» ÑанÑÑе ÑказÑвала на ÑеÑ
ниÑеÑкий embed-адÑÐµÑ (<code>youtube.com/embed/XYZ</code>). ТепеÑÑ â на оÑигинал (<code>youtube.com/watch?v=XYZ</code>). ÐогиÑнее и полезнее.</li> <li data-num="1046"><span class="changelog-tag changelog-tag--PERF" data-tag-alias="PERF">PERF</span> <strong>Ðдин IntersectionObserver на вÑÑ ÑÑÑаниÑÑ</strong> â ÑанÑÑе каждÑй ленивÑй embed Ñоздавал ÑобÑÑвеннÑй observer. ТепеÑÑ Ð¾Ð´Ð¸Ð½ ÑинглÑон на вÑе embed'
1Ñ: 20 Ñоликов â 1 observer вмеÑÑо 20. ÐенÑÑе нагÑÑзки пÑи ÑкÑолле.</li> <li data-num="1047"><span class="changelog-tag changelog-tag--SEC" data-tag-alias="SEC">SEC</span> <strong>ÐÐ²Ð¾Ð¹Ð½Ð°Ñ Ð¿ÑовеÑка иÑÑоÑника postMessage</strong> â ÑообÑÐµÐ½Ð¸Ñ Ð¾ вÑÑоÑе iframe пÑовеÑÑÑÑÑÑ Ð¸ по каÑÑе извеÑÑнÑÑ
iframe'ов ÑÑÑаниÑÑ, и по вайÑлиÑÑÑ ÑазÑеÑÑннÑÑ
доменов Ñ Ð¿Ð¾Ð´Ð´ÐµÑжкой ÑÑбдоменов. ÐоÑÑоÑонние ÑообÑÐµÐ½Ð¸Ñ Ð½Ðµ попадаÑÑ Ð² обÑабоÑÑик.</li> </ul> </div> </details> <details class="changelog-section"> <summary class="changelog-summary"><span class="changelog-meta"><span class="changelog-meta__version">v9.91.0</span><span class="changelog-meta__date">17-03-2026</span></span><h2 id="v9910-17-03-2026--ÑедакÑоÑ-квизÑ-новÑе-позиÑии-каÑÑинок-ÑÑÑелки-в-поиÑке">РедакÑоÑ: квизÑ, новÑе позиÑии каÑÑинок, ÑÑÑелки в поиÑке</h2></summary> <div class="changelog-section__body"> <p>ÐеболÑÑой, но наÑÑÑеннÑй Ð°Ð¿Ð´ÐµÐ¹Ñ Ð´Ð»Ñ Ð°Ð²ÑоÑов. Interacty-ÐºÐ²Ð¸Ð·Ñ Ð½Ð°ÐºÐ¾Ð½ÐµÑ Ð¾ÑобÑажаÑÑÑÑ Ð¿ÑавилÑно â иÑ
болÑÑе не «ÑÑедаеÑ» ÑаниÑайзеÑ. ÐаÑÑинки полÑÑили новÑе ваÑианÑÑ ÑаÑположениÑ. Рпанели поиÑка поÑвилиÑÑ ÑÑÑелки ââ. ÐеÑколÑко ÑоÑеÑнÑÑ
пÑавок, коÑоÑÑе ÑбиÑаÑÑ ÑаздÑажение в ежедневной ÑабоÑе.</p> <ul> <li data-num="1034"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>Interacty-ÐºÐ²Ð¸Ð·Ñ Ñнова живÑе</strong> â виджеÑÑ Ð¿Ð¾ÐºÐ°Ð·Ñвали пÑÑÑоÑÑ: бÑаÑзеÑнÑй ÑаниÑÐ°Ð¹Ð·ÐµÑ ÑдалÑл иÑ
<code><script></code>-Ñег. ТепеÑÑ ÐºÐ²Ð¸Ð· конвеÑÑиÑÑеÑÑÑ Ð² безопаÑнÑй iframe до ÑаниÑизаÑии â ÑиÑаÑели видÑÑ Ð¸Ð½ÑеÑакÑив, авÑоÑÑ Ð¼Ð¾Ð³ÑÑ Ð¿ÑбликоваÑÑ Ð±ÐµÐ· ÑÑÑной пÑавки.</li> <li data-num="1035"><span class="changelog-tag changelog-tag--UX" data-tag-alias="UX">UX</span> <strong>ЧеÑÑÑе новÑÑ
ваÑианÑа позиÑиониÑÐ¾Ð²Ð°Ð½Ð¸Ñ ÐºÐ°ÑÑинки</strong> â к «Ñлева», «ÑпÑава», «ÑаÑÑÑнÑÑÑ Ð½Ð° колонкÑ» добавленÑ: по ÑенÑÑÑ, на вÑÑ ÑиÑÐ¸Ð½Ñ ÑкÑана, 30% и 50% ÑиÑинÑ. ÐолÑÑе ÑÐ²Ð¾Ð±Ð¾Ð´Ñ Ð² вÑÑÑÑке без лиÑниÑ
Ñелодвижений.</li> <li data-num="1036"><span class="changelog-tag changelog-tag--UX" data-tag-alias="UX">UX</span> <strong>ÐоиÑк по ÑÑаÑÑе: ââ вмеÑÑо Shift+Enter</strong> â в панели поиÑка и Ð·Ð°Ð¼ÐµÐ½Ñ ÑабоÑаÑÑ ÑÑÑелки клавиаÑÑÑÑ. Ðоле ввода не ÑеÑÑÐµÑ ÑокÑÑ Ð¿Ñи кликаÑ
на «СледÑÑÑий» / «ÐÑедÑдÑÑий» â не нÑжно каждÑй Ñаз возвÑаÑаÑÑÑÑ Ð² ÑÑÑÐ¾ÐºÑ Ð¿Ð¾Ð¸Ñка.</li> <li data-num="1037"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>Ðлоки «ЦиÑаÑа» болÑÑе не заезжаÑÑ Ð¿Ð¾Ð´ каÑÑинки</strong> â пÑи обÑекаемой иллÑÑÑÑаÑии ÑÑдом Ð»ÐµÐ²Ð°Ñ Ð¿Ð¾Ð»Ð¾Ñка ÑиÑаÑÑ Ð¼Ð¾Ð³Ð»Ð° ÑÑеÑ
аÑÑ Ð¿Ð¾Ð´ неÑ. ÐÑпÑавлено ÑеÑез BFC: веÑÑикалÑнÑй акÑÐµÐ½Ñ ÑепеÑÑ Ð²Ñегда ÑÑдом Ñ ÑекÑÑом, не ÑÑезжаеÑ.</li> </ul> </div> </details> <details class="changelog-section"> <summary class="changelog-summary"><span class="changelog-meta"><span class="changelog-meta__version">v9.90.0</span><span class="changelog-meta__date">17-03-2026</span></span><h2 id="v9900-17-03-2026--оÑлайн-без-паники-кÑаÑиваÑ-заглÑÑка-ÑмнÑй-ÑеконнекÑ-ÑиÑ
ие-обновлениÑ">ÐÑлайн без паники: кÑаÑÐ¸Ð²Ð°Ñ Ð·Ð°Ð³Ð»ÑÑка, ÑмнÑй ÑеконнекÑ, ÑиÑ
ие обновлениÑ</h2></summary> <div class="changelog-section__body"> <p>ÐÑопал инÑеÑÐ½ÐµÑ Ð² меÑÑо поÑÑеди ÑÑаÑÑи? РанÑÑе бÑаÑÐ·ÐµÑ Ð¿Ð¾ÐºÐ°Ð·Ñвал ÑнÑлÑй «ERR_CONNECTION_REFUSED». ТепеÑÑ â аккÑÑаÑÐ½Ð°Ñ ÑÑÑаниÑа ÐиÑкÑÑÑа, коÑоÑÐ°Ñ Ñама пÑовеÑÑÐµÑ Ñоединение каждÑе деÑÑÑÑ ÑекÑнд и пеÑезагÑÑжаеÑÑÑ, когда ÑеÑÑ Ð²ÐµÑнÑÑÑÑ. РпоÑле Ð´ÐµÐ¿Ð»Ð¾Ñ Ð½Ð¾Ð²Ð¾Ð¹ веÑÑии плаÑÑоÑÐ¼Ñ Ð¿Ð¾ÑвиÑÑÑ Ð½ÐµÐ½Ð°Ð²ÑзÑивÑй Ð±Ð°Ð½Ð½ÐµÑ Â«ÐбновиÑÑ» â ни одна пÑавка в ÑедакÑоÑе не поÑеÑÑеÑÑÑ Ð¸Ð·-за авÑомаÑиÑеÑкого обновлениÑ.</p> <ul> <li data-num="1025"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> <strong>СÑÑаниÑа «ÐÐµÑ Ð¿Ð¾Ð´ÐºÐ»ÑÑениÑ» вмеÑÑо оÑибки бÑаÑзеÑа</strong> â ÑамодоÑÑаÑоÑнÑй offline.html без единой внеÑней завиÑимоÑÑи: пÑлÑÑиÑÑÑÑÐ°Ñ Ð¸ÐºÐ¾Ð½ÐºÐ° Wi-Fi, кнопка «ÐопÑобоваÑÑ Ñнова», авÑомаÑиÑеÑкий ÑÐµÐºÐ¾Ð½Ð½ÐµÐºÑ Ð¿Ñи воÑÑÑановлении ÑеÑи. РабоÑÐ°ÐµÑ Ð´Ð°Ð¶Ðµ еÑли ÑеÑÐ²ÐµÑ Ð¿Ð¾Ð»Ð½Ð¾ÑÑÑÑ Ð½ÐµÐ´Ð¾ÑÑÑпен.</li> <li data-num="1026"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> <strong>ÐÐ°Ð½Ð½ÐµÑ Â«ÐоÑÑÑпна Ð½Ð¾Ð²Ð°Ñ Ð²ÐµÑÑиÑ»</strong> â когда в Ñоне обновлÑеÑÑÑ Service Worker, Ð²Ð½Ð¸Ð·Ñ ÑкÑана поÑвл
1ÑеÑÑÑ ÐºÐ¾Ð¼Ð¿Ð°ÐºÑнÑй ÑоÑÑ Ñ ÐºÐ½Ð¾Ð¿ÐºÐ°Ð¼Ð¸ «ÐбновиÑÑ» и «Ã». РедакÑиÑÑеÑÑ ÑÑаÑÑÑ â закÑой и обнови, когда Ñдобно. ÐикакиÑ
пÑинÑдиÑелÑнÑÑ
пеÑезагÑÑзок.</li> <li data-num="1027"><span class="changelog-tag changelog-tag--PERF" data-tag-alias="PERF">PERF</span> <strong>Navigation Preload</strong> â бÑаÑÐ·ÐµÑ Ð½Ð°ÑÐ¸Ð½Ð°ÐµÑ Ð³ÑÑзиÑÑ ÑÑÑаниÑÑ Ð¿Ð°ÑаллелÑно Ñ Ð·Ð°Ð¿ÑÑком Service Worker, а не ждÑÑ ÐµÐ³Ð¾ иниÑиализаÑии. ÐинÑÑ 50â100 Ð¼Ñ Ð½Ð° каждом пеÑеÑ
оде Ð¼ÐµÐ¶Ð´Ñ ÑÑÑаниÑами.</li> <li data-num="1028"><span class="changelog-tag changelog-tag--PERF" data-tag-alias="PERF">PERF</span> <strong>СÑÑаниÑÑ ÐºÐµÑиÑÑÑÑÑÑ Ð´Ð»Ñ Ð¾Ñлайна</strong> â навигаÑионнÑе запÑоÑÑ ÑепеÑÑ Ð¿ÑоÑ
одÑÑ ÑеÑез NetworkFirst (5 Ñ ÑаймаÑÑ, ÐºÐµÑ Ð½Ð° ÑÑÑки). ÐÑкÑÑвали главнÑÑ ÑÑÑом â она оÑкÑоеÑÑÑ Ð¸ в Ñоннеле без ÑвÑзи.</li> <li data-num="1029"><span class="changelog-tag changelog-tag--UX" data-tag-alias="UX">UX</span> <strong>ÐаÑÑинки не ломаÑÑÑÑ Ð±ÐµÐ· ÑеÑи</strong> â вмеÑÑо иконки «биÑое изобÑажение» оÑдаÑÑÑÑ Ð¿ÑозÑаÑнÑй пикÑелÑ. СÑаÑÑÑ Ð¾ÑÑаÑÑÑÑ ÑиÑаемой, пÑоÑÑо без иллÑÑÑÑаÑий.</li> <li data-num="1030"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>Ðдин SW-Ñайл вмеÑÑо двÑÑ
</strong> â пеÑеÑ
од Ñ GenerateSW на InjectManifest: вÑÑ Ð»Ð¾Ð³Ð¸ÐºÐ° кеÑиÑÐ¾Ð²Ð°Ð½Ð¸Ñ ÑепеÑÑ Ð² едином бандле (9 ÐÐ gzip) вмеÑÑо двÑÑ
оÑделÑнÑÑ
загÑÑзок. ÐÑÑÑÑее ÑÑÑановка, пÑоÑе оÑладка.</li> <li data-num="1031"><span class="changelog-tag changelog-tag--A11Y" data-tag-alias="A11Y">A11Y</span> <strong>ÐÑлайн-ÑÑÑаниÑа Ð´Ð»Ñ Ð²ÑеÑ
</strong> â анимаÑÐ¸Ñ Ð¾ÑклÑÑаеÑÑÑ Ð¿Ñи <code>prefers-reduced-motion</code>, кнопка Ð¸Ð¼ÐµÐµÑ Ð²Ð¸Ð´Ð¸Ð¼Ñй ÑокÑÑ Ð´Ð»Ñ ÐºÐ»Ð°Ð²Ð¸Ð°ÑÑÑной навигаÑии, <code>aria-hidden</code> на декоÑаÑивнÑÑ
ÑлеменÑаÑ
.</li> <li data-num="1032"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>ÐÐ°Ð½Ð½ÐµÑ Â«ÐбновиÑÑ» не пÑÐ¾Ð¿Ð°Ð´Ð°ÐµÑ Ð¿Ñи медленном Ñоединении</strong> â Ñ Ð¿Ð¾Ð»ÑзоваÑелей Ñ Ð¿Ð»Ð¾Ñ
им инÑеÑнеÑом Service Worker мог акÑивиÑоваÑÑÑÑ ÑанÑÑе, Ñем загÑÑзиÑÑÑ ÑкÑÐ¸Ð¿Ñ Ð±Ð°Ð½Ð½ÐµÑа. СобÑÑие ÑепеÑÑ ÑоÑ
ÑанÑеÑÑÑ Ð¸ Ð±Ð°Ð½Ð½ÐµÑ Ð¿Ð¾ÑвлÑеÑÑÑ, как ÑолÑко ÑÑÑаниÑа гоÑова.</li> <li data-num="1033"><span class="changelog-tag changelog-tag--UX" data-tag-alias="UX">UX</span> <strong>ÐиÑкÑÑÑ Ð½Ð° домаÑнем ÑкÑане</strong> â обновлÑн маниÑеÑÑ PWA: ÑÑÑÑкое название «ÐиÑкÑÑÑ», опиÑание, коÑÑекÑнÑе иконки пÑи добавлении на ÑабоÑий ÑÑол Android и iOS.</li> </ul> </div> </details> <details class="changelog-section"> <summary class="changelog-summary"><span class="changelog-meta"><span class="changelog-meta__version">v9.89.0</span><span class="changelog-meta__date">17-03-2026</span></span><h2 id="v9890-17-03-2026--tailwind-css-ÑÑндаменÑ-дизайн-ÑиÑÑемÑ">Tailwind CSS: ÑÑÐ½Ð´Ð°Ð¼ÐµÐ½Ñ Ð´Ð¸Ð·Ð°Ð¹Ð½-ÑиÑÑемÑ</h2></summary> <div class="changelog-section__body"> <p>Ðод капоÑом плаÑÑоÑÐ¼Ñ Ð¿Ð¾ÑвилаÑÑ Ð½Ð¾Ð²Ð°Ñ ÑиÑÑема ÑÑилей â Tailwind CSS v4. ÐÐ»Ñ ÑиÑаÑелей и авÑоÑов ниÑего не изменилоÑÑ Ð²Ð¸Ð·ÑалÑно, но ÑÐ°Ð¹Ñ ÑÑал легÑе на 42 ÐÐ, ÑедакÑÐ¾Ñ Ð³ÑÑзиÑÑÑ Ð±ÑÑÑÑее, а ÑазÑабоÑка новÑÑ
ÑÐ¸Ñ ÑÑкоÑиÑÑÑ Ð² ÑазÑ. ÐÑо ÑÑÐ½Ð´Ð°Ð¼ÐµÐ½Ñ Ð´Ð»Ñ Ð¿ÐµÑеÑ
ода на SolidJS â ÑледÑÑÑего болÑÑого Ð¾Ð±Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ Ð¿Ð»Ð°ÑÑоÑмÑ.</p> <ul> <li data-num="1018"><span class="changelog-tag changelog-tag--PERF" data-tag-alias="PERF">PERF</span> <strong>ÐинÑÑ 42 ÐÐ CSS</strong> â ÑÑилиÑаÑнÑе ÑÑили мигÑиÑовали из гÑомоздкого SCSS в компакÑнÑй Tailwind-Ñайл. ÐенÑÑе байÑов â бÑÑÑÑее загÑÑзка, оÑобенно на мобилÑном инÑеÑнеÑе.</li> <li data-num="1019"><span class="changelog-tag changelog-tag--PERF" data-tag-alias="PERF">PERF</span> <strong>СÑили ÑедакÑоÑа поÑ
Ñдели на 43 ÐÐ</strong> â иÑпÑавлена оÑибка миниÑикаÑии, из-за коÑоÑой editor.css оÑпÑавлÑлÑÑ Ð½Ð° пÑод в неÑжаÑом виде. ÐÑкÑÑÑие ÑедакÑоÑа ÑепеÑÑ Ð¾ÑÑÑимо ÑÑÑÑÑее.</li> <li data-num="1020"><span class="changelog-tag changelog-tag--PERF" data-tag-alias="PERF">PERF</span> <strong>СбоÑка ÑÑилей ÑÑала паÑаллелÑной</strong> â ÑеÑÑÑ Ð½ÐµÐ·Ð°Ð²Ð¸ÑимÑÑ
Ñагов подгоÑовки ÑÑилей ÑепеÑÑ Ð·Ð°Ð¿ÑÑкаÑÑÑÑ Ð¾Ð´Ð½Ð¾Ð²Ñеменно, а не по оÑеÑеди. РазÑабоÑÑики ÑкономÑÑ ÑекÑÐ½Ð´Ñ Ð½Ð° каждом <code>npm run dev</code>.</li> <li data-num="1021"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> <strong>Ðизайн-ÑÐ¾ÐºÐµÐ½Ñ Ð² одном меÑÑе</strong> â ÑвеÑа, ÑÑиÑÑÑ, оÑÑÑÑпÑ, ÑкÑÑглениÑ, Ñени, бÑейкпоинÑÑ ÐиÑкÑÑÑа заÑикÑиÑÐ¾Ð²Ð°Ð½Ñ ÐºÐ°Ðº единÑй Ð½Ð°Ð±Ð¾Ñ Ñокенов. JSON-ÑкÑпоÑÑ Ð´Ð»Ñ Ð´Ð¸Ð·Ð°Ð¹Ð½ÐµÑов, авÑомаÑиÑеÑÐºÐ°Ñ Ð¿ÑовеÑка ÑинÑ
ÑонизаÑии â болÑÑе никакиÑ
«а ÑÑÐ¾Ñ Ð¾ÑÑенок ÑоÑно ÑÐ¾Ñ Ð¶Ðµ?».</li> <li data-num="1022"><span class="changelog-tag changelog-tag--DX" data-tag-alias="DX">DX</span> <strong>ÐовÑй код пиÑеÑÑÑ Ð½Ð° Tailwind</strong> â вмеÑÑо ÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ SCSS-Ñайла Ð´Ð»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð¹ мелоÑи, ÑазÑабоÑÑик пиÑÐµÑ <code>tw:flex tw:gap-4</code> пÑÑмо в Ñаблоне. ÐвÑодополнение в VS Code, hover-подÑказки Ñ CSS-знаÑениÑми, поддеÑжка в Storybook.</li> <li data-num="1023"><span class="changelog-tag changelog-tag--DX" data-tag-alias="DX">DX</span> <strong>
18 авÑоÑеÑÑов ÑледÑÑ Ð·Ð° ÑÑилÑми</strong> â Tailwind-ÑбоÑка пÑовеÑÑеÑÑÑ Ð¿Ñи каждом запÑÑке ÑеÑÑов: Ð½ÐµÑ Ð»Ð¸ ÑлÑÑайного ÑбÑоÑа Bootstrap-ÑÑилей, на меÑÑе ли гÑанÑлÑÑнÑе импоÑÑÑ, коÑÑекÑен ли пÑеÑикÑ.</li> <li data-num="1024"><span class="changelog-tag changelog-tag--REFACTOR" data-tag-alias="REFACTOR">REFACTOR</span> <strong>4 мÑÑÑвÑÑ
CSS-клаÑÑа ÑдаленÑ</strong> â вÑÑÐ²Ð»ÐµÐ½Ñ Ð¸ вÑÑиÑÐµÐ½Ñ ÑÑили, коÑоÑÑе не иÑполÑзовалиÑÑ Ð½Ð¸Ð³Ð´Ðµ в пÑоекÑе. ÐаждÑй Ð±Ð°Ð¹Ñ Ð½Ð° ÑÑеÑÑ.</li> </ul> </div> </details> <details class="changelog-section"> <summary class="changelog-summary"><span class="changelog-meta"><span class="changelog-meta__version">v9.88.0</span><span class="changelog-meta__date">17-03-2026</span></span><h2 id="v9880-17-03-2026--seo-гигиена-ÑиÑе-индекÑ-бÑÑÑÑее-поиÑк-менÑÑе-мÑÑоÑа">SEO-гигиена: ÑиÑе индекÑ, бÑÑÑÑее поиÑк, менÑÑе мÑÑоÑа</h2></summary> <div class="changelog-section__body"> <p>Ð¯Ð½Ð´ÐµÐºÑ Ð¸ Google деÑжали в индекÑе поÑÑи ÑÑÑÑÑÑ Ð¼ÑÑоÑнÑÑ
URL â ÑÐ»ÐµÐ´Ñ ÑканеÑов ÑÑзвимоÑÑей, биÑÑе ÑÑÑлки из ÑоÑÑеÑей, давно ÑдалÑннÑе ÑÑÑаниÑÑ. ÐÑÑ ÑÑо ÑазмÑвало поиÑковÑÑ Ð²ÑдаÑÑ Ð¸ ÑÑаÑило кÑаÑлинговÑй бÑÐ´Ð¶ÐµÑ Ð²Ð¿ÑÑÑÑÑ. ТепеÑÑ Cloudflare Worker оÑÑÐµÐºÐ°ÐµÑ Ð¼ÑÑÐ¾Ñ Ð½Ð° леÑÑ, а обновлÑннÑй robots.txt подÑказÑÐ²Ð°ÐµÑ Ð¿Ð¾Ð¸Ñковикам, ÑÑо ÑÑиÑаÑÑ Ð´ÑблÑми.</p> <ul> <li data-num="1013"><span class="changelog-tag changelog-tag--SEO" data-tag-alias="SEO">SEO</span> <strong>СканеÑÑ ÑÑзвимоÑÑей болÑÑе не плодÑÑ Ð´Ñбли</strong> â 531 ÑанÑомнÑй URL Ñ Ð¿Ð°ÑамеÑÑами <code>customerNumber</code>, <code>scid</code>, <code>shopId</code> (SQL-injection пÑобÑ) ÑепеÑÑ Ð¿Ð¾Ð»ÑÑаÑÑ Ð¼Ð³Ð½Ð¾Ð²ÐµÐ½Ð½Ñй 301 на ÑиÑÑÑй адÑеÑ. Ð¯Ð½Ð´ÐµÐºÑ Ð¿ÐµÑеÑÑÐ°Ð½ÐµÑ Ð¿Ð¾ÐºÐ°Ð·ÑваÑÑ Â«discours.io/ÑÑаÑÑÑ?shopId=156465» в вÑдаÑе.</li> <li data-num="1014"><span class="changelog-tag changelog-tag--SEO" data-tag-alias="SEO">SEO</span> <strong>ÐÑÑоÑнÑе ÑÐ°Ð¹Ð»Ñ â 404 без вопÑоÑов</strong> â боÑÑ Ð¿Ñобовали <code>/.sql.7z</code>, <code>/backup_4.rar</code>, <code>/admin/admin.rar</code> â и полÑÑали 200 Ñ Ð³Ð»Ð°Ð²Ð½Ð¾Ð¹ ÑÑÑаниÑей. ТепеÑÑ Worker оÑдаÑÑ 404 мгновенно, не ÑÑаÑÑ Ð½Ð¸ байÑа ÑÑаÑика к ÑеÑвеÑÑ.</li> <li data-num="1015"><span class="changelog-tag changelog-tag--SEO" data-tag-alias="SEO">SEO</span> <strong>robots.txt Ð·Ð½Ð°ÐµÑ Ð¿Ñо мÑÑоÑ</strong> â ÑаÑÑиÑÐµÐ½Ð½Ð°Ñ Ð´Ð¸ÑекÑива <code>Clean-param</code> покÑÑÐ²Ð°ÐµÑ 20+ паÑамеÑÑов-паÑазиÑов. Ð¯Ð½Ð´ÐµÐºÑ Ð±ÑÑÑÑее ÑÐºÐ»ÐµÐ¸Ñ Ð´Ñбли, Google коÑÑекÑнее вÑбеÑÐµÑ ÐºÐ°Ð½Ð¾Ð½Ð¸ÑеÑкÑÑ Ð²ÐµÑÑиÑ.</li> <li data-num="1016"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>ÐенÑа Ñ Ð¿Ð°Ð³Ð¸Ð½Ð°Ñией не дÑблиÑÑеÑÑÑ Ð² поиÑке</strong> â <code>/feed?page=2</code> и далÑÑе ÑепеÑÑ Ð¿Ð¾Ð»ÑÑаÑÑ <code>noindex</code>. РанÑÑе ÑÑÐ¾Ñ Ð¿ÑÑÑ Ð±Ñл пÑопÑÑен â поиÑковики могли индекÑиÑоваÑÑ Ð´ÐµÑÑÑки одинаковÑÑ
ÑÑÑÐ°Ð½Ð¸Ñ Ð»ÐµÐ½ÑÑ.</li> <li data-num="1017"><span class="changelog-tag changelog-tag--PERF" data-tag-alias="PERF">PERF</span> <strong>ÐегаÑи Netlify-пÑÑи не нагÑÑжаÑÑ ÑеÑвеÑ</strong> â запÑоÑÑ Ðº ÑÑÑаÑевÑим <code>/.netlify/functions/sitemap-*</code> пеÑеÑ
ваÑÑваÑÑÑÑ Ð½Ð° edge. ÐивÑе sitemap-ÑндпоинÑÑ ÑабоÑаÑÑ ÐºÐ°Ðº пÑежде.</li> </ul> </div> </details> <details class="changelog-section"> <summary class="changelog-summary"><span class="changelog-meta"><span class="changelog-meta__version">v9.87.0</span><span class="changelog-meta__date">17-03-2026</span></span><h2 id="v9870-17-03-2026--Ñежим-пÑавок-обновление-«бÑло-â-ÑÑало»">Режим пÑавок: обновление «бÑло â ÑÑало»</h2></summary> <div class="changelog-section__body"> <p>ÐÑедложение пÑавок полноÑÑÑÑ Ð¿ÐµÑеÑабоÑано. РанÑÑе вÑделенное Ñлово пÑи замене пÑоÑÑо иÑÑезало, а новÑй ÑекÑÑ Ð¿Ð¾Ð¼ÐµÑалÑÑ ÐºÐ°Ðº ÑдалÑннÑй â пÑÑаниÑа. ТепеÑÑ ÐºÐ°Ð¶Ð´Ð°Ñ Ð·Ð°Ð¼ÐµÐ½Ð° ÑеÑÑно показÑÐ²Ð°ÐµÑ <del>ÑÑаÑое</del> и новое ÑÑдом, Ñ Ð°ÐºÐºÑÑаÑной визÑалÑной ÑвÑзкой. Ðаже ÑобÑÑвеннÑй ÑеÑновик можно ÑазмеÑиÑÑ Ð¿Ñавками «ÑÑÑом на ÑвежÑÑ Ð³Ð¾Ð»Ð¾Ð²Ñ», не ÑеÑÑÑ Ð¾Ñигинал.</p> <ul> <li data-num="1008"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>Ðамена вÑделенного ÑекÑÑа ÑабоÑÐ°ÐµÑ Ð¿ÑавилÑно</strong> â вÑделÑеÑÑ Ñлово, пеÑаÑаеÑÑ Ð½Ð¾Ð²Ð¾Ðµ: ÑÑаÑое оÑÑаÑÑÑÑ Ð·Ð°ÑÑÑкнÑÑÑм, новое â зелÑнÑм ÑÑдом. Ðикакого иÑÑезаÑÑего ÑекÑÑа и пеÑепÑÑаннÑÑ
ÑвеÑов.</li> <li data-num="1009"><span class="changelog-tag changelog-tag--UX" data-tag-alias="UX">UX</span> <strong>ÐÑе пÑавки â видимÑе</strong> â Backspace, Delete, вÑÑезание, вÑÑавка повеÑÑ
вÑÐ´ÐµÐ»ÐµÐ½Ð¸Ñ â каждое дейÑÑвие в Ñежиме пÑавок оÑÑавлÑÐµÑ Ñлед. ÐÐ»Ñ Â«ÑиÑÑового» ÑедакÑиÑÐ¾Ð²Ð°Ð½Ð¸Ñ ÐµÑÑÑ Ð¾Ð±ÑÑнÑй Ñежим, а Ñежим пÑавок ÑепеÑÑ ÑеÑÑно ÑÑÐµÐºÐ°ÐµÑ Ð²ÑÑ, вклÑÑÐ°Ñ ÑобÑÑвеннÑе ÑеÑновики.</li> <li data-num="1010"><span class="changelog-tag changelog-tag--UX" data-tag-alias="UX">UX</span> <strong>ÐизÑалÑÐ½Ð°Ñ ÑвÑзка <del>бÑло</del> ⺠ÑÑало</strong> â когда ÑдалÑннÑй и добавленнÑй ÑекÑÑ ÑÑоÑÑ ÑÑдом, Ð¼ÐµÐ¶Ð´Ñ Ð½Ð¸Ð¼Ð¸ поÑвл
1ÑеÑÑÑ Ð»Ñгкий ÑазделиÑÐµÐ»Ñ âº. СÑÐ°Ð·Ñ Ð²Ð¸Ð´Ð½Ð¾, ÑÑо ÑÑо замена, а не два незавиÑимÑÑ
изменениÑ.</li> <li data-num="1011"><span class="changelog-tag changelog-tag--A11Y" data-tag-alias="A11Y">A11Y</span> <strong>ÐаÑÑÑкнÑÑÑй ÑекÑÑ ÑÑал ÑиÑаемее</strong> â конÑÑаÑÑ ÑдалÑнного ÑекÑÑа ÑвелиÑен Ñ 0.7 до 0.85, hover-ÑÑÑÐµÐºÑ ÑÑал Ñемнее. ÐÑавки видно даже на неидеалÑном мониÑоÑе.</li> <li data-num="1012"><span class="changelog-tag changelog-tag--PERF" data-tag-alias="PERF">PERF</span> <strong>ÐавигаÑÐ¸Ñ Ð¿Ð¾ пÑавкам ÑÑкоÑена</strong> â поиÑк гÑÐ°Ð½Ð¸Ñ Ð·Ð°ÑÑÑкнÑÑого блока ÑепеÑÑ Ð¸Ð´ÑÑ Ð¾Ñ ÐºÑÑÑоÑа к кÑаÑм (O(длина пÑавки)), а не ÑканиÑÑÐµÑ Ð²ÐµÑÑ Ð´Ð¾ÐºÑÐ¼ÐµÐ½Ñ (O(докÑменÑ)). Ðа длиннÑÑ
ÑÑаÑÑÑÑ
замеÑно бÑÑÑÑее.</li> </ul> </div> </details> <details class="changelog-section"> <summary class="changelog-summary"><span class="changelog-meta"><span class="changelog-meta__version">v9.86.0</span><span class="changelog-meta__date">17-03-2026</span></span><h2 id="v9860-17-03-2026--генеÑалÑнаÑ-ÑбоÑка-3-379-ÑÑаÑей-пÑиведенÑ-в-поÑÑдок">ÐенеÑалÑÐ½Ð°Ñ ÑбоÑка: 3 379 ÑÑаÑей пÑÐ¸Ð²ÐµÐ´ÐµÐ½Ñ Ð² поÑÑдок</h2></summary> <div class="changelog-section__body"> <p>ТÑи ÑÑÑÑÑи ÑÑаÑей пÑоÑли ÑеÑез пÑÑиÑÑÑпенÑаÑÑÑ Ð°Ð²ÑомаÑиÑеÑкÑÑ ÑиÑÑкÑ. РезÑлÑÑÐ°Ñ â никакого «наÑÐ»ÐµÐ´Ð¸Ñ Ð½ÑлевÑÑ
» в ÑазмеÑке: оглавлениÑ, ÑпойлеÑÑ, блоки «ЧиÑайÑе Ñакже» и видео-вÑÑавки конвеÑÑиÑÐ¾Ð²Ð°Ð½Ñ Ð² ÑовÑеменнÑе инÑÑÑÑменÑÑ ÑедакÑоÑа, а мÑÑÐ¾Ñ Ð¾Ñ Word, Google Docs и ÑÑаÑÑÑ
бÑаÑзеÑов вÑÑиÑен до нÑлÑ. СÑаÑÑи ÑÑали легÑе, ÑиÑе и гоÑÐ¾Ð²Ñ Ðº ÑледÑÑÑей главе плаÑÑоÑмÑ.</p> <ul> <li data-num="998"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> <strong>ÐÐ³Ð»Ð°Ð²Ð»ÐµÐ½Ð¸Ñ ÑабоÑаÑÑ ÐºÐ°Ðº в ÑедакÑоÑе</strong> â 122 legacy-Ð¾Ð³Ð»Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Ñ ÑÑÑной HTML-ÑазмеÑкой (ÑÑиÑÑ Muller, inline-ÑÑили, Ñ
ÑÑпкие ÑкоÑÑ) пÑевÑаÑилиÑÑ Ð² наÑÑоÑÑие блоки <code>toc-block</code>. ÐликабелÑнÑе, ÑвоÑаÑиваемÑе, обновлÑемÑе кнопкой «ÐбновиÑÑ» пÑÑмо в ÑекÑÑе.</li> <li data-num="999"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> <strong>СпойлеÑÑ Ð¿ÐµÑежили мигÑаÑиÑ</strong> â каждÑй legacy-ÑÐ¿Ð¾Ð¹Ð»ÐµÑ (подвÑÑÑÑка + <code><details></code>) аккÑÑаÑно пеÑееÑ
ал в наÑивнÑй <code>spoiler-block</code>. Ðнопка «СвеÑнÑÑÑ», заголовок, анимаÑÐ¸Ñ ÑаÑкÑÑÑÐ¸Ñ â вÑÑ Ð½Ð° меÑÑе.</li> <li data-num="1000"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> <strong>«ЧиÑайÑе Ñакже» â ÑепеÑÑ ÑедакÑиÑÑемÑй блок</strong> â 160 вÑÑÑнÑÑ ÑвÑÑÑÑаннÑÑ
блоков Ñ ÑекомендаÑиÑми ÑÑали инÑеÑакÑивнÑми: двойной клик оÑкÑÑÐ²Ð°ÐµÑ Ð´Ð¸Ð°Ð»Ð¾Ð³, можно добавиÑÑ/ÑдалиÑÑ ÑÑÑлки, поменÑÑÑ Ð·Ð°Ð³Ð¾Ð»Ð¾Ð²Ð¾Ðº, поиÑкаÑÑ Ð¼Ð°ÑеÑÐ¸Ð°Ð»Ñ Ð¿Ð¾ базе.</li> <li data-num="1001"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> <strong>Ðидео пеÑееÑ
али в новÑй плееÑ</strong> â 478 legacy-embed'ов (YouTube, Vimeo, RuTube, VK Video) ÑепеÑÑ Ð¸ÑполÑзÑÑÑ ÐµÐ´Ð¸Ð½Ñй <code>social-embed</code> Ñ Ð¿ÑавилÑнÑми пÑопоÑÑиÑми, lazy-загÑÑзкой, fallback-ÑÑÑлкой и подпиÑÑÑ. ÐоковÑе видео ÑоÑ
Ñанили ÑÐ²Ð¾Ñ Ð¿Ð¾Ð·Ð¸ÑиÑ.</li> <li data-num="1002"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>15 112 пÑÑÑÑÑ
паÑагÑаÑов ÑдаленÑ</strong> â ÑÐµÐ³Ð¾Ð²Ð°Ñ Ð¿ÑÐ»Ñ Ð¾Ñ ÐºÐ¾Ð¿Ð¸Ð¿Ð°ÑÑа из Word и Google Docs: <code><p></p></code>, <code><div></div></code>, пÑÑÑÑе <code><h2></h2></code>. СÑаÑÑи ÑÑали ÑиÑе и компакÑнее â бÑÑÑÑее ÑендеÑÑÑÑÑ.</li> <li data-num="1003"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>ÐÑÑÐ¾Ñ Ð¾Ñ Word, LibreOffice и Apple â вÑÑиÑен</strong> â namespace-Ñеги (<code><w:></code>, <code><o:></code>, <code><v:></code>), клаÑÑÑ <code>.MsoNormal</code>, <code>.p1</code>â<code>.p9</code>, <code>.bumpedfont</code>, <code>.scxw*</code>, <code>.western</code>, Ñеги <code><font></code>, <code><center></code>, <code><strike></code>, <code><yobject></code>, <code><style></code> â Ð¿Ð¾Ð»Ð½Ð°Ñ Ð·Ð°ÑиÑÑка. 844 докÑменÑа ÑÑали легÑе.</li> <li data-num="1004"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <code>**<h1></code> в ÑекÑÑе болÑÑе не конÑликÑÑÐµÑ Ñ Ð·Ð°Ð³Ð¾Ð»Ð¾Ð²ÐºÐ¾Ð¼ ÑÑаÑÑи** â 52 ÑÑаÑÑи Ñ <code><h1></code> в body ÑконвеÑÑиÑÐ¾Ð²Ð°Ð½Ñ Ð² <code><h2></code>. ÐизÑалÑно ниÑего не изменилоÑÑ (CSS ÑÑилизÑÐµÑ Ð¸Ñ
одинаково), Ð
1½Ð¾ ÑеманÑика ÑÑÑаниÑÑ ÑепеÑÑ ÐºÐ¾ÑÑекÑна Ð´Ð»Ñ Ð¿Ð¾Ð¸Ñковиков.</li> <li data-num="1005"><span class="changelog-tag changelog-tag--A11Y" data-tag-alias="A11Y">A11Y</span> <strong>1 589 каÑÑинок полÑÑили alt-ÑекÑÑÑ</strong> â каждÑй <code><img></code> без alt ÑепеÑÑ Ð¸Ð¼ÐµÐµÑ <code>alt="ÐллÑÑÑÑаÑиÑ"</code>. СкÑинÑÐ¸Ð´ÐµÑ Ð±Ð¾Ð»ÑÑе не молÑÐ¸Ñ Ð½Ð° иллÑÑÑÑаÑиÑÑ
.</li> <li data-num="1006"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>Inline-ÑÑили вÑÑиÑенÑ</strong> â <code>cursor: pointer</code>, <code>font-family: Muller</code>, заÑ
аÑдкоженнÑе <code>font-size</code>, <code>margin !important</code>, <code>line-height</code> â вÑÑ ÑбÑано. СÑили ÑпÑавлÑÑÑÑÑ CSS плаÑÑоÑмÑ, а не инлайн-аÑÑибÑÑами.</li> <li data-num="1007"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> <strong>ÐвÑомаÑиÑеÑкий аÑÐ´Ð¸Ñ ÑазмеÑки</strong> â пÑи каждом деплое ÑиÑÑема ÑканиÑÑÐµÑ Ð²Ñе маÑеÑÐ¸Ð°Ð»Ñ Ð¸ ÑоÑ
ÑанÑÐµÑ Ð¾ÑÑÑÑ Ð¾ legacy-паÑÑеÑнаÑ
. ÐÑÑÐ¾Ñ Ð±Ð¾Ð»ÑÑе не накапливаеÑÑÑ Ð½ÐµÐ·Ð°Ð¼ÐµÑно.</li> </ul> </div> </details> <details class="changelog-section"> <summary class="changelog-summary"><span class="changelog-meta"><span class="changelog-meta__version">v9.85.0</span><span class="changelog-meta__date">17-03-2026</span></span><h2 id="v9850-17-03-2026--оÑлайн-ÑÑÑойÑивоÑÑÑ-и-ÑÑкоÑение-загÑÑзки">ÐÑлайн-ÑÑÑойÑивоÑÑÑ Ð¸ ÑÑкоÑение загÑÑзки</h2></summary> <div class="changelog-section__body"> <p>СеÑÐ²ÐµÑ Ð»Ñг â а ÑÑаÑÑÑ Ð¾ÑÑалаÑÑ. ТепеÑÑ Ð¿Ð»Ð°ÑÑоÑма кÑÑиÑÑÐµÑ Ð¿ÑоÑиÑаннÑе маÑеÑÐ¸Ð°Ð»Ñ Ð¸ оÑдаÑÑ Ð¸Ñ
мгновенно, даже еÑли инÑеÑÐ½ÐµÑ Ð¿Ñопал или бÑкенд недоÑÑÑпен. Ð ÑÑÑаниÑÑ Ñегов, авÑоÑов и ÑпÑавки ÑÑали оÑкÑÑваÑÑÑÑ Ð½Ð° 100â200 Ð¼Ñ Ð±ÑÑÑÑее благодаÑÑ Ñанним подÑказкам бÑаÑзеÑÑ.</p> <ul> <li data-num="991"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> <strong>ЧиÑали â знаÑÐ¸Ñ ÑоÑ
Ñанили</strong> â Service Worker ÑепеÑÑ Ð·Ð°Ð¿Ð¾Ð¼Ð¸Ð½Ð°ÐµÑ Ð¾ÑвеÑÑ API по ÑÑÑаÑегии NetworkFirst: пока еÑÑÑ ÑеÑÑ â даннÑе Ñвежие, Ð½ÐµÑ ÑеÑи â показÑÐ²Ð°ÐµÑ Ð¿Ð¾ÑледнÑÑ ÑоÑ
ÑанÑннÑÑ Ð²ÐµÑÑиÑ. ÐÑкÑÑвали ÑÑаÑÑÑ ÑÐ°Ñ Ð½Ð°Ð·Ð°Ð´? Ðна оÑкÑоеÑÑÑ Ð¸ в меÑÑо без ÑвÑзи.</li> <li data-num="992"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>Preconnect к API ÑабоÑал вÑ
олоÑÑÑÑ</strong> â 103 Early Hints оÑкÑÑвали non-CORS Ñоединение Ð´Ð»Ñ <code>api.discours.io</code>, а вÑе запÑоÑÑ Ðº API идÑÑ ÑеÑез CORS. ÐÑаÑÐ·ÐµÑ Ð²ÑбÑаÑÑвал «подгоÑовленное» Ñоединение и оÑкÑÑвал новое. ТепеÑÑ <code>crossorigin</code> на меÑÑе â handshake пеÑеиÑполÑзÑеÑÑÑ, минÑÑ 100â200 Ð¼Ñ Ð¿Ñи пеÑвом API-запÑоÑе.</li> <li data-num="993"><span class="changelog-tag changelog-tag--PERF" data-tag-alias="PERF">PERF</span> <strong>Ранние подÑказки Ð´Ð»Ñ Ð²ÑеÑ
ÑÑÑаниÑ</strong> â 103 Early Hints ÑанÑÑе ÑабоÑали ÑолÑко на главной и ÑÑаÑÑÑÑ
. ТепеÑÑ ÑÑÑаниÑÑ Ñегов, авÑоÑов, ÑпÑавки и гайдов Ñоже полÑÑаÑÑ preconnect-Ñ
инÑÑ â бÑаÑÐ·ÐµÑ Ð½Ð°ÑÐ¸Ð½Ð°ÐµÑ DNS/TLS-ÑÑкопожаÑие еÑÑ Ð´Ð¾ полÑÑÐµÐ½Ð¸Ñ HTML.</li> <li data-num="994"><span class="changelog-tag changelog-tag--UX" data-tag-alias="UX">UX</span> <strong>ÐедленнÑй инÑеÑÐ½ÐµÑ â не пÑиговоÑ</strong> â ÑаймаÑÑ ÑеÑевого запÑоÑа ÑвелиÑен Ñ 3 до 5 ÑекÑнд. Ðа 3G/EDGE полÑзоваÑели полÑÑали ÑÑÑаÑевÑий кÑÑ Ð²Ð¼ÐµÑÑо ÑвежиÑ
даннÑÑ
, поÑÐ¾Ð¼Ñ ÑÑо оÑÐ²ÐµÑ Ð½Ðµ ÑÑпевал пÑийÑи. ТепеÑÑ Ð¿Ð»Ð°ÑÑоÑма подождÑÑ ÑÑÑÑ Ð´Ð¾Ð»ÑÑе, пÑежде Ñем пеÑеклÑÑиÑÑÑÑ Ð½Ð° оÑлайн-копиÑ.</li> <li data-num="995"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>Service Worker обновлÑеÑÑÑ Ñам</strong> â ÑанÑÑе поÑле Ð´ÐµÐ¿Ð»Ð¾Ñ Ð¿Ð¾Ð»ÑзоваÑели могли ÑÑÑками ÑидеÑÑ Ð½Ð° ÑÑаÑой веÑÑии SW, пока не ÑделаÑÑ hard-refresh. ТепеÑÑ SW пÑовеÑÑÐµÑ Ð¾Ð±Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ ÐºÐ°Ð¶Ð´Ñй ÑÐ°Ñ â новÑй кÑÑ Ð¿Ð¾Ð´Ñ
ваÑÑваеÑÑÑ Ð°Ð²ÑомаÑиÑеÑки.</li> <li data-num="996"><span class="changelog-tag changelog-tag--SEC" data-tag-alias="SEC">SEC</span> <strong>Ðдин ÑаниÑÐ°Ð¹Ð·ÐµÑ Ð²Ð¼ÐµÑÑо ÑеÑÑи</strong> â ÑкÑаниÑование HTML, оÑиÑÑка Ñегов, пÑовеÑка ÑÑÑлок и заÑиÑа Ð¾Ñ XSS жили в ÑеÑÑи ÑазнÑÑ
ÑайлаÑ
Ñ ÑазнÑм поведением. ТепеÑÑ ÐµÐ´Ð¸Ð½Ñй модÑÐ»Ñ <code>sanitization.js</code> â одинаковÑе пÑавила везде, Ð¾Ñ ÐºÐ¾Ð¼Ð¼ÐµÐ½ÑаÑиев до заголовков в ленÑе. ÐинÑÑ 200 ÑÑÑок дÑблиÑÑÑÑегоÑÑ ÐºÐ¾Ð´Ð°, плÑÑ ÑвеÑенноÑÑÑ, ÑÑо ни одна ÑÐµÐ»Ñ Ð½Ðµ оÑÑалаÑÑ Ð½ÐµÐ·Ð°ÐºÑÑÑой.</li> <li data-num="997"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>СÑÑлки Ñ <code>data:</code> в пÑÑи болÑÑе не блокиÑÑÑÑÑÑ</strong> â пÑовеÑка опаÑнÑÑ
URL-ÑÑ
ем ÑанÑÑе могла ÑÑабоÑаÑÑ Ð½Ð° легиÑимнÑй адÑÐµÑ Ð²Ñоде <code>example.com/data:export</code>. ТепеÑÑ Ð¿Ð°ÑÑеÑÐ½Ñ Ð·Ð°ÑкоÑÐµÐ½Ñ Ð½Ð° наÑало ÑÑÑоки â ложнÑÑ
ÑÑабаÑÑваний неÑ, а <code>javascript:</code> и <code>vbscript:</code> по-пÑÐµÐ¶Ð½ÐµÐ¼Ñ Ð¾ÑÑекаÑÑÑÑ.</li> </ul> </div> </details> <details class="changelog-section"> <summary class="changelog-summary"><span class="changelog-meta"><span class="changelog-meta__version">v9.84.0</span><span class="changelog-meta__date">17-03-2026</span></span><h2 id="v9840-17-03-2026--кадÑиÑование-изобÑажений-пÑÑмо-в-ÑедакÑоÑе">ÐадÑиÑование изобÑажений пÑÑмо в ÑедакÑоÑе</h2></summary> <div class="changelog-section__body"> <p>ФоÑогÑаÑÐ¸Ñ Ð±Ð¾Ð»ÑÑе не нÑжно оÑкÑÑваÑÑ Ð² Photoshop, ÑÑÐ¾Ð±Ñ Ð¾Ð±ÑезаÑÑ Ð»Ð¸Ñнее. Ðажали â â подвинÑли ÑÐ°Ð¼ÐºÑ â гоÑово. РабоÑÐ°ÐµÑ Ð½Ð° каÑÑинкаÑ
в ÑекÑÑе, на ÑлайдаÑ
галеÑеи и на обложке маÑеÑиала.</p> <ul> <li data-num="983"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> <strong>ÐадÑиÑование одним кликом</strong> â кнопка â в ÑÑлбаÑе изобÑÐ°Ð¶ÐµÐ½Ð¸Ñ Ð¾ÑкÑÑÐ²Ð°ÐµÑ Ð¿Ð¾Ð»Ð½Ð¾ÑкÑаннÑÑ Ð¼Ð¾Ð´Ð°Ð»ÐºÑ Ñ Ð¿ÐµÑеÑаÑкиваемой облаÑÑÑÑ Ð¾Ð±Ñезки. ÐÑÑÑ Ð¿ÑеÑеÑов ÑооÑноÑÐµÐ½Ð¸Ñ ÑÑоÑон (Ñвободно, 16:9, 4:3, 1:1, 3:2), повоÑÐ¾Ñ Ð¸ зÑм. ÐбÑÐµÐ·Ð°Ð½Ð½Ð°Ñ ÐºÐ°ÑÑинка ÑоÑ
ÑанÑеÑÑÑ ÐºÐ°Ðº новÑй Ñайл â оÑигинал оÑÑаÑÑÑÑ Ð½ÐµÑÑонÑÑÑм.</li> <li data-num="984"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> <strong>ÐалеÑÐµÑ Ñоже кадÑиÑÑеÑÑÑ</strong> â каждÑй Ñлайд ÑлайдÑÐ¾Ñ Ð¼Ð¾Ð¶Ð½Ð¾ обÑезаÑÑ Ð¾ÑделÑно, не ÑазбиÑÐ°Ñ Ð³Ð°Ð»ÐµÑеÑ. Та же модалка, ÑÐ¾Ñ Ð¶Ðµ ÑлоÑ.</li> <li data-num="985"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> <strong>Ðбложка маÑеÑиала</strong>
1 â кнопка кадÑиÑÐ¾Ð²Ð°Ð½Ð¸Ñ Ð¿Ð¾ÑвлÑеÑÑÑ ÑÑдом Ñ ÐºÐ½Ð¾Ð¿ÐºÐ¾Ð¹ ÑдалениÑ. Ðо ÑмолÑÐ°Ð½Ð¸Ñ Ð¿ÑÐµÐ´Ð»Ð°Ð³Ð°ÐµÑ 16:9 â опÑималÑное ÑооÑноÑение Ð´Ð»Ñ Ð¿ÑевÑÑ Ð² ленÑе.</li> <li data-num="986"><span class="changelog-tag changelog-tag--UX" data-tag-alias="UX">UX</span> <strong>ÐоÑÑÑие клавиÑи в модалке</strong> â <code>+</code>/<code>â</code> зÑм, <code>R</code> повоÑоÑ, ÑÑÑелки ÑдвигаÑÑ Ð¸Ð·Ð¾Ð±Ñажение, <code>0</code> ÑбÑаÑÑÐ²Ð°ÐµÑ Ð²ÑÑ Ðº иÑÑ
одномÑ. ÐодÑказка видна Ð²Ð½Ð¸Ð·Ñ ÑÑлбаÑа.</li> <li data-num="987"><span class="changelog-tag changelog-tag--UX" data-tag-alias="UX">UX</span> <strong>ÐÑеÑÐµÑ Ð·Ð°Ð¿Ð¾Ð¼Ð¸Ð½Ð°ÐµÑÑÑ</strong> â вÑбÑанное ÑооÑноÑение ÑÑоÑон ÑоÑ
ÑанÑеÑÑÑ Ð¼ÐµÐ¶Ð´Ñ ÑеÑÑиÑми. ÐÑли Ð²Ñ Ð²Ñегда кадÑиÑÑеÑе 16:9 â не пÑидÑÑÑÑ ÐºÐ»Ð¸ÐºÐ°ÑÑ ÐºÐ°Ð¶Ð´Ñй Ñаз.</li> <li data-num="988"><span class="changelog-tag changelog-tag--UX" data-tag-alias="UX">UX</span> <strong>ÐбÑаÑÐ½Ð°Ñ ÑвÑÐ·Ñ Ð½Ð° каждом Ñаге</strong> â ÑÐ¿Ð¸Ð½Ð½ÐµÑ Ð¿Ð¾ÐºÐ° изобÑажение гÑÑзиÑÑÑ, индикаÑÐ¾Ñ ÑоÑ
ÑÐ°Ð½ÐµÐ½Ð¸Ñ Ð¿Ñи загÑÑзке, Ñведомление пÑи оÑибке. ÐиÑего не пÑоиÑÑ
Ð¾Ð´Ð¸Ñ Ð¼Ð¾Ð»Ñа.</li> <li data-num="989"><span class="changelog-tag changelog-tag--A11Y" data-tag-alias="A11Y">A11Y</span> <strong>ÐÐ¾Ð»Ð½Ð°Ñ ÐºÐ»Ð°Ð²Ð¸Ð°ÑÑÑÐ½Ð°Ñ Ð´Ð¾ÑÑÑпноÑÑÑ</strong> â focus trap, Escape Ð´Ð»Ñ Ð·Ð°ÐºÑÑÑиÑ, Ctrl+Enter Ð´Ð»Ñ Ð¿ÑименениÑ. ARIA-ÑазмеÑка модалки Ð´Ð»Ñ ÑкÑинÑидеÑов.</li> <li data-num="990"><span class="changelog-tag changelog-tag--PERF" data-tag-alias="PERF">PERF</span> <strong>Cropper.js гÑÑзиÑÑÑ ÑолÑко в ÑедакÑоÑе</strong> â библиоÑека (~47 ÐÐ) вÑ
Ð¾Ð´Ð¸Ñ Ð² editor chunk, ÑиÑаÑелÑÑкие ÑÑÑаниÑÑ Ð½Ðµ заÑÑонÑÑÑ.</li> </ul> </div> </details> <details class="changelog-section"> <summary class="changelog-summary"><span class="changelog-meta"><span class="changelog-meta__version">v9.83.0</span><span class="changelog-meta__date">16-03-2026</span></span><h2 id="v9830-16-03-2026--pdf-книги-внÑÑÑи-ÑÑаÑей">PDF-книги внÑÑÑи ÑÑаÑей</h2></summary> <div class="changelog-section__body"> <p>Ðниги ÑепеÑÑ Ð¶Ð¸Ð²ÑÑ Ð¿ÑÑмо в пÑбликаÑии. Ðожно нажаÑÑ Ð½Ð° ÐºÐ½Ð¾Ð¿ÐºÑ Ð² ÑедакÑоÑе, вÑÑавиÑÑ ÑÑÑÐ»ÐºÑ Ð¸Ð»Ð¸ загÑÑзиÑÑ pdfÑайл â и ÑиÑаÑÐµÐ»Ñ ÑÐ¼Ð¾Ð¶ÐµÑ Ð»Ð¸ÑÑаÑÑ Ð²ÐµÑÑÑкÑ, не Ð¿Ð¾ÐºÐ¸Ð´Ð°Ñ ÑÑÑаниÑÑ. СобÑÑвеннÑй инÑÑÑÑÐ¼ÐµÐ½Ñ Ð¿ÑоÑмоÑÑа pdf, никакиÑ
embed-ÑеÑвиÑов, никакой ÑÐµÐºÐ»Ð°Ð¼Ñ Ð¿Ð¾Ð²ÐµÑÑ
ÑекÑÑов. РабоÑÐ°ÐµÑ Ð½Ð° ÑелеÑоне, в ÑÑмной Ñеме и без инÑеÑнеÑа (Ð´Ð»Ñ Ñже загÑÑженнÑÑ
ÑÑÑаниÑ).</p> <ul> <li data-num="972"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> <strong>PDF пÑÑмо в ÑÑаÑÑе</strong> â полноÑеннÑй viewer: ÑÑÑелками или Ñвайпом по ÑÑÑаниÑам, зÑм Ð´Ð»Ñ Ð¼ÐµÐ»ÐºÐ¾Ð³Ð¾ ÑÑиÑÑа, полноÑкÑаннÑй Ñежим Ð´Ð»Ñ Ð¿Ð¾Ð³ÑÑжениÑ. СкаÑаÑÑ Ð¾Ñигинал â одна кнопка. ÐикакиÑ
«оÑкÑойÑе в новой вкладке».</li> <li data-num="973"><span class="changelog-tag changelog-tag--UX" data-tag-alias="UX">UX</span> <strong>ТекÑÑ Ð¸Ð· PDF можно вÑделÑÑÑ Ð¸ копиÑоваÑÑ</strong> â text layer повеÑÑ
canvas позволÑÐµÑ Ð²ÑделиÑÑ ÑиÑаÑÑ Ð¸ ÑкопиÑоваÑÑ ÐºÐ°Ðº обÑÑнÑй ÑекÑÑ. РабоÑÐ°ÐµÑ Ð½Ð° вÑеÑ
ÑÑÑаниÑаÑ
докÑменÑа.</li> <li data-num="974"><span class="changelog-tag changelog-tag--UX" data-tag-alias="UX">UX</span> <strong>Retina-ÑÑÑкоÑÑÑ Ð½Ð° лÑбом ÑкÑане</strong> â ÑендеÑинг ÑÑиÑÑÐ²Ð°ÐµÑ Ð¿Ð»Ð¾ÑноÑÑÑ Ð¿Ð¸ÐºÑелей ÑÑÑÑойÑÑва. Ðа MacBook и iPad ÑекÑÑ Ð½Ðµ ÑаÑплÑваеÑÑÑ Ð´Ð°Ð¶Ðµ пÑи макÑималÑном зÑме.</li> <li data-num="975"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> <strong>Ðнопка «PDF» в ÑпеÑблокаÑ
</strong> â в вÑпадаÑÑем Ð¼ÐµÐ½Ñ Â«+» ÑÑдом Ñ Ð¾Ð³Ð»Ð°Ð²Ð»ÐµÐ½Ð¸ÐµÐ¼ и ÑпойлеÑом. Ðва ÑпоÑоба: вÑÑавиÑÑ ÑÑÑÐ»ÐºÑ Ð½Ð° PDF или загÑÑзиÑÑ Ñайл пÑÑмо Ñ ÐºÐ¾Ð¼Ð¿ÑÑÑеÑа (до 100 ÐÐ). Drag-and-drop Ñоже ÑабоÑаеÑ.
1</li> <li data-num="976"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> <strong>ÐагÑÑзка докÑменÑов на ÑеÑвеÑ</strong> â PDF Ñ
ÑаниÑÑÑ Ð² S3 ÑÑдом Ñ ÐºÐ°ÑÑинками. ÐвÑÐ¾Ñ Ð·Ð°Ð³ÑÑзил â ÑÑÑлка навÑегда, без внеÑниÑ
завиÑимоÑÑей. Endpoint <code>POST /api/v2/upload-document</code> Ñ magic-bytes валидаÑией и rate-limiting.</li> <li data-num="977"><span class="changelog-tag changelog-tag--UX" data-tag-alias="UX">UX</span> <strong>ÐÑогÑеÑÑ-Ð±Ð°Ñ Ð¿Ñи загÑÑзке</strong> â видно, ÑколÑко из 100 ÐÐ Ñже ÑлеÑело. Ðе пÑиÑ
одиÑÑÑ Ð³Ð°Ð´Ð°ÑÑ, Ð·Ð°Ð²Ð¸Ñ Ð»Ð¸ диалог.</li> <li data-num="978"><span class="changelog-tag changelog-tag--PERF" data-tag-alias="PERF">PERF</span> <strong>pdf.js гÑÑзиÑÑÑ ÑолÑко когда нÑжен</strong> â библиоÑека (~300 ÐÐ) вÑделена в оÑделÑнÑй webpack-chunk и подгÑÑжаеÑÑÑ Ð¿Ð¾ IntersectionObserver, когда PDF-блок вÑ
Ð¾Ð´Ð¸Ñ Ð²Ð¾ вÑÑпоÑÑ. ÐÑновной бандл не поÑÑжелел ни на байÑ.</li> <li data-num="979"><span class="changelog-tag changelog-tag--PERF" data-tag-alias="PERF">PERF</span> <strong>Worker из npm, не CDN</strong> â pdf.js worker беÑÑÑÑÑ Ð¸Ð· ÑÑÑановленного пакеÑа, а не Ñ Ð²Ð½ÐµÑнего CDN. ÐÐµÑ Ð·Ð°Ð²Ð¸ÑимоÑÑи Ð¾Ñ cloudflare, ÑабоÑÐ°ÐµÑ Ð¿Ñи лÑбой ÑеÑи, веÑÑÐ¸Ñ Ð²Ñегда ÑовпадаеÑ.</li> <li data-num="980"><span class="changelog-tag changelog-tag--PERF" data-tag-alias="PERF">PERF</span> <strong>Canvas до 4096px</strong> â на мобилÑнÑÑ
GPU canvas авÑомаÑиÑеÑки ÑменÑÑаеÑÑÑ Ð´Ð¾ безопаÑного лимиÑа, ÑÑÐ¾Ð±Ñ Ð½Ðµ вÑзваÑÑ ÑÑÑнÑй ÑкÑан или вÑÐ»ÐµÑ Ð²ÐºÐ»Ð°Ð´ÐºÐ¸.</li> <li data-num="981"><span class="changelog-tag changelog-tag--SEC" data-tag-alias="SEC">SEC</span> <strong>JS из PDF заблокиÑован</strong> â <code>isEvalSupported: false</code> запÑеÑÐ°ÐµÑ Ð²Ñполнение ÑкÑипÑов, вÑÑÑоеннÑÑ
в PDF-Ñайл.</li> <li data-num="982"><span class="changelog-tag changelog-tag--A11Y" data-tag-alias="A11Y">A11Y</span> <strong>ARIA-ÑазмеÑка пÑоÑмоÑÑÑика</strong> â <code>role="region"</code>, <code>aria-live</code> на номеÑе ÑÑÑаниÑÑ, <code>role="toolbar"</code> на панели навигаÑии. Screen reader озвÑÑÐ¸Ð²Ð°ÐµÑ Ð¿ÐµÑелиÑÑÑвание.</li> </ul> </div> </details> <details class="changelog-section"> <summary class="changelog-summary"><span class="changelog-meta"><span class="changelog-meta__version">v9.82.0</span><span class="changelog-meta__date">16-03-2026</span></span><h2 id="v9820-16-03-2026--маÑÑовÑкий-маÑÑ-320-Ñайлов-ÑеÑакÑоÑинга">ÐаÑÑовÑкий маÑÑ: 320 Ñайлов ÑеÑакÑоÑинга</h2></summary> <div class="changelog-section__body"> <p>Самое кÑÑпное ÑеÑакÑоÑинг обновление плаÑÑоÑÐ¼Ñ Ð·Ð° поÑледние меÑÑÑÑ. СÑаÑÑи оÑкÑÑваÑÑÑÑ Ð±ÐµÐ· меÑÑаниÑ, в ÑедакÑоÑе поÑвилоÑÑ ÑоÑмаÑиÑование ÑемаÑок и 20 новÑÑ
Ñмбед-пÑовайдеÑов, ÑеÑÑÑе ÑÑжеловеÑнÑÑ
конÑÑоллеÑа ÑаÑÑÐµÐ¿Ð»ÐµÐ½Ñ Ð½Ð° модÑли, а под вÑем ÑÑим â 19 framework-agnostic ÑеÑвиÑов и 134 авÑоÑеÑÑа. 320 Ñайлов изменено, каждÑй пÑоÑÑл ÑквознÑÑ Ð¿ÑовеÑÐºÑ Ð¿ÐµÑед вÑкаÑкой.</p> <ul> <li data-num="951"><span class="changelog-tag changelog-tag--UX" data-tag-alias="UX">UX</span> <strong>СÑаÑÑи оÑкÑÑваÑÑÑÑ ÐºÐ°Ðº книга</strong> â ÑеÑвеÑное пÑевÑÑ Ð´ÐµÑжиÑÑÑ Ñовно до моменÑа, когда Angular-конÑÐµÐ½Ñ Ñже гоÑов. Ðикакой белой вÑпÑÑки, никакого повÑоÑного fade-in каÑÑинки. ÐеÑеÑ
од невидим.</li> <li data-num="952"><span class="changelog-tag changelog-tag--UX" data-tag-alias="UX">UX</span> <strong>Embed them all!</strong> Scribd, Bandcamp, TikTok и еÑÑ 32 пÑовайдеÑа â вÑÑавлÑйÑе ÑÑÑÐ»ÐºÑ Ð¸Ð»Ð¸ embed-код, плаÑÑоÑма Ñама ÑаÑÐ¿Ð¾Ð·Ð½Ð°ÐµÑ Ð¸ÑÑоÑник. ÐаждÑй блок â Ñ ÑиÑменнÑм Ñоном, пÑавилÑнÑми пÑопоÑÑиÑми и плавной загÑÑзкой.</li> <li data-num="953"><span class="changelog-tag changelog-tag--UX" data-tag-alias="UX">UX</span> <strong>ЦиÑаÑÑ ÑÑали каÑÑоÑками</strong> â ÑÑÑаниÑа <code>/quotes</code> полноÑÑÑÑ Ð¿ÐµÑепиÑана: ÑÑопка каÑÑоÑек Ñ Ð°Ð½Ð¸Ð¼Ð°Ñией, ÑкÑпоÑÑ Ð² PNG-оÑкÑÑÑкÑ, копиÑование и ÑаÑинг в ÑоÑÑеÑи одним кликом.</li> <li data-num="954"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>ÐодкаÑÑÑ Ð±Ð¾Ð»ÑÑе не ÑоÑмозÑÑ Ð¿Ð¾Ñле пеÑеÑ
одов</strong> â пÑи каждом заÑ
оде на Ñпизод в памÑÑи оÑÑавалÑÑ Â«Ð½Ð°Ð±Ð»ÑдаÑелÑ» длиÑелÑноÑÑи ÑÑека. ÐоÑле деÑÑÑка пеÑеÑ
одов инÑеÑÑÐµÐ¹Ñ Ð²ÑзнÑл. ТепеÑÑ listener аккÑÑаÑно ÑнимаеÑÑÑ â памÑÑÑ Ñвободна.</li> <li data-num="955"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>Ðвойной Ñап â один плееÑ</strong> â бÑÑÑÑÑй повÑоÑнÑй клик по «СлÑÑаÑÑ» болÑÑе не запÑÑÐºÐ°ÐµÑ Ð´Ð²Ð° плееÑа на одном ÑÑеке.</li> <li data-num="956"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> <strong>ФоÑмаÑиÑование в ÑемаÑкаÑ
и комменÑаÑиÑÑ
</strong> â жиÑнÑй, кÑÑÑив, заÑÑÑкнÑÑÑй, ÑÑÑлки. Bubble-Ð¿Ð°Ð½ÐµÐ»Ñ Ð½Ð°Ð´ вÑделением + полнÑй Ð½Ð°Ð±Ð¾Ñ Ñ
оÑкеев. Undo/Redo Ñо Ñвоим ÑÑеком на 50 ÑоÑÑоÑний.</li> <li data-num="957"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> <strong>Markdown-ÑÑÑлки <code>[ÑекÑÑ](url)</code> везде</strong> â в комменÑаÑиÑÑ
, ÑемаÑкаÑ
, оÑвеÑаÑ
. ÐиÑеÑе â ÑиÑаÑÐµÐ»Ñ Ð²Ð¸Ð´Ð¸Ñ ÐºÐ»Ð¸ÐºÐ°Ð±ÐµÐ»ÑнÑÑ ÑÑÑлкÑ.</li> <li data-num="958"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>ÐÑÑÑÐ¾Ñ Ð½Ðµ Ð·Ð°Ð»Ð¸Ð¿Ð°ÐµÑ Ð¿Ð¾Ñле вÑÑавки блока</strong> â Ñмбед, видео, галеÑеÑ, оглавление вÑегда добавлÑÑÑ Ð¿ÑÑÑой паÑагÑÐ°Ñ Ð¿Ð¾Ñле ÑебÑ. Ðожно ÑÑÐ°Ð·Ñ Ð¿ÑодолжаÑÑ Ð¿Ð¸ÑаÑÑ.</li> <li data-num="959"><span class="changelog-tag changelog-tag--SEC" data-tag-alias="SEC">SEC</span> <code>**javascript:</code> в ÑÑÑлкаÑ
заблокиÑован** â поле URL оÑклонÑÐµÑ Ð¾Ð¿Ð°ÑнÑе ÑÑ
ÐµÐ¼Ñ Ñ shake-анимаÑией.</li> </ul> <h3 id="пÑоизводиÑелÑноÑÑÑ-и-ÑÑабилÑноÑÑÑ">ÐÑоизводиÑелÑноÑÑÑ Ð¸ ÑÑабилÑноÑÑÑ</h3> <ul> <li data-num="960"><span class="changelog-tag changelog-tag--PERF" data-tag-alias="PERF">PERF</span> <strong>Ðандл поÑ
Ñдел на 13%</strong> (697 â 604 ÐÐ) â tree-shaking Ð½Ð°ÐºÐ¾Ð½ÐµÑ ÑабоÑаеÑ. ÐÑÑÑÑее пеÑÐ²Ð°Ñ Ð·Ð°Ð³ÑÑзка â бÑÑÑÑее ÑекÑÑ Ð¿ÐµÑед глазами.</li> <li data-num="961"><span class="changelog-tag changelog-tag--PERF" data-tag-alias="PERF">PERF</span> <strong>32 лиÑниÑ
пÑомиÑ-обÑÑÑки ÑбÑанÑ</strong> â даннÑе ленÑÑ, Ñегов, авÑоÑов ÑекÑÑ Ð½Ð°Ð¿ÑÑмÑÑ, без «пÑомиÑа внÑÑÑи пÑомиÑа».</li> <li data-num="962"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>ÐÐµÑ Ð½Ðµ пÑÑÐ°ÐµÑ ÑÑбÑики</strong> â пÑи Ñбое поÑÑÑÐ¾ÐµÐ½Ð¸Ñ ÐºÐ»ÑÑа вÑе запÑоÑÑ Ð¿Ð¾Ð¿Ð°Ð´Ð°Ð»Ð¸ в Ð¾Ð´Ð½Ñ ÑÑейкÑ. ТепеÑÑ fallback-клÑÑ Ñникален.</li> <li data-num="963"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>ÐвÑоÑизаÑÐ¸Ñ Ð½Ðµ завиÑаеÑ</strong>
1 â 5-ÑекÑнднÑй safety net пÑи медленной ÑеÑи. СÑÑаниÑа загÑÑзиÑÑÑ, даже еÑли check-login заÑÑнÑлÑÑ.</li> <li data-num="964"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>Retry Ñ Ð¿ÑавилÑнÑм Ñаймингом</strong> â jitter болÑÑе не накапливаеÑÑÑ Ð´Ð²Ð°Ð¶Ð´Ñ Ð¿Ñи повÑоÑнÑÑ
запÑоÑаÑ
к ÑеÑвеÑÑ.</li> </ul> <h3 id="аÑÑ
иÑекÑÑÑа-ÑÑндаменÑ-длÑ-бÑдÑÑего">ÐÑÑ
иÑекÑÑÑа: ÑÑÐ½Ð´Ð°Ð¼ÐµÐ½Ñ Ð´Ð»Ñ Ð±ÑдÑÑего</h3> <ul> <li data-num="965">[ARCH] <strong>4 конÑÑоллеÑа-гиганÑа ÑазобÑÐ°Ð½Ñ Ð½Ð° модÑли</strong> â feedCtrl (1100 â 100 ÑÑÑок), editAuthorCtrl (900 â 200), conversationCtrl (830 â 100), draftsCtrl (620 â 100). Ðогика ленÑÑ, пÑоÑилÑ, ÑообÑений и ÑеÑновиков живÑÑ Ð² пеÑеиÑполÑзÑемÑÑ
sub-controllers.</li> <li data-num="966">[ARCH] <strong>19 framework-agnostic ÑеÑвиÑов</strong> â HTTP-клиенÑ, комменÑаÑии, ÑообÑениÑ, конÑенÑ, Ñеги, авÑоÑÑ, OAuth, загÑÑзка Ñайлов, поиÑк, веÑÑии. Ðдин и ÑÐ¾Ñ Ð¶Ðµ модÑÐ»Ñ ÑабоÑÐ°ÐµÑ Ð¸ в Angular, и в бÑдÑÑем React.</li> <li data-num="967">[TEST] <strong>Vitest + 134 ÑеÑÑа</strong> â покÑÑÑÑ httpClient, комменÑаÑии, конÑенÑ, логин, OAuth, ÑÑанÑлиÑеÑаÑиÑ, кеÑ-менеджеÑ, загÑÑзка Ñайлов, обÑабоÑка оÑибок. ÐеÑÐ²Ð°Ñ Ð½Ð°ÑÑоÑÑÐ°Ñ ÑеÑÑÐ¾Ð²Ð°Ñ Ð¸Ð½ÑÑаÑÑÑÑкÑÑÑа пÑоекÑа.</li> <li data-num="968">[ARCH] <strong>ÐодпиÑки ÑеÑез eventBus</strong> â ÑоÑеÑнÑе ÑобÑÑÐ¸Ñ Ð²Ð¼ÐµÑÑо <code>$rootScope.$broadcast</code>. СлÑÑÐ°Ñ ÑолÑко Ñе компоненÑÑ, коÑоÑÑм адÑеÑовано.</li> </ul> <h3 id="доÑÑÑпноÑÑÑ">ÐоÑÑÑпноÑÑÑ</h3> <ul> <li data-num="969"><span class="changelog-tag changelog-tag--A11Y" data-tag-alias="A11Y">A11Y</span> <strong>Ð£Ð²ÐµÐ´Ð¾Ð¼Ð»ÐµÐ½Ð¸Ñ ÑÑали ARIA feed</strong> â ÑкÑинÑÐ¸Ð´ÐµÑ Ð¾Ð·Ð²ÑÑÐ¸Ð²Ð°ÐµÑ Â«Ñведомление 3 из 12».</li> <li data-num="970"><span class="changelog-tag changelog-tag--A11Y" data-tag-alias="A11Y">A11Y</span> <strong>Touch-ÑаÑгеÑÑ Ñегов â 44px</strong>, конÑÑаÑÑ Ð¼ÐµÑа-заголовков â 5.7:1 (WCAG AA).</li> <li data-num="971"><span class="changelog-tag changelog-tag--A11Y" data-tag-alias="A11Y">A11Y</span> <strong>Passive listeners</strong> â scroll и touchstart в ленÑе, модалкаÑ
и на ÑÑÑаниÑе авÑоÑа болÑÑе не блокиÑÑÑÑ Ð¿ÑокÑÑÑкÑ.</li> </ul> </div> </details> <details class="changelog-section"> <summary class="changelog-summary"><span class="changelog-meta"><span class="changelog-meta__version">v9.81.0</span><span class="changelog-meta__date">16-03-2026</span></span><h2 id="v9810-16-03-2026--scribd-bandcamp-и-ÑиÑина-в-конÑоли">Scribd, Bandcamp и ÑиÑина в конÑоли</h2></summary> <div class="changelog-section__body"> <p>Scribd-докÑменÑÑ Ð½Ð° плаÑÑоÑме бÑли невидимками: бÑаÑÐ·ÐµÑ ÑиÑ
о блокиÑовал iframe, а ÑиÑаÑÐµÐ»Ñ Ð²Ð¸Ð´ÐµÐ» пÑÑÑÑÑ ÑÐ°Ð¼ÐºÑ Ð²Ð¼ÐµÑÑо 365-ÑÑÑаниÑного Ñомана. Ðаодно поÑинили Bandcamp-плееÑÑ Ð°ÑÑиÑÑов и вÑÑиÑÑили ÑÑи надоедливÑÑ
пÑедÑпÑÐµÐ¶Ð´ÐµÐ½Ð¸Ñ Ð¸Ð· конÑоли, коÑоÑÑе поÑвлÑлиÑÑ Ð½Ð° каждой ÑÑÑаниÑе.</p> <ul> <li data-num="947"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>Scribd-докÑменÑÑ Ð·Ð°Ð³ÑÑжаÑÑÑÑ</strong> â бÑаÑÐ·ÐµÑ Ð±Ð»Ð¾ÐºÐ¸Ñовал <code>ru.scribd.com</code>, поÑÐ¾Ð¼Ñ ÑÑо в CSP бÑли пÑопиÑÐ°Ð½Ñ ÑолÑко <code>www</code> и <code>es</code>-поддоменÑ. ТепеÑÑ wildcard <code>*.scribd.com</code> покÑÑÐ²Ð°ÐµÑ Ð²Ñе 20+ локализаÑий Scribd. ÐÑли авÑÐ¾Ñ Ð²ÑÑавил ÑÑÑÐ»ÐºÑ Ð½Ð° докÑÐ¼ÐµÐ½Ñ â ÑиÑаÑÐµÐ»Ñ ÐµÐ³Ð¾ ÑвидиÑ.</li> <li data-num="948"><span class="changelog-tag changelog-tag--UX" data-tag-alias="UX">UX</span> <strong>ÐокÑменÑÑ Scribd ÑÑали полноÑкÑаннÑми</strong> â вÑÑоÑа embed вÑÑоÑла Ñ 600 до 1000px (на мобилÑнÑÑ
â до 80% ÑкÑана). ÐмеÑÑо кÑоÑ
оÑного пÑевÑÑ Ñ ÐºÐ½Ð¾Ð¿ÐºÐ¾Ð¹ «ÐÑкÑÑÑÑ Ð² Scribd» ÑиÑаÑÐµÐ»Ñ Ð²Ð¸Ð´Ð¸Ñ Ñам докÑменÑ, лиÑÑÐ°ÐµÑ ÑÑÑаниÑÑ Ð¿ÑÑмо в ÑÑаÑÑе.</li> <li data-num="949"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>Bandcamp-плееÑÑ Ð°ÑÑиÑÑов ÑабоÑаÑÑ</strong> â каждÑй мÑзÑÐºÐ°Ð½Ñ Ð½Ð° Bandcamp живÑÑ Ð½Ð° ÑвоÑм поддомене (<code>artist.bandcamp.com</code>). CSP ÑазÑеÑал ÑолÑко голÑй <code>bandcamp.com</code> â вÑÑÑоеннÑе плееÑÑ Ð½Ðµ гÑÑзилиÑÑ. Wildcard ÑеÑил пÑоблемÑ.</li> <li data-num="950"><span class="changelog-tag changelog-tag--PERF" data-tag-alias="PERF">PERF</span> <strong>ТÑи пÑедÑпÑÐµÐ¶Ð´ÐµÐ½Ð¸Ñ Ð² конÑоли иÑÑезли</strong> â ÑÑиÑÑÑ Muller Bold, Spectral Regular и main CSS пÑелоадилиÑÑ Ð´Ð²Ð°Ð¶Ð´Ñ: из HTML и из HTTP-заголовка. Service Worker оÑдавал иÑ
из кеÑа мгновенно, а preload-ÐºÐ¾Ð¿Ð¸Ñ Ð¾ÑÑавалаÑÑ Ð½ÐµÐ²Ð¾ÑÑÑебованной. УбÑали дÑбли â <code>font-display:swap</code> и preload-scanner бÑаÑзеÑа ÑпÑавлÑÑÑÑÑ Ñами.</li> </ul> </div> </details> <details class="changelog-section"> <summary class="changelog-summary"><span class="changelog-meta"><span class="changelog-meta__version">v9.80.0</span><span class="changelog-meta__date">16-03-2026</span></span><h2 id="v9800-16-03-2026--под-капоÑом-плаÑÑоÑма-ÑÑиÑÑÑ-жиÑÑ-без-Ñамок">Ðод капоÑом: плаÑÑоÑма ÑÑиÑÑÑ Ð¶Ð¸ÑÑ Ð±ÐµÐ· Ñамок</h2></summary> <div class="changelog-section__body"> <p>ÐолÑÑÐ°Ñ Ð²Ð½ÑÑÑеннÑÑ Ð¿ÐµÑеÑÑÑойка, коÑоÑÑÑ Ð²Ñ Ð½Ðµ ÑвидиÑе â но обÑзаÑелÑно поÑÑвÑÑвÑеÑе. 19 клÑÑевÑÑ
модÑлей плаÑÑоÑÐ¼Ñ ÑÑали незавиÑимÑми Ð¾Ñ ÑÑеймвоÑка. ÐодпиÑки, ÑообÑениÑ, Ñеги, авÑоÑÑ, конÑÐµÐ½Ñ â логика каждого ÑепеÑÑ Ð¶Ð¸Ð²ÑÑ Ð¾ÑделÑно Ð¾Ñ Angular и гоÑова пеÑееÑ
аÑÑ Ð² лÑбой инÑеÑÑейÑ. ÐаÑаллелÑно вÑÑиÑено 32 аÑÑ
иÑекÑÑÑнÑÑ
анÑипаÑÑеÑна в обÑабоÑке пÑомиÑов â и пÑедоÑвÑаÑÑн баг, коÑоÑÑй мог Ð±Ñ Ð·Ð°Ð¼Ð¾ÑозиÑÑ Ð¸Ð½ÑеÑÑÐµÐ¹Ñ Ð¿Ñи загÑÑзке ленÑÑ, Ñайлов и Ñегов.</p> <ul> <li data-num="942"><span class="changelog-tag changelog-tag--PERF" data-tag-alias="PERF">PERF</span> <strong>ÐенÑа и Ñеги гÑÑзÑÑÑÑ Ð¾ÑзÑвÑивее</strong> â ÑбÑÐ°Ð½Ñ 32 лиÑниÑ
обÑÑÑки вокÑÑг пÑомиÑов в 11 модÑлÑÑ
(ленÑа, Ñеги, авÑоÑÑ, ÑобÑÑиÑ, поиÑк, веÑÑии, загÑÑзка Ñайлов, OAuth). ÐаждÑй запÑÐ¾Ñ Ðº ÑеÑвеÑÑ Ð¿ÑоÑ
одил ÑеÑез ненÑжнÑй «пÑÐ¾Ð¼Ð¸Ñ Ð²Ð½ÑÑÑи пÑомиÑа» â ÑепеÑÑ Ð´Ð°Ð½Ð½Ñе ÑекÑÑ Ð½Ð°Ð¿ÑÑмÑÑ. ÐенÑÑе аллокаÑий, пÑоÑе ÑÑеки оÑибок, ÑÑÑÑ Ð±ÑÑÑÑее каждÑй оÑвеÑ.</li> <li data-num="943"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>ÐнÑеÑÑÐµÐ¹Ñ Ð³Ð°ÑанÑиÑованно обновлÑеÑÑÑ</strong> â линÑÐµÑ Ð½ÐµÐ·Ð°Ð¼ÐµÑно заменил внÑÑÑенний меÑ
анизм пÑомиÑов на наÑивнÑй в пÑÑи к
1ÑиÑиÑеÑкиÑ
модÑлÑÑ
(конÑенÑ, Ñеги, загÑÑзка Ñайлов, YouTube, веÑÑии). ÐаÑивнÑе пÑомиÑÑ Ð½Ðµ ÑмеÑÑ Ð±ÑдиÑÑ Angular â и поÑле загÑÑзки ÑоÑо, подгÑÑзки ленÑÑ Ð¸Ð»Ð¸ ÑÐ¼ÐµÐ½Ñ Ñега ÑÑÑаниÑа Ð±Ñ Ð¿ÑоÑÑо не пеÑеÑиÑовалаÑÑ. ÐеÑеÑ
ваÑено и иÑпÑавлено до вÑкаÑки.</li> <li data-num="944">[ARCH] <strong>ÐодпиÑки ÑабоÑаÑÑ ÑеÑез ÑобÑÑвеннÑÑ ÑÐ¸Ð½Ñ ÑобÑÑий</strong> â ÑанÑÑе «подпиÑалÑÑ / оÑпиÑалÑÑ» леÑело ÑеÑез глобалÑнÑй <code>$rootScope.$broadcast</code>, Ð·Ð°Ð´ÐµÐ²Ð°Ñ Ð²Ñе компоненÑÑ Ð½Ð° ÑÑÑаниÑе. ТепеÑÑ <code>followService</code> иÑполÑзÑÐµÑ ÑоÑеÑнÑй <code>eventBus</code> â ÑлÑÑÐ°Ñ ÑолÑко Ñе, ÐºÐ¾Ð¼Ñ Ð°Ð´ÑеÑовано. ÐенÑÑе лиÑниÑ
пеÑеÑиÑовок, ÑиÑе аÑÑ
иÑекÑÑÑа.</li> <li data-num="945">[ARCH] <strong>19 framework-agnostic модÑлей</strong> â маппинг авÑоÑов, ÑобÑÑий, подпиÑок, ÑообÑений, Ñегов, конÑенÑа, паÑÑнÑÑов, каÑегоÑий, ÑемаÑок, комменÑаÑиев â вÑÑ Ð²ÑнеÑено в ÑиÑÑÑе JS-ÑÑнкÑии без пÑивÑзки к Angular. ÐÑо ÑÑÐ½Ð´Ð°Ð¼ÐµÐ½Ñ Ð´Ð»Ñ Ð±ÑдÑÑего пеÑеÑ
ода на React: новÑе компоненÑÑ ÑмогÑÑ Ð¿ÐµÑеиÑполÑзоваÑÑ ÑÑ Ð¶Ðµ Ð»Ð¾Ð³Ð¸ÐºÑ Ð±ÐµÐ· дÑблиÑÐ¾Ð²Ð°Ð½Ð¸Ñ ÐºÐ¾Ð´Ð°.</li> <li data-num="946">[ARCH] <strong>ÐÐµÑ ÐºÐ¾Ð½ÑенÑа â единÑй и пеÑеноÑимÑй</strong> â кеÑиÑование ленÑÑ, пÑлов Ñоп-конÑенÑа и Ñегов извлеÑено из Angular-обÑÑÑок в ÑамоÑÑоÑÑелÑнÑе модÑли. Ðогика «показаÑÑ ÐºÐµÑиÑованное мгновенно, обновиÑÑ Ñоново» ÑепеÑÑ testable и не завÑзана на DI.</li> </ul> </div> </details> <details class="changelog-section"> <summary class="changelog-summary"><span class="changelog-meta"><span class="changelog-meta__version">v9.79.0</span><span class="changelog-meta__date">16-03-2026</span></span><h2 id="v9790-16-03-2026--ÑоÑмаÑиÑование-в-ÑемаÑкаÑ
">ФоÑмаÑиÑование в ÑемаÑкаÑ
</h2></summary> <div class="changelog-section__body"> <p>РемаÑки и комменÑаÑии на полÑÑ
в ÑедакÑоÑе пеÑеÑÑали бÑÑÑ plain text. ÐÑли вÑделиÑÑ ÑекÑÑ, над ним поÑвиÑÑÑ ÐºÐ¾Ð¼Ð¿Ð°ÐºÑÐ½Ð°Ñ Ð¿Ð°Ð½ÐµÐ»Ñ: жиÑнÑй, кÑÑÑив, заÑÑÑкнÑÑÑй, ÑÑÑлка. Ctrl+B/I/D/K ÑабоÑаÑÑ ÐºÐ°Ðº в пÑивÑÑном ÑекÑÑовом ÑедакÑоÑе. СÑÑлки ÑепеÑÑ Ð¼Ð¾Ð¶Ð½Ð¾ вÑÑавлÑÑÑ Ð² ÑоÑмаÑе <code>[ÑекÑÑ](url)</code> â и они пÑевÑаÑаÑÑÑÑ Ð² кликабелÑнÑе. Рпод капоÑом â ÑеÑÐ¸Ñ ÑлÑÑÑений, коÑоÑÑе делаÑÑ ÑÑение ÑÑаÑей плавнее, а Ð½Ð°Ð±Ð¾Ñ ÑекÑÑа â надÑжнее.</p> <ul> <li data-num="929"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> <strong>ÐÐ°Ð½ÐµÐ»Ñ ÑоÑмаÑиÑÐ¾Ð²Ð°Ð½Ð¸Ñ Ð² комменÑаÑиÑÑ
</strong> â вÑделиÑе Ñлово или ÑÑазÑ, и над ней вÑплÑвÑÑ ÑÑмнÑй бабл Ñ ÐºÐ½Ð¾Ð¿ÐºÐ°Ð¼Ð¸ <strong>B</strong> <em>I</em> <del>S</del> и ÑÑÑлкой. РабоÑÐ°ÐµÑ Ð¸ Ñ ÐºÐ»Ð°Ð²Ð¸Ð°ÑÑÑÑ: ÑÑÑелками Ð¼ÐµÐ¶Ð´Ñ ÐºÐ½Ð¾Ð¿ÐºÐ°Ð¼Ð¸, Enter Ð´Ð»Ñ Ð¿ÑименениÑ, Escape Ð´Ð»Ñ Ð¾ÑменÑ. ÐÐµÑ Ð¼ÑÑи â Ð½ÐµÑ Ð¿Ñоблем.</li> <li data-num="930"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> <strong>СÑÑлки в комменÑаÑиÑÑ
</strong> â Ctrl+K на вÑделенном ÑекÑÑе оÑкÑÑÐ²Ð°ÐµÑ Ð¿Ð¾Ð»Ðµ Ð´Ð»Ñ URL. ÐÑÑавлÑйÑе адÑеÑ, нажмиÑе Enter â и ÑекÑÑ ÑÑÐ°Ð½ÐµÑ ÑÑÑлкой. ÐÑÑÑой URL ÑÐ½Ð¸Ð¼Ð°ÐµÑ ÑÑÑеÑÑвÑÑÑÑÑ ÑÑÑлкÑ. ÐÑи наведении на ÑÑÑÐ»ÐºÑ Ð² ÑедакÑоÑе â аккÑÑаÑнÑй tooltip Ñ Ð°Ð´ÑеÑом.</li> <li data-num="931"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> <strong>Markdown-ÑÑÑлки <code>[ÑекÑÑ](url)</code></strong> â ÑабоÑаÑÑ Ð² комменÑаÑиÑÑ
, ÑемаÑкаÑ
и оÑвеÑаÑ
. ÐиÑеÑе <code>[ÐиÑкÑÑÑ](https://discours.io)</code> â ÑиÑаÑÐµÐ»Ñ Ð²Ð¸Ð´Ð¸Ñ <a href="https://discours.io">ÐиÑкÑÑÑ</a>. ÐоддеÑжка ÑквознаÑ: ввод, Ñ
Ñанение, оÑобÑажение.</li> <li data-num="932"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> <strong>ÐаÑÑÑкнÑÑÑй ÑекÑÑ</strong>
1 â <code>Ctrl+D</code> или кнопка <del>S</del> в панели. Ð¥ÑаниÑÑÑ ÐºÐ°Ðº <code>~~ÑекÑÑ~~</code> в markdown. Ðногда заÑÑÑкнÑÑÑ â вÑÑазиÑелÑнее, Ñем ÑдалиÑÑ.</li> <li data-num="933"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> <strong>Undo/Redo в комменÑаÑиÑÑ
</strong> â <code>Ctrl+Z</code> / <code>Ctrl+Shift+Z</code> ÑабоÑаÑÑ Ð¿ÑедÑказÑемо. Свой ÑÑек из 50 ÑоÑÑоÑний â бÑаÑзеÑнÑй undo болÑÑе не ÑеÑÑÐµÑ ÑоÑмаÑиÑование поÑле пÑÐ¸Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð¶Ð¸Ñного или ÑÑÑлки.</li> <li data-num="934"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>СÑаÑÑи не пÑÑгаÑÑ Ð¿Ñи загÑÑзке</strong> â hero-изобÑÐ°Ð¶ÐµÐ½Ð¸Ñ Ð¿Ð¾Ð»ÑÑили ÑикÑиÑованнÑе ÑазмеÑÑ (960Ã540) и в Angular-ÑаблонаÑ
, и в SSR-оÑвеÑе Cloudflare. ÐÑаÑÐ·ÐµÑ ÑезеÑвиÑÑÐµÑ Ð¼ÐµÑÑо до загÑÑзки каÑÑинки â ни одного Layout Shift. Body-изобÑÐ°Ð¶ÐµÐ½Ð¸Ñ Ð±ÐµÐ· ÑазмеÑов авÑомаÑиÑеÑки полÑÑаÑÑ <code>aspect-ratio: 16/9</code> до загÑÑзки.</li> <li data-num="935"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>SSR и Angular болÑÑе не ÑиÑÑÑÑ Ð¾Ð´Ð½Ð¾Ð²Ñеменно</strong> â ÑанÑÑе пÑи пеÑеÑ
оде на ÑÑаÑÑÑ ÑеÑвеÑнÑй HTML и Angular-Ñаблон могли на Ð´Ð¾Ð»Ñ ÑекÑÐ½Ð´Ñ Ð¾ÑобÑажаÑÑÑÑ Ð²Ð¼ÐµÑÑе â двойной конÑенÑ, ÑкаÑок layout. ТепеÑÑ <code>ng-view</code> ÑкÑÑÑ, пока SSR-блок на ÑкÑане. ÐÑÑезаÑÑ ÑинÑ
Ñонно за один кадÑ.</li> <li data-num="936"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>Scroll и touchstart не ÑоÑмозÑÑ</strong> â обÑабоÑÑики <code>touchstart</code> и <code>scroll</code> в ленÑе, модалке подпиÑок и на ÑÑÑаниÑе авÑоÑа ÑÑали passive. ÐÑаÑÐ·ÐµÑ Ð±Ð¾Ð»ÑÑе не ждÑÑ JavaScript, ÑÑÐ¾Ð±Ñ Ð½Ð°ÑаÑÑ Ð¿ÑокÑÑÑкÑ.</li> <li data-num="937"><span class="changelog-tag changelog-tag--A11Y" data-tag-alias="A11Y">A11Y</span> <strong>Touch-ÑаÑгеÑÑ Ñегов â 44px</strong> â на ÑаÑ-ÑÑÑÑойÑÑваÑ
меÑки Ñем под ÑÑаÑÑÑй ÑÑали кÑÑпнее. ÐопаÑÑÑ Ð¿Ð°Ð»ÑÑем в «кино» или «инÑеÑвÑÑ» ÑепеÑÑ Ð¼Ð¾Ð¶Ð½Ð¾ Ñ Ð¿ÐµÑвого Ñаза (WCAG 2.5.8).</li> <li data-num="938"><span class="changelog-tag changelog-tag--A11Y" data-tag-alias="A11Y">A11Y</span> <strong>ÐонÑÑаÑÑ Ð¼ÐµÑа-заголовков</strong> â ÑÐ²ÐµÑ ÑекÑионнÑÑ
заголовков в Ñеле ÑÑаÑÑи ÑÑилен до 5.7:1. РанÑÑе бледно-ÑеÑÑе надпиÑи ÑеÑÑлиÑÑ Ð½Ð° ÑвеÑлом Ñоне â ÑепеÑÑ ÑиÑаÑÑÑÑ ÑвеÑенно (WCAG AA).</li> <li data-num="939"><span class="changelog-tag changelog-tag--SEC" data-tag-alias="SEC">SEC</span> <code>**javascript:</code> в URL â заблокиÑован** â поле ввода ÑÑÑлки в панели ÑоÑмаÑиÑÐ¾Ð²Ð°Ð½Ð¸Ñ Ð¾ÑклонÑÐµÑ Ð¾Ð¿Ð°ÑнÑе ÑÑ
ÐµÐ¼Ñ (<code>javascript:</code>, <code>data:</code>, <code>vbscript:</code>) Ñ Ð²Ð¸Ð·ÑалÑной shake-анимаÑией. XSS ÑеÑез полÑзоваÑелÑÑкие ÑÑÑлки невозможен.</li> <li data-num="940">[ARCH] <strong>z-index â наконеÑ-Ñо поÑÑдок</strong> â вÑÑ Ð¸ÐµÑаÑÑ
Ð¸Ñ ÑлоÑв (Ð¾Ñ loading overlay до formatting bubble) задокÑменÑиÑована в SCSS-пеÑеменнÑÑ
. ÐагиÑеÑкие ÑиÑла Ð·Ð°Ð¼ÐµÐ½ÐµÐ½Ñ Ð½Ð° <code>$z-rich-text-bubble</code>, <code>$z-mention-popup</code> и дÑ.</li> <li data-num="941">[ARCH] <strong>ÐдинÑй паÑÑÐµÑ markdown-ÑÑÑлок</strong> â ÑегÑлÑÑка <code>[text](url)</code> жила в ÑÑÑÑ
копиÑÑ
. ТепеÑÑ â одна ÑÑнкÑÐ¸Ñ <code>replaceMarkdownLinks()</code> в обÑем модÑле, импоÑÑиÑÑÐµÐ¼Ð°Ñ Ð²ÐµÐ·Ð´Ðµ.</li> </ul> </div> </details> <details class="changelog-section"> <summary class="changelog-summary"><span class="changelog-meta"><span class="changelog-meta__version">v9.78.0</span><span class="changelog-meta__date">15-03-2026</span></span><h2 id="v9780-15-03-2026--генеÑалÑнаÑ-ÑбоÑка-ÑÑаÑÑе-ÑÑаÑÑи-обÑеÑаÑÑ-новÑÑ-ÑазмеÑкÑ">ÐенеÑалÑÐ½Ð°Ñ ÑбоÑка: ÑÑаÑÑе ÑÑаÑÑи обÑеÑаÑÑ Ð½Ð¾Ð²ÑÑ ÑазмеÑкÑ</h2></summary> <div class="changelog-section__body"> <p>Ðа деÑÑÑÑ Ð»ÐµÑ Ð² ÑÑÑÑÑаÑ
пÑбликаÑий накопилаÑÑ Ð½ÐµÐ²Ð¸Ð´Ð¸Ð¼Ð°Ñ ÑиÑÑÐ¾Ð²Ð°Ñ Ð¿ÑлÑ: Google Docs оÑÑавлÑл Ñвои ID в каждом абзаÑе, Word â беÑÑмÑÑленнÑе клаÑÑÑ, а вÑÑÑнÑÑ ÑвÑÑÑÑаннÑе подвÑÑÑÑки и ÑиÑаÑÑ Ð´ÐµÑжалиÑÑ Ð½Ð° Ñ
ÑÑпкиÑ
inline-ÑÑилÑÑ
, коÑоÑÑе не понимал ни один ÑовÑеменнÑй инÑÑÑÑменÑ. ÐÑ Ð½Ð°Ð¿Ð¸Ñали двÑÑ
ÑÑапнÑÑ Ð¼Ð¸Ð³ÑаÑиÑ, коÑоÑÐ°Ñ Ð²ÑÑиÑÐ°ÐµÑ Ð¼ÑÑÐ¾Ñ Ð¸ пеÑÐµÐ²Ð¾Ð´Ð¸Ñ Ð°Ð²ÑоÑÑкÑÑ ÑпеÑвÑÑÑÑÐºÑ Ð² ÑеманÑиÑеÑкие ÑлеменÑÑ â без поÑеÑи ни единого Ñимвола.</p> <ul> <li data-num="921"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>ÐодвÑÑÑÑки, ÑиÑаÑÑ Ð¸ ÑпигÑаÑÑ Ð±Ð¾Ð»ÑÑе не завиÑÑÑ Ð¾Ñ inline-ÑÑилей</strong> â ÑеÑÑе плаÑки, ÑÑÑнÑе подложки, Ñамки вÑделениÑ, ÑиÑаÑÑ-ÑпÑавки Ñ Ð»Ð¸Ð½Ð¸ÐµÐ¹ Ñлева â вÑÑ ÑÑо жило в <code><div style="background: #f1f2f3; border: 3px solid..."></code>. ТепеÑÑ ÐºÐ°Ð¶Ð´Ñй пÑиÑм оÑоÑÐ¼Ð»ÐµÐ½Ð¸Ñ â именованнÑй ÑÐ»ÐµÐ¼ÐµÐ½Ñ (<code><ta-sub></code>, <code><ta-quotation></code>, <code><ta-epigraph></code>, <code><ta-border-sub></code>, <code><ta-selection-frame></code>), коÑоÑÑй Ð¿Ð¾Ð½Ð¸Ð¼Ð°ÐµÑ Ð¸ ÑедакÑоÑ, и ÑиÑаÑелÑÑкий инÑеÑÑейÑ, и бÑдÑÑий React.</li> <li data-num="922"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>СноÑки не поÑÑÑадали</strong> â каждое пÑавило мигÑаÑии пÑовеÑено на ÑовмеÑÑимоÑÑÑ Ñо вÑеми ÑоÑмаÑами ÑноÑок (Ð¾Ñ legacy <code>title=""</code> до новÑÑ
<code>data-footnote-id</code>). Ðи одна из 10 ÑÑнкÑий оÑиÑÑки не заÑÑÐ°Ð³Ð¸Ð²Ð°ÐµÑ Ñеги <code><a></code> â ÑноÑки в полной безопаÑноÑÑи.</li> <li data-num="923"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>ÐÑделение маÑкеÑом ÑÑало наÑÑоÑÑим <code><mark></code></strong>
1 â <code><span style="background-color: жÑлÑÑй"></code> пÑевÑаÑаеÑÑÑ Ð² ÑеманÑиÑеÑкий <code><mark></code>. ÐÑли внÑÑÑи еÑÑÑ Ð²Ð»Ð¾Ð¶ÐµÐ½Ð½Ñе span'Ñ â пÑавило безопаÑно пÑопÑÑÐºÐ°ÐµÑ ÑÑагменÑ, а не Ð»Ð¾Ð¼Ð°ÐµÑ DOM.</li> <li data-num="924"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>ЯкоÑнÑе ÑÑÑлки оглавлений ÑоÑ
ÑаненÑ</strong> â пÑÑÑÑе Ñеги Ñ <code>id=</code> (ÑкоÑÑ Ð´Ð»Ñ Ð½Ð°Ð²Ð¸Ð³Ð°Ñии) и <code>data-*</code> аÑÑибÑÑами болÑÑе не ÑдалÑÑÑÑÑ Ð¿Ñи оÑиÑÑке. ÐÐ³Ð»Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Ð² ÑÑаÑÑÑ
лонгÑидаÑ
пÑÐ¾Ð´Ð¾Ð»Ð¶Ð°Ñ ÑабоÑаÑÑ.</li> <li data-num="925"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <code>**border-width</code> болÑÑе не калеÑиÑÑÑ Ð¿Ñи оÑиÑÑке** â пÑавило ÑÐ´Ð°Ð»ÐµÐ½Ð¸Ñ Ð»Ð¸ÑниÑ
<code>width</code>/<code>height</code> некоÑÑекÑно задевало ÑоÑÑавнÑе CSS-ÑвойÑÑва (<code>border-width</code>, <code>min-height</code>, <code>line-height</code>). ÐÑо ломало конвеÑÑаÑÐ¸Ñ Ñамок вÑÐ´ÐµÐ»ÐµÐ½Ð¸Ñ Ð½Ð° вÑоÑом ÑÑапе. ÐÑпÑавлено ÑоÑеÑнÑм negative lookbehind.</li> <li data-num="926"><span class="changelog-tag changelog-tag--SEC" data-tag-alias="SEC">SEC</span> <strong>ÐаждÑй докÑÐ¼ÐµÐ½Ñ ÑоÑ
ÑанÑÐµÑ ÑезеÑвнÑÑ ÐºÐ¾Ð¿Ð¸Ñ</strong> â оÑигиналÑнÑй HTML запиÑÑваеÑÑÑ Ð² поле <code>_htmlCleanupBackup</code> Ñ Ñазделением по ÑÑапам. ÐÑли ÑÑо-Ñо пойдÑÑ Ð½Ðµ Ñак â оÑÐºÐ°Ñ Ð² Ð¾Ð´Ð½Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ.</li> <li data-num="927"><span class="changelog-tag changelog-tag--SEC" data-tag-alias="SEC">SEC</span> <strong>ÐÑап 2 не ÑÑаÑÑÑÐµÑ Ð±ÐµÐ· завеÑÑÑнного ÐÑапа 1</strong> â еÑли оÑиÑÑка мÑÑоÑа Ñпала, конвеÑÑаÑÐ¸Ñ ÑпеÑвÑÑÑÑки не запÑÑÑиÑÑÑ Ð½Ð° неоÑиÑеннÑÑ
даннÑÑ
. РлогаÑ
â Ñвное пÑедÑпÑеждение, а не ÑиÑ
ий пÑопÑÑк.</li> <li data-num="928">[INFO] <strong>СложнÑе блоки помеÑÐµÐ½Ñ Ð´Ð»Ñ ÑÑÑной пÑавки</strong> â оглавлениÑ, блоки «ЧиÑайÑе Ñакже» и ÑпойлеÑ-подвÑÑÑÑки авÑомаÑиÑеÑки конвеÑÑиÑоваÑÑ ÑиÑкованно. ÐигÑаÑÐ¸Ñ Ð½Ð°Ñ
Ð¾Ð´Ð¸Ñ Ð¸Ñ
, логиÑÑÐµÑ slug каждой ÑÑаÑÑи и ÑоÑ
ÑанÑÐµÑ ÑпиÑок в Ð±Ð°Ð·Ñ â ÑедакÑÐ¸Ñ ÑоÑно знаеÑ, какие маÑеÑÐ¸Ð°Ð»Ñ Ð½Ñжно пÑовеÑиÑÑ ÑÑками.</li> </ul> </div> </details> <details class="changelog-section"> <summary class="changelog-summary"><span class="changelog-meta"><span class="changelog-meta__version">v9.77.0</span><span class="changelog-meta__date">15-03-2026</span></span><h2 id="v9770-15-03-2026--без-вÑпÑÑек-ÑÑаÑÑи-оÑкÑÑваÑÑÑÑ-как-книга">Ðез вÑпÑÑек: ÑÑаÑÑи оÑкÑÑваÑÑÑÑ ÐºÐ°Ðº книга</h2></summary> <div class="changelog-section__body"> <p>СÑаÑÑи оÑкÑÑваÑÑ ÑÑÐ°Ð·Ñ Ð¸ Ñеликом. Ðаголовок, каÑÑинка, ÑекÑÑ â вÑÑ Ð½Ð° меÑÑе Ñ Ð¿ÐµÑвого кадÑа. РанÑÑе пÑи загÑÑзке пÑбликаÑии конÑÐµÐ½Ñ ÑÑпевал мелÑкнÑÑÑ, иÑÑезнÑÑÑ Ð¸ поÑвиÑÑÑÑ Ñнова â ÑепеÑÑ ÑÑой вÑпÑÑки неÑ. ÐеÑеÑ
од Ð¾Ñ ÑеÑвеÑного пÑевÑÑ Ðº живой ÑÑÑаниÑе ÑÑал невидимÑм.</p> <ul> <li data-num="918"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>СÑаÑÑи болÑÑе не меÑÑаÑÑ Ð¿Ñи загÑÑзке</strong> â ÑеÑвеÑное пÑевÑÑ (SSR) оÑÑавалоÑÑ Ð½Ð° ÑкÑане, пока Angular ÑендеÑил Ñаблон маÑÑÑÑÑа, но иÑÑезало ÑанÑÑе, Ñем загÑÑжалÑÑ Ð¾Ñновной конÑенÑ. ТепеÑÑ Ð¿ÑевÑÑ Ð´ÐµÑжиÑÑÑ Ð´Ð¾ моменÑа, когда Ñело ÑÑаÑÑи Ñже гоÑово â Ñмена пÑоиÑÑ
Ð¾Ð´Ð¸Ñ Ð·Ð° один кадÑ, без белой вÑпÑÑки.</li> <li data-num="919"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>ТиÑÑлÑÐ½Ð°Ñ ÐºÐ°ÑÑинка не моÑгаеÑ</strong> â hero-изобÑажение из SSR бÑло видно ÑÑазÑ, а Angular запÑÑкал его повÑоÑнÑй fade-in Ñ Ð½ÑлÑ. ÐолÑÑалÑÑ ÑÑÑаннÑй ÑÑÑекÑ: каÑÑинка гаÑла и плавно поÑвл
1ÑлаÑÑ Ð·Ð°Ð½Ð¾Ð²Ð¾. УбÑали: еÑли ÑиÑаÑÐµÐ»Ñ Ñже видел каÑÑÐ¸Ð½ÐºÑ â анимаÑÐ¸Ñ Ð½Ðµ повÑоÑÑеÑÑÑ.</li> <li data-num="920">[ARCH] <strong>ÐдинÑй меÑ
анизм SSR â Angular</strong> â конÑÑоллеÑÑ ÑÑаÑей и ÑкÑпо-маÑеÑиалов иÑполÑзÑÑÑ Ð¾Ð±Ñий helper <code>waitForContentAndRemoveSSR</code>. ÐÑе веÑки â оÑибка, ÑедиÑекÑ, ÑензÑÑа â коÑÑекÑно ÑбиÑаÑÑ ÑеÑвеÑное пÑевÑÑ. Ðва конÑликÑÑÑÑиÑ
ÑпоÑоба ÑÐ´Ð°Ð»ÐµÐ½Ð¸Ñ SSR Ð·Ð°Ð¼ÐµÐ½ÐµÐ½Ñ Ð¾Ð´Ð½Ð¸Ð¼ пÑедÑказÑемÑм.</li> </ul> </div> </details> <details class="changelog-section"> <summary class="changelog-summary"><span class="changelog-meta"><span class="changelog-meta__version">v9.76.0</span><span class="changelog-meta__date">15-03-2026</span></span><h2 id="v9760-15-03-2026--embed-them-all-вÑÑавлÑйÑе-ÑÑо-Ñгодно-оÑкÑда-Ñгодно">Embed Them All: вÑÑавлÑйÑе ÑÑо Ñгодно, оÑкÑда Ñгодно</h2></summary> <div class="changelog-section__body"> <p>ÐиÑкÑÑÑ ÑепеÑÑ Ð¿Ð¾Ð½Ð¸Ð¼Ð°ÐµÑ 30+ иÑÑоÑников вÑÑÑаиваемого конÑенÑа â Ð¾Ñ TikTok и Reddit до Scribd и Google Maps. ÐÑÑавÑÑе ÑÑÑÐ»ÐºÑ Ð¸Ð»Ð¸ embed-код в ÑедакÑÐ¾Ñ â плаÑÑоÑма Ñама ÑаÑÐ¿Ð¾Ð·Ð½Ð°ÐµÑ Ð¿ÑовайдеÑа, подбеÑÑÑ Ð¿ÑопоÑÑии и оÑоÑÐ¼Ð¸Ñ Ð±Ð»Ð¾Ðº в ÑиÑменном ÑÑиле. ÐÐ»Ñ ÑиÑаÑелей â ÑÑабилÑное и кÑаÑивое оÑобÑажение на лÑбом ÑÑÑÑойÑÑве.</p> <ul> <li data-num="909"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> <strong>20 новÑÑ
embed-пÑовайдеÑов</strong> (вÑего 35 поддеÑживаемÑÑ
) â Scribd, TikTok, Twitch, Reddit, TED, ЯндекÑ.ÐÑзÑка, ЯндекÑ.ÐаÑÑÑ, Google Maps, Bandcamp, Apple Music, SlideShare, Issuu, Flickr, Imgur, Coub, Ðзен, Pinterest, Piktochart, Apester, Interacty. ÐаждÑй â Ñ Ð±ÑендовÑм Ñоном-подложкой, коÑÑекÑнÑм ÑооÑноÑением ÑÑоÑон и плавной загÑÑзкой. ÐÑÑавка одной ÑÑÑлкой или iframe-кодом.</li> <li data-num="910"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> <strong>ÐодÑказка в диалоге ÑÑала полезной</strong> â пÑи вÑÑавке Ñмбеда авÑÐ¾Ñ Ð²Ð¸Ð´Ð¸Ñ Ð¿Ð¾Ð»Ð½Ñй ÑпиÑок поддеÑживаемÑÑ
плаÑÑоÑм. Ðе надо гадаÑÑ, ÑÑо ÑÑабоÑаеÑ.</li> <li data-num="911"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>Facebook pfbid-ÑÑÑлки заÑабоÑали</strong> â Facebook пеÑеÑÑл на новÑй ÑоÑÐ¼Ð°Ñ ID поÑÑов (бÑквенно-ÑиÑÑовой <code>pfbid</code>), а ÑÑаÑÑй паÑÑеÑн пÑинимал ÑолÑко ÑиÑла. ТепеÑÑ Ð¾Ð±Ð° ÑоÑмаÑа ÑаÑпознаÑÑÑÑ.</li> <li data-num="912"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>SoundCloud-плейлиÑÑÑ Ð²ÑÑавлÑÑÑÑÑ ÐºÐ¾ÑÑекÑно</strong> â ÑÑÑлки на плейлиÑÑÑ (<code>/sets/...</code>) ÑанÑÑе обÑезалиÑÑ Ð½Ð° пеÑвом ÑегменÑе. Ðобавлен оÑделÑнÑй паÑÑеÑн â алÑÐ±Ð¾Ð¼Ñ Ð¸ плейлиÑÑÑ Ð²ÑÑÑаиваÑÑÑÑ Ñеликом.</li> <li data-num="913"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>ÐдинÑй whitelist доменов</strong> â ÑÑи ÑиÑÑÐµÐ¼Ñ (ÑедакÑоÑ, paste-ÑаниÑизаÑиÑ, оÑобÑажение ÑиÑаÑелÑ) иÑполÑзовали ÑÑи ÑазнÑÑ
ÑпиÑка ÑазÑеÑÑннÑÑ
доменов, и они Ñже ÑаÑÑ
одилиÑÑ. ТепеÑÑ Ð¾Ð´Ð¸Ð½ Ñайл â одна пÑавда. Ðомен добавлÑеÑÑÑ Ð¾Ð´Ð¸Ð½ Ñаз, ÑабоÑÐ°ÐµÑ Ð²ÐµÐ·Ð´Ðµ.</li> <li data-num="914"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>ÐÐ¼Ð±ÐµÐ´Ñ legacy-конÑенÑа не пÑопадаÑÑ Ñ ÑиÑаÑелей</strong>
1 â <code>trustedHtml</code>-ÑилÑÑÑ ÑдалÑл <code>scrolling</code>, <code>referrerpolicy</code> и <code>sandbox</code> из iframe-аÑÑибÑÑов. ÐÑÑокие инÑогÑаÑики (Piktochart) ÑеÑÑли ÑкÑолл, видео â пеÑоÑниÑÑ. ÐÑÑибÑÑÑ Ð²Ð¾Ð·Ð²ÑаÑÐµÐ½Ñ Ð² whitelist.</li> <li data-num="915"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>Protocol-relative URL болÑÑе не ÑбиваÑÑ iframe</strong> â legacy-конÑÐµÐ½Ñ ÑаÑÑо ÑодеÑÐ¶Ð¸Ñ <code>src="//www.instagram.com/..."</code>. ÐÑаÑÐ·ÐµÑ Ð½Ðµ ломалÑÑ, а Ð²Ð¾Ñ DOMPurify â да: <code>new URL('//')</code> бÑоÑал оÑибкÑ, и src ÑдалÑлÑÑ. ТепеÑÑ <code>//</code> ноÑмализÑеÑÑÑ Ð² <code>https://</code> пеÑед пÑовеÑкой.</li> <li data-num="916"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>Provider-клаÑÑÑ Ð²ÑживаÑÑ Ð¿Ñи copy-paste</strong> â html-cleaner ÑÑиÑал клаÑÑÑ Ð²Ñоде <code>social-embed-tiktok</code> пÑи вÑÑавке из дÑÑгого маÑеÑиала, и Ñмбед ÑеÑÑл ÑÑилизаÑиÑ. ÐÐ¾Ð±Ð°Ð²Ð»ÐµÐ½Ñ Ð²Ñе 30+ клаÑÑов в protected-ÑпиÑок.</li> <li data-num="917"><span class="changelog-tag changelog-tag--UX" data-tag-alias="UX">UX</span> <strong>СÑили пÑовайдеÑов на ÑÑоÑоне ÑиÑаÑелÑ</strong> â каждÑй embed-блок в опÑбликованной ÑÑаÑÑе полÑÑил ÑÐ²Ð¾Ñ Ð²Ð¸Ð·ÑалÑнÑÑ Ð¾Ð±Ð¾Ð»Ð¾ÑкÑ: ÑиÑменнÑй ÑвеÑ, padding, border-radius. TED-лекÑии â адапÑивнÑе 16:9 Ñ ÑÑÑнÑм Ñоном, TikTok â мобилÑÐ½Ð°Ñ ÑиÑина по ÑенÑÑÑ, Apple Music â гÑÐ°Ð´Ð¸ÐµÐ½Ñ Ñ Ð·Ð°ÐºÑÑглÑннÑми Ñглами, каÑÑÑ â нейÑÑалÑÐ½Ð°Ñ Ñамка.</li> </ul> </div> </details> <details class="changelog-section"> <summary class="changelog-summary"><span class="changelog-meta"><span class="changelog-meta__version">v9.75.0</span><span class="changelog-meta__date">15-03-2026</span></span><h2 id="v9750-15-03-2026--ÑелизнÑй-hardening-каÑÑоÑки-авÑоÑизаÑиÑ-и-мелоÑи-коÑоÑÑе-ÑеÑаÑÑ">РелизнÑй hardening: каÑÑоÑки, авÑоÑизаÑÐ¸Ñ Ð¸ мелоÑи, коÑоÑÑе ÑеÑаÑÑ</h2></summary> <div class="changelog-section__body"> <p>ÐÑедÑÐµÐ»Ð¸Ð·Ð½Ð°Ñ Ð¿Ð¾Ð»Ð¸Ñовка: ÑÑÑÑÐ°Ð½ÐµÐ½Ñ race conditions пÑи авÑоÑизаÑии, ÑедакÑÐ¾Ñ ÑÑал пÑедÑказÑемее, каÑÑоÑки ÑÑÑлок обÑели ÑÑмнÑÑ ÑÐµÐ¼Ñ Ð¸ адекваÑнÑе пÑопоÑÑии, а ÑÐ²ÐµÐ´Ð¾Ð¼Ð»ÐµÐ½Ð¸Ñ â полноÑеннÑÑ Ð´Ð¾ÑÑÑпноÑÑÑ. Ðве дÑÐ¶Ð¸Ð½Ñ ÑоÑеÑнÑÑ
ÑлÑÑÑений, коÑоÑÑе по оÑделÑноÑÑи незамеÑнÑ, а вмеÑÑе делаÑÑ Ð¿Ð»Ð°ÑÑоÑÐ¼Ñ Ð¾ÑÑÑимо надÑжнее.</p> <ul> <li data-num="897"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>ÐвÑоÑизаÑÐ¸Ñ Ð±Ð¾Ð»ÑÑе не ÑеÑÑеÑÑÑ Ð½Ð° ÑÑаÑÑе</strong> â пÑи медленной ÑеÑи check-login мог завиÑнÑÑÑ, и ÑÑÑаниÑа Ñведомлений, ÑообÑений или ÑедакÑии никогда не загÑÑжалаÑÑ. ТепеÑÑ ÐµÑÑÑ 5-ÑекÑнднÑй safety net Ñ Ð·Ð°ÑиÑой Ð¾Ñ Ð´Ð²Ð¾Ð¹Ð½Ð¾Ð³Ð¾ ÑÑабаÑÑÐ²Ð°Ð½Ð¸Ñ â инÑеÑÑÐµÐ¹Ñ Ð²Ñегда полÑÑÐ¸Ñ Ñигнал «авÑоÑизаÑÐ¸Ñ Ð¿ÑовеÑена».</li> <li data-num="898"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>ÐÑÑÑÐ¾Ñ Ð² ÑедакÑоÑе не Ð·Ð°Ð»Ð¸Ð¿Ð°ÐµÑ Ð¿Ð¾Ñле вÑÑавки блока</strong> â вÑÑавка ÑÑÑлки, Ñмбеда, видео, галеÑеи или Ð¾Ð³Ð»Ð°Ð²Ð»ÐµÐ½Ð¸Ñ ÑепеÑÑ Ð²Ñегда добавлÑÐµÑ Ð¿ÑÑÑой паÑагÑÐ°Ñ Ð¿Ð¾Ñле блока. ÐÑÑÑÐ¾Ñ Ð²ÑÑаÑÑ Ð² него â можно ÑÑÐ°Ð·Ñ Ð¿ÑодолжаÑÑ Ð¿Ð¸ÑаÑÑ, а не боÑоÑÑÑÑ Ñ DOM.</li> <li data-num="899"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>Sentry не падаеÑ, когда не иниÑиализиÑован</strong> â еÑли мониÑоÑинг оÑибок не запÑÑÑилÑÑ (dev-Ñежим, блокиÑовÑик), вÑзов <code>withScope</code> бÑоÑал TypeError. ТепеÑÑ safe proxy коÑÑекÑно ÑмÑлиÑÑÐµÑ Ð²Ñе меÑÐ¾Ð´Ñ Sentry â ни один вÑзов не ÑÑÐ¾Ð½Ð¸Ñ ÑÑÑаниÑÑ.</li> <li data-num="900"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>Retry Ñ Ð¿ÑавилÑнÑм Ñаймингом</strong> â пÑи повÑоÑнÑÑ
запÑоÑаÑ
к ÑеÑвеÑÑ jitter накапливалÑÑ Ð´Ð²Ð°Ð¶Ð´Ñ, и задеÑжки ÑоÑли бÑÑÑÑее, Ñем нÑжно. ÐÑпÑавлено: ÑкÑпоненÑиалÑнÑй backoff ÑепеÑÑ ÑиÑÑÑй, jitter добавлÑеÑÑÑ Ñовно один Ñаз за иÑеÑаÑиÑ.</li> <li data-num="901"><span class="changelog-tag changelog-tag--UX" data-tag-alias="UX">UX</span> <strong>ÐаÑÑоÑки ÑÑÑлок в ÑÑмной Ñеме</strong> â OG-пÑевÑÑ Ð²ÑÑавленнÑÑ
URL наконеÑ-Ñо ÑважаÑÑ <code>body.dark</code>: ÑÑмнÑй Ñон, ÑвеÑлÑй ÑекÑÑ, конÑÑаÑÑнÑе hover-ÑÑÑекÑÑ. РанÑÑе белÑе каÑÑоÑки Ñлепили на ÑÑмном Ñоне.</li> <li data-num="902"><span class="changelog-tag changelog-tag--UX" data-tag-alias="UX">UX</span> <strong>ÐаÑÑоÑки ÑÑÑлок ÑÑали пÑоÑÑоÑнее</strong> â max-height ÑвелиÑен Ñо 160 до 180px, изобÑÐ°Ð¶ÐµÐ½Ð¸Ñ Ð¼Ð°ÑÑÑабиÑÑÑÑÑÑ Ð¿ÑопоÑÑионалÑно (не обÑезаÑÑÑÑ Ð¶ÑÑÑко). ÐпиÑание в ÑÑи ÑÑÑоки болÑÑе не ÑжимаеÑÑÑ Ð² неÑиÑаемÑÑ Ð¿Ð¾Ð»Ð¾ÑкÑ.</li> <li data-num="903"><span class="changelog-tag changelog-tag--UX" data-tag-alias="UX">UX</span> <strong>ÐÑделеннÑе блоки в ÑедакÑоÑе лÑÑÑе виднÑ</strong> â outline пÑи вÑделении изобÑажениÑ, Ñмбеда или каÑÑоÑки ÑепеÑÑ Ð¾ÑÑÑÑÐ¿Ð°ÐµÑ Ð½Ð° 1px Ð¾Ñ ÑодеÑжимого (бÑло 0 â outline ÑливалÑÑ Ñ Ð³ÑаниÑей блока).</li> <li data-num="904"><span class="changelog-tag changelog-tag--UX" data-tag-alias="UX">UX</span> <strong>ÐÑавки авÑоÑа доÑÑавлÑÑÑÑÑ Ð´Ð°Ð¶Ðµ пÑи навигаÑии<
1/strong> â Ñведомление бÑкенда о новÑÑ
пÑавкаÑ
ÑепеÑÑ Ð¾ÑпÑавлÑеÑÑÑ ÑеÑез <code>sendBeacon</code> пÑи ÑÑ
оде Ñо ÑÑÑаниÑÑ. РанÑÑе обÑÑнÑй fetch мог бÑÑÑ Ð¿ÑеÑван бÑаÑзеÑом, и пÑавки ÑеÑÑлиÑÑ.</li> <li data-num="905"><span class="changelog-tag changelog-tag--A11Y" data-tag-alias="A11Y">A11Y</span> <strong>Ð£Ð²ÐµÐ´Ð¾Ð¼Ð»ÐµÐ½Ð¸Ñ â полноÑеннÑй feed</strong> â <code>role="feed"</code> Ñ <code>aria-posinset</code> и <code>aria-setsize</code> на каждой каÑÑоÑке. СкÑинÑÐ¸Ð´ÐµÑ Ð¾Ð·Ð²ÑÑÐ¸Ð²Ð°ÐµÑ Â«Ñведомление 3 из 12» â навигаÑÐ¸Ñ Ð²ÑлепÑÑ ÑÑала оÑмÑÑленной.</li> <li data-num="906">[ARCH] <code>**onAuthReady</code> â одна ÑÑилиÑа вмеÑÑо пÑÑи копий** â паÑÑеÑн «подожди auth:checked, поÑом загÑÑжай даннÑе» бÑл пÑодÑблиÑован в пÑÑи конÑÑоллеÑаÑ
. ТепеÑÑ ÑÑо одна ÑÑнкÑÐ¸Ñ Ð² 10 ÑÑÑок, коÑоÑÐ°Ñ Ð³Ð°ÑанÑиÑÑÐµÑ Ð¿ÑавилÑнÑÑ Ð¾ÑпиÑÐºÑ Ð¿Ñи ÑниÑÑожении scope.</li> <li data-num="907">[ARCH] <strong>СвойÑÑва конÑÑоллеÑа Ñведомлений ÑÑали пÑблиÑнÑми</strong> â <code>_isLoading</code>, <code>_filteredItems</code>, <code>_cachedCounts</code> и еÑÑ 7 ÑвойÑÑв Ñ Ð¿Ð¾Ð´ÑÑÑкиванием пеÑÐµÐ¸Ð¼ÐµÐ½Ð¾Ð²Ð°Ð½Ñ Ð² <code>isLoading</code>, <code>filteredItems</code>, <code>counts</code>. Шаблон â пÑблиÑнÑй API компоненÑа, и имена ÑепеÑÑ ÑÑо оÑÑажаÑÑ.</li> <li data-num="908"><span class="changelog-tag changelog-tag--UX" data-tag-alias="UX">UX</span> <strong>ÐÐ»Ð¸Ð½Ð½Ð°Ñ ÑемаÑка не пÑÑÑÐµÑ ÐºÐ½Ð¾Ð¿ÐºÐ¸</strong> â ÑанÑÑе пÑи болÑÑом ÑекÑÑе в окне ÑемаÑки поле ввода ÑоÑло беÑконеÑно, и кнопки «ÐÑпÑавиÑÑ» / «ÐÑмениÑÑ» Ñезжали за ÑкÑан. ТепеÑÑ textarea огÑаниÑена по вÑÑоÑе (45vh) Ñ Ñонким ÑлеганÑнÑм ÑкÑоллом â пиÑиÑе Ñ
оÑÑ Ñоман, кнопки вÑегда под ÑÑкой.</li> </ul> </div> </details> <details class="changelog-section"> <summary class="changelog-summary"><span class="changelog-meta"><span class="changelog-meta__version">v9.74.0</span><span class="changelog-meta__date">15-03-2026</span></span><h2 id="v9740-15-03-2026--код-коÑоÑÑй-не-меÑаеÑ-ÑиÑаÑÑ">Ðод, коÑоÑÑй не меÑÐ°ÐµÑ ÑиÑаÑÑ</h2></summary> <div class="changelog-section__body"> <p>ÐеÑÑ JavaScript плаÑÑоÑÐ¼Ñ Ð¿ÐµÑеведÑн на ÑовÑеменнÑе ES-модÑли. ÐÐ»Ñ ÑиÑаÑÐµÐ»Ñ Ð¸ авÑоÑа ниÑего не изменилоÑÑ â а ÑÑÑаниÑÑ ÑÑали загÑÑжаÑÑÑÑ Ð±ÑÑÑÑее. ÐÑо поÑледний кÑÑпнÑй Ñаг пеÑед Ñем, как ÐиÑкÑÑÑ Ð½Ð°ÑнÑÑ Ð¿ÐµÑеезжаÑÑ Ð½Ð° React: ÑепеÑÑ Ð»Ñбой модÑÐ»Ñ Ð¾Ð´Ð¸Ð½Ð°ÐºÐ¾Ð²Ð¾ ÑабоÑÐ°ÐµÑ Ð¸ в ÑÑаÑом Angular, и в бÑдÑÑем ÑÑеке.</p> <ul> <li data-num="893"><span class="changelog-tag changelog-tag--PERF" data-tag-alias="PERF">PERF</span> <strong>ÐлавнÑй бандл поÑ
Ñдел на 13%</strong> â 697 â 604 ÐÐ. Webpack ÑепеÑÑ Ð²Ð¸Ð´Ð¸Ñ, какие ÑÑнкÑии ÑеалÑно иÑполÑзÑÑÑÑÑ, и вÑбÑаÑÑÐ²Ð°ÐµÑ Ð¾ÑÑалÑное (tree-shaking). ÐонкÑеÑно: вклÑÑÐµÐ½Ñ <code>usedExports</code> и <code>sideEffects</code> â впеÑвÑе за иÑÑоÑÐ¸Ñ Ð¿ÑоекÑа мÑÑÑвÑй код ÑдалÑеÑÑÑ Ð°Ð²ÑомаÑиÑеÑки. ÐÑÑÑÑее пеÑÐ²Ð°Ñ Ð·Ð°Ð³ÑÑзка â бÑÑÑÑее ÑÑаÑÑÑ Ð¿ÐµÑед глазами.</li> <li data-num="894"><span class="changelog-tag changelog-tag--PERF" data-tag-alias="PERF">PERF</span> <strong>Lazy-Ñанки загÑÑжаÑÑ Ð²Ñе Ñвои завиÑимоÑÑи</strong> â пÑи ленивой подгÑÑзке ÑÑÑаниÑÑ (ÑведомлениÑ, подкаÑÑÑ, ÑедакÑоÑ) Angular полÑÑал неполнÑй ÑпиÑок модÑлей â баг жил Ñ Ð¼Ð¾Ð¼ÐµÐ½Ñа пеÑеÑ
ода на webpack. ÐоÑинено: ÑепеÑÑ ocLazyLoad инжекÑиÑÑÐµÑ Ð¿Ð¾Ð»Ð½Ñй Ð½Ð°Ð±Ð¾Ñ (конÑÑоллеÑÑ, диÑекÑивÑ, компоненÑÑ, ÑаблонÑ), а не ÑолÑко один деÑолÑнÑй модÑлÑ.</li> <li data-num="895">[ARCH] <strong>50 Ñайлов â на ES modules</strong>
1 â <code>require()</code> â <code>import</code>, <code>module.exports</code> â <code>export</code>. ТоÑка вÑ
ода (<code>main.js</code>), 17 lazy-лоадеÑов, ÑÑилиÑÑ, ÑабÑики, ÑеÑвиÑÑ, конÑÑоллеÑÑ â вÑÑ Ð³Ð¾Ð²Ð¾ÑÐ¸Ñ Ð½Ð° одном ÑзÑке. Ðод ÑÑал поÑÑиÑÑемÑм: один и ÑÐ¾Ñ Ð¶Ðµ модÑÐ»Ñ Ð¼Ð¾Ð¶Ð½Ð¾ подклÑÑиÑÑ Ð¸ в Angular, и в React, и в ÑиÑÑом JS.</li> <li data-num="896">[ARCH] <strong>Sentry пеÑеÑÑал завиÑеÑÑ Ð¾Ñ ÑÑеймвоÑка</strong> â мониÑоÑинг оÑибок подклÑÑаеÑÑÑ ÑеÑез ÑÑандаÑÑнÑй <code>import</code>, а не Angular DI. Ðдин и ÑÐ¾Ñ Ð¶Ðµ SDK ÑабоÑÐ°ÐµÑ Ð¸ ÑейÑаÑ, и поÑле мигÑаÑии â ни одна оÑибка не ÑÑколÑзнÑÑ Ð¿Ñи пеÑеезде.</li> </ul> </div> </details> <details class="changelog-section"> <summary class="changelog-summary"><span class="changelog-meta"><span class="changelog-meta__version">v9.73.0</span><span class="changelog-meta__date">14-03-2026</span></span><h2 id="v9730-14-03-2026--бÑÑÑÑее-надÑжнее-доÑÑÑпнее">ÐÑÑÑÑее, надÑжнее, доÑÑÑпнее</h2></summary> <div class="changelog-section__body"> <p>ФиналÑÐ½Ð°Ñ Ð¿Ð¾Ð»Ð¸Ñовка пеÑед Ñелизом. СÑÑаниÑÑ Ð¾ÑкÑÑваÑÑÑÑ ÐµÑÑ Ð´Ð¾ клика, кнопки ÑпÑÐ°Ð²Ð»ÐµÐ½Ð¸Ñ ÑлÑÑÐ½Ñ ÑкÑинÑидеÑам, оÑибки ÑеÑи не пÑÑаÑÑ Ð¿Ð»Ð°ÑÑоÑмÑ, а колоколÑÑик Ñведомлений Ñнова показÑÐ²Ð°ÐµÑ ÑÑÑÑÑик в заголовке вкладки.</p> <ul> <li data-num="883"><span class="changelog-tag changelog-tag--PERF" data-tag-alias="PERF">PERF</span> <strong>СÑаÑÑи загÑÑжаÑÑÑÑ Ð´Ð¾ клика</strong> â пÑи наведении кÑÑÑоÑа на ÑÑÑÐ»ÐºÑ Ð¿Ð»Ð°ÑÑоÑма ÑиÑ
о пÑедзагÑÑÐ¶Ð°ÐµÑ Ð´Ð°Ð½Ð½Ñе маÑеÑиала. Ðогда Ð²Ñ ÐºÐ»Ð¸ÐºÐ°ÐµÑе â ÑÑÑаниÑа Ñже гоÑова. Ðа мобилÑнÑÑ
ÑабоÑÐ°ÐµÑ ÑеÑез long-tap. LRU-ÐºÐµÑ Ð½Ð° 30 маÑеÑиалов, TTL 60 ÑекÑнд â никакой нагÑÑзки на ÑеÑвеÑ.</li> <li data-num="884"><span class="changelog-tag changelog-tag--PERF" data-tag-alias="PERF">PERF</span> <strong>ÐдинаковÑе запÑоÑÑ Ð½Ðµ дÑблиÑÑÑÑÑÑ</strong> â еÑли ÑÑи компоненÑа одновÑеменно запÑаÑиваÑÑ Ð¾Ð´Ð¸Ð½ и ÑÐ¾Ñ Ð¶Ðµ URL, на ÑеÑÐ²ÐµÑ ÑÑ
Ð¾Ð´Ð¸Ñ Ð¾Ð´Ð¸Ð½ запÑоÑ, а ÑезÑлÑÑÐ°Ñ ÑаздаÑÑÑÑ Ð²Ñем. Ð¡Ð½Ð¸Ð¶Ð°ÐµÑ Ð½Ð°Ð³ÑÑÐ·ÐºÑ Ð½Ð° API пÑи ÑÑжÑлÑÑ
ÑÑÑаниÑаÑ
.</li> <li data-num="885"><span class="changelog-tag changelog-tag--UX" data-tag-alias="UX">UX</span> <strong>СÑÑÑÑик непÑоÑиÑаннÑÑ
веÑнÑлÑÑ Ð² заголовок вкладки</strong> â <code>(5) ÐиÑкÑÑÑ</code> в заголовке вкладки бÑаÑзеÑа, как ÑанÑÑе. Favicon-бейдж Ñоже оÑÑалÑÑ â ÑепеÑÑ Ð½ÐµÐ¿ÑоÑиÑаннÑе Ð²Ð¸Ð´Ð½Ñ Ð¸ когда вкладок много, и когда мало.</li> <li data-num="886"><span class="changelog-tag changelog-tag--UX" data-tag-alias="UX">UX</span> <strong>ÐÑлайн и онлайн â ÑеÑÑнÑе ÑведомлениÑ</strong> â пÑи поÑеÑе ÑеÑи поÑвлÑеÑÑÑ Ð´ÐµÐ»Ð¸ÐºÐ°ÑнÑй toast «ÐÐµÑ ÑÐ¾ÐµÐ´Ð¸Ð½ÐµÐ½Ð¸Ñ Ñ Ð¸Ð½ÑеÑнеÑом», пÑи возвÑаÑении â «Соединение воÑÑÑановлено». ÐапÑоÑÑ Ð½Ðµ оÑпÑавлÑÑÑÑÑ Ð² пÑÑÑоÑÑ, circuit breaker не ÑÑабаÑÑÐ²Ð°ÐµÑ Ð»Ð¾Ð¶Ð½Ð¾.</li> <li data-num="887"><span class="changelog-tag changelog-tag--UX" data-tag-alias="UX">UX</span> <strong>ÐодпиÑка в подвале ÑÑала оÑзÑвÑивее</strong> â заÑиÑа Ð¾Ñ Ð´Ð²Ð¾Ð¹Ð½Ð¾Ð³Ð¾ клика, кнопки «ÐопÑобоваÑÑ Ñнова» и «ÐÑÑгой e-mail» пÑи оÑибке, коÑÑекÑное ÑоÑÑоÑние «Ñже подпиÑан» по HTTP 409. РанÑÑе оÑибка подпиÑки бÑла ÑÑпиком без вÑÑ
ода.</li> <li data-num="888"><span class="changelog-tag changelog-tag--A11Y" data-tag-alias="A11Y">
1A11Y</span> <strong>Ðнопки Play/Pause ÑÑали наÑÑоÑÑими кнопками</strong> â <code><i></code> Ñ <code>role="button"</code> Ð·Ð°Ð¼ÐµÐ½ÐµÐ½Ñ Ð½Ð° ÑеманÑиÑеÑкие <code><button></code> в плееÑе ÑкÑпо и подкаÑÑов. СкÑинÑÐ¸Ð´ÐµÑ Ð¾Ð·Ð²ÑÑÐ¸Ð²Ð°ÐµÑ Â«ÐоÑпÑоизвеÑÑи» и «ÐаÑза», клавиаÑÑÑÐ½Ð°Ñ Ð½Ð°Ð²Ð¸Ð³Ð°ÑÐ¸Ñ ÑабоÑÐ°ÐµÑ Ð¸Ð· коÑобки.</li> <li data-num="889"><span class="changelog-tag changelog-tag--A11Y" data-tag-alias="A11Y">A11Y</span> <strong>Enter и Space ÑабоÑаÑÑ Ð½Ð° вÑеÑ
инÑеÑакÑивнÑÑ
ÑлеменÑаÑ
</strong> â глобалÑнÑй keyboard handler (event delegation) Ð´Ð»Ñ Ð²ÑеÑ
ÑлеменÑов Ñ <code>role="button"</code>. СоÑкнопки, иконки закÑÑÑиÑ, ÑлеменÑÑ ÑпиÑков â вÑÑ Ð´Ð¾ÑÑÑпно Ñ ÐºÐ»Ð°Ð²Ð¸Ð°ÑÑÑÑ.</li> <li data-num="890"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>Ðаги в grid-ÑаблонаÑ
</strong> â в двÑÑ
ÑаблонаÑ
ÑеÑки (<code>grid/3</code>, <code>grid/8</code>) ÑÑÑÑÑики комменÑаÑиев и пÑоÑмоÑÑов показÑвали даннÑе Ð¾Ñ ÑÑжого маÑеÑиала. ÐÑпÑавлено: <code>items[3].views</code> â <code>item.views</code>.</li> <li data-num="891"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>ФоÑма вÑ
ода ÑÑала безопаÑнее</strong> â пÑи ÑбÑоÑе паÑÐ¾Ð»Ñ Ð¿Ð»Ð°ÑÑоÑма болÑÑе не ÑаÑкÑÑваеÑ, ÑÑÑеÑÑвÑÐµÑ Ð»Ð¸ аккаÑнÑ. ÐмеÑÑо «Такого email неÑ» â единообÑазное «ÐÑли email заÑегиÑÑÑиÑован, Ð¼Ñ Ð¾ÑпÑавили ÑÑÑлкÑ».</li> <li data-num="892">[ARCH] <strong>ÐÑе ÑилÑÑÑÑ â в одном Angular-модÑле</strong> â 20 ÑекÑÑовÑÑ
ÑилÑÑÑов пеÑенеÑÐµÐ½Ñ Ð¸Ð· <code>discours.controllers</code> в <code>discours.filters</code>. ЧиÑÑÐ°Ñ Ð°ÑÑ
иÑекÑÑÑа, единообÑазие, на Ñаг ближе к незавиÑимоÑÑи Ð¾Ñ ÑÑеймвоÑка.</li> </ul> </div> </details> <details class="changelog-section"> <summary class="changelog-summary"><span class="changelog-meta"><span class="changelog-meta__version">v9.72.0</span><span class="changelog-meta__date">14-03-2026</span></span><h2 id="v9720-14-03-2026--пÑизÑаки-Ñведомлений-изгнанÑ-и-обезвÑеженÑ">ÐÑизÑаки Ñведомлений: Ð¸Ð·Ð³Ð½Ð°Ð½Ñ Ð¸ обезвÑеженÑ</h2></summary> <div class="changelog-section__body"> <p>Удалили комменÑаÑий â а Ñведомление о нÑм оÑÑалоÑÑ Ð½Ð°Ð²Ñегда. СÑÑÑÑик в колоколÑÑике показÑвал 25, а на ÑÑÑаниÑе â ÑÑи каÑÑоÑки. Ðлик по каÑÑоÑке не ÑменÑÑал ÑÑÑÑÑик. ÐеÑеклÑÑение Ð¼ÐµÐ¶Ð´Ñ Â«ÐомменÑаÑии» и «РемаÑки» показÑвало пÑÑÑоÑÑ Ð½Ð° одной из вкладок, Ñ
оÑÑ Ð±ÐµÐ¹Ð´Ð¶ ÑÑвеÑждал обÑаÑное. ÐÑиÑина Ñ Ð²ÑеÑ
ÑÑиÑ
багов одна: Ñдаление комменÑаÑÐ¸Ñ Ð¸Ð»Ð¸ ÑемаÑки не ÑÑогало ÑвÑзаннÑе ÑÐ²ÐµÐ´Ð¾Ð¼Ð»ÐµÐ½Ð¸Ñ â они оÑÑавалиÑÑ Ð² базе как пÑизÑаки, невидимÑе, но ÑÑиÑÑваемÑе. ÐÑ ÑÑо поÑинили â и на ÑÑовне ÑеÑвеÑа, и на ÑÑовне инÑеÑÑейÑа.</p> <ul> <li data-num="878"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>Удалил комменÑаÑий â ÑÐ²ÐµÐ´Ð¾Ð¼Ð»ÐµÐ½Ð¸Ñ ÑÑ
одÑÑ Ð²Ð¼ÐµÑÑе Ñ Ð½Ð¸Ð¼</strong> â пÑи Ñдалении комменÑаÑÐ¸Ñ Ð¸Ð»Ð¸ ÑемаÑки ÑеÑÐ²ÐµÑ ÑепеÑÑ ÐºÐ°Ñкадно ÑдалÑÐµÑ Ð²Ñе ÑвÑзаннÑе ÑÐ²ÐµÐ´Ð¾Ð¼Ð»ÐµÐ½Ð¸Ñ (вклÑÑÐ°Ñ ÑпоминаниÑ). Ðдин запÑÐ¾Ñ Ñ ÑоÑнÑм ÑилÑÑÑом по ÑÐ¸Ð¿Ñ â без ÑиÑка задеÑÑ ÑÑжие даннÑе. ÐовÑÑ
пÑизÑаков болÑÑе не бÑдеÑ.</li> <li data-num="879"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>СÑÑÑÑик и ÑпиÑок наконеÑ-Ñо говоÑÑÑ Ð¾Ð´Ð½Ð¾ и Ñо же</strong> â ÑанÑÑе бейдж на вкладке ÑÑиÑал вÑе ÑÐ²ÐµÐ´Ð¾Ð¼Ð»ÐµÐ½Ð¸Ñ (вклÑÑÐ°Ñ ÑкÑÑÑÑÑ
пÑизÑаков), а ÑпиÑок показÑвал ÑолÑко «живÑе». ТепеÑÑ ÑведомлениÑ-ÑиÑоÑÑ Ð½Ðµ пÑÑÑÑÑÑÑ â они оÑобÑажаÑÑÑÑ Ñ Ð¿Ð¾Ð¼ÐµÑкой «Удалено», иÑ
можно пÑоÑиÑаÑÑ, оÑмеÑиÑÑ Ð¸Ð»Ð¸ ÑмаÑ
нÑÑÑ. ЧÑо видиÑÑ â Ñо и еÑÑÑ.</li> <li data-num="880"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>Ðлик по каÑÑоÑке обновлÑÐµÑ ÑÑÑÑÑик</strong> â ÑанÑÑе <code>markAsRead</code> помеÑал ÑолÑко видимÑе ÑведомлениÑ, а ÑкÑÑÑÑе пÑизÑаки оÑÑавалиÑÑ Ð½ÐµÐ¿ÑоÑиÑаннÑми. ÐолоколÑÑик ÑпÑÑмо показÑвал ÑÑ Ð¶Ðµ ÑиÑÑÑ. ТепеÑÑ Ð²Ñе ÑÐ²ÐµÐ´Ð¾Ð¼Ð»ÐµÐ½Ð¸Ñ Ð¿Ð¾ маÑеÑÐ¸Ð°Ð»Ñ â в едином ÑпиÑке, и клик помеÑÐ°ÐµÑ Ð¸Ñ
вÑе.</li> <li data-num="881"><span class="changelog-tag changelog-tag--UX" data-tag-alias="UX">UX</span> <strong>«Удалено» вмеÑÑо пÑизÑаÑного ÑекÑÑа</strong> â еÑли комменÑаÑий или ÑемаÑка ÑдаленÑ, вмеÑÑо ÑÑÑаÑевÑего Ñнимка ÑекÑÑа â аккÑÑаÑÐ½Ð°Ñ ÑеÑÐ°Ñ ÐºÑÑÑÐ¸Ð²Ð½Ð°Ñ Ð¼ÐµÑка. Ðнопка «ÐÑвеÑиÑÑ» ÑкÑÑÑа â нелÑÐ·Ñ Ð¾ÑвеÑиÑÑ Ð² пÑÑÑоÑÑ.</li> <li data-num="882"><span class="changelog-tag changelog-tag--PERF" data-tag-alias="PERF">PERF</span> <strong>ÐÐ½Ð´ÐµÐºÑ Ð´Ð»Ñ ÐºÐ°Ñкадного ÑдалениÑ</strong> â ÑоÑÑавной Ð¸Ð½Ð´ÐµÐºÑ <code>documentId + documentCollection</code> в коллекÑии Ñведомлений: Ñдаление идÑÑ Ð¿Ð¾ индекÑÑ, а не полнÑм Ñканом.</li> </ul> </div> </details> <details class="changelog-section"> <summary class="changelog-summary"><span class="changelog-meta"><span class="changelog-meta__version">v9.71.0</span><span class="changelog-meta__date">14-03-2026</span></span><h2 id="v9710-14-03-2026--под-капоÑом-плаÑÑоÑма-ÑÑиÑÑÑ-жиÑÑ-без-ÑÑеймвоÑка">Ðод капоÑом: плаÑÑоÑма ÑÑиÑÑÑ Ð¶Ð¸ÑÑ Ð±ÐµÐ· ÑÑеймвоÑка</h2></summary> <div class="changelog-section__body"> <p>ÐиÑкÑÑÑ Ð¿Ð¾ÑÑепенно оÑвÑзÑваеÑÑÑ Ð¾Ñ AngularJS â и ÑÑо пеÑвÑй болÑÑой Ñаг. ÐапÑоÑÑ Ðº ÑеÑвеÑÑ, авÑоÑизаÑиÑ, обÑабоÑка оÑибок â вÑÑ Ð¿ÐµÑееÑ
ало из Angular-ÑабÑик в ÑиÑÑÑй JavaScript. ÐÐ»Ñ ÑиÑаÑелей и авÑоÑов ниÑего не изменилоÑÑ (и ÑÑо лÑÑÑий ÐºÐ¾Ð¼Ð¿Ð»Ð¸Ð¼ÐµÐ½Ñ ÑеÑакÑоÑингÑ), а Ð´Ð»Ñ Ð±ÑдÑÑего плаÑÑоÑÐ¼Ñ â изменилоÑÑ Ð²ÑÑ: ÑепеÑÑ Ð¼Ð¾Ð¶Ð½Ð¾ ÑÑÑоиÑÑ Ð½Ð¾Ð²Ñе компоненÑÑ, не оглÑдÑваÑÑÑ Ð½Ð° деÑÑÑилеÑний ÑÑеймвоÑк.</p> <ul> <li data-num="873"><span class="changelog-tag changelog-tag--PERF" data-tag-alias="PERF">PERF</span> <strong>ÐапÑоÑÑ ÑÑали бÑÑÑÑее и надÑжнее</strong> â веÑÑ Ð¾Ð±Ð¼ÐµÐ½ Ñ ÑеÑвеÑом пеÑеведÑн на наÑивнÑй Fetch API вмеÑÑо Angular-обÑÑÑки <code>$http</code>. Ðдин HTTP-ÐºÐ»Ð¸ÐµÐ½Ñ (~640 ÑÑÑок) вмеÑÑо дÑблиÑÐ¾Ð²Ð°Ð½Ð¸Ñ Ð»Ð¾Ð³Ð¸ÐºÐ¸ в пÑÑи меÑÑаÑ
: авÑоÑизаÑиÑ, retry Ñ ÑкÑпоненÑиалÑной задеÑжкой, circuit breaker, клаÑÑиÑикаÑÐ¸Ñ Ð¾Ñибок â вÑÑ ÑабоÑÐ°ÐµÑ ÐµÐ´Ð¸Ð½Ð¾Ð¾Ð±Ñазно. ÐÑли ÑеÑÐ²ÐµÑ Ð¸ÐºÐ½Ñл â плаÑÑоÑма ÑиÑ
о повÑоÑÐ¸Ñ Ð·Ð°Ð¿ÑоÑ, и авÑÐ¾Ñ Ð´Ð°Ð¶Ðµ не замеÑиÑ.</li> <li data-num="874"><span class="changelog-tag changelog-tag--UX" data-tag-alias="UX">UX</span> <strong>ÐÑибки ÑÑали понÑÑнее</strong> â «ÐÐµÑ ÑÐ¾ÐµÐ´Ð¸Ð½ÐµÐ½Ð¸Ñ Ñ ÑеÑвеÑом», «СлиÑком много запÑоÑов», «ÐÑибка авÑоÑизаÑии» â одинаковÑе ÑоÑмÑлиÑовки и в ÑедакÑоÑе, и в комменÑаÑиÑÑ
, и на ÑÑÑаниÑе ÑообÑений. РанÑÑе каждÑй модÑÐ»Ñ Ð¸Ð·Ð¾Ð±ÑеÑал Ñвои ÑекÑÑÑ, и пÑи одной и Ñой же пÑоблеме полÑзоваÑÐµÐ»Ñ Ð²Ð¸Ð´ÐµÐ» ÑазнÑе ÑообÑениÑ.</li> <li data-num="875"><span class="changelog-tag changelog-tag--PERF" data-tag-alias="PERF">PERF</span> <strong>Ðодвал и аÑÐ´Ð¸Ð¾Ð¿Ð»ÐµÐµÑ Ð³ÑÑзÑÑÑÑ ÑÑÑекÑивнее</strong> â footer и мÑзÑкалÑнÑй Ð¿Ð»ÐµÐµÑ Ð¿ÑевÑаÑилиÑÑ Ð¸Ð· вÑÑавлÑемÑÑ
Ñаблонов в полноÑеннÑе компоненÑÑ (<code><site-footer></code>, <code><music-player></code>). ÐенÑÑе лиÑниÑ
DOM-ÑлеменÑов, бÑÑÑÑее ÑÐµÐ½Ð´ÐµÑ Ð»ÐµÐ½ÑÑ â из 49 grid-Ñаблонов ÑбÑÐ°Ð½Ñ Ð¿ÑÑÑÑе конÑÑоллеÑÑ, коÑоÑÑе ÑоздавалиÑÑ Ð¿Ñи каждой загÑÑзке ÑÑÑаниÑÑ, не Ð´ÐµÐ»Ð°Ñ Ð½Ð¸Ñего.</li> <li data-num="876">[ARCH] <strong>21 ÑилÑÑÑ ÑÑал пеÑеиÑполÑзÑемÑм</strong> â каждÑй ÑекÑÑовÑй ÑилÑÑÑ (ÑоÑмаÑиÑование даÑ, ÑпоминаниÑ, обÑезка ÑекÑÑа) ÑепеÑÑ Ð´Ð¾ÑÑÑпен за пÑеделами Angular. ÐемоизаÑÐ¸Ñ Ð¸ кÑÑи â на меÑÑе, но ÑепеÑÑ ÑÑи же ÑÑнкÑии ÑабоÑаÑÑ Ð² Tiptap-ÑедакÑоÑе и бÑдÑÑ Ð´Ð¾ÑÑÑÐ¿Ð½Ñ Ð² бÑдÑÑиÑ
React-компоненÑаÑ
.</li> <li data-num="877">[ARCH] <strong>
17 ÑеÑвиÑов живÑÑ Ð¾ÑделÑно Ð¾Ñ ÑÑеймвоÑка</strong> â подпиÑки, ÑемаÑки, обÑаÑÐ½Ð°Ñ ÑвÑзÑ, каÑегоÑии, авÑоÑизаÑÐ¸Ñ â вÑнеÑÐµÐ½Ñ Ð² ÑиÑÑÑе ES-модÑли без завиÑимоÑÑей Ð¾Ñ Angular. ТекÑÑий код пÑÐ¾Ð´Ð¾Ð»Ð¶Ð°ÐµÑ ÑабоÑаÑÑ ÑеÑез Angular DI, а новÑй (и бÑдÑÑий React) импоÑÑиÑÑÐµÑ Ð½Ð°Ð¿ÑÑмÑÑ â один и ÑÐ¾Ñ Ð¶Ðµ пÑÑÑ Ðº ÑеÑвеÑÑ Ð´Ð»Ñ Ð²ÑеÑ
.</li> </ul> </div> </details> <details class="changelog-section"> <summary class="changelog-summary"><span class="changelog-meta"><span class="changelog-meta__version">v9.70.0</span><span class="changelog-meta__date">14-03-2026</span></span><h2 id="v9700-14-03-2026--ÑведомлениÑ-ниÑего-не-ÑеÑÑеÑÑÑ-вÑÑ-наÑ
одиÑÑÑ">УведомлениÑ: ниÑего не ÑеÑÑеÑÑÑ, вÑÑ Ð½Ð°Ñ
одиÑÑÑ</h2></summary> <div class="changelog-section__body"> <p>РемаÑки пÑопадали Ñо ÑÑÑаниÑÑ Ñведомлений. ЯкоÑнÑе ÑÑÑлки из колоколÑÑика оÑкÑÑвали ÑÑаÑÑÑ, но не пÑокÑÑÑивали к нÑÐ¶Ð½Ð¾Ð¼Ñ Ð¼ÐµÑÑÑ. ÐеÑеклÑÑение Ð¼ÐµÐ¶Ð´Ñ Ð²ÐºÐ»Ð°Ð´ÐºÐ°Ð¼Ð¸ «ÐомменÑаÑии» и «РемаÑки» пÑевÑаÑалоÑÑ Ð² лоÑеÑÐµÑ â одно поÑвлÑлоÑÑ, дÑÑгое иÑÑезало. ÐÑ ÑазобÑалиÑÑ Ñ ÐºÐ¾Ñнем каждой пÑоблемÑ: Ð¾Ñ ÐºÐ¾Ð½ÑликÑа DDP-подпиÑок до ÑаÑÑинÑ
ÑонизаÑии ID поÑле мигÑаÑии. ТепеÑÑ ÑÐ²ÐµÐ´Ð¾Ð¼Ð»ÐµÐ½Ð¸Ñ ÑабоÑаÑÑ Ñак, как Ð´Ð¾Ð»Ð¶Ð½Ñ Ð±Ñли Ñ Ñамого наÑала.</p> <ul> <li data-num="862"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>РемаÑки болÑÑе не иÑÑезаÑÑ Ð¿Ñи пеÑеклÑÑении вкладок</strong> â пеÑеÑ
од Ð¼ÐµÐ¶Ð´Ñ Â«ÐомменÑаÑии» и «РемаÑки» на ÑÑÑаниÑе Ñведомлений вÑзÑвал конÑÐ»Ð¸ÐºÑ DDP-подпиÑок: Meteor ÑдалÑл докÑменÑÑ Ð¾Ð´Ð½Ð¾Ð³Ð¾ Ñипа, загÑÑÐ¶Ð°Ñ Ð´ÑÑгой. ТепеÑÑ Ð±Ð°Ð·Ð¾Ð²Ð°Ñ Ð¿Ð¾Ð´Ð¿Ð¸Ñка (вÑе ÑипÑ) живÑÑ Ð¿Ð¾ÑÑоÑнно, а ÑилÑÑÑÐ¾Ð²Ð°Ð½Ð½Ð°Ñ Ð´Ð¾Ð±Ð°Ð²Ð»ÑеÑÑÑ Ð¿Ð¾Ð²ÐµÑÑ
â никÑо никого не вÑÑеÑнÑеÑ.</li> <li data-num="863"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>ЯкоÑнÑе ÑÑÑлки на ÑемаÑки доведÑÑ Ð´Ð¾ Ñели</strong> â клик по ÑÐ²ÐµÐ´Ð¾Ð¼Ð»ÐµÐ½Ð¸Ñ Ð¾ ÑемаÑке оÑкÑÑвал ÑÑаÑÑÑ, но не пÑокÑÑÑивал к нÑÐ¶Ð½Ð¾Ð¼Ñ Ð¼ÐµÑÑÑ. ÐÑиÑина: поÑле мигÑаÑии ÑемаÑок в InlineComments ID изменилиÑÑ, а ÑÑÑлки в ÑведомлениÑÑ
Ñ
Ñанили ÑÑаÑÑе. Ðобавили поддеÑÐ¶ÐºÑ Ð²ÑеÑ
ÑÑÑÑ
ÑоÑмаÑов Ñ
еÑей (<code>#remark-{id}</code>, <code>#comment-{id}</code>, <code>#remark-{migrated_id}</code>) Ñ Ð°Ð²ÑомаÑиÑеÑким ÑопоÑÑавлением â ÑепеÑÑ ÐºÐ°Ð¶Ð´Ð°Ñ ÑÑÑлка ведÑÑ ÑоÑно ÑÑда, кÑда обеÑаеÑ.</li> <li data-num="864"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>ЯкоÑнÑе ÑÑÑлки на комменÑаÑии Ñоже ÑабоÑаÑÑ</strong> â <code>scrollIntoView</code> Ñ Ð¿Ð»Ð°Ð²Ð½Ð¾Ð¹ пÑокÑÑÑкой и ÑкÑпоненÑиалÑнÑм retry (до 3 ÑекÑнд) â еÑли комменÑаÑий еÑÑ Ð½Ðµ оÑÑендеÑилÑÑ, ÑÑÑаниÑа ÑеÑпеливо дождÑÑÑÑ Ð¸ пÑокÑÑÑиÑ. РабоÑÐ°ÐµÑ Ð¸ пÑи SPA-навигаÑии, и пÑи оÑкÑÑÑии ÑÑÑлки в новой вкладке.</li> <li data-num="865"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>Lazy-render болÑÑе не пÑÑÑÐµÑ Ñели ÑкоÑей</strong> â пÑи пеÑеÑ
оде по ÑÑÑлке Ñ Ñ
еÑем (<code>#comment-...</code>, <code>#remark-...</code>) ÑекÑÐ¸Ñ under-the-fold ÑендеÑиÑÑÑ Ð¼Ð³Ð½Ð¾Ð²ÐµÐ½Ð½Ð¾, а не ждÑÑ Ð¿Ð¾Ð¿Ð°Ð´Ð°Ð½Ð¸Ñ Ð²Ð¾ вÑÑпоÑÑ. ÐÑовеÑÑем и <code>$location.hash()</code> (акÑÑален пÑи SPA-навигаÑии), и <code>window.location.hash</code> (fallback) â ни один ÑоÑÐ¼Ð°Ñ Ð½Ðµ ÑÑколÑзнÑÑ.</li> <li data-num="866"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>УÑеÑка ÑаймеÑов пÑи пеÑеклÑÑении вкладок</strong> â бÑÑÑÑое пеÑеклÑÑение Ð¼ÐµÐ¶Ð´Ñ Ð²ÐºÐ»Ð°Ð´ÐºÐ°Ð¼Ð¸ Ñведомлений Ñоздавало «пÑизÑаÑнÑе» ÑаймеÑÑ, коÑоÑÑе могли обновиÑÑ Ð¸Ð½ÑеÑÑÐµÐ¹Ñ ÑÑÑаÑевÑими даннÑми. ÐаждÑй новÑй вÑзов ÑепеÑÑ Ð¾ÑменÑÐµÑ Ð¿ÑедÑдÑÑие.</li> <li data-num="867"><span class="changelog-tag changelog-tag--PERF" data-tag-alias="PERF">PERF</span> <strong>ÐодÑÑÑÑ Ð½ÐµÐ¿ÑоÑиÑаннÑÑ
за O(N) вмеÑÑо O(NÃK)</strong> â пÑедвÑÑиÑленнÑй обÑаÑнÑй маппинг <code>documentCollection â Ñип вкладки</code> заменил вложеннÑй Ñикл Ñ <code>indexOf</code>. Ðа 50 ÑведомлениÑÑ
â ÑазниÑа незамеÑна, на 500 пÑи «ÐагÑÑзиÑÑ ÐµÑÑ» â оÑÑÑима.</li> <li data-num="868"><span class="changelog-tag changelog-tag--PERF" data-tag-alias="PERF">PERF</span> <strong>ÐоиÑк докÑменÑов без лиÑниÑ
аллокаÑий</strong> â пÑи ÑаÑкÑÑÑии ÑпиÑка Ñведомлений ÐºÐ°Ð¶Ð´Ð°Ñ ÐºÐ°ÑÑоÑка иÑкала ÑвÑзаннÑй докÑÐ¼ÐµÐ½Ñ ÑеÑез <code>.concat()</code> двÑÑ
маÑÑивов. ТепеÑÑ Ð¿Ð¾Ð¸Ñк идÑÑ Ð¿Ð¾ÑледоваÑелÑно по обоим без ÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ Ð¿ÑомежÑÑоÑного маÑÑива.</li> <li data-num="869"><span class="changelog-tag changelog-tag--A11Y" data-tag-alias="A11Y">
1A11Y</span> <strong>Ðкладки Ñведомлений â пÑавилÑнÑе ARIA-ÑабÑ</strong> â <code>role="tab"</code>, <code>aria-selected</code>, <code>role="tabpanel"</code> â ÑкÑинÑÐ¸Ð´ÐµÑ ÐºÐ¾ÑÑекÑно озвÑÑÐ¸Ð²Ð°ÐµÑ Ð½Ð°Ð²Ð¸Ð³Ð°ÑÐ¸Ñ Ð¼ÐµÐ¶Ð´Ñ ÑилÑÑÑами. РанÑÑе вкладки бÑли пÑоÑÑо ÑÑÑлками без ÑеманÑики.</li> <li data-num="870"><span class="changelog-tag changelog-tag--A11Y" data-tag-alias="A11Y">A11Y</span> <strong>ÐнимаÑÐ¸Ñ ÑемаÑок ÑÐ²Ð°Ð¶Ð°ÐµÑ <code>prefers-reduced-motion</code></strong> â подÑвеÑка Ñелевой ÑемаÑки (пÑлÑÑаÑÐ¸Ñ Ð·Ð¾Ð»Ð¾ÑÑм) оÑклÑÑаеÑÑÑ, еÑли полÑзоваÑÐµÐ»Ñ Ð¿Ð¾Ð¿ÑоÑил ÑменÑÑиÑÑ Ð°Ð½Ð¸Ð¼Ð°ÑиÑ. ÐокÑÑÑа и ÑвеÑлаÑ, и ÑÑÐ¼Ð½Ð°Ñ Ñема.</li> <li data-num="871"><span class="changelog-tag changelog-tag--UX" data-tag-alias="UX">UX</span> <strong>Ðейджи непÑоÑиÑаннÑÑ
на вкладкаÑ
</strong> â ÑÑÑÑÑики пÑевÑаÑилиÑÑ Ð¸Ð· невзÑаÑнÑÑ
ÑиÑÑ Ð² ÑÑкие pill-бейджи â Ñиний Ñон, белÑй ÑекÑÑ, мÑгкие ÑкÑÑглениÑ. ÐепÑоÑиÑаннÑе Ð²Ð¸Ð´Ð½Ñ Ñ Ð¿ÐµÑвого взглÑда.</li> <li data-num="872"><span class="changelog-tag changelog-tag--UX" data-tag-alias="UX">UX</span> <strong>ÐлавнÑй индикаÑÐ¾Ñ Ð°ÐºÑивной вкладки</strong> â подÑÑÑкивание ÑаÑкÑÑваеÑÑÑ Ð¾Ñ ÑенÑÑа Ñ Ð¼Ñгким easing вмеÑÑо мгновенного поÑвлениÑ. ÐелоÑÑ, но навигаÑÐ¸Ñ Ð¾ÑÑÑаеÑÑÑ Ð¾ÑзÑвÑивее.</li> </ul> </div> </details> <details class="changelog-section"> <summary class="changelog-summary"><span class="changelog-meta"><span class="changelog-meta__version">v9.69.0</span><span class="changelog-meta__date">13-03-2026</span></span><h2 id="v9690-13-03-2026--ÑиÑе-едеÑÑ-далÑÑе-бÑдеÑÑ-оÑ
оÑа-на-пÑизÑаков-sentry">ТиÑе едеÑÑ, далÑÑе бÑдеÑÑ: оÑ
оÑа на пÑизÑаков Sentry</h2></summary> <div class="changelog-section__body"> <p>ÐеÑÑÑок оÑибок, коÑоÑÑе копилиÑÑ Ð² Sentry и поÑÑили Ð¶Ð¸Ð·Ð½Ñ ÑиÑаÑелÑм â молÑа ломали аÑÐ´Ð¸Ð¾Ð¿Ð»ÐµÐµÑ Ð½Ð° мÑзÑкалÑнÑÑ
ÑÑÑаниÑаÑ
, показÑвали «ÑÑÑаниÑа не найдена» вмеÑÑо «ÑеÑÐ²ÐµÑ Ð½ÐµÐ´Ð¾ÑÑÑпен», ÑонÑли комменÑаÑии без обÑÑÑнений. ÐÑ Ð¸Ñ
наÑли и ÑÑÑÑанили. ÐлаÑÑоÑма ÑÑала замеÑно ÑÑÑойÑивее â оÑобенно на медленнÑÑ
ÑоединениÑÑ
и мобилÑнÑÑ
.</p> <ul> <li data-num="855"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>ÐÑÐ´Ð¸Ð¾Ð¿Ð»ÐµÐµÑ Ð±Ð¾Ð»ÑÑе не Ð¿Ð°Ð´Ð°ÐµÑ Ð½Ð° пÑÑÑÑÑ
ÑÑекаÑ
</strong> â еÑли в плейлиÑÑе оказÑвалÑÑ ÑÐ»ÐµÐ¼ÐµÐ½Ñ Ð±ÐµÐ· иÑÑоÑника (напÑимеÑ, пÑи загÑÑзке ÑÑÑаниÑÑ Ñ Ð±Ð¸ÑÑми даннÑми), веÑÑ Ð¿Ð»ÐµÐµÑ Ð²ÑлеÑал Ñ TypeError. ТепеÑÑ Ð¿ÑÑÑÑе ÑлеменÑÑ ÑиÑ
о пÑопÑÑкаÑÑÑÑ â мÑзÑка игÑаеÑ.</li> <li data-num="856"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>jQuery пеÑеÑÑал пÑопадаÑÑ Ð² webpack-ÑбоÑке</strong> â Ñедкий, но воÑпÑоизводимÑй баг: пÑи опÑеделÑнном поÑÑдке загÑÑзки ÑкÑипÑов webpack-модÑли не видели jQuery, и вÑÑ ÑÑÑаниÑа ÑÑÑилаÑÑ. ÐÑиÑина â обÑаÑение к голой пеÑеменной <code>jQuery</code> вмеÑÑо <code>window.jQuery</code> в shim-Ñлое.</li> <li data-num="857"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>ÐомменÑаÑии не ÑонÑÑ Ð¼Ð¾Ð»Ñа</strong> â ÑанÑÑе еÑли API комменÑаÑиев оÑвеÑал ÑаймаÑÑом или оÑибкой ÑеÑи, блок под ÑÑаÑÑÑй пÑоÑÑо оÑÑавалÑÑ Ð¿ÑÑÑÑм, а в Sentry ÑлеÑал unhandled rejection. ТепеÑÑ Ð¾Ñибка логиÑÑеÑÑÑ, а инÑеÑÑÐµÐ¹Ñ Ð½Ðµ ломаеÑÑÑ. ÐонÑÑ: еÑли маÑеÑиал еÑÑ Ð½Ðµ загÑÑжен â беÑÑмÑÑленнÑй запÑÐ¾Ñ Ð·Ð° комменÑаÑиÑми даже не оÑпÑавлÑеÑÑÑ.</li> <li data-num="858"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>«Ðе ÑдалоÑÑ Ð·Ð°Ð³ÑÑзиÑÑ» вмеÑÑо «не найдено»</strong> â пÑи оÑибкаÑ
ÑеÑвеÑа (502, 526, ÑаймаÑÑ) ÑÑÑаниÑа ÑообÑений показÑвала «ÐÑ Ð¿Ð¾Ð¿Ð°Ð»Ð¸ на неÑÑÑеÑÑвÑÑÑÑÑ ÑÑÑаниÑÑ» â Ñ ÑоÑмой поиÑка. ТепеÑÑ ÐºÐ¾ÑÑекÑно: «Ðе ÑдалоÑÑ Ð·Ð°Ð³ÑÑзиÑÑ ÑÑÑаниÑÑ» Ñ ÐºÐ½Ð¾Ð¿ÐºÐ¾Ð¹ «ÐбновиÑÑ».</li> <li data-num="859"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> <strong>SSL-оÑибки Cloudflare â оÑделÑÐ½Ð°Ñ ÐºÐ°ÑегоÑиÑ</strong> â HTTP 525/526 (пÑÐ¾Ð±Ð»ÐµÐ¼Ñ Ñ ÑеÑÑиÑикаÑом Ð¼ÐµÐ¶Ð´Ñ Cloudflare и ÑеÑвеÑом) ÑепеÑÑ ÑаÑпознаÑÑÑÑ ÐºÐ°Ðº <code>ssl</code>, полÑÑили внÑÑное ÑообÑение и иÑклÑÑÐµÐ½Ñ Ð¸Ð· беÑполезнÑÑ
retry-попÑÑок. РанÑÑе ÐºÐ»Ð¸ÐµÐ½Ñ Ð¼Ð¾Ð»Ñа повÑоÑÑл запÑÐ¾Ñ ÑÑÐ¸Ð¶Ð´Ñ â и ÑÑÐ¸Ð¶Ð´Ñ Ð¿Ð¾Ð»ÑÑал ÑÐ¾Ñ Ð¶Ðµ оÑвеÑ.</li> <li data-num="860"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>СÑÑлки Ñ Ð¼ÑÑоÑом болÑÑе не ломаÑÑ ÑÑÑаниÑÑ</strong> â URL вÑоде <code>/articles/culture/art-violence%0A</code> (Ñ Ñимволом пеÑеноÑа ÑÑÑоки â пÑивеÑ, кÑивÑе паÑÑеÑÑ ÑоÑÑеÑей) ÑанÑÑе пÑолеÑали ÑеÑез Cloudflare Worker и пÑиводили к оÑибке ÑаблонизаÑии. ТепеÑÑ Worker ÑиÑÑÐ¸Ñ ÑпÑавлÑÑÑие ÑÐ¸Ð¼Ð²Ð¾Ð»Ñ Ð¸Ð· пÑÑи и Ð´ÐµÐ»Ð°ÐµÑ 301-ÑедиÑÐµÐºÑ Ð½Ð° ноÑмалÑнÑй адÑеÑ.</li> <li data-num="861"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>Ðбложки ÑÑаÑей веÑнÑлиÑÑ Ð¸Ð· небÑÑиÑ</strong> â на ÑÑде маÑеÑиалов (в Ñом ÑиÑле многолеÑниÑ
лонгÑидов вÑоде «ÐвÑомайдан: 5 иÑÑоÑий») вмеÑÑо заглавнÑÑ
каÑÑинок зиÑла пÑÑÑоÑа, а в конÑоли â молÑаливÑй 500. ÐÑиÑина: Thumbor ÑÑиÑал ÑÑи изобÑÐ°Ð¶ÐµÐ½Ð¸Ñ Â«Ð´ÐµÐºÐ¾Ð¼Ð¿ÑеÑÑионной бомбой» â они пÑевÑÑали Ð»Ð¸Ð¼Ð¸Ñ Ð² 20 млн пикÑелей (а Ñ ÑоÑогÑаÑий бÑло 23 млн). ÐоднÑли поÑог до 30 млн, поÑиÑÑили nginx-кÑÑ â обложки Ñнова на меÑÑе.</li> </ul> </div> </details> <details class="changelog-section"> <summary class="changelog-summary"><span class="changelog-meta"><span class="changelog-meta__version">v9.68.0</span><span class="changelog-meta__date">13-03-2026</span></span><h2 id="v9680-13-03-2026--импоÑÑÑкÑпоÑÑ-пиÑиÑе-где-Ñдобно-пÑбликÑйÑе-на-диÑкÑÑÑе">ÐмпоÑÑ/ÑкÑпоÑÑ: пиÑиÑе где Ñдобно, пÑбликÑйÑе на ÐиÑкÑÑÑе</h2></summary> <div class="changelog-section__body"> <p>ТекÑÑÑ Ð¶Ð¸Ð²ÑÑ Ð½Ðµ ÑолÑко в наÑем ÑедакÑоÑе. ÐÑо-Ñо пиÑÐµÑ Ð² Word, кÑо-Ñо â в Obsidian, кÑо-Ñо пеÑÐµÐµÐ·Ð¶Ð°ÐµÑ Ñ Medium. РанÑÑе пеÑÐµÐ½Ð¾Ñ Ð¼Ð°ÑеÑиала на плаÑÑоÑÐ¼Ñ Ð¾Ð·Ð½Ð°Ñал ÑÑÑное копиÑование Ñ Ð¿Ð¾ÑеÑей ÑоÑмаÑиÑÐ¾Ð²Ð°Ð½Ð¸Ñ Ð¸ каÑÑинок. ТепеÑÑ â одна кнопка, один клик, и ÑекÑÑ Ð½Ð° меÑÑе. РобÑаÑнÑÑ ÑÑоÑÐ¾Ð½Ñ Ñоже ÑабоÑаеÑ: ÑÑаÑÑÑ Ð¼Ð¾Ð¶Ð½Ð¾ забÑаÑÑ Ñ Ñобой в Markdown, PDF или Word.</p> <ul> <li data-num="846"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> <strong>ÐмпоÑÑ Ð¸Ð· Word â Ñ ÐºÐ°ÑÑинками</strong> â пеÑеÑаÑиÑе .docx-Ñайл в ÑедакÑоÑ, и ÑеÑез паÑÑ ÑекÑнд ÑекÑÑ Ð¿Ð¾ÑвиÑÑÑ Ñ ÑоÑ
Ñанением заголовков, ÑпиÑков и ÑоÑмаÑиÑованиÑ. ÐзобÑÐ°Ð¶ÐµÐ½Ð¸Ñ Ð¸Ð· докÑменÑа авÑомаÑиÑеÑки загÑÑжаÑÑÑÑ Ð½Ð° ÑеÑвеÑÑ ÐиÑкÑÑÑа â не нÑжно пеÑезаливаÑÑ Ð²ÑÑÑнÑÑ. ÐÑогÑеÑÑ-Ð±Ð°Ñ Ð¿Ð¾ÐºÐ°Ð·ÑваеÑ, ÑколÑко каÑÑинок загÑÑжено.</li> <li data-num="847"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> <strong>ÐмпоÑÑ Ð¸Ð· Markdown</strong> â .md-Ñайл из Obsidian, Notion, Bear или лÑбого дÑÑгого ÑедакÑоÑа. YAML-frontmatter (title, tags) ÑаÑпознаÑÑÑÑ Ð¸ ÑоÑ
ÑанÑеÑÑÑ. ÐÑоÑÑо вÑбеÑиÑе Ñайл â оÑÑалÑное ÑÐ´ÐµÐ»Ð°ÐµÑ Ð¿Ð»Ð°ÑÑоÑма.</li> <li data-num="848"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> <strong>ÐмпоÑÑ Ð¸Ð· Medium</strong> â пÑи загÑÑзке HTML-Ñайла из Medium-ÑкÑпоÑÑа плаÑÑоÑма авÑомаÑиÑеÑки ÑаÑпознаÑÑ ÑоÑмаÑ: ÑбиÑÐ°ÐµÑ ÑлÑжебнÑÑ ÑазмеÑкÑ, иÑпÑавлÑÐµÑ ÑÑовни заголовков, пеÑÐµÐ·Ð°Ð»Ð¸Ð²Ð°ÐµÑ Ð¸Ð·Ð¾Ð±ÑÐ°Ð¶ÐµÐ½Ð¸Ñ Ñ CDN Medium Ð
1½Ð° ÐиÑкÑÑÑ. ÐеÑеезд Ñ Medium â за минÑÑÑ, а не за ÑаÑ.</li> <li data-num="849"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> <strong>ÐкÑпоÑÑ Ð² Markdown</strong> â ÑкаÑайÑе ÑÑаÑÑÑ ÐºÐ°Ðº .md-Ñайл Ñ YAML-меÑаданнÑми (заголовок, slug, Ñеги, даÑа) или ÑкопиÑÑйÑе Markdown пÑÑмо в бÑÑÐµÑ Ð¾Ð±Ð¼ÐµÐ½Ð° Ð´Ð»Ñ Ð²ÑÑавки в Telegram, GitHub, Notion. ÐÑе каÑÑомнÑе ÑлеменÑÑ ÐиÑкÑÑÑа â ÑноÑки, подвÑÑÑÑки, ÑпигÑаÑÑ, галеÑеи â коÑÑекÑно конвеÑÑиÑÑÑÑÑÑ.</li> <li data-num="850"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> <strong>ÐкÑпоÑÑ Ð² PDF</strong> â ÑÑаÑÑÑ ÑкаÑиваеÑÑÑ ÐºÐ°Ðº оÑоÑмленнÑй PDF: Georgia, A4, коÑÑекÑнÑе оÑÑÑÑÐ¿Ñ Ð¸ изобÑажениÑ. Удобно Ð´Ð»Ñ Ð¾ÑпÑавки на вÑÑиÑÐºÑ Ð¸Ð»Ð¸ аÑÑ
ивиÑованиÑ.</li> <li data-num="851"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> <strong>ÐкÑпоÑÑ Ð² Word</strong> â .docx Ñ Ð·Ð°Ð³Ð¾Ð»Ð¾Ð²ÐºÐ°Ð¼Ð¸, ÑпиÑками, ÑÑÑлками и вÑÑÑоеннÑми изобÑажениÑми. ÐÑкÑойÑе в Word или Google Docs â ÑоÑмаÑиÑование на меÑÑе.</li> <li data-num="852"><span class="changelog-tag changelog-tag--UX" data-tag-alias="UX">UX</span> <strong>Drag & drop</strong> â Ñайл можно пеÑеÑаÑиÑÑ Ð¿ÑÑмо в модалкÑ. Ðли кликнÑÑÑ Ð½Ð° Ð·Ð¾Ð½Ñ Ð¸ вÑбÑаÑÑ ÑеÑез пÑоводник. ÐвÑоопÑеделение ÑоÑмаÑа по ÑаÑÑиÑÐµÐ½Ð¸Ñ Ð¸ ÑодеÑÐ¶Ð¸Ð¼Ð¾Ð¼Ñ â дÑмаÑÑ Ð½Ðµ нÑжно.</li> <li data-num="853"><span class="changelog-tag changelog-tag--UX" data-tag-alias="UX">UX</span> <strong>ÐÑедпÑоÑмоÑÑ Ð¿ÐµÑед импоÑÑом</strong> â пÑежде Ñем замениÑÑ ÑодеÑжимое ÑедакÑоÑа, модалка показÑÐ²Ð°ÐµÑ Ð¿ÑевÑÑ Ð´Ð¾ÐºÑменÑа. ÐÑедÑпÑеждение «ÑекÑÑий конÑÐµÐ½Ñ Ð±ÑÐ´ÐµÑ Ð·Ð°Ð¼ÐµÐ½Ñн» не даÑÑ ÑлÑÑайно пеÑезапиÑаÑÑ ÑабоÑÑ.</li> <li data-num="854"><span class="changelog-tag changelog-tag--PERF" data-tag-alias="PERF">PERF</span> <strong>ÐÑÑ lazy-loaded</strong> â библиоÑеки mammoth (30 ÐÐ), turndown (8 ÐÐ), docx (90 ÐÐ), html2pdf (200 ÐÐ) загÑÑжаÑÑÑÑ ÑолÑко пÑи иÑполÑзовании. ÐÑновной бандл не пÑибавил ни байÑа.</li> </ul> </div> </details> <details class="changelog-section"> <summary class="changelog-summary"><span class="changelog-meta"><span class="changelog-meta__version">v9.67.0</span><span class="changelog-meta__date">13-03-2026</span></span><h2 id="v9670-13-03-2026--поиÑк-авÑоÑов-наÑ
одиÑ-вÑеÑ
-а-не-ÑолÑко-пеÑвÑÑ
-пÑÑÑдеÑÑÑ">ÐоиÑк авÑоÑов: наÑ
Ð¾Ð´Ð¸Ñ Ð²ÑеÑ
, а не ÑолÑко пеÑвÑÑ
пÑÑÑдеÑÑÑ</h2></summary> <div class="changelog-section__body"> <p>ÐоиÑк адÑеÑаÑов на ÑÑÑаниÑе ÑообÑений ÑабоÑал вÑ
олоÑÑÑÑ: загÑÑжал пеÑвÑе 50 авÑоÑов и ÑилÑÑÑовал локалÑно â ÑолÑко по имени. ÐÑÑалÑнÑе ÑоÑни полÑзоваÑелей пÑоÑÑо не ÑÑÑеÑÑвовали Ð´Ð»Ñ Ð¿Ð¾Ð¸Ñковой ÑÑÑоки. ТепеÑÑ Ð¿Ð¾Ð¸Ñк ÑеÑвеÑнÑй, мгновеннÑй и иÑÐµÑ Ð¿Ð¾ ÑеÑÑи полÑм ÑÑазÑ.</p> <ul> <li data-num="839"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>ÐÑе авÑоÑÑ â в поиÑке</strong> â ÑанÑÑе ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÐµÐ½Ñ Ð·Ð°Ð³ÑÑжал пеÑвÑÑ ÑÑÑаниÑÑ Ð¿Ð¾Ð»ÑзоваÑелей (50 Ñеловек) и болÑÑе не ÑпÑаÑивал. ÐÑли нÑжнÑй авÑÐ¾Ñ Ð½Ðµ попал в ÑÑÐ¾Ñ ÑпиÑок â его бÑло Ð
1½Ðµ найÑи ни по имени, ни по поÑÑе, никак. ÐеÑеклÑÑили на ÑеÑвеÑнÑй поиÑк <code>GET /api/v2/users/search</code> â ÑепеÑÑ Ð½Ð°Ñ
одиÑÑÑ ÐºÐ°Ð¶Ð´Ñй заÑегиÑÑÑиÑованнÑй полÑзоваÑелÑ.</li> <li data-num="840"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> <strong>ÐоиÑк по имени, Ñамилии, email, Ð½Ð¸ÐºÑ Ð¸ био</strong> â ввели «жÑÑналиÑÑ» â наÑли авÑоÑа, Ñ ÐºÐ¾ÑоÑого ÑÑо Ñлово в опиÑании пÑоÑилÑ. Ðвели ÑаÑÑÑ email â Ñоже найдÑÑÑÑ (адÑÐµÑ Ð¿Ð¾ÐºÐ°Ð·ÑваеÑÑÑ Ð·Ð°Ð¼Ð°ÑкиÑованнÑм: <code>a***@gmail.com</code>). ШеÑÑÑ Ð¿Ð¾Ð»ÐµÐ¹ вмеÑÑо одного.</li> <li data-num="841"><span class="changelog-tag changelog-tag--UX" data-tag-alias="UX">UX</span> <strong>ÐлавиаÑÑÑÐ½Ð°Ñ Ð½Ð°Ð²Ð¸Ð³Ð°ÑиÑ</strong> â ÑÑÑелки ââ пеÑемеÑаÑÑ Ð¿Ð¾ ÑпиÑкÑ, Enter вÑбиÑаеÑ, Escape закÑÑваеÑ. ÐкÑивнÑй ÑезÑлÑÑÐ°Ñ Ð¿Ð¾Ð´ÑвеÑиваеÑÑÑ Ð¸ пÑокÑÑÑиваеÑÑÑ Ð² видимÑÑ Ð¾Ð±Ð»Ð°ÑÑÑ â ÑабоÑÐ°ÐµÑ Ð¸ мÑÑкой, и клавиаÑÑÑой, и впеÑемеÑкÑ.</li> <li data-num="842"><span class="changelog-tag changelog-tag--UX" data-tag-alias="UX">UX</span> <strong>Ð¡Ð¿Ð¸Ð½Ð½ÐµÑ Ð²Ð¼ÐµÑÑо молÑаниÑ</strong> â пока идÑÑ Ð¿Ð¾Ð¸Ñк, иконка лÑÐ¿Ñ Ð¿ÑевÑаÑаеÑÑÑ Ð² ÑÐ¿Ð¸Ð½Ð½ÐµÑ Ð¿ÑÑмо в поле ввода. Ðдин Ñимвол â подÑказка «ÐведиÑе минимÑм 2 Ñимвола». ÐÐµÑ ÑезÑлÑÑаÑов â ÑеÑÑное «ÐвÑоÑÑ Ð½Ðµ найденÑ», а не завиÑÑÐ°Ñ Ð¿ÑÑÑоÑа.</li> <li data-num="843"><span class="changelog-tag changelog-tag--UX" data-tag-alias="UX">UX</span> <strong>ÐÑибки обÑÑÑнÑÑÑÑÑ</strong> â пÑи пÑевÑÑении лимиÑа запÑоÑов (30 в минÑÑÑ) поÑвлÑеÑÑÑ Ð¿Ð¾Ð½ÑÑнÑй ÑоÑÑ Â«ÐодождиÑе немного» вмеÑÑо молÑаливого пÑÑÑого ÑпиÑка.</li> <li data-num="844"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>Escape не Ð»Ð¾Ð¼Ð°ÐµÑ Ð¸Ð½ÑеÑÑейÑ</strong> â нажаÑие Escape в поле поиÑка закÑÑÐ²Ð°ÐµÑ ÑолÑко вÑпадаÑÑий ÑпиÑок, не ÑÑÐ¾Ð³Ð°Ñ Ð¿Ð°Ð½ÐµÐ»Ñ ÑÑаÑÑников и Ð¼Ð¾Ð´Ð°Ð»ÐºÑ ÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ Ð³ÑÑппÑ. Ðлик вне компоненÑа Ñоже коÑÑекÑно закÑÑÐ²Ð°ÐµÑ dropdown.</li> <li data-num="845"><span class="changelog-tag changelog-tag--A11Y" data-tag-alias="A11Y">A11Y</span> <strong>ARIA-ÑазмеÑка</strong> â <code>role="combobox"</code> на поле ввода, <code>role="listbox"</code> на ÑпиÑке, <code>role="option"</code> и <code>aria-selected</code> на каждом ÑезÑлÑÑаÑе. СкÑинÑÐ¸Ð´ÐµÑ Ð¾Ð·Ð²ÑÑÐ¸Ð²Ð°ÐµÑ Ð½Ð°Ð²Ð¸Ð³Ð°ÑÐ¸Ñ Ð¿Ð¾ ÑпиÑкÑ.</li> </ul> </div> </details> <details class="changelog-section"> <summary class="changelog-summary"><span class="changelog-meta"><span class="changelog-meta__version">v9.66.0</span><span class="changelog-meta__date">13-03-2026</span></span><h2 id="v9660-13-03-2026--Ñмодзи-в-ÑообÑениÑÑ
-одна-кнопка--64-ÑмоÑии">Ðмодзи в ÑообÑениÑÑ
: одна кнопка â 64 ÑмоÑии</h2></summary> <div class="changelog-section__body"> <p>ÐеÑепиÑка на ÐиÑкÑÑÑе ÑÑала вÑÑазиÑелÑнее. Рпанели инÑÑÑÑменÑов ÑедакÑоÑа ÑообÑений поÑвилаÑÑ Ð¿ÑÑÐ°Ñ ÐºÐ½Ð¾Ð¿ÐºÐ° â Ñмайлик, за коÑоÑÑм пÑÑÑеÑÑÑ Ð°ÐºÐºÑÑаÑÐ½Ð°Ñ Ð¿Ð°Ð½ÐµÐ»Ñ Ñ 64 Ñмодзи в ÑеÑÑÑÑÑ
каÑегоÑиÑÑ
. Ðез внеÑниÑ
библиоÑек, без задеÑжек загÑÑзки â вÑÑ Ð²ÑÑÑоено и ÑабоÑÐ°ÐµÑ Ð¼Ð³Ð½Ð¾Ð²ÐµÐ½Ð½Ð¾.</p> <ul> <li data-num="835"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> <strong>Ðмодзи-Ð¿Ð¸ÐºÐµÑ Ð² ÑообÑениÑÑ
</strong> â нажмиÑе Ñмайлик в ÑÑлбаÑе, вÑбеÑиÑе Ñмодзи из ÑеÑки, оно вÑÑавиÑÑÑ Ð¿ÑÑмо в ÑекÑÑ Ð½Ð° позиÑÐ¸Ñ ÐºÑÑÑоÑа. ЧеÑÑÑе вкладки â «ЧаÑÑо», «ÐиÑа», «ÐеÑÑÑ», «СимволÑ» â ÑÑÐ¾Ð±Ñ Ð½Ñжное наÑлоÑÑ Ð·Ð° ÑекÑндÑ, а не за минÑÑÑ ÑкÑоллинга.</li> <li data-num="836"><span class="changelog-tag changelog-tag--UX" data-tag-alias="UX">UX</span> <strong>Ðлавное поÑвление</strong> â Ð¿Ð°Ð½ÐµÐ»Ñ Ð²ÑÐµÐ·Ð¶Ð°ÐµÑ Ñ Ð»Ñгким fade и Ñдвигом, а не Ð²Ð¾Ð·Ð½Ð¸ÐºÐ°ÐµÑ Ð¸Ð· ниоÑкÑда. Ðнопка подÑвеÑиваеÑÑÑ, пока Ð¿Ð¸ÐºÐµÑ Ð¾ÑкÑÑÑ â вÑегда понÑÑно, ÑÑо к ÑемÑ.</li> <li data-num="837"><span class="changelog-tag changelog-tag--UX" data-tag-alias="UX">UX</span> <strong>ÐакÑÑваеÑÑÑ ÐºÐ°Ðº ожидаеÑÑ</strong> â клик ÑнаÑÑжи, Escape, нажаÑие дÑÑгой кнопки ÑÑÐ
1»Ð±Ð°Ñа â Ð¿Ð°Ð½ÐµÐ»Ñ Ð·Ð°ÐºÑоеÑÑÑ. ÐовÑоÑнÑй клик по ÑÐ¼Ð°Ð¹Ð»Ð¸ÐºÑ â Ñоже. ÐикакиÑ
завиÑÑиÑ
попапов.</li> <li data-num="838"><span class="changelog-tag changelog-tag--UX" data-tag-alias="UX">UX</span> <strong>ÐобилÑнÑе и ÑаÑ</strong> â на ÑелеÑонаÑ
Ñмодзи не «залипаÑÑ» пÑи каÑании. Hover-ÑÑÑÐµÐºÑ ÑвелиÑÐµÐ½Ð¸Ñ ÑабоÑÐ°ÐµÑ ÑолÑко Ñ Ð¼ÑÑкой, а Ð´Ð»Ñ Ð¿Ð°Ð»ÑÑев â ÑакÑилÑÐ½Ð°Ñ Ð¿Ð¾Ð´ÑвеÑка пÑи нажаÑии.</li> </ul> </div> </details> <details class="changelog-section"> <summary class="changelog-summary"><span class="changelog-meta"><span class="changelog-meta__version">v9.65.0</span><span class="changelog-meta__date">13-03-2026</span></span><h2 id="v9650-13-03-2026--ctrlh-найÑи-и-замениÑÑ-пÑÑмо-в-ÑедакÑоÑе">Ctrl+H: найÑи и замениÑÑ Ð¿ÑÑмо в ÑедакÑоÑе</h2></summary> <div class="changelog-section__body"> <p>ÐвÑоÑÑ Ð¿ÑоÑили â Ñделали. ТепеÑÑ Ð² ÑедакÑоÑе маÑеÑиалов ÑабоÑÐ°ÐµÑ Ð¿Ð¾Ð»Ð½Ð¾ÑеннÑй поиÑк Ñ Ð·Ð°Ð¼ÐµÐ½Ð¾Ð¹, как в наÑÑоÑÑем ÑекÑÑовом ÑедакÑоÑе. ÐикакиÑ
ÑаÑÑиÑений, никакиÑ
внеÑниÑ
инÑÑÑÑменÑов â вÑÑ Ð²Ð½ÑÑÑи, под ÑÑкой.</p> <ul> <li data-num="831"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> <strong>ÐоиÑк и замена по Ctrl+H</strong> â нажмиÑе комбинаÑÐ¸Ñ Ð² лÑбом меÑÑе ÑедакÑоÑа, и в пÑавом веÑÑ
нем ÑÐ³Ð»Ñ Ð¿Ð¾ÑвиÑÑÑ ÐºÐ¾Ð¼Ð¿Ð°ÐºÑÐ½Ð°Ñ Ð¿Ð°Ð½ÐµÐ»Ñ. ÐводиÑе запÑÐ¾Ñ â вÑе ÑÐ¾Ð²Ð¿Ð°Ð´ÐµÐ½Ð¸Ñ Ð¼Ð³Ð½Ð¾Ð²ÐµÐ½Ð½Ð¾ подÑвеÑиваÑÑÑÑ Ð¶ÑлÑÑм, ÑекÑÑее â оÑанжевÑм. СÑÑелки или Enter/Shift+Enter пеÑемеÑаÑÑ Ð¼ÐµÐ¶Ð´Ñ Ð½Ð°Ñ
одками, ÑÑÑÑÑик «3 из 12» показÑваеÑ, где вÑ. «ÐамениÑÑ» менÑÐµÑ Ð¾Ð´Ð½Ð¾ вÑ
ождение, «ÐÑе» â Ñазом вÑе (и один Ctrl+Z оÑкаÑÑÐ²Ð°ÐµÑ Ð²ÑÑ Ð¿Ð°ÐºÐµÑнÑÑ Ð·Ð°Ð¼ÐµÐ½Ñ Ñеликом).</li> <li data-num="832"><span class="changelog-tag changelog-tag--UX" data-tag-alias="UX">UX</span> <strong>ÐÑделил â наÑÑл</strong> â еÑли пеÑед Ctrl+H вÑделиÑÑ ÑÑÐ°Ð³Ð¼ÐµÐ½Ñ ÑекÑÑа, он авÑомаÑиÑеÑки подÑÑавиÑÑÑ Ð² поле поиÑка. ÐовÑоÑное нажаÑие Ctrl+H закÑÑÐ²Ð°ÐµÑ Ð¿Ð°Ð½ÐµÐ»Ñ. Escape Ñоже закÑÑÐ²Ð°ÐµÑ â ÑокÑÑ Ð²Ð¾Ð·Ð²ÑаÑаеÑÑÑ Ð² ÑекÑÑ.</li> <li data-num="833"><span class="changelog-tag changelog-tag--UX" data-tag-alias="UX">UX</span> <strong>РегиÑÑÑ Ð¿Ð¾Ð´ конÑÑолем</strong> â кнопка «Aa» пеÑеклÑÑÐ°ÐµÑ Ñежим поиÑка: Ñ ÑÑÑÑом ÑегиÑÑÑа или без. Ðогда Ñовпадений Ð½ÐµÑ â кÑаÑÐ½Ð°Ñ Ð½Ð°Ð´Ð¿Ð¸ÑÑ Â«ÐÐµÑ Ñовпадений», а не молÑÐ°Ð»Ð¸Ð²Ð°Ñ Ð¿ÑÑÑоÑа.</li> <li data-num="834"><span class="changelog-tag changelog-tag--SEC" data-tag-alias="SEC">SEC</span> <strong>ÐоллабоÑаÑÐ¸Ñ Ð±ÐµÐ· ÑÑÑпÑизов</strong> â еÑли ÑоавÑÐ¾Ñ ÑедакÑиÑÑÐµÑ ÑекÑÑ, пока Ñ Ð²Ð°Ñ Ð¾ÑкÑÑÑ Ð¿Ð¾Ð¸Ñк, позиÑии Ñовпадений пеÑеÑÑиÑÑваÑÑÑÑ Ð¿ÐµÑед каждой заменой. ÐодÑвеÑка â локалÑнаÑ, ÑоавÑÐ¾Ñ ÐµÑ Ð½Ðµ видиÑ. Ð Ñежиме пÑедпÑоÑмоÑÑа замена заблокиÑована â ÑолÑко пÑоÑмоÑÑ.</li> </ul> </div> </details> <details class="changelog-section"> <summary class="changelog-summary"><span class="changelog-meta"><span class="changelog-meta__version">v9.64.0</span><span class="changelog-meta__date">12-03-2026</span></span><h2 id="v9640-12-03-2026--один-retry-на-вÑеÑ
-оÑибки-болÑÑе-не-ÑеÑÑÑÑÑÑ-в-пеÑеводе">Ðдин retry на вÑеÑ
: оÑибки болÑÑе не ÑеÑÑÑÑÑÑ Ð² пеÑеводе</h2></summary> <div class="changelog-section__body"> <p>ÐÑÑÑ ÑазнÑÑ
меÑÑ Ð² коде пÑÑалиÑÑ Ð¿Ð¾Ð²ÑоÑиÑÑ Ð·Ð°Ð¿ÑÐ¾Ñ Ð¿Ñи Ñбое â каждое по-ÑвоемÑ, Ñ ÑазнÑми задеÑжками, ÑазнÑм поведением и ÑазнÑми багами. ТепеÑÑ Ð²Ð¼ÐµÑÑо ÑÑого зоопаÑка â единÑй меÑ
анизм Ñ ÑкÑпоненÑиалÑной задеÑжкой и ÑоÑной наÑÑÑойкой. Ð ÑÑдом поÑвилÑÑ ÑенÑÑ Ð¾Ð±ÑабоÑки оÑибок, коÑоÑÑй Ñам ÑеÑаеÑ: залогиÑоваÑÑ, показаÑÑ Ð¿Ð¾Ð»ÑзоваÑÐµÐ»Ñ Ð¸Ð»Ð¸ подождаÑÑ.</p> <ul> <li data-num="825"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> <strong>ÐдинÑй retry Ð´Ð»Ñ Ð²ÑеÑ
запÑоÑов</strong>
1 â <code>apiClient.withRetry()</code> заменил пÑÑÑ ÑÑкопиÑнÑÑ
ÑеализаÑий в ÑемаÑкаÑ
, загÑÑзке изобÑажений, веÑÑиониÑовании и ÑоÑ
Ñанении ÑоÑм. ÐкÑпоненÑиалÑÐ½Ð°Ñ Ð·Ð°Ð´ÐµÑжка, наÑÑÑаиваемÑй пÑÐµÐ´Ð¸ÐºÐ°Ñ Â«ÑÑÐ¾Ð¸Ñ Ð»Ð¸ повÑоÑÑÑÑ» и колбÑк на каждÑÑ Ð¿Ð¾Ð¿ÑÑÐºÑ â вÑÑ Ð² одном меÑÑе. ÐÑли ÑеÑÐ²ÐµÑ Ð½Ð° ÑекÑÐ½Ð´Ñ Ð¸ÐºÐ½Ñл â плаÑÑоÑма Ñпокойно повÑоÑиÑ, и авÑÐ¾Ñ Ð´Ð°Ð¶Ðµ не замеÑиÑ.</li> <li data-num="826"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> <strong>ЦенÑÑ Ð¾Ð±ÑабоÑки оÑибок</strong> â <code>apiErrorHandler</code> беÑÑÑ Ð½Ð° ÑÐµÐ±Ñ ÑÑÑинÑ: ÑаÑпаÑÑиÑÑ Ð¾ÑÐ²ÐµÑ ÑеÑвеÑа, запиÑаÑÑ Ð² лог, показаÑÑ ÑоÑÑ. Ðдин вÑзов вмеÑÑо ÑÑÑÑ
-пÑÑи ÑÑÑок в каждом catch-блоке. ÐоддеÑÐ¶Ð¸Ð²Ð°ÐµÑ ÑÑоÑÑлинг Ñведомлений по клÑÑÑ â еÑли ÑеÑÐ²ÐµÑ Ð»ÐµÐ¶Ð¸Ñ Ð¼Ð¸Ð½ÑÑÑ, Ð²Ñ ÑвидиÑе одно пÑедÑпÑеждение, а не двадÑаÑÑ.</li> <li data-num="827"><span class="changelog-tag changelog-tag--UX" data-tag-alias="UX">UX</span> <strong>ТоÑÑ Ñ ÐºÐ½Ð¾Ð¿ÐºÐ¾Ð¹ дейÑÑвиÑ</strong> â пÑи оÑибке ÑоÑ
ÑÐ°Ð½ÐµÐ½Ð¸Ñ ÑÑаÑÑи поÑвлÑеÑÑÑ Â«ÐовÑоÑиÑÑ» пÑÑмо в Ñведомлении. Ðдин клик â и повÑоÑÐ½Ð°Ñ Ð¿Ð¾Ð¿ÑÑка, без необÑ
одимоÑÑи иÑкаÑÑ ÐºÐ½Ð¾Ð¿ÐºÑ Ð½Ð° ÑÑÑаниÑе. РанÑÑе ÑÑÐ¾Ñ Ð¿Ð°ÑÑеÑн бÑл ÑкопиÑован в два Ñайла â ÑепеÑÑ Ð¾Ð´Ð¸Ð½ пеÑеиÑполÑзÑемÑй Ñ
елпеÑ.</li> <li data-num="828"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>ÐÑменÑннÑе запÑоÑÑ Ð½Ðµ поÑождаÑÑ Ð¿ÑизÑаков</strong> â пÑи навигаÑии Ð¼ÐµÐ¶Ð´Ñ ÑÑÑаниÑами незавеÑÑÑннÑе запÑоÑÑ ÑиÑ
о оÑменÑÑÑÑÑ. РанÑÑе оÑменÑннÑй запÑÐ¾Ñ Ð¼Ð¾Ð³ пÑоÑкоÑиÑÑ Ð² обÑабоÑÑик оÑибок и показаÑÑ Ð¿ÑÑÑой ÑоÑÑ. ТепеÑÑ <code>parseError</code> возвÑаÑÐ°ÐµÑ <code>message: null</code> Ð´Ð»Ñ canceled â ни лога, ни ÑведомлениÑ.</li> <li data-num="829"><span class="changelog-tag changelog-tag--SEC" data-tag-alias="SEC">SEC</span> <strong>ТекÑÑ ÐºÐ½Ð¾Ð¿ÐºÐ¸ в ÑоÑÑе ÑкÑаниÑÑеÑÑÑ</strong> â даже еÑли когда-нибÑÐ´Ñ ÑекÑÑ ÐºÐ½Ð¾Ð¿ÐºÐ¸ пÑидÑÑ Ñ ÑеÑвеÑа, XSS-инÑекÑÐ¸Ñ ÑеÑез него невозможна.</li> <li data-num="830"><span class="changelog-tag changelog-tag--PERF" data-tag-alias="PERF">PERF</span> <strong>ÐинÑÑ Ð·Ð°Ð²Ð¸ÑимоÑÑÑ <code>$timeout</code></strong> â remarksService и versioningService болÑÑе не ÑÑнÑÑ Angular'овÑкий <code>$timeout</code> Ð´Ð»Ñ Ð·Ð°Ð´ÐµÑжек retry. ÐадеÑжки живÑÑ Ð²Ð½ÑÑÑи <code>withRetry</code> ÑеÑез наÑивнÑй <code>setTimeout</code>, а digest-Ñикл запÑÑкаеÑÑÑ ÑеÑез <code>$q</code> â как и должно бÑÑÑ.</li> </ul> </div> </details> <details class="changelog-section"> <summary class="changelog-summary"><span class="changelog-meta"><span class="changelog-meta__version">v9.63.0</span><span class="changelog-meta__date">12-03-2026</span></span><h2 id="v9630-12-03-2026--минÑÑ-90-кб-ui-bootstrap-на-покой">ÐинÑÑ 90 ÐÐ: ui-bootstrap на покой</h2></summary> <div class="changelog-section__body"> <p>СÑÑаниÑÑ ÐиÑкÑÑÑа ÑÑали загÑÑжаÑÑÑÑ Ð±ÑÑÑÑее â из оÑновного бандла ÑбÑана библиоÑека angular-ui-bootstrap Ñеликом. 277 ÐРкода, из коÑоÑого иÑполÑзовалиÑÑ ÑÑи компоненÑа. ТÑи. Ðз ÑоÑока. ТепеÑÑ Ð²Ð¼ÐµÑÑо ниÑ
â ÑоÑеÑнÑе Ð·Ð°Ð¼ÐµÐ½Ñ Ð¿Ð¾ 1â2 ÐРкаждаÑ, напиÑаннÑе под задаÑи плаÑÑоÑмÑ.</p> <ul> <li data-num="819"><span class="changelog-tag changelog-tag--PERF" data-tag-alias="PERF">PERF</span> <strong>â90 ÐРиз ÑÑаÑÑового бандла</strong>
1 â angular-ui-bootstrap ÑдалÑн из vendor-Ñанка. ÐÑÑ, ÑÑо гÑÑзиÑÑÑ Ð¿Ñи пеÑвом заÑ
оде, ÑÑало легÑе â ÑÑо ÑÑкоÑÑÐµÑ Ð¸ паÑÑинг, и пеÑвÑÑ Ð¾ÑÑиÑовкÑ. ÐÑобенно замеÑно на мобилÑнÑÑ
и ÑлабÑÑ
ÑоединениÑÑ
.</li> <li data-num="820"><span class="changelog-tag changelog-tag--PERF" data-tag-alias="PERF">PERF</span> <strong>ÐоповеÑÑ Ð³Ð¾Ð»Ð¾ÑÐ¾Ð²Ð°Ð½Ð¸Ñ Ð±ÐµÐ· баллаÑÑа</strong> â ÑеÑÑÑе поповеÑа в кнопкаÑ
ÑейÑинга ÑабоÑаÑÑ ÑеÑез <code>simplePopover</code> (1.5 ÐÐ) вмеÑÑо полной ui-bootstrap tooltip/popover-ÑиÑÑÐµÐ¼Ñ (25 ÐÐ). ÐозиÑиониÑование, outsideClick, ÑÐ°Ð±Ð»Ð¾Ð½Ñ Ð²Ð½ÑÑÑи â вÑÑ Ð½Ð° меÑÑе, ÑолÑко без ÑÑидÑаÑи Ñеми неиÑполÑзÑемÑÑ
модÑлей ÑÑдом.</li> <li data-num="821"><span class="changelog-tag changelog-tag--PERF" data-tag-alias="PERF">PERF</span> <strong>Теги в ÑедакÑоÑе: Ñвой typeahead</strong> â авÑодополнение Ñем ÑабоÑÐ°ÐµÑ ÑеÑез <code>simpleTypeahead</code> (~0.5 ÐÐ) Ñ debounce, ÑÑÑелоÑной навигаÑией и подÑвеÑкой Ñовпадений. Stale-оÑвеÑÑ Ð¿Ñи бÑÑÑÑом вводе оÑÑекаÑÑÑÑ Ð¿Ð¾ ÑÑÑÑÑÐ¸ÐºÑ Ð³ÐµÐ½ÐµÑаÑий â показÑваÑÑÑÑ ÑолÑко акÑÑалÑнÑе ÑезÑлÑÑаÑÑ.</li> <li data-num="822"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>УÑеÑки памÑÑи закÑÑÑÑ</strong> â scope'Ñ dropdown-ÑлеменÑов ÑниÑÑожаÑÑÑÑ Ð¿Ñи каждом обновлении, <code>$timeout</code> оÑменÑÑÑÑÑ Ð¿Ñи ÑниÑÑожении диÑекÑив, scroll-обÑабоÑÑики ÑнимаÑÑÑÑ. Ð ÑÑаÑой библиоÑеке за ÑÑим Ñледил ÑÑеймвоÑк; ÑепеÑÑ â ÑÑÑной конÑÑолÑ, заÑо ÑоÑеÑнÑй.</li> <li data-num="823"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>СкÑолл не ÑÐ±Ð¸Ð²Ð°ÐµÑ Ð¿Ð¾Ð¿Ð¾Ð²ÐµÑ</strong> â еÑли ÑейÑинг оÑкÑÑÑ Ð¸ полÑзоваÑÐµÐ»Ñ Ð¿ÑокÑÑÑил ÑÑÑаниÑÑ, Ð¿Ð¾Ð¿Ð¾Ð²ÐµÑ Ð·Ð°ÐºÑÑваеÑÑÑ Ð°ÐºÐºÑÑаÑно. Ðо ÑкÑолл <em>внÑÑÑи</em> Ñамого поповеÑа (длиннÑй ÑпиÑок голоÑов) â не закÑÑваеÑ. РанÑÑе ui-bootstrap не ÑазлиÑал ÑÑи два ÑлÑÑаÑ.</li> <li data-num="824"><span class="changelog-tag changelog-tag--SEC" data-tag-alias="SEC">SEC</span> <strong>XSS-заÑиÑа в заголовкаÑ
поповеÑов</strong> â <code>popover-title</code> ÑкÑаниÑÑеÑÑÑ Ð¿ÐµÑед вÑÑавкой в DOM. Ð ÑекÑÑиÑ
ÑаблонаÑ
заголовки ÑÑаÑиÑнÑ, но ÑепеÑÑ Ð·Ð°ÑиÑа еÑÑÑ Ð½Ð° ÑÑовне диÑекÑивÑ.</li> </ul> </div> </details> <details class="changelog-section"> <summary class="changelog-summary"><span class="changelog-meta"><span class="changelog-meta__version">v9.62.0</span><span class="changelog-meta__date">12-03-2026</span></span><h2 id="v9620-12-03-2026--ctrls-длÑ-ÑеÑновиков-поиÑк-в-«ÑиÑайÑе-Ñакже»-и-доведÑннÑе-до-блеÑка-гÑÑпповÑе-ÑаÑÑ">Ctrl+S Ð´Ð»Ñ ÑеÑновиков, поиÑк в «ЧиÑайÑе Ñакже» и доведÑннÑе до блеÑка гÑÑпповÑе ÑаÑÑ</h2></summary> <div class="changelog-section__body"> <p>Релиз, поÑле коÑоÑого ÑедакÑÐ¾Ñ Ð¿ÐµÑеÑÑаÑÑ ÑÑвÑÑвоваÑÑÑÑ ÐºÐ°Ðº ÑеÑновик, а гÑÑпповÑе ÑаÑÑ â как MVP. Expo-маÑеÑÐ¸Ð°Ð»Ñ ÑепеÑÑ ÑоÑ
ÑанÑÑÑÑÑ Ð¿Ð¾ Ctrl+S, диалог «ЧиÑайÑе Ñакже» Ñам иÑÐµÑ ÑÑаÑÑи по наÐ
1·Ð²Ð°Ð½Ð¸Ñ, а гÑÑпповой ÑÐ°Ñ Ð¿Ð¾Ð»ÑÑил мгновенное пеÑеименование и заÑиÑÑ Ð¾Ñ Ð¿Ð¾ÑеÑи даннÑÑ
пÑи закÑÑÑии.</p> <ul> <li data-num="797"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> <strong>Ctrl+S / Cmd+S в ÑедакÑоÑе ÐÑкÑÑÑÑва</strong> â пÑивÑÑÐ½Ð°Ñ ÐºÐ¾Ð¼Ð±Ð¸Ð½Ð°ÑÐ¸Ñ ÑабоÑÐ°ÐµÑ Ð¸Ð· лÑбого меÑÑа на ÑÑÑаниÑе: из Ð¿Ð¾Ð»Ñ Ð·Ð°Ð³Ð¾Ð»Ð¾Ð²ÐºÐ°, из Ñела ÑÑаÑÑи, из ÑоÑÐ¼Ñ Ð¾Ð±Ð»Ð¾Ð¶ÐºÐ¸. ÐÐ»Ñ ÑÑÑеÑÑвÑÑÑиÑ
маÑеÑиалов â мгновенное ÑоÑ
Ñанение на ÑеÑвеÑ. ÐÐ»Ñ Ð½Ð¾Ð²ÑÑ
â запÑÑÐºÐ°ÐµÑ Ð¿ÐµÑвое ÑÑÑное ÑоÑ
Ñанение. ÐиÑего не нÑжно запоминаÑÑ â палÑÑÑ Ñже знаÑÑ, ÑÑо делаÑÑ.</li> <li data-num="798"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> <strong>ÐоиÑк маÑеÑиалов плаÑÑоÑÐ¼Ñ Ð² «ЧиÑайÑе Ñакже»</strong> â вмеÑÑо копиÑÐ¾Ð²Ð°Ð½Ð¸Ñ ÑÑÑлок вÑÑÑнÑÑ Ð½Ð°ÑниÑе вводиÑÑ Ð½Ð°Ð·Ð²Ð°Ð½Ð¸Ðµ ÑÑаÑÑи: ÑедакÑÐ¾Ñ Ð½Ð°Ð¹Ð´ÑÑ Ð¿Ð¾Ð´Ñ
одÑÑие пÑбликаÑии и подÑÑÐ°Ð²Ð¸Ñ Ð·Ð°Ð³Ð¾Ð»Ð¾Ð²Ð¾Ðº, опиÑание и ÑÑÑлкÑ. СÑÑелками по ÑпиÑкÑ, Enter â вÑбÑано. Ðока идÑÑ Ð¿Ð¾Ð¸Ñк â ÑÑи анимиÑованнÑе ÑÑÑоки-ÑкелеÑона, а не пÑÑÑоÑа.</li> <li data-num="799"><span class="changelog-tag changelog-tag--UX" data-tag-alias="UX">UX</span> <strong>Ðгновенное пеÑеименование гÑÑппÑ</strong> â optimistic UI: название обновлÑеÑÑÑ Ð² инÑеÑÑейÑе ÑÑазÑ, не дожидаÑÑÑ Ð¾ÑвеÑа ÑеÑвеÑа. ÐÑли ÑеÑÐ²ÐµÑ Ð¾ÑÐºÐ°Ð¶ÐµÑ â оÑÐºÐ°Ñ Ðº пÑÐµÐ¶Ð½ÐµÐ¼Ñ Ð·Ð½Ð°ÑÐµÐ½Ð¸Ñ Ñ Ð¿Ð¾Ð½ÑÑнÑм ÑообÑением об оÑибке.</li> <li data-num="800"><span class="changelog-tag changelog-tag--UX" data-tag-alias="UX">UX</span> <strong>ÐодÑвеÑждение пÑи закÑÑÑии «ЧиÑайÑе Ñакже»</strong> â еÑли Ð²Ñ ÑÑо-Ñо поменÑли в диалоге и нажали Escape, поÑвиÑÑÑ <code>confirm</code> Ñ Ð²Ð¾Ð¿ÑоÑом «ÐакÑÑÑÑ Ð±ÐµÐ· ÑоÑ
ÑанениÑ?». СлÑÑайнÑй Escape болÑÑе не ÑниÑÑÐ¾Ð¶Ð°ÐµÑ ÑабоÑÑ.</li> <li data-num="801"><span class="changelog-tag changelog-tag--UX" data-tag-alias="UX">UX</span> <strong>ÐнÑÑÑенние ÑÑÑлки в «ЧиÑайÑе Ñакже»</strong> â ÑÑÑлки на ÑÑаÑÑи ÐиÑкÑÑÑа (наÑинаÑÑиеÑÑ Ñ <code>/</code>) оÑкÑÑваÑÑÑÑ Ð² Ñом же окне, а не в новой вкладке. ЧиÑаÑÐµÐ»Ñ Ð¾ÑÑаÑÑÑÑ Ð½Ð° плаÑÑоÑме.</li> <li data-num="802"><span class="changelog-tag changelog-tag--A11Y" data-tag-alias="A11Y">A11Y</span> <strong>ÐвÑоÑоÑ
Ñанение озвÑÑиваеÑÑÑ ÑкÑинÑидеÑом</strong> â <code>aria-live</code> Ñегион ÑиÑ
о ÑообÑÐ°ÐµÑ Â«Ð§ÐµÑновик ÑоÑ
ÑанÑн» или «ÐÑибка авÑоÑоÑ
ÑанениÑ». Ðез визÑалÑного ÑÑма, ÑолÑко Ð´Ð»Ñ ÑеÑ
, ÐºÐ¾Ð¼Ñ ÑÑо нÑжно.</li> <li data-num="803"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>Ðонка авÑоÑоÑ
ÑÐ°Ð½ÐµÐ½Ð¸Ñ Ð¿Ñи закÑÑÑии ÑÑÑÑанена</strong> â payload ÑобиÑаеÑÑÑ Ð´Ð¾ ÑниÑÑÐ¾Ð¶ÐµÐ½Ð¸Ñ ÑедакÑоÑа, а не поÑле. Ðвойной запÑÐ¾Ñ (beforeunload + $destroy) заблокиÑован Ñлагом <code>
1_expoFinalSaveDone</code>. Ðи одна пÑавка не ÑеÑÑеÑÑÑ.</li> <li data-num="804"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>ÐдинÑй паÑÑÐµÑ Ð¾Ñибок в ÑообÑениÑÑ
</strong> â <code>conversationCtrl</code> пеÑеÑÑл на ÑенÑÑализованнÑй <code>apiClient.getErrorMessage()</code>. ÐÑибки вида <code>{ data: { errors: [{ message }] } }</code> ÑепеÑÑ ÐºÐ¾ÑÑекÑно паÑÑÑÑÑÑ â ÑанÑÑе показÑвалÑÑ ÑоллбÑк.</li> <li data-num="805"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>File input аваÑаÑа ÑабоÑÐ°ÐµÑ ÑÑабилÑно</strong> â ÑаймаÑÑ Ð¿ÑивÑзки <code>$timeout(fn, 0)</code> вмеÑÑо магиÑеÑкиÑ
50мÑ. Angular гаÑанÑиÑÑеÑ, ÑÑо DOM гоÑов поÑле digest.</li> <li data-num="806"><span class="changelog-tag changelog-tag--PERF" data-tag-alias="PERF">PERF</span> <strong>Ðдин <code>$watchGroup</code> вмеÑÑо двÑÑ
<code>$watch</code></strong> â оÑÑлеживание <code>title</code> и <code>thumborId</code> Ð´Ð»Ñ Ð°Ð²ÑоÑоÑ
ÑанениÑ: один digest-callback вмеÑÑо двÑÑ
. ÐелоÑÑ, но в ÑедакÑоÑе Ñ Ð´ÐµÑÑÑками watcher'ов â каждÑй на ÑÑеÑÑ.</li> <li data-num="807"><span class="changelog-tag changelog-tag--A11Y" data-tag-alias="A11Y">A11Y</span> <strong>ARIA combobox в авÑокомплиÑе «ЧиÑайÑе Ñакже»</strong> â полнÑй паÑÑеÑн: <code>role="combobox"</code>, <code>aria-expanded</code>, <code>aria-activedescendant</code>, <code>role="listbox"</code> Ñ <code>role="option"</code>. СкÑинÑÐ¸Ð´ÐµÑ Ð¾Ð·Ð²ÑÑÐ¸Ð²Ð°ÐµÑ ÐºÐ°Ð¶Ð´Ñй Ñаг навигаÑии по ÑезÑлÑÑаÑам â вÑлепÑÑ ÑабоÑаÑÑ Ñ Ð°Ð²ÑокомплиÑом Ñак же Ñдобно, как зÑÑÑемÑ.</li> <li data-num="808">[CSS] <strong>ТÑÐ¼Ð½Ð°Ñ Ñема Ð´Ð»Ñ Ð±Ð»Ð¾ÐºÐ° «ЧиÑайÑе Ñакже»</strong> â в dark mode блок болÑÑе не ÑвеÑиÑÑÑ Ð±ÐµÐ»Ñм пÑÑном поÑÑеди ÑÑмного ÑедакÑоÑа. Фон, заголовок, ÑазделиÑели, ÑÑÑлки и кнопка ÑедакÑиÑÐ¾Ð²Ð°Ð½Ð¸Ñ â вÑÑ Ð¿Ð¾Ð´Ñ
ваÑÑÐ²Ð°ÐµÑ CSS-пеÑеменнÑе ÑÑмной ÑемÑ.</li> <li data-num="809">[CSS] <strong>УбÑÐ°Ð½Ñ <code>!important</code> из наÑÑÑоек гÑÑппÑ</strong> â поле «дни иÑÑоÑии» пеÑÐµÐ±Ð¸Ð²Ð°ÐµÑ Bootstrap ÑеÑез ÑпеÑиÑиÑноÑÑÑ ÑелекÑоÑа, а не гÑÑбой Ñилой.</li> <li data-num="810"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>SSR не ÑÐµÐ¶ÐµÑ Â«Ð§Ð¸ÑайÑе Ñакже» пополам</strong> â Cloudflare Worker пÑи обÑезке body до 10 ÐÐ ÑепеÑÑ Ð¿ÑовеÑÑеÑ, не обоÑвалÑÑ Ð»Ð¸ блок <code>.read-also</code> на ÑеÑедине. ÐÑли HTML неполнÑй â блок ÑбиÑаеÑÑÑ Ñеликом, а не показÑÐ²Ð°ÐµÑ Ð±Ð¸ÑÑÑ ÑазмеÑÐºÑ Ð¿Ð¾Ð¸ÑковикÑ.</li> <li data-num="811"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>Escape закÑÑÐ²Ð°ÐµÑ dropdown коÑÑекÑно</strong> â ÑанÑÑе нажаÑие Escape пÑи оÑкÑÑÑом вÑпадаÑÑем ÑпиÑке «ÐиÑего не найдено» закÑÑвало веÑÑ Ð´Ð¸Ð°Ð»Ð¾Ð³, игноÑиÑÑÑ dropdown. ТепеÑÑ Escape ÑнаÑала закÑÑÐ²Ð°ÐµÑ Ð»Ñбой видимÑй ÑпиÑок, и ÑолÑко повÑоÑное нажаÑие â Ñам диалог.</li> <li data-num="812"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>ÐоиÑк оÑменÑеÑÑÑ Ð¿Ñи закÑÑÑии диалога</strong> â еÑли закÑÑÑÑ Â«Ð§Ð¸ÑайÑе Ñакже» во вÑÐµÐ¼Ñ Ð¿Ð¾Ð¸Ñка, in-flight запÑÐ¾Ñ Ð¿ÑеÑÑваеÑÑÑ ÑеÑез AbortController. ÐикакиÑ
orphan-запÑоÑов и race conditions.</li> <li data-num="813"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>Ðвойной ÑÐ»ÐµÑ Ð² ÑÑÑлкаÑ
ÑбÑан</strong> â еÑли <code>link</code> из API Ñже наÑиналÑÑ Ñ <code>/</code>, диалог добавлÑл вÑоÑой. ТепеÑÑ Ð¿ÑовеÑÑÐµÑ Ð¿ÐµÑед вÑÑавкой.</li> <li data-num="814"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>CORS болÑÑе не блокиÑÑÐµÑ Ð°Ð²Ñозаголовки</strong> â вÑÑавили <code>https://discours.io/articles/...</code> в поле URL â ÑанÑÑе ловили <code>TypeError: Failed to fetch</code>. ТепеÑÑ Ð»Ñбой URL плаÑÑоÑÐ¼Ñ (discours.io, dscrs.site) авÑомаÑиÑеÑки пÑевÑаÑаеÑÑÑ Ð² оÑноÑиÑелÑнÑй пÑÑÑ â и fetch идÑÑ Ð½Ð° Ñвой ÑеÑвеÑ, без CORS-ÑÑенÑ.</li> <li data-num="815"><span class="changelog-tag changelog-tag--UX" data-tag-alias="UX">UX</span> <strong>ÐÑÑавил ÑÑÑÐ»ÐºÑ â полÑÑил заголовок</strong> â ÑкопиÑовали URL ÑÑаÑÑи из адÑеÑной ÑÑÑоки и вÑÑавили в поле ÑÑÑлки? ЧеÑез ÑекÑÐ½Ð´Ñ Ð·Ð°Ð³Ð¾Ð»Ð¾Ð²Ð¾Ðº и опиÑание подÑÑнÑÑÑÑ Ñами. Ð URL пÑи вÑÑавке мгновенно ноÑмализÑеÑÑÑ: <code>https://discours.io/articles/culture/kino</code> â <code>/articles/culture/kino</code>. РабоÑÐ°ÐµÑ Ð¸ пÑи поÑеÑе ÑокÑÑа, и пÑи нажаÑии «ÐÑÑавиÑÑ Ð±Ð»Ð¾ÐºÂ».</li> <li data-num="816"><span class="changelog-tag changelog-tag--PERF" data-tag-alias="PERF">PERF</span> <strong>ÐоиÑк ÑÑал в 10 Ñаз легÑе</strong> â паÑамеÑÑ <code>
1noBody=1</code> оÑÑÐµÐºÐ°ÐµÑ Ñело ÑÑаÑей из оÑвеÑа API. ÐÐ»Ñ Ð°Ð²ÑокомплиÑа доÑÑаÑоÑно заголовка, опиÑÐ°Ð½Ð¸Ñ Ð¸ ÑÑÑлки â а не 50 ÐÐ HTML на каждÑй ÑезÑлÑÑаÑ.</li> <li data-num="817">[CSS] <strong>ТÑÐ¼Ð½Ð°Ñ Ñема Ð´Ð»Ñ Ð°Ð²ÑокомплиÑа</strong> â вÑпадаÑÑий ÑпиÑок ÑезÑлÑÑаÑов поиÑка, skeleton-загÑÑзка, кнопки пеÑемеÑÐµÐ½Ð¸Ñ Ð¸ ÑдалениÑ, «+ ÐобавиÑÑ Ð¼Ð°ÑеÑиал» â вÑÑ Ð¿Ð¾Ð´Ñ
ваÑÑÐ²Ð°ÐµÑ dark mode. РанÑÑе белÑй dropdown на ÑÑмном Ñоне Ñлепил.</li> <li data-num="818"><span class="changelog-tag changelog-tag--UX" data-tag-alias="UX">UX</span> <strong>Dropdown не пеÑекÑÑÐ²Ð°ÐµÑ ÐºÐ½Ð¾Ð¿ÐºÐ¸</strong> â ÑиÑина ÑпиÑка ÑезÑлÑÑаÑов ÑепеÑÑ Ñавна ÑиÑине Ð¿Ð¾Ð»Ñ Ð·Ð°Ð³Ð¾Ð»Ð¾Ð²ÐºÐ°, а не ÑаÑÑÑнÑÑа до кÑÐ°Ñ ÐºÐ°ÑÑоÑки. Ðнопки ââà оÑÑаÑÑÑÑ Ð²Ð¸Ð´Ð¸Ð¼Ñми и кликабелÑнÑми.</li> </ul> </div> </details> <details class="changelog-section"> <summary class="changelog-summary"><span class="changelog-meta"><span class="changelog-meta__version">v9.61.0</span><span class="changelog-meta__date">12-03-2026</span></span><h2 id="v9610-12-03-2026--csp-мониÑоÑинг-глÑбокий-focus-management-и-заÑиÑа-оÑ-гонок-в-ÑообÑениÑÑ
">CSP-мониÑоÑинг, глÑбокий focus management и заÑиÑа Ð¾Ñ Ð³Ð¾Ð½Ð¾Ðº в ÑообÑениÑÑ
</h2></summary> <div class="changelog-section__body"> <p>ÐлаÑÑоÑма ÑÑала безопаÑнее, доÑÑÑпнее и ÑÑÑойÑивее к оÑибкам полÑзоваÑелÑ. Cloudflare Worker полÑÑил инÑÑÑÑменÑÑ Ð´Ð»Ñ Ð¼Ð¾Ð½Ð¸ÑоÑинга XSS-аÑак в ÑеалÑном вÑемени. Ðодалки по вÑÐµÐ¼Ñ ÑайÑÑ Ð¿ÐµÑеÑÑали ÑеÑÑÑÑ ÑокÑÑ ÐºÐ»Ð°Ð²Ð¸Ð°ÑÑÑÑ. РинÑеÑÑÐµÐ¹Ñ ÑообÑений болÑÑе не позволÑÐµÑ Ð·Ð°Ð¿ÑÑаÑÑÑÑ Ð¿Ñи Ñоздании гÑÑппÑ.</p> <ul> <li data-num="794"><span class="changelog-tag changelog-tag--SEC" data-tag-alias="SEC">SEC</span> <strong>CSP-оÑÑÑÑÑ Ð±ÐµÐ· пÑавки кода</strong> â Cloudflare Worker ÑепеÑÑ Ð¿Ð¾Ð´Ð´ÐµÑÐ¶Ð¸Ð²Ð°ÐµÑ <code>report-uri</code>, <code>report-to</code> и <code>Reporting-Endpoints</code> (CSP Level 2 + Reporting API v2). ÐдÑÐµÑ ÐºÐ¾Ð»Ð»ÐµÐºÑоÑа задаÑÑÑÑ ÑеÑез env-пеÑеменнÑе <code>CSP_REPORT_URI</code> и <code>CSP_REPORT_GROUP</code> â подклÑÑиÑÑ Sentry, Report URI или Ñвой ÑÐ½Ð´Ð¿Ð¾Ð¸Ð½Ñ Ð¼Ð¾Ð¶Ð½Ð¾ за минÑÑÑ, без Ð´ÐµÐ¿Ð»Ð¾Ñ Ð½Ð¾Ð²Ð¾Ð³Ð¾ кода. ФÑÐ½Ð´Ð°Ð¼ÐµÐ½Ñ Ð´Ð»Ñ Ð°Ð²ÑомаÑиÑеÑкого обнаÑÑÐ¶ÐµÐ½Ð¸Ñ Ð¸Ð½ÑекÑий и XSS на пÑодакÑене.</li> <li data-num="795"><span class="changelog-tag changelog-tag--A11Y" data-tag-alias="A11Y">A11Y</span> <strong>Focus trap в ÑеÑÑÑÑÑ
модалкаÑ
</strong> â модалка комменÑаÑиев в ÑедакÑоÑе, диалог «ЧиÑайÑе Ñакже», запÑÐ¾Ñ Ð½Ð° ÑоавÑоÑÑÑво и Ñоздание гÑÑпповой беÑÐµÐ´Ñ â вÑе ÑеÑÑÑе ÑепеÑÑ ÑдеÑживаÑÑ Tab/Shift+Tab внÑÑÑи ÑебÑ. ФокÑÑ Ð½Ðµ ÑÐ±ÐµÐ³Ð°ÐµÑ Ð·Ð° пÑÐµÐ´ÐµÐ»Ñ Ð¾ÐºÐ½Ð°, пÑи оÑкÑÑÑии вÑÑаÑÑ Ð½Ð° нÑжное поле, пÑи закÑÑÑии â возвÑаÑаеÑÑÑ Ð½Ð° меÑÑо. ÐдинÑй <code>createFocusTrap</code> из <code>utils/focusTrap.js</code> заменил ÑÑÑнÑе ÑеализаÑии â код ÑÑал компакÑнее и надÑжнее.</li> <li data-num="796"><span class="changelog-tag changelog-tag--UX" data-tag-alias="UX">UX</span> <strong>ÐоиÑк блокиÑÑеÑÑÑ Ð¿Ñи Ñоздании гÑÑппÑ</strong> â пока идÑÑ Ñоздание гÑÑпповой беÑÐµÐ´Ñ Ð¸Ð»Ð¸ добавление ÑÑаÑÑника, поле поиÑка авÑоÑов блокиÑÑеÑÑÑ ÑеÑез <code>disabled</code>-биндинг. Ðевозможно ÑлÑÑайно оÑкÑÑÑÑ ÑÑжой диалог, запÑÑÑиÑÑ Ð¿Ð°ÑаллелÑнÑй запÑÐ¾Ñ Ð¸Ð»Ð¸ запÑÑаÑÑÑÑ Ð² двÑÑ
дейÑÑвиÑÑ
ÑÑазÑ. РабоÑÐ°ÐµÑ Ð¸ на ÑÑÑаниÑе ÑообÑений, и внÑÑÑи беÑедÑ.</li> </ul> </div> </details> <details class="changelog-section"> <summary class="changelog-summary"><span class="changelog-meta"><span class="changelog-meta__version">v9.60.0</span><span class="changelog-meta__date">12-03-2026</span></span><h2 id="v9600-12-03-2026--авÑоÑоÑ
Ñанение-в-иÑкÑÑÑÑве-ÑмнÑе-оÑибки-и-ловÑÑки-ÑокÑÑа">ÐвÑоÑоÑ
Ñанение в ÐÑкÑÑÑÑве, ÑмнÑе оÑибки и ловÑÑки ÑокÑÑа</h2></summary> <div class="changelog-section__body"> <p>РабоÑÑ Ð² Ñазделе «ÐÑкÑÑÑÑво» болÑÑе не пÑопадаÑÑ. РедакÑÐ¾Ñ ÑепеÑÑ Ñам ÑоÑ
ÑанÑÐµÑ ÑеÑновик каждÑе 10 ÑекÑнд â ÑиÑ
о, без кнопок, без ваÑего ÑÑаÑÑиÑ. РеÑли инÑеÑÐ½ÐµÑ Ð¿Ñопал, ÑекÑÑ Ð²ÑÑ Ñавно оÑÑанеÑÑÑ Ð² локалÑном Ñ
ÑанилиÑе. ÐаÑаллелÑно пÑокаÑали доÑÑÑпноÑÑÑ Ð¼Ð¾Ð´Ð°Ð»ÑнÑÑ
окон и наÑÑили плаÑÑоÑÐ¼Ñ Ð¾Ð±ÑÑÑнÑÑÑ Ð¾Ñибки на ÑеловеÑеÑком ÑзÑке.</p> <ul> <li data-num="785"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> <strong>ÐвÑоÑоÑ
Ñанение Ð´Ð»Ñ ÐÑкÑÑÑÑва</strong> â мÑзÑка, видео, ÑоÑогÑаÑии, лиÑеÑаÑÑÑа â вÑе ÑÐ¸Ð¿Ñ expo-маÑеÑиалов ÑепеÑÑ Ð°Ð²ÑомаÑиÑеÑки ÑоÑ
ÑанÑÑÑÑÑ Ð½Ð° ÑеÑвеÑ. 10 ÑекÑнд ÑиÑÐ¸Ð½Ñ Ð¿Ð¾Ñле пÑавки â и ÑеÑновик Ñже на ÑеÑвеÑе. ÐÑли ÑвÑÐ·Ñ Ð¾Ð±Ð¾ÑвалаÑÑ â до двÑÑ
повÑоÑнÑÑ
попÑÑок. ÐÑли маÑеÑиал ÑдалÑн (404/410) â авÑоÑоÑ
Ñанение оÑклÑÑаеÑÑÑ Ñамо. ТоÑÑ Â«Ð§ÐµÑновик ÑоÑ
ÑанÑн» поÑвл
1ÑеÑÑÑ Ð½Ðµ ÑаÑе Ñаза в 30 ÑекÑнд â не мелÑÑеÑиÑ.</li> <li data-num="786"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> <strong>Ðаголовок и обложка Ñоже ÑоÑ
ÑанÑÑÑÑÑ</strong> â поменÑли название или Ð¾Ð±Ð»Ð¾Ð¶ÐºÑ â авÑоÑоÑ
Ñанение подÑ
ваÑÐ¸Ñ Ð¸ ÑÑо. РанÑÑе оÑÑлеживалиÑÑ ÑолÑко пÑавки в Ñеле ÑекÑÑа, а меÑа-Ð¿Ð¾Ð»Ñ ÑÑебовали ÑÑÑного ÑоÑ
ÑанениÑ.</li> <li data-num="787"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> <strong>ÐокалÑнÑе бÑÐºÐ°Ð¿Ñ Ð½Ðµ копÑÑÑÑ Ð²ÐµÑно</strong> â ÑÑаÑÑе localStorage-ÑезеÑвнÑе копии ÑдалÑÑÑÑÑ ÑеÑез 30 дней, а ÑвежиÑ
Ñ
ÑаниÑÑÑ Ð½Ðµ болÑÑе 10 ÑÑÑк. ÐÑиÑÑка запÑÑкаеÑÑÑ Ð¿Ñи каждом оÑкÑÑÑии ÑедакÑоÑа â бÑаÑÐ·ÐµÑ Ð½Ðµ заÑ
ламлÑеÑÑÑ, даже еÑли Ð²Ñ ÑабоÑаеÑе над деÑÑÑками маÑеÑиалов.</li> <li data-num="788"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> <strong>ÐÑибки â по-ÑÑÑÑки и по делÑ</strong> â новÑй ÑенÑÑализованнÑй клаÑÑиÑикаÑÐ¾Ñ Ð¾Ñибок API: «ÐÐµÑ ÑÐ¾ÐµÐ´Ð¸Ð½ÐµÐ½Ð¸Ñ Ñ ÑеÑвеÑом», «ÐеобÑ
одима авÑоÑизаÑиÑ», «СлиÑком много запÑоÑов â подождиÑе немного» â вмеÑÑо ÑеÑ
ниÑеÑкого мÑÑоÑа. ÐÐ°Ð¶Ð´Ð°Ñ Ð¾Ñибка полÑÑÐ°ÐµÑ Ñип (network, auth, rate_limit и Ñ.д.) и Ð½Ð°Ð±Ð¾Ñ Ñлагов Ð´Ð»Ñ ÑоÑной обÑабоÑки в коде.</li> <li data-num="789"><span class="changelog-tag changelog-tag--UX" data-tag-alias="UX">UX</span> <strong>ФокÑÑ Ð½Ðµ ÑÐ±ÐµÐ³Ð°ÐµÑ Ð¸Ð· модалок</strong> â Tab и Shift+Tab ÑепеÑÑ ÑиклиÑеÑки Ñ
одÑÑ Ð¿Ð¾ кнопкам и полÑм внÑÑÑи модалÑнÑÑ
окон, а не ÑлеÑаÑÑ Ð·Ð° пÑÐµÐ´ÐµÐ»Ñ Ð´Ð¸Ð°Ð»Ð¾Ð³Ð°. ÐÑи закÑÑÑии ÑокÑÑ Ð²Ð¾Ð·Ð²ÑаÑаеÑÑÑ ÑÑда, где бÑл до оÑкÑÑÑиÑ. РабоÑÐ°ÐµÑ Ð² модалкаÑ
комменÑаÑиев, оглавлениÑ, вÑÑавки видео и HTML-ÑедакÑоÑа.</li> <li data-num="790"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>Tab в HTML-ÑедакÑоÑе</strong> â focus trap болÑÑе не пеÑеÑ
ваÑÑÐ²Ð°ÐµÑ Tab в CodeMirror, где он нÑжен Ð´Ð»Ñ Ð¾ÑÑÑÑпов. ÐÑли ÑÐ»ÐµÐ¼ÐµÐ½Ñ Ñже обÑабоÑал нажаÑие â ловÑÑка не вмеÑиваеÑÑÑ.</li> <li data-num="791"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>ÐвÑоÑоÑ
Ñанение не конÑликÑÑÐµÑ Ñ ÑÑÑнÑм</strong> â еÑли Ð²Ñ Ð½Ð°Ð¶Ð°Ð»Ð¸ «СоÑ
ÑаниÑÑ» или «ÐпÑбликоваÑÑ», авÑоÑоÑ
Ñанение ÑеÑпеливо ждÑÑ. ÐоÑле ÑÑÑного ÑоÑ
ÑÐ°Ð½ÐµÐ½Ð¸Ñ ÑÑекинг изменений обновлÑеÑÑÑ â лиÑниÑ
запÑоÑов не бÑдеÑ.</li> <li data-num="792"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>ÐÑÑÑой заголовок ÑоÑ
ÑанÑеÑÑÑ ÐºÐ¾ÑÑекÑно</strong> â ÑанÑÑе оÑиÑÑка заголовка не попадала в payload авÑоÑоÑ
ÑанениÑ. ТепеÑÑ Ð¿ÑÑÑÐ°Ñ ÑÑÑока â Ñоже знаÑение.</li> <li data-num="793"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>ФиналÑное ÑоÑ
Ñанение пÑи ÑÑ
оде</strong> â пÑи закÑÑÑии вкладки или навигаÑии пÑоÑÑ Ð¸Ð· ÑедакÑоÑа неÑоÑ
ÑанÑннÑе пÑавки ÑÑ
одÑÑ Ð½Ð° ÑеÑÐ²ÐµÑ Ð² поÑледний моменÑ. ÐаÑиÑа Ð¾Ñ Ð´Ð²Ð¾Ð¹Ð½Ð¾Ð³Ð¾ ÑÑабаÑÑÐ²Ð°Ð½Ð¸Ñ (beforeunload + $destroy) не даÑÑ Ð¾ÑпÑавиÑÑ Ð¾Ð´Ð¸Ð½ и ÑÐ¾Ñ Ð¶Ðµ запÑÐ¾Ñ Ð´Ð²Ð°Ð¶Ð´Ñ.</li> </ul> </div> </details> <details class="changelog-section"> <summary class="changelog-summary"><span class="changelog-meta"><span class="changelog-meta__version">v9.59.0</span><span class="changelog-meta__date">12-03-2026</span></span><h2 id="v9590-12-03-2026--гÑÑпповÑе-ÑаÑÑ-доведенÑ-до-Ñма-аваÑаÑÑ-наÑÑÑойки-надÑжноÑÑÑ">ÐÑÑпповÑе ÑаÑÑ Ð´Ð¾Ð²ÐµÐ´ÐµÐ½Ñ Ð´Ð¾ Ñма: аваÑаÑÑ, наÑÑÑойки, надÑжноÑÑÑ</h2></summary> <div class="changelog-section__body"> <p>ÐÑÑпповÑе ÑаÑÑ Ð¿Ð¾Ð»ÑÑили вÑÑ, Ñего не Ñ
ваÑало Ð´Ð»Ñ Ð¿Ð¾Ð»Ð½Ð¾Ñенной ÑабоÑÑ. ÐÐ»Ð°Ð´ÐµÐ»ÐµÑ Ð³ÑÑÐ¿Ð¿Ñ ÑепеÑÑ ÑпÑавлÑÐµÑ Ð½Ð°Ð·Ð²Ð°Ð½Ð¸ÐµÐ¼, аваÑаÑом и видимоÑÑÑÑ Ð¸ÑÑоÑии пÑÑмо из панели ÑÑаÑÑников â без лиÑниÑ
ÑÑÑÐ°Ð½Ð¸Ñ Ð¸ пеÑеклÑÑений. Рпод капоÑом â ÑеÑÑÑзнÑй ÑемонÑ: загÑÑзка аваÑаÑа ÑанÑÑе молÑа ломалаÑÑ Ð² пÑодакÑене, ÑепеÑÑ ÑабоÑÐ°ÐµÑ Ð¶ÐµÐ»ÐµÐ·Ð¾Ð±ÐµÑонно.</p> <ul> <li data-num="778"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> <strong>Свой аваÑÐ°Ñ Ð³ÑÑппÑ</strong> â загÑÑзиÑе лÑбÑÑ ÐºÐ°ÑÑинкÑ, и она Ð·Ð°Ð¼ÐµÐ½Ð¸Ñ Ð°Ð²ÑомаÑиÑеÑкий коллаж из ÑоÑо ÑÑаÑÑников. ÐваÑÐ°Ñ Ð¾ÑобÑажаеÑÑÑ Ð²ÐµÐ·Ð´Ðµ: в Ñапке ÑаÑа, в ÑпиÑке диалогов, в панели ÑÑаÑÑников. Ðо вÑÐµÐ¼Ñ Ð·Ð°Ð³ÑÑзки на пÑевÑÑ ÐºÑÑÑиÑÑÑ ÑÐ¿Ð¸Ð½Ð½ÐµÑ â видно, ÑÑо пÑоÑеÑÑ Ð¸Ð´ÑÑ.</li> <li data-num="779"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> <strong>ÐеÑеименование гÑÑÐ¿Ð¿Ñ Ð½Ð° леÑÑ</strong> â клик по каÑандаÑÑ, новое название, Enter â гоÑово. Escape оÑменÑеÑ. ÐÑÑ inline, без модалок и пеÑезагÑÑзок.</li> <li data-num="780"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> <strong>ÐаÑÑÑойки видимоÑÑи иÑÑоÑии</strong> â Ð²Ð»Ð°Ð´ÐµÐ»ÐµÑ ÑеÑаеÑ, ÑÑо ÑÐ²Ð¸Ð´Ð¸Ñ Ð½Ð¾Ð²Ñй ÑÑаÑÑник: вÑÑ Ð¿ÐµÑепиÑкÑ, поÑледние N дней или ниÑего. ÐÑÑалÑнÑе ÑÑаÑÑники видÑÑ ÑекÑÑие наÑÑÑойки в read-only Ñежиме.</li> <li data-num="781"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>ÐагÑÑзка аваÑаÑа в пÑодакÑене</strong>
1 â <code>angular.element(this).scope()</code> возвÑаÑÐ°ÐµÑ <code>undefined</code> пÑи оÑклÑÑÑнном debug info. ФайловÑй input ÑепеÑÑ Ð¿ÑивÑзан пÑогÑаммно ÑеÑез <code>addEventListener</code> â ÑабоÑÐ°ÐµÑ Ð² лÑбом Ñежиме. ÐÐ°Ð½ÐµÐ»Ñ Ð½Ð° <code>ng-if</code> пеÑеÑоздаÑÑ DOM пÑи каждом оÑкÑÑÑии â обÑабоÑÑик пеÑепÑивÑзÑваеÑÑÑ Ð°Ð²ÑомаÑиÑеÑки.</li> <li data-num="782"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>Ðнопка загÑÑзки блокиÑÑеÑÑÑ Ð¿Ñи аплоаде</strong> â HTML <code><label></code> игноÑиÑÑÐµÑ Ð°ÑÑибÑÑ <code>disabled</code>. Ðаменено на CSS <code>pointer-events: none</code> â во вÑÐµÐ¼Ñ Ð·Ð°Ð³ÑÑзки нелÑÐ·Ñ ÑлÑÑайно оÑкÑÑÑÑ ÑайловÑй диалог повÑоÑно.</li> <li data-num="783"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>УÑеÑки памÑÑи закÑÑÑÑ</strong> â вÑе event listeners (file input, keydown, editor input) коÑÑекÑно ÑнимаÑÑÑÑ Ð¿Ñи ÑниÑÑожении конÑÑоллеÑа. Pending-ÑаймаÑÑÑ Ð¾ÑменÑÑÑÑÑ.</li> <li data-num="784"><span class="changelog-tag changelog-tag--PERF" data-tag-alias="PERF">PERF</span> <strong>ÐдинÑй Ñ
ÐµÐ»Ð¿ÐµÑ Ð¾Ñибок</strong> â повÑоÑÑÑÑийÑÑ Ð¿Ð°ÑÑеÑн извлеÑÐµÐ½Ð¸Ñ ÑообÑÐµÐ½Ð¸Ñ Ð¸Ð· оÑвеÑа API (10+ меÑÑ) вÑнеÑен в <code>extractErrorMessage()</code>. Ðод конÑÑоллеÑа ÑÑал на ~60 ÑÑÑок коÑоÑе и пÑоÑе Ð´Ð»Ñ Ð¿Ð¾Ð´Ð´ÐµÑжки.</li> </ul> </div> </details> <details class="changelog-section"> <summary class="changelog-summary"><span class="changelog-meta"><span class="changelog-meta__version">v9.58.0</span><span class="changelog-meta__date">12-03-2026</span></span><h2 id="v9580-12-03-2026--ÑаÑÑÑлки-нового-ÑÑовнÑ-ÑмнаÑ-доÑÑавка-ÑоÑнаÑ-аналиÑика-заÑиÑа-оÑ-Ñбоев">РаÑÑÑлки нового ÑÑовнÑ: ÑÐ¼Ð½Ð°Ñ Ð´Ð¾ÑÑавка, ÑоÑÐ½Ð°Ñ Ð°Ð½Ð°Ð»Ð¸Ñика, заÑиÑа Ð¾Ñ Ñбоев</h2></summary> <div class="changelog-section__body"> <p>РаÑÑÑлоÑÐ½Ð°Ñ ÑиÑÑема ÐиÑкÑÑÑа повзÑоÑлела. ТепеÑÑ Ð¾Ð½Ð° знаеÑ, ÐºÐ¾Ð¼Ñ Ð¿Ð¸ÑÑмо ÑоÑно не дойдÑÑ â и не ÑÑаÑÐ¸Ñ Ð½Ð° ÑÑо ни одной попÑÑки. СÑиÑÐ°ÐµÑ Ð½Ðµ пÑоÑÑо «ÑколÑко Ñаз оÑкÑÑли», а «ÑколÑко лÑдей оÑкÑÑли». Сама оÑÑанавливаеÑÑÑ, еÑли поÑÑовÑй ÑеÑÐ²ÐµÑ Ð»Ñг. Ð ÑÐ¼ÐµÐµÑ Ð¿Ð¾Ð²ÑоÑиÑÑ Ð¾ÑпÑÐ°Ð²ÐºÑ Ñем, ÐºÐ¾Ð¼Ñ Ð½Ðµ повезло Ñ Ð¿ÐµÑвого Ñаза â в один клик из админки.</p> <ul> <li data-num="764"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> <strong>Ðлик-ÑÑекинг</strong> â ÐºÐ°Ð¶Ð´Ð°Ñ ÑÑÑлка в пиÑÑме ÑепеÑÑ Ð¾ÑÑлеживаеÑÑÑ. РкаÑÑоÑке кампании видно, ÑколÑко Ñаз ÑиÑаÑели пеÑеÑли по ÑÑÑлкам. Mailto, tel и ÑлÑжебнÑе ÑÑÑлки (оÑпиÑка, ÑÑекинг) не заÑÑагиваÑÑÑÑ â вÑÑ ÑиÑÑо.</li> <li data-num="765"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> <strong>УникалÑнÑе оÑкÑÑÑÐ¸Ñ Ð¸ клики</strong> â ÑанÑÑе один ÑиÑаÑелÑ, оÑкÑÑвÑий пиÑÑмо пÑÑÑ Ñаз, давал «5 оÑкÑÑÑий». ТепеÑÑ Ð² админке два ÑиÑла: «ÐÑкÑÑÑий (вÑего)» и «ÐÑкÑÑÑий (Ñник.)». ÐаконеÑ-Ñо можно понÑÑÑ, какой пÑоÑÐµÐ½Ñ Ð°ÑдиÑоÑии дейÑÑвиÑелÑно ÑиÑÐ°ÐµÑ ÑаÑÑÑлкÑ.</li> <li data-num="766"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> <strong>ÐовÑоÑÐ½Ð°Ñ Ð¾ÑпÑавка неÑдавÑиÑ
ÑÑ</strong> â еÑли ÑаÑÑÑ Ð¿Ð¸Ñем не доÑла, адÑеÑа ÑоÑ
ÑанÑÑÑÑÑ Ð°Ð²ÑомаÑиÑеÑки. Радминке поÑвл
1ÑеÑÑÑ ÐºÐ½Ð¾Ð¿ÐºÐ° «ÐовÑоÑиÑÑ Ð½ÐµÑдавÑиеÑÑ» â нажали, и пиÑÑма ÑÑ
одÑÑ ÑолÑко Ñем, ÐºÐ¾Ð¼Ñ Ð½Ðµ повезло. Ðез дÑбликаÑов Ð´Ð»Ñ Ð¾ÑÑалÑнÑÑ
.</li> <li data-num="767"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> <strong>Suppression-лиÑÑ</strong> â hard bounce, Ð¶Ð°Ð»Ð¾Ð±Ñ Ð¸ ÑÑÑнÑе блокиÑовки ÑепеÑÑ Ð² единой базе. ÐдÑÐµÑ Ð¸Ð· suppression-лиÑÑа никогда не полÑÑÐ¸Ñ ÑаÑÑÑÐ»ÐºÑ Ñнова â ни из какой кампании. УпÑавление â пÑÑмо в админке.</li> <li data-num="768"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> <strong>Уведомление опеÑаÑоÑа</strong> â поÑле каждой маÑÑовой оÑпÑавки на поÑÑÑ Ð¿ÑиÑ
Ð¾Ð´Ð¸Ñ Ð¾ÑÑÑÑ: ÑколÑко оÑпÑавлено, ÑколÑко оÑибок, ÑколÑко bounce. Ðе нÑжно ÑидеÑÑ Ð¸ ждаÑÑ Ð² админке â ÑезÑлÑÑÐ°Ñ Ñам найдÑÑ Ð²Ð°Ñ.</li> <li data-num="769"><span class="changelog-tag changelog-tag--PERF" data-tag-alias="PERF">PERF</span> <strong>Ð£Ð¼Ð½Ð°Ñ Ð´Ð¾ÑÑавка по доменам</strong> â пиÑÑма к Gmail, Outlook, ЯндекÑÑ Ð¸ Mail.ru ÑаÑкладÑваÑÑÑÑ ÑавномеÑно по баÑÑам Ñ Ð¿Ð°Ñзами. ÐÑо ÑÐ½Ð¸Ð¶Ð°ÐµÑ ÑиÑк попаÑÑÑ Ð¿Ð¾Ð´ rate-limit кÑÑпнÑÑ
пÑовайдеÑов и повÑÑÐ°ÐµÑ Ð´Ð¾ÑÑавлÑемоÑÑÑ.</li> <li data-num="770"><span class="changelog-tag changelog-tag--PERF" data-tag-alias="PERF">PERF</span> <strong>MX-валидаÑиÑ</strong> â пеÑед оÑпÑавкой пÑовеÑÑÑÑÑÑ DNS-запиÑи домена полÑÑаÑелÑ. ÐÑли Ñ Ð´Ð¾Ð¼ÐµÐ½Ð° Ð½ÐµÑ Ð¿Ð¾ÑÑового ÑеÑвеÑа â адÑÐµÑ Ð½Ðµ попадÑÑ Ð² ÑаÑÑÑлкÑ. ÐенÑÑе беÑполезнÑÑ
попÑÑок, бÑÑÑÑее оÑпÑавка, ÑиÑе ÑепÑÑаÑиÑ.</li> <li data-num="771"><span class="changelog-tag changelog-tag--SEC" data-tag-alias="SEC">SEC</span> <strong>Circuit breaker</strong> â еÑли SMTP-ÑеÑÐ²ÐµÑ Ð¿ÐµÑеÑÑал оÑвеÑаÑÑ Ð¸ подÑÑд идÑÑ 10+ оÑибок, оÑпÑавка авÑомаÑиÑеÑки оÑÑанавливаеÑÑÑ. ÐÑÑавÑиеÑÑ Ð°Ð´ÑеÑа ÑоÑ
ÑанÑÑÑÑÑ Ð´Ð»Ñ retry â ни одно пиÑÑмо не поÑеÑÑеÑÑÑ.</li> <li data-num="772"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>Soft bounce Ñ Ð¿Ð¾Ð²ÑоÑом</strong> â еÑли поÑÑовÑй ÑеÑÐ²ÐµÑ Ð³Ð¾Ð²Ð¾ÑÐ¸Ñ Â«Ð¿Ð¾Ð¿ÑобÑйÑе позже» (greylisting, rate-limit), пиÑÑмо авÑомаÑиÑеÑки повÑоÑÑеÑÑÑ ÑеÑез 2 ÑекÑндÑ. РанÑÑе Ñакие адÑеÑа пÑоÑÑо ÑеÑÑлиÑÑ.</li> <li data-num="773"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>Hard bounce â suppression</strong> â невалиднÑе адÑеÑа (ÐºÐ¾Ð´Ñ 550â553) ÑепеÑÑ Ð½Ðµ ÑолÑко ÑдалÑÑÑÑÑ Ð¸Ð· подпиÑок, но и добавлÑÑÑÑÑ Ð² suppression-лиÑÑ. Ðаже еÑли кÑо-Ñо подпиÑеÑÑÑ Ñнова Ñ Ñем же ÑÑиком â ÑаÑÑÑлка не ÑйдÑÑ Ð½Ð° мÑÑÑвÑй адÑеÑ.</li> <li data-num="774"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>ÐдапÑивнÑй ÑаймаÑÑ Ð·Ð°Ð²Ð¸ÑÑиÑ
оÑпÑавок</strong> â ÑанÑÑе ÐºÐ°Ð¼Ð¿Ð°Ð½Ð¸Ñ ÑÑиÑалаÑÑ Â«Ð·Ð°Ð²Ð¸ÑÑей» ÑеÑез 15 минÑÑ, даже еÑли в ней 5000 полÑÑаÑелей. ТепеÑÑ ÑаймаÑÑ Ð¿ÑопоÑÑионален ÑазмеÑÑ Ð°ÑдиÑоÑии â болÑÑие ÑаÑÑÑлки не пÑеÑÑваÑÑÑÑ Ð¿ÑеждевÑеменно.</li> <li data-num="775"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> <strong>ÐоллекÑÐ¸Ñ NewsletterSuppressions</strong> â email, пÑиÑина (hard_bounce/complaint/manual), пÑивÑзка к кампании. Unique-индекÑ, авÑоноÑмализаÑÐ¸Ñ email, дедÑпликаÑÐ¸Ñ Ð¿Ñи ÑÑаÑÑе.</li> <li data-num="776"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> <strong>ÐоллекÑÐ¸Ñ NewsletterTrackingEvents</strong> â дедÑпликаÑÐ¸Ñ Ð¾ÑкÑÑÑий и кликов ÑеÑез campaignId + SHA
1-256 Ñ
ÐµÑ email. TTL 90 дней, не накапливаеÑÑÑ Ð±ÐµÑконеÑно.</li> <li data-num="777"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> <strong>Snapshot failed-полÑÑаÑелей</strong> â неÑдавÑиеÑÑ Ð°Ð´ÑеÑа ÑоÑ
ÑанÑÑÑÑÑ Ð² NewsletterAudienceSnapshots Ñ kind <code>production_failed</code>. TTL 30 дней. ÐÑполÑзÑÑÑÑÑ Ð´Ð»Ñ retry.</li> </ul> </div> </details> <details class="changelog-section"> <summary class="changelog-summary"><span class="changelog-meta"><span class="changelog-meta__version">v9.57.0</span><span class="changelog-meta__date">11-03-2026</span></span><h2 id="v9570-11-03-2026--база-ÑеÑвиÑа-ÑаÑÑÑлки-гоÑова-пеÑÑонализаÑиÑ-ÑпÑавление-подпиÑками-ÑÑекинг">Ðаза ÑеÑвиÑа ÑаÑÑÑлки гоÑова: пеÑÑонализаÑиÑ, ÑпÑавление подпиÑками, ÑÑекинг</h2></summary> <div class="changelog-section__body"> <p>ÐиÑкÑÑÑ Ð½Ð°ÐºÐ¾Ð½ÐµÑ ÑÐ¼ÐµÐµÑ ÑаÑÑÑлаÑÑ Ð¿Ð¸ÑÑма по-наÑÑоÑÑемÑ. ÐÑÑÑ Ð¸Ð¼ÐµÐ½Ð¾Ð²Ð°Ð½Ð½ÑÑ
аÑдиÑоÑий, пеÑÑоналÑное обÑаÑение по имени, ÑÑÑаниÑа ÑпÑÐ°Ð²Ð»ÐµÐ½Ð¸Ñ Ð¿Ð¾Ð´Ð¿Ð¸Ñками вмеÑÑо гÑÑбой кнопки «ÐÑпиÑаÑÑÑÑ», оÑÑлеживание оÑкÑÑÑий и авÑомаÑиÑеÑкое Ñдаление невалиднÑÑ
адÑеÑов â вÑÑ ÑÑо ÑабоÑÐ°ÐµÑ Ð¸Ð· админки в паÑÑ ÐºÐ»Ð¸ÐºÐ¾Ð² и гоÑово к пеÑвой оÑпÑавке на 7000 подпиÑÑиков.</p> <ul> <li data-num="752"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> <strong>ÐÑÑÑ Ð°ÑдиÑоÑий</strong> â подпиÑÑики ÑÐ°Ð·Ð´ÐµÐ»ÐµÐ½Ñ Ð½Ð° ÑиÑаÑелей, авÑоÑов, доноÑов, ÑедакÑоÑов и паÑÑнÑÑов. ÐÐ°Ð¶Ð´Ð°Ñ ÐºÐ°Ð¼Ð¿Ð°Ð½Ð¸Ñ Ð¾ÑпÑавлÑеÑÑÑ Ð¸Ð¼ÐµÐ½Ð½Ð¾ Ñем, ÐºÐ¾Ð¼Ñ Ð¾Ð½Ð° адÑеÑована. Радминке â кнопка «СÑаÑиÑÑика ÑпиÑков» Ñ Ð¼Ð³Ð½Ð¾Ð²ÐµÐ½Ð½Ð¾Ð¹ Ñазбивкой по аÑдиÑоÑиÑм.</li> <li data-num="753"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> <strong>ÐеÑÑонализаÑÐ¸Ñ Ð¿Ð¸Ñем</strong> â ÑаблоннÑе пеÑеменнÑе <code>{{name}}</code>, <code>{{email}}</code>, <code>{{unsubscribe_url}}</code>, <code>{{web_version_url}}</code> подÑÑавлÑÑÑÑÑ Ð´Ð»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð³Ð¾ полÑÑаÑелÑ. ÐÐ¼Ñ Ð±ÐµÑÑÑÑÑ Ð¸Ð· Ð±Ð°Ð·Ñ Ð¿Ð¾Ð´Ð¿Ð¸ÑÑиков â пиÑÑмо наÑинаеÑÑÑ Ñ Â«ÐÑивеÑ, ÐлиÑа!», а не Ñ Ð±ÐµÐ·Ð»Ð¸ÐºÐ¾Ð³Ð¾ «УважаемÑй подпиÑÑик».</li> <li data-num="754"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> <strong>СÑÑаниÑа ÑпÑÐ°Ð²Ð»ÐµÐ½Ð¸Ñ Ð¿Ð¾Ð´Ð¿Ð¸Ñками</strong> â вмеÑÑо одной кнопки «ÐÑпиÑаÑÑÑÑ» ÑиÑаÑÐµÐ»Ñ Ð²Ð¸Ð´Ð¸Ñ ÑекбокÑÑ Ð²ÑеÑ
ÑаÑÑÑлок, на коÑоÑÑе подпиÑан. Ðожно ÑбÑаÑÑ Ð°Ð²ÑоÑÑкÑÑ ÑаÑÑÑлкÑ, но оÑÑавиÑÑ Ð´Ð°Ð¹Ð´Ð¶ÐµÑÑ Ð´Ð»Ñ ÑиÑаÑелей â и наобоÑоÑ. ÐодÑвеÑждение ÑеÑез POST заÑиÑÐ°ÐµÑ Ð¾Ñ ÑлÑÑайнÑÑ
пеÑеÑ
одов и ÑканеÑов поÑÑовÑÑ
клиенÑов.</li> <li data-num="755"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> <strong>ТÑекинг оÑкÑÑÑий</strong> â в каждое пиÑÑмо вÑÑÑаиваеÑÑÑ Ð½ÐµÐ²Ð¸Ð´Ð¸Ð¼Ñй пикÑелÑ. СÑÑÑÑик оÑкÑÑÑий обновлÑеÑÑÑ Ð°ÑомаÑно и виден в каÑÑоÑке кампании в админке. ÐаннÑе Ð°Ð½Ð¾Ð½Ð¸Ð¼Ð½Ñ â ÑÑиÑаем ÑолÑко обÑее ÑиÑло, без пÑивÑзки к конкÑеÑÐ½Ð¾Ð¼Ñ Ð¿Ð¾Ð»ÑÑаÑелÑ.</li> <li data-num="756"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> <strong>One-Click Unsubscribe</strong> â заголовок <code>List-Unsubscribe-Post</code> (RFC 8058) позволÑÐµÑ Gmail и дÑÑгим клиенÑам показаÑÑ ÐºÐ½Ð¾Ð¿ÐºÑ Â«ÐÑпиÑаÑÑÑÑ» пÑÑмо в инÑеÑÑейÑе поÑÑÑ â без пеÑеÑ
ода на ÑайÑ.</li> <li data-num="757"><span class="changelog-tag changelog-tag--SEC" data-tag-alias="SEC">SEC</span> <strong>Hard bounce: авÑооÑиÑÑка</strong> â еÑли SMTP-ÑеÑÐ²ÐµÑ Ð¾ÑвеÑÐ°ÐµÑ Â«mailbox not found» (ÐºÐ¾Ð´Ñ 550â553), адÑÐµÑ Ð°Ð²ÑомаÑиÑеÑки ÑдалÑеÑÑÑ Ð¸Ð· вÑеÑ
ÑпиÑков. РепÑÑаÑÐ¸Ñ Ð´Ð¾Ð¼ÐµÐ½Ð° не ÑÑÑÐ°Ð´Ð°ÐµÑ Ð¾Ñ Ð¿Ð¾Ð²ÑоÑнÑÑ
попÑÑок доÑÑавки на мÑÑÑвÑе ÑÑики.</li> <li data-num="758"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>Ðеб-веÑÑÐ¸Ñ Ð±ÐµÐ· ÑÑÑÑÑ
пеÑеменнÑÑ
</strong> â в пÑблиÑном аÑÑ
иве пиÑÑма (<code>/newsletter/archive/...</code>) ÑаблоннÑе пеÑеменнÑе <code>{{name}}</code>, <code>{{email}}</code> заменÑÑÑÑÑ, а не показÑваÑÑÑÑ ÐºÐ°Ðº лиÑеÑалÑнÑй ÑекÑÑ. ÐÐ²Ð¾Ð¹Ð½Ð°Ñ Ð·Ð°ÑиÑа: пÑи ÑоÑмиÑовании Ñнимка и пÑи оÑдаÑе ÑÑÑаниÑÑ.</li> <li data-num="759"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>Email без ÑегиÑÑÑа</strong> â вÑе опеÑаÑии Ñ email (подпиÑка, оÑпиÑка, поиÑк, bounce) иÑполÑзÑÑÑ case-insensitive поиÑк ÑеÑез regex. <code>[email protected]</code> и <code>[email protected]</code> â один и ÑÐ¾Ñ Ð¶Ðµ подпиÑÑик.</li> <li data-num="760"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> <strong>ÐолноÑÐµÐ½Ð½Ð°Ñ ÑиÑÑема ÑаÑÑÑлок</strong> â Ñоздание кампаний, ÑеÑÑÐ¾Ð²Ð°Ñ Ð¸ маÑÑÐ¾Ð²Ð°Ñ Ð¾ÑпÑавка, планиÑование по ÑаÑпиÑаниÑ, воÑÑÑановление завиÑÑиÑ
оÑпÑавок, дÑблиÑование кампаний. СоÑÑоÑниÑ: draft â sending_test â tested â scheduled â sending â sent. ЧанковÑе ÑнапÑоÑÑ Ð°ÑдиÑоÑии (по 1000 адÑеÑов), паÑаллелÑÐ½Ð°Ñ Ð¾ÑпÑавка Ñ Ð½Ð°ÑÑÑаиваемой конкÑÑенÑноÑÑÑÑ.</li> <li data-num="761"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> <strong>ÐменованнÑе ÑпиÑки в EmailSubscriptions</strong> â поле <code>lists[]</code> Ñ Ð²Ð°Ð»Ð¸Ð´Ð°Ñией на ÑÑовне ÑÑ
емÑ. ÐÐ½Ð´ÐµÐºÑ Ð´Ð»Ñ Ð±ÑÑÑÑой ÑилÑÑÑаÑии. API подпиÑки авÑомаÑиÑеÑки добавлÑÐµÑ Ð² ÑпиÑок «readers».</li> <li data-num="762"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> <strong>Rate limiting подпиÑки</strong> â 5 запÑоÑов в минÑÑÑ Ð½Ð° IP (или email). ÐÑовеÑка вÑполнÑеÑÑÑ Ð´Ð¾ обÑаÑÐµÐ½Ð¸Ñ Ðº базе â нелÑÐ·Ñ Ð·Ð¾Ð½Ð´Ð¸ÑоваÑÑ ÑÑжие email без лимиÑа.</li> <li data-num="763"><span class="changelog-tag changelog-tag--SEC" data-tag-alias="SEC">SEC</span> <strong>CSP и sandbox</strong> â ÑÑÑаниÑÑ Ð¾ÑпиÑки, аÑÑ
ива и пÑевÑÑ Ð·Ð°ÑиÑÐµÐ½Ñ ÑÑÑогим <code>Content-Security-Policy</code>: <code>script-src 'none'</code>, <code>sandbox</code>, <code>no-referrer</code>. ÐÑедоноÑнÑй HTML в Ñеле пиÑÑма не вÑÐ¿Ð¾Ð»Ð½Ð¸Ñ ÑкÑипÑ.</li> </ul> </div> </details> <details class="changelog-section"> <summary class="changelog-summary"><span class="changelog-meta"><span class="changelog-meta__version">v9.56.0</span><span class="changelog-meta__date">11-03-2026</span></span><h2 id="v9560-11-03-2026--обновление-ÑиÑÑемÑ-подпиÑок-мгновеннÑй-оÑклик-ÑоÑнÑе-ÑÑеÑÑики-и-дÑÑгие-ÑикÑÑ">Ðбновление ÑиÑÑÐµÐ¼Ñ Ð¿Ð¾Ð´Ð¿Ð¸Ñок: мгновеннÑй оÑклик, ÑоÑнÑе ÑÑеÑÑики и дÑÑгие ÑикÑÑ</h2></summary> <div class="changelog-section__body"> <ul> <li data-num="746"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>ÐодпиÑка в одном меÑÑе â обновлÑеÑÑÑ Ð²ÐµÐ·Ð´Ðµ.</strong> Ðажали «ÐодпиÑаÑÑÑÑ» на ÑÑÑаниÑе авÑоÑа или Ñега â кнопка в модалке «Ðои подпиÑки» и на ленÑе Ñже показÑÐ²Ð°ÐµÑ Â«ÐодпиÑанÑ». ÐÑпиÑалиÑÑ Ð² модалке â Ñ Ð²Ð°Ñей ÑÑÑаниÑÑ Ð¿Ð¾Ð´Ð¿Ð¸Ñок запиÑÑ Ð¸ÑÑÐµÐ·Ð°ÐµÑ ÑÑазÑ, без пеÑезагÑÑзки. Ðдин клик, одно ÑоÑÑоÑние по вÑей плаÑÑоÑме.</li> <li data-num="747"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>Ðкно подпиÑок оÑкÑÑваеÑÑÑ Ð±ÑÑÑÑее.</strong> Ðод модалки «Ðои подпиÑки» подгÑÑжаеÑÑÑ ÑолÑко когда Ð²Ñ ÐµÑ Ð¾ÑкÑÑваеÑе (Ñ Ð»ÐµÐ½ÑÑ Ð¸Ð»Ð¸ пÑоÑилÑ). СÑÑаниÑÑ Ð°Ð²ÑоÑа и ленÑÑ ÑÑали легÑе â менÑÑе ждÑÑе пÑи пеÑвом заÑ
оде.</li> <li data-num="748"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>Ðнопка «ÐодпиÑаÑÑÑÑ/ÐÑпиÑаÑÑÑÑ» оÑзÑваеÑÑÑ Ð¼Ð³Ð½Ð¾Ð²ÐµÐ½Ð½Ð¾.</strong> Рмодалке подпиÑок ÑоÑÑоÑние менÑеÑÑÑ ÑÑÐ°Ð·Ñ Ð¿Ð¾Ñле клика; еÑли ÑеÑÐ²ÐµÑ Ð¾ÑвеÑил оÑибкой â вÑÑ Ð°ÐºÐºÑÑаÑно возвÑаÑаеÑÑÑ Ð½Ð°Ð·Ð°Ð´. Ðикакого «повеÑилоÑÑ Ð¸ непонÑÑно, подпиÑан Ñ Ð¸Ð»Ð¸ неÑ».</li> <li data-num="749"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>Ðнопки подпиÑки ÑÑали доÑÑÑпнее.</strong> ÐÐ»Ñ ÑкÑинÑидеÑов и клавиаÑÑÑной навигаÑии Ñ ÐºÐ½Ð¾Ð¿Ð¾Ðº «ÐодпиÑаÑÑÑÑ/ÐÑпиÑаÑÑÑÑ» пÑоÑÑÐ°Ð²Ð»ÐµÐ½Ñ ÑоÑÑоÑÐ½Ð¸Ñ Â«Ð½Ð°Ð¶Ð°Ñа» и «занÑÑа» â Ñдобнее Ñем, кÑо не полÑзÑеÑÑÑ Ð¼ÑÑÑÑ.</li> <li data-num="750"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>ÐомменÑаÑии обновлÑÑÑÑÑ Ð±ÐµÐ· глÑков.</strong> Ðобавили, оÑÑедакÑиÑовали или Ñдалили комменÑаÑий â ÑпиÑок под маÑеÑиалом подÑ
ваÑÑÐ²Ð°ÐµÑ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ. ÐÑÑ ÑбÑаÑÑваеÑÑÑ Ñам, где нÑжно, Ñак ÑÑо Ð²Ñ Ð²Ñегда видиÑе акÑÑалÑнÑÑ Ð²ÐµÑкÑ.</li> <li data-num="751"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>ÐÑибки Ð¾Ñ ÑеÑвеÑа â по-ÑÑÑÑки и по делÑ.</strong> ÐÑи ÑбоÑÑ
подпиÑки, комменÑаÑиев или ÑоÑ
ÑÐ°Ð½ÐµÐ½Ð¸Ñ Ð¼Ð°ÑеÑиала показÑваеÑÑÑ Ð¾ÑмÑÑленнÑй ÑекÑÑ Ð¸Ð· оÑвеÑа API, а не обÑее «ÑÑо-Ñо поÑло Ð
1½Ðµ Ñак».</li> </ul> </div> </details> <details class="changelog-section"> <summary class="changelog-summary"><span class="changelog-meta"><span class="changelog-meta__version">v9.55.0</span><span class="changelog-meta__date">11-03-2026</span></span><h2 id="v9550-11-03-2026--гÑÑпповÑе-ÑаÑÑ-ÑиÑаÑÑ-ÑпÑавление-ÑÑаÑÑниками">ÐÑÑпповÑе ÑаÑÑ, ÑиÑаÑÑ, ÑпÑавление ÑÑаÑÑниками</h2></summary> <div class="changelog-section__body"> <p>СообÑÐµÐ½Ð¸Ñ Ð½Ð° ÐиÑкÑÑÑе болÑÑе не ÑолÑко ÑеÑ-а-ÑеÑ. ТепеÑÑ Ð¼Ð¾Ð¶Ð½Ð¾ ÑоздаÑÑ Ð³ÑÑпповой ÑÐ°Ñ Ñ Ð»ÑбÑм колиÑеÑÑвом ÑÑаÑÑников, оÑвеÑаÑÑ Ð½Ð° конкÑеÑное ÑообÑение ÑиÑаÑой, ÑпÑавлÑÑÑ ÑÑаÑÑниками â и вÑÑ ÑÑо в знакомом инÑеÑÑейÑе, без нового пÑиложениÑ.</p> <ul> <li data-num="736"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> <strong>ÐÑÑпповÑе ÑаÑÑ</strong> â пÑÑмо из ÑпиÑка ÑообÑений можно ÑоздаÑÑ Ð³ÑÑппÑ: дайÑе ей название, добавÑÑе ÑÑаÑÑников â и ÑÐ°Ñ Ð³Ð¾Ñов. ÐваÑÐ°Ñ Ð³ÑÑÐ¿Ð¿Ñ Ð°Ð²ÑомаÑиÑеÑки ÑобиÑаеÑÑÑ Ð¸Ð· ÑоÑогÑаÑий ÑÑаÑÑников в Ð¼Ð¾Ð·Ð°Ð¸ÐºÑ 2Ã2. Ð Ñапке видно название и ÑиÑло ÑÑаÑÑников, по ÐºÐ»Ð¸ÐºÑ â полнÑй ÑпиÑок.</li> <li data-num="737"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> <strong>ÐÑевÑаÑиÑе диалог в гÑÑппÑ</strong> â лÑбой лиÑнÑй диалог можно ÑаÑÑиÑиÑÑ Ð´Ð¾ гÑÑÐ¿Ð¿Ñ Ð¾Ð´Ð½Ð¾Ð¹ кнопкой. ÐÑÑоÑÐ¸Ñ Ð¿ÐµÑепиÑки ÑоÑ
ÑанÑеÑÑÑ, добавлÑеÑÑÑ Ð½Ð¾Ð²Ñй ÑÑаÑÑник, и Ð²Ñ Ð¿ÑодолжаеÑе Ñ Ñого же меÑÑа. ÐикакиÑ
«пеÑеÑлиÑе вÑÑ Ð²ÑÑÑнÑÑ».</li> <li data-num="738"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> <strong>ÐÑÐ²ÐµÑ Ñ ÑиÑаÑой</strong> â как в Telegram: наведиÑе на ÑообÑение, нажмиÑе â© â и Ð²Ð°Ñ Ð¾ÑÐ²ÐµÑ Ð¾ÑпÑавиÑÑÑ Ñ ÑиÑаÑой оÑигинала. ÐолÑÑаÑÐµÐ»Ñ ÑÑÐ°Ð·Ñ Ð²Ð¸Ð´Ð¸Ñ ÐºÐ¾Ð½ÑекÑÑ. РабоÑÐ°ÐµÑ Ð¸ в лиÑнÑÑ
, и в гÑÑпповÑÑ
ÑаÑаÑ
.</li> <li data-num="739"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> <strong>УпÑавление гÑÑппой</strong> â Ð²Ð»Ð°Ð´ÐµÐ»ÐµÑ Ð¼Ð¾Ð¶ÐµÑ Ð´Ð¾Ð±Ð°Ð²Ð»ÑÑÑ Ð¸ ÑдалÑÑÑ ÑÑаÑÑников, назнаÑаÑÑ Ð´ÑÑгиÑ
владелÑÑев, наÑÑÑаиваÑÑ Ð²Ð¸Ð´Ð¸Ð¼Ð¾ÑÑÑ Ð¸ÑÑоÑии Ð´Ð»Ñ Ð½Ð¾Ð²Ð¸Ñков (вÑÑ / поÑледние N дней / ниÑего) и ÑдалиÑÑ Ð³ÑÑÐ¿Ð¿Ñ Ñеликом. УÑаÑÑник Ð¼Ð¾Ð¶ÐµÑ Ð¿Ð¾ÐºÐ¸Ð½ÑÑÑ ÑÐ°Ñ Ð² лÑбой моменÑ. ÐÑ
од и вÑÑ
од ÑикÑиÑÑÑÑÑÑ ÑиÑÑемнÑм ÑообÑением â «ÐлиÑа добавила ÐоÑиÑа».</li> <li data-num="740"><span class="changelog-tag changelog-tag--UX" data-tag-alias="UX">UX</span> <strong>ÐлавиаÑÑÑнÑе ÑоÑÑкаÑÑ Ð² ÑаÑе</strong> â Escape закÑÑÐ²Ð°ÐµÑ Ð¿Ð°Ð½ÐµÐ»Ñ Ð¾ÑвеÑа, ÑпиÑок ÑÑаÑÑников или диалог ÑаÑÑиÑениÑ. Ðанели не накладÑваÑÑÑÑ Ð´ÑÑг на дÑÑга. ÐовÑе ÑообÑÐµÐ½Ð¸Ñ Ð¿Ð»Ð°Ð²Ð½Ð¾ пÑокÑÑÑиваÑÑ Ð»ÐµÐ½ÑÑ Ð²Ð½Ð¸Ð· â и пÑи оÑпÑавке, и пÑи полÑÑении.</li> <li data-num="741"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>ÐоиÑк авÑоÑов ÑабоÑÐ°ÐµÑ Ñ callback'ом</strong> â ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÐµÐ½Ñ Ð¿Ð¾Ð¸Ñка авÑоÑов ÑепеÑÑ ÐºÐ¾ÑÑекÑно вÑзÑÐ²Ð°ÐµÑ Ð¿ÐµÑеданнÑй callback пÑи вÑбоÑе. РанÑÑе в некоÑоÑÑÑ
конÑекÑÑаÑ
(добавление ÑÑаÑÑника гÑÑппÑ, ÑаÑÑиÑение диалога) клик по авÑоÑÑ Ð¾ÑкÑÑвал лиÑнÑй ÑÐ°Ñ Ð²Ð¼ÐµÑÑо нÑжного дейÑÑвиÑ. ÐÑпÑавлено.</li> <li data-num="742"><span class="changelog-tag changelog-tag--UX" data-tag-alias="UX">UX</span> <strong>ÐодпиÑка: «ÐÑ Ñже подпиÑанÑ!»</strong> â пÑи повÑоÑной подпиÑке на ÑаÑÑÑÐ»ÐºÑ Ð²Ð¼ÐµÑÑо молÑÐ°Ð½Ð¸Ñ Ð¸Ð»Ð¸ оÑибки â дÑÑжелÑбное «ÐÑÐ¾Ñ email Ñже еÑÑÑ Ð² наÑей ÑаÑÑÑлке». Ðодалка ÑбÑаÑÑÐ²Ð°ÐµÑ ÑоÑÑоÑние пÑи закÑÑÑии: оÑкÑоеÑе Ñнова â ÑиÑÑÐ°Ñ ÑоÑма. ÐÑибки ÑеÑи и rate-limit оÑобÑажаÑÑÑÑ Ð¿Ð¾Ð½ÑÑнÑм ÑекÑÑом. <strong>ÐодпиÑки и ÑаÑÑ â ÑÑо изменилоÑÑ Ð´Ð»Ñ Ð²Ð°Ñ:</strong></li> <li data-num="743"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> <strong>API гÑÑпповÑÑ
ÑаÑов</strong> â ÑеÑÑÑ Ð½Ð¾Ð²ÑÑ
endpoints: Ñоздание гÑÑппÑ, ÑпÑавление ÑÑаÑÑниками и владелÑÑами, обновление меÑаданнÑÑ
, Ñдаление. ÐÑÑаÑÐ¸Ñ 1-на-1 в гÑÑппÑ, ÑиÑÑемнÑе ÑообÑÐµÐ½Ð¸Ñ Ð¾ вÑ
оде/вÑÑ
оде, ÑилÑÑÑаÑÐ¸Ñ Ð¸ÑÑоÑии по даÑе вÑÑÑÐ¿Ð»ÐµÐ½Ð¸Ñ â вÑÑ ÑеÑвеÑно. Ð£Ð²ÐµÐ´Ð¾Ð¼Ð»ÐµÐ½Ð¸Ñ Ð´Ð»Ñ Ð³ÑÑпп: «Ðовое ÑообÑение в гÑÑппе "РедакÑиÑ"».</li> <li data-num="744"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> <strong>ЦиÑаÑÑ Ð² ÑообÑениÑÑ
</strong> â пÑи оÑвеÑе Ñ ÑиÑаÑой ÑеÑÐ²ÐµÑ Ð¿ÑовеÑÑеÑ, ÑÑо оÑигинал ÑÑÑеÑÑвÑÐµÑ Ð² Ñом же диалоге, и возвÑаÑÐ°ÐµÑ Ð¿ÑевÑÑ (авÑÐ¾Ñ + пеÑвÑе 200 Ñимволов). ÐакеÑÐ½Ð°Ñ Ð·Ð°Ð³ÑÑзка ÑиÑÐ°Ñ Ð² ленÑе â без N+1 запÑоÑов.</li> <li data-num="745"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>ÐаÑкадное Ñдаление</strong> â пÑи Ñдалении гÑÑÐ¿Ð¿Ñ ÑдалÑÑÑÑÑ Ð²Ñе ÑвÑзаннÑе ÑведомлениÑ, а не ÑолÑко Ñип «messages». ÐикакиÑ
ÑиÑÐ¾Ñ Ð² базе.</li> </ul> </div> </details> <details class="changelog-section"> <summary class="changelog-summary"><span class="changelog-meta"><span class="changelog-meta__version">v9.54.0</span><span class="changelog-meta__date">11-03-2026</span></span><h2 id="v9540-11-03-2026--пÑоÑай-bower-вÑÑ-на-npm-модалка-веÑнÑлаÑÑ-наÑÑÑойки-под-заÑиÑой">ÐÑоÑай, Bower: вÑÑ Ð½Ð° npm, модалка веÑнÑлаÑÑ, наÑÑÑойки под заÑиÑой</h2></summary> <div class="changelog-section__body"> <p>Ðдна из ÑÑаÑейÑиÑ
завиÑимоÑÑей плаÑÑоÑÐ¼Ñ â пакеÑнÑй Ð¼ÐµÐ½ÐµÐ´Ð¶ÐµÑ Bower â полноÑÑÑÑ ÑдалÑн. 25 AngularJS-библиоÑек пеÑееÑ
али в npm, а вмеÑÑе Ñ Ð½Ð¸Ð¼Ð¸ ÑÑли ÑоÑни Ñайлов, оÑделÑнÑй Ñаг ÑÑÑановки и ÑелÑй плаÑÑ legacy-кода. Ðодалка «ÐÑиглаÑиÑÑ ÑоавÑоÑов» Ñнова ÑабоÑÐ°ÐµÑ Ð½Ð° ÑÑÑаниÑе ÑеÑновиков, а наÑÑÑойки безопаÑноÑÑи пÑоÑÐ¸Ð»Ñ ÑÑали надÑжнее.</p> <ul> <li data-num="726"><span class="changelog-tag changelog-tag--PERF" data-tag-alias="PERF">PERF</span> <strong>Bower ÑдалÑн навÑегда</strong> â 25 пакеÑов (Angular, Bootstrap, CodeMirror, Videogular и дÑ.) мигÑиÑÐ¾Ð²Ð°Ð½Ñ Ð² npm. Ð£Ð´Ð°Ð»ÐµÐ½Ñ <code>bower.json</code>, <code>.bowerrc</code>, <code>bower_components/</code> и ÑкÑÐ¸Ð¿Ñ <code>run-bower.js</code>. Ðдна команда <code>npm install</code> вмеÑÑо двÑÑ
â бÑÑÑÑее CI, пÑоÑе онбоÑдинг, менÑÑе ÑоÑек оÑказа.</li> <li data-num="727"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>Ðодалка «ÐÑиглаÑиÑÑ ÑоавÑоÑов» на /drafts</strong> â ÑÑили и JS-ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÐµÐ½Ñ Ð·Ð°Ð³ÑÑжалиÑÑ ÑолÑко в ÑедакÑоÑе, а на ÑÑÑаниÑе ÑеÑновиков модалка поÑвл
1ÑлаÑÑ Ð±ÐµÐ· оÑоÑмлениÑ. СÑили пеÑенеÑÐµÐ½Ñ Ð² обÑий бандл, ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÐµÐ½Ñ â в lazy-Ñанк пÑиваÑнÑÑ
ÑÑÑаниÑ. ÐÑÑ ÑабоÑаеÑ.</li> <li data-num="728"><span class="changelog-tag changelog-tag--PERF" data-tag-alias="PERF">PERF</span> <strong>ЧеÑновики не гÑÑзÑÑ Ð»Ð¸Ñнего</strong> â модалка пÑиглаÑÐµÐ½Ð¸Ñ Ð²Ñделена в оÑделÑнÑй webpack-Ñанк (41 KiB). РанÑÑе <code>/drafts</code> ÑÑнÑл 356 KiB ÑедакÑоÑного кода â ÑепеÑÑ Ð½ÐµÑ.</li> <li data-num="729"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>Фон не пÑокÑÑÑиваеÑÑÑ Ð·Ð° модалкой</strong> â пÑи оÑкÑÑÑии модалки пÑиглаÑÐµÐ½Ð¸Ñ Ð¿ÑокÑÑÑка ÑÑÑаниÑÑ Ð±Ð»Ð¾ÐºÐ¸ÑÑеÑÑÑ. Ðикакого ÑлÑÑайного ÑкÑолла под овеÑлеем.</li> <li data-num="730"><span class="changelog-tag changelog-tag--SEC" data-tag-alias="SEC">SEC</span> <strong>Смена email ÑÑебÑÐµÑ Ð¿Ð¾Ð´ÑвеÑждениÑ</strong> â ÑепеÑÑ Ð¿Ñи изменении email в наÑÑÑойкаÑ
пÑоÑÐ¸Ð»Ñ Ð½Ñжно ввеÑÑи ÑекÑÑий паÑолÑ. РанÑÑе email можно бÑло ÑмениÑÑ Ð±ÐµÐ· пÑовеÑки â ÑепеÑÑ Ð½ÐµÑ. ÐонÑÑнÑе ÑообÑÐµÐ½Ð¸Ñ Ð¾Ð± оÑибкаÑ
вмеÑÑо загадоÑнÑÑ
403.</li> <li data-num="731"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>СоÑÑиÑовка комменÑаÑиев «СÑаÑÑе»</strong> â ÑанÑÑе Ñежим «СÑаÑÑе» полагалÑÑ Ð½Ð° поÑÑдок из API. ТепеÑÑ ÐºÐ¾Ð¼Ð¼ÐµÐ½ÑаÑии Ñвно ÑоÑÑиÑÑÑÑÑÑ Ð¿Ð¾ даÑе â поÑÑдок вÑегда пÑавилÑнÑй, незавиÑимо Ð¾Ñ Ð±Ñкенда.</li> <li data-num="732"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>Ð£Ð²ÐµÐ´Ð¾Ð¼Ð»ÐµÐ½Ð¸Ñ Ð²Ð¸Ð´Ð½Ñ Ð¿Ð¾Ð²ÐµÑÑ
логина</strong> â z-index ÑоÑÑов поднÑÑ Ð²ÑÑе модалки вÑ
ода. Уведомление болÑÑе не пÑÑÑеÑÑÑ Ð·Ð° овеÑлеем.</li> <li data-num="733"><span class="changelog-tag changelog-tag--PERF" data-tag-alias="PERF">PERF</span> <strong>Webpack: ÑоÑнÑй vendor-Ñанк</strong> â вмеÑÑо «вÑÑ Ð¸Ð· bower_components» vendor-бандл ÑепеÑÑ ÑобиÑаеÑÑÑ Ð¸Ð· Ñвного ÑпиÑка пакеÑов. ÐÑедÑказÑемое кÑÑиÑование, никакиÑ
ÑÑÑпÑизов пÑи обновлении завиÑимоÑÑей.</li> </ul> <p><strong>Backend:</strong></p> <ul> <li data-num="734"><span class="changelog-tag changelog-tag--PERF" data-tag-alias="PERF">PERF</span> <strong>Multi-stage Docker</strong> â build tools (g++, make, python) болÑÑе не попадаÑÑ Ð² production-обÑаз. ÐонÑÐµÐ¹Ð½ÐµÑ ÑÑал легÑе и безопаÑнее.</li> <li data-num="735"><span class="changelog-tag changelog-tag--SEC" data-tag-alias="SEC">SEC</span> <strong>Флаг hasPassword в API</strong> â пÑоÑÐ¸Ð»Ñ Ð¿Ð¾Ð»ÑзоваÑÐµÐ»Ñ ÑепеÑÑ ÑообÑаеÑ, ÑÑÑановлен ли паÑолÑ. ФÑонÑенд болÑÑе не пÑÑаеÑÑÑ Ð·Ð°Ð³Ð»ÑнÑÑÑ Ð² <code>services.password.bcrypt</code> â даннÑе не ÑÑекаÑÑ Ð½Ð° клиенÑ.</li> </ul> </div> </details> <details class="changelog-section"> <summary class="changelog-summary"><span class="changelog-meta"><span class="changelog-meta__version">v9.53.0</span><span class="changelog-meta__date">11-03-2026</span></span><h2 id="v9530-11-03-2026--каÑÑинки-вÑегда-ÑеÑез-https-storybook-на-диеÑе-деплой-одной-командой">ÐаÑÑинки вÑегда ÑеÑез HTTPS, Storybook на диеÑе, деплой одной командой</h2></summary> <div class="changelog-section__body"> <p>ÐÑе изобÑÐ°Ð¶ÐµÐ½Ð¸Ñ Ð² ÑÑаÑÑÑÑ
ÑепеÑÑ Ð°Ð²ÑомаÑиÑеÑки загÑÑжаÑÑÑÑ Ð¿Ð¾ заÑиÑÑÐ½Ð½Ð¾Ð¼Ñ ÐºÐ°Ð½Ð°Ð»Ñ â даже еÑли авÑÐ¾Ñ Ð²ÑÑавил HTTP-ÑÑÑлкÑ. ÐизÑалÑÐ½Ð°Ñ Ð±Ð¸Ð±Ð»Ð¸Ð¾Ñека компоненÑов ÑÑала ÑиÑе и легÑе: 500+ инлайн-ÑÑилей вÑнеÑÐµÐ½Ñ Ð² пеÑеиÑполÑзÑемÑе клаÑÑÑ. РбÑкенд наÑÑилÑÑ Ð´ÐµÐ¿Ð»Ð¾Ð¸ÑÑÑÑ Ð¾Ð´Ð½Ð¸Ð¼ вÑзовом из ÑеÑминала â без CI-минÑÑ Ð¸ без магии.</p> <ul> <li data-num="716"><span class="changelog-tag changelog-tag--SEC" data-tag-alias="SEC">SEC</span> <strong>ÐаÑÑинки вÑегда ÑеÑез HTTPS</strong> â Cloudflare Worker ÑепеÑÑ Ð´Ð¾Ð±Ð°Ð²Ð»ÑÐµÑ <code>upgrade-insecure-requests</code> в заголовки безопаÑноÑÑи. ÐÑе изобÑажениÑ, ÑÑиÑÑÑ Ð¸ дÑÑгие ÑеÑÑÑÑÑ Ð²Ð½ÑÑÑи ÑÑаÑей авÑомаÑиÑеÑки загÑÑжаÑÑÑÑ Ð¿Ð¾ HTTPS, даже еÑли авÑÐ¾Ñ Ñказал HTTP-ÑÑÑлкÑ. ÐÑ Ð½Ð¸Ñего не замеÑиÑе â ÑÑо и еÑÑÑ ÑелÑ.</li> <li data-num="717"><span class="changelog-tag changelog-tag--PERF" data-tag-alias="PERF">PERF</span> <strong>ÐомменÑаÑии без гонок и ÑÑеÑек</strong> â пÑи бÑÑÑÑом пеÑеклÑÑении Ð¼ÐµÐ¶Ð´Ñ ÑÑаÑÑÑми ÑÑаÑÑй запÑÐ¾Ñ ÐºÐ¾Ð¼Ð¼ÐµÐ½ÑаÑиев оÑменÑеÑÑÑ Ð½Ð° леÑÑ. ÐикакиÑ
ÑанÑомнÑÑ
обновлений в покин
1ÑÑом ÑÑеде, никакиÑ
ÑÑеÑек памÑÑи пÑи навигаÑии.</li> <li data-num="718"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> <strong>Storybook: ÑиÑÑÑй код, бÑÑÑÑÐ°Ñ ÑбоÑка</strong> â 500+ инлайн-ÑÑилей во вÑеÑ
23 иÑÑоÑиÑÑ
Ð·Ð°Ð¼ÐµÐ½ÐµÐ½Ñ Ð½Ð° 200+ пеÑеиÑполÑзÑемÑÑ
<code>.sb-*</code> CSS-клаÑÑов. СбоÑка ÑÑкоÑилаÑÑ Ð²ÑÑое (30 â 10 Ñек), а ÑÑили ÑепеÑÑ Ð¼ÐµÐ½ÑÑÑÑÑ Ð² одном меÑÑе â вмеÑÑо поиÑка по деÑÑÑкам Ñайлов.</li> <li data-num="719"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> <strong>ÐивÑе Tiptap-иÑÑоÑии</strong> â два новÑÑ
каÑалога в Storybook: ÑаÑÑиÑÐµÐ½Ð¸Ñ ÑедакÑоÑа (ÑпоминаниÑ, ÑноÑки, ÑпойлеÑÑ, каÑÑоÑки ÑÑÑлок Ñ Ð½Ð°ÑÑоÑÑими мини-ÑедакÑоÑами) и модалки (комменÑаÑии, HTML-ÑедакÑоÑ, вÑÑавка видео). ÐÐ¸Ð·Ð°Ð¹Ð½ÐµÑ Ð²Ð¸Ð´Ð¸Ñ ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÐµÐ½ÑÑ ÐºÐ°Ðº на ладони, без запÑÑка вÑей плаÑÑоÑмÑ.</li> <li data-num="720"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>CSS оÑкÑÑÑой пÑбликаÑии</strong> â доÑабоÑÐ°Ð½Ñ ÑÑили обÑÑждений и ÑемаÑок. Ðкладки не ÑкаÑÑÑ, оÑÑÑÑÐ¿Ñ Ð¿ÑедÑказÑемÑ, заголовки не пеÑеопÑеделÑÑÑÑÑ ÑлÑÑайнÑми пÑавилами.</li> </ul> <p><strong>Backend:</strong></p> <ul> <li data-num="721"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> <strong>Ðеплой одной командой</strong> â <code>bash deploy.sh</code> ÑобиÑÐ°ÐµÑ Meteor, ÑÑÑÐ¾Ð¸Ñ Docker-обÑаз, пÑÑÐ¸Ñ Ð² Docker Hub и ÑазвоÑаÑÐ¸Ð²Ð°ÐµÑ Ð½Ð° ÑеÑвеÑе ÑеÑез SSH. <code>--dry-run</code> Ð¿Ð¾ÐºÐ°Ð¶ÐµÑ Ð¿Ð»Ð°Ð½, <code>--skip-build</code> Ð·Ð°Ð´ÐµÐ¿Ð»Ð¾Ð¸Ñ Ñже ÑобÑанное, <code>--setup</code> наÑÑÑÐ¾Ð¸Ñ ÑеÑÐ²ÐµÑ Ñ Ð½ÑлÑ. Ðез лимиÑов CI-минÑÑ, без ÑÑÑпÑизов.</li> <li data-num="722"><span class="changelog-tag changelog-tag--PERF" data-tag-alias="PERF">PERF</span> <strong>Docker: лимиÑÑ Ð¿Ð°Ð¼ÑÑи и акÑивнÑй healthcheck</strong> â конÑÐµÐ¹Ð½ÐµÑ Ð¾Ð³ÑаниÑен 2 ÐÐ, пÑи завиÑании â авÑомаÑиÑеÑкий пеÑезапÑÑк по <code>/api/v2/health</code>. CI-пайплайн болÑÑе не ждÑÑ ÑикÑиÑованнÑе 15 ÑекÑнд â опÑаÑÐ¸Ð²Ð°ÐµÑ Ð³Ð¾ÑовноÑÑÑ ÐºÐ°Ð¶Ð´Ñе 5 Ñек и ÑÑаÑÑÑеÑ, как ÑолÑко ÑеÑÐ²ÐµÑ Ð¾ÑвеÑил.</li> <li data-num="723"><span class="changelog-tag changelog-tag--SEC" data-tag-alias="SEC">SEC</span> <strong>Ðиалоги ÑÑали доÑÑÑпнее</strong> â ÑокÑÑ Ð½Ð° «ÐÑмена» пÑи оÑкÑÑÑии, закÑÑÑие по Escape, ÑиклиÑеÑкий Tab внÑÑÑи модалки, ARIA-ÑазмеÑка. ÐÐ»Ñ ÑеÑ
, кÑо ÑабоÑÐ°ÐµÑ Ñ ÐºÐ»Ð°Ð²Ð¸Ð°ÑÑÑÑ Ð¸Ð»Ð¸ ÑкÑинÑидеÑом â оÑÑÑимое ÑлÑÑÑение.</li> <li data-num="724"><span class="changelog-tag changelog-tag--SEC" data-tag-alias="SEC">SEC</span> <strong>ÐаÑиÑа загÑÑзки изобÑажений</strong> â новÑе ÑеÑÑÑ Ð½Ð° SSRF: пÑиваÑнÑе IP, внÑÑÑенние ÑеÑи, невалиднÑй base64, <code>javascript:</code>-пÑоÑокол и <code>ftp://</code> â вÑÑ Ð¾ÑклонÑеÑÑÑ. 84 новÑÑ
ÑÑÑоки ÑеÑÑов не дадÑÑ ÑегÑеÑÑиÑм пÑоÑкоÑиÑÑ.</li> <li data-num="725"><span class="changelog-tag changelog-tag--DX" data-tag-alias="DX">DEV</span> <strong>500+ ÑÑÑок ÑеÑÑов</strong> â иÑÑоÑÐ¸Ñ Ð²ÐµÑÑий (create/restore/delete/stats/auto), SSRF-заÑиÑа, smoke-ÑеÑÑÑ ÑÑонÑенд-маÑÑÑÑÑов. ÐаждÑй ÑÑенаÑий пÑовеÑÑÐµÑ Ð¸ happy path, и оÑибки â 401, 404, 400, 429.</li> </ul> </div> </details> <details class="changelog-section"> <summary class="changelog-summary"><span class="changelog-meta"><span class="changelog-meta__version">v9.52.0</span><span class="changelog-meta__date">11-03-2026</span></span><h2 id="v9520-11-03-2026--окно-вÑ
ода-леÑаеÑ-storybook-ÑаÑÑвÑл-админка-не-ÑеÑÑеÑ-пÑавки">Ðкно вÑ
ода леÑаеÑ, Storybook ÑаÑÑвÑл, админка не ÑеÑÑÐµÑ Ð¿Ñавки</h2></summary> <div class="changelog-section__body"> <p>ÐÑ
од на плаÑÑоÑÐ¼Ñ ÑÑал мгновеннÑм: модалка логина загÑÑжаеÑÑÑ ÑолÑко когда нÑжна, а код леÑÐ¸Ñ Ðº вам еÑÑ Ð´Ð¾ клика. ÐизÑалÑÐ½Ð°Ñ Ð±Ð¸Ð±Ð»Ð¸Ð¾Ñека компоненÑов вÑÑоÑла вдвое, обзавелаÑÑ Ð¶Ð¸Ð²Ñми Tiptap-ÑедакÑоÑами и Ð
1½Ð°ÑÑилаÑÑ Ð»Ð¾Ð²Ð¸ÑÑ Ð²Ð¸Ð·ÑалÑнÑе ÑегÑеÑÑии авÑомаÑиÑеÑки. Рв админке ÑепеÑÑ Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ ÑлÑÑайно поÑеÑÑÑÑ Ð½Ð°Ð±ÑаннÑй ÑекÑÑ â она пÑедÑпÑÐµÐ´Ð¸Ñ Ð¾ неÑоÑ
ÑанÑннÑÑ
изменениÑÑ
.</p> <ul> <li data-num="705"><span class="changelog-tag changelog-tag--PERF" data-tag-alias="PERF">PERF</span> <strong>ÐÑ
од без ожиданиÑ</strong> â модалка логина вÑнеÑена из ÑÑаÑÑового бандла и загÑÑжаеÑÑÑ Ð¿Ð¾ ÑÑебованиÑ. ÐеÑÐ²Ð°Ñ ÑÑÑаниÑа ÑÑала легÑе на ~6 KiB (brotli) â бÑÑÑÑее оÑÑиÑовка, бÑÑÑÑее инÑеÑакÑивноÑÑÑ. ÐадеÑжки пÑи клике неÑ: код пÑедзагÑÑжаеÑÑÑ Ð¿Ñи наведении кÑÑÑоÑа, ÑаÑ-конÑакÑе или ÑокÑÑе клавиаÑÑÑой.</li> <li data-num="706"><span class="changelog-tag changelog-tag--PERF" data-tag-alias="PERF">PERF</span> <strong>Ð£Ð¼Ð½Ð°Ñ Ð¿ÑедзагÑÑзка вÑеÑ
Ñазделов</strong> â пÑи наведении на лÑбÑÑ Ð²Ð½ÑÑÑеннÑÑ ÑÑÑÐ»ÐºÑ Ð¿Ð»Ð°ÑÑоÑма наÑÐ¸Ð½Ð°ÐµÑ Ð¿Ð¾Ð´Ð³ÑÑжаÑÑ ÐºÐ¾Ð´ бÑдÑÑей ÑÑÑаниÑÑ. Ðа медленнÑÑ
и мобилÑнÑÑ
ÑеÑÑÑ
(2G, Save-Data) пÑедзагÑÑзка деликаÑно пÑопÑÑкаеÑÑÑ. Ðа ноÑмалÑном Ñоединении â <code>requestIdleCallback</code>, без влиÑÐ½Ð¸Ñ Ð½Ð° оÑзÑвÑивоÑÑÑ.</li> <li data-num="707"><span class="changelog-tag changelog-tag--PERF" data-tag-alias="PERF">PERF</span> <strong>СеÑÐ²ÐµÑ Ð½ÐµÐ´Ð¾ÑÑÑпен? ÐлаÑÑоÑма ÑпÑавиÑÑÑ</strong> â новÑй circuit breaker в HTTP-Ñлое: пÑи 5+ подÑÑд оÑибкаÑ
ÑеÑвеÑа показÑваеÑÑÑ Ð¿Ð¾Ð½ÑÑнÑй ÑоÑÑ Â«Ð¡ÐµÑÐ²ÐµÑ Ð²Ñеменно недоÑÑÑпен» вмеÑÑо каÑкада пÑÑÑÑÑ
ÑкÑанов. ÐлаÑÑоÑма Ñама пингÑÐµÑ ÑеÑÐ²ÐµÑ ÐºÐ°Ð¶Ð´Ñе 15 ÑекÑнд и воÑÑÑÐ°Ð½Ð°Ð²Ð»Ð¸Ð²Ð°ÐµÑ ÑабоÑÑ Ð°Ð²ÑомаÑиÑеÑки.</li> <li data-num="708"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> <strong>Storybook: 23 иÑÑоÑии + визÑалÑнÑе ÑеÑÑÑ</strong> â два новÑÑ
каÑалога: Tiptap-ÑаÑÑиÑÐµÐ½Ð¸Ñ (25 ÑаÑÑиÑений Ñ Ð¶Ð¸Ð²Ñми ÑедакÑоÑами â ÑпоминаниÑ, ÑноÑки, ÑпойлеÑÑ, каÑÑоÑки ÑÑÑлок) и модалки ÑедакÑоÑа (комменÑаÑии, HTML-ÑедакÑоÑ, вÑÑавка видео). ÐÑе 21 ÑÑÑеÑÑвÑÑÑÐ°Ñ Ð¸ÑÑоÑÐ¸Ñ Ð¾Ð±Ð½Ð¾Ð²Ð»ÐµÐ½Ð° до единого ÑÑилÑ. ÐодклÑÑÑн <code>@storybook/test-runner</code> + <code>jest-image-snapshot</code> â ÑепеÑÑ ÐºÐ°Ð¶Ð´Ñй PR авÑомаÑиÑеÑки ÑÑÐ°Ð²Ð½Ð¸Ð²Ð°ÐµÑ ÑкÑинÑоÑÑ ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÐµÐ½Ñов Ñ ÑÑалоном и Ð»Ð¾Ð²Ð¸Ñ Ð²Ð¸Ð·ÑалÑнÑе поломки до деплоÑ.</li> <li data-num="709"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>CSS оÑкÑÑÑой пÑбликаÑии</strong> â доÑабоÑÐ°Ð½Ñ ÑÑили обÑÑждений и ÑемаÑок. Ðкладки не ÑкаÑÑÑ, оÑÑÑÑÐ¿Ñ Ð¿ÑедÑказÑемÑ.</li> </ul> <p><strong>Backend:</strong></p> <ul> <li data-num="710"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> <strong>ÐаÑиÑа Ð¾Ñ Ð¿Ð¾ÑеÑи пÑавок в админке</strong> â пÑи ÑлÑÑайном ÑÑ
оде Ñо ÑÑÑаниÑÑ ÑедакÑиÑÐ¾Ð²Ð°Ð½Ð¸Ñ (клик, закÑÑÑие вкладки, пеÑезагÑÑзка) поÑвлÑеÑÑÑ Ð¿ÑедÑпÑеждение «ÐÑÑÑ Ð½ÐµÑоÑ
ÑанÑннÑе изменениÑ». 20 минÑÑ Ð½Ð°Ð±Ñанного ÑекÑÑа болÑÑе не пÑопадÑÑ Ð¾Ñ Ð¾Ð´Ð½Ð¾Ð³Ð¾ неоÑÑоÑожного клика.</li> <li data-num="711"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> <strong>ÐиниаÑÑÑÑ Ð² ÑпиÑке маÑеÑиалов</strong> â в админке ÑепеÑÑ Ð²Ð¸Ð´Ð½Ð¾ Ð¾Ð±Ð»Ð¾Ð¶ÐºÑ ÑÑаÑÑи пÑÑмо в ÑаблиÑе, без оÑкÑÑÑÐ¸Ñ ÐºÐ°ÑÑоÑки. ÐÑÑÑÑее оÑиенÑиÑоваÑÑÑÑ, пÑоÑе наÑ
одиÑÑ Ð½ÑжнÑй маÑеÑиал.</li> <li data-num="712"><span class="changelog-tag changelog-tag--A11Y" data-tag-alias="A11Y">
1A11Y</span> <strong>Ðиалоги ÑÑали доÑÑÑпнее</strong> â ÑокÑÑ Ð½Ð° «ÐÑмена», закÑÑÑие по Escape, ÑиклиÑеÑкий Tab, ARIA-ÑазмеÑка. ÐÐ»Ñ ÑеÑ
, кÑо ÑабоÑÐ°ÐµÑ Ñ ÐºÐ»Ð°Ð²Ð¸Ð°ÑÑÑÑ Ð¸Ð»Ð¸ ÑкÑинÑидеÑом â замеÑное ÑлÑÑÑение.</li> <li data-num="713"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> <strong>Ðеплой одной командой</strong> â <code>deploy.sh</code> ÑобиÑÐ°ÐµÑ Meteor локалÑно, ÑÑÑÐ¾Ð¸Ñ Docker-обÑаз, Ð´ÐµÐ¿Ð»Ð¾Ð¸Ñ ÑеÑез SSH. ÐÑÑÑ <code>--dry-run</code>, <code>--skip-build</code>, <code>--setup</code> Ð´Ð»Ñ Ð½Ð°ÑÑÑойки ÑеÑвеÑа. Ðез лимиÑов CI-минÑÑ.</li> <li data-num="714"><span class="changelog-tag changelog-tag--PERF" data-tag-alias="PERF">PERF</span> <strong>Docker: лимиÑÑ Ð¿Ð°Ð¼ÑÑи и healthcheck</strong> â конÑейнеÑÑ Ð¾Ð³ÑаниÑÐµÐ½Ñ 2 GiB, пÑи завиÑании â авÑомаÑиÑеÑкий пеÑезапÑÑк по <code>/api/v2/health</code>. CI-пайплайн болÑÑе не ждÑÑ ÑикÑиÑованнÑе 15 ÑекÑнд â акÑивно опÑаÑÐ¸Ð²Ð°ÐµÑ Ð³Ð¾ÑовноÑÑÑ Ð¸ ÑÑаÑÑÑÐµÑ Ð±ÑÑÑÑее.</li> <li data-num="715"><span class="changelog-tag changelog-tag--DX" data-tag-alias="DX">DEV</span> <strong>ТеÑÑÑ: 430+ новÑÑ
ÑÑÑок</strong> â иÑÑоÑÐ¸Ñ Ð²ÐµÑÑий (create/restore/delete/stats), SSRF-заÑиÑа загÑÑзки изобÑажений, smoke-ÑеÑÑÑ ÑÑонÑенд-маÑÑÑÑÑов. РегÑеÑÑии ловÑÑÑÑ Ð´Ð¾ деплоÑ.</li> </ul> </div> </details> <details class="changelog-section"> <summary class="changelog-summary"><span class="changelog-meta"><span class="changelog-meta__version">v9.51.0</span><span class="changelog-meta__date">11-03-2026</span></span><h2 id="v9510-11-03-2026--мгновеннÑе-пеÑеÑ
одÑ-и-комменÑаÑии-без-гонок">ÐгновеннÑе пеÑеÑ
Ð¾Ð´Ñ Ð¸ комменÑаÑии без гонок</h2></summary> <div class="changelog-section__body"> <p>ÐлаÑÑоÑма наÑÑилаÑÑ Ð¿ÑедÑгадÑваÑÑ Ð²Ð°Ñи дейÑÑвиÑ: пока Ð²Ñ ÑолÑко наводиÑе кÑÑÑÐ¾Ñ Ð½Ð° ÑÑÑлкÑ, код ÑледÑÑÑей ÑÑÑаниÑÑ Ñже леÑÐ¸Ñ Ðº вам. РкомменÑаÑии под ÑÑаÑÑÑй болÑÑе не пÑÑаÑÑÑÑ Ð¿Ñи бÑÑÑÑÑÑ
дейÑÑвиÑÑ
â ÑÑаÑÑй запÑÐ¾Ñ Ð¾ÑменÑеÑÑÑ, Ð¿Ð¾Ð±ÐµÐ¶Ð´Ð°ÐµÑ Ð²Ñегда ÑамÑй Ñвежий.</p> <ul> <li data-num="702"><span class="changelog-tag changelog-tag--PERF" data-tag-alias="PERF">PERF</span> <strong>СÑÑаниÑÑ Ð³ÑÑзÑÑÑÑ Ð´Ð¾ клика</strong> â пÑи наведении на лÑбÑÑ ÑÑÑÐ»ÐºÑ Ð¿Ð»Ð°ÑÑоÑма наÑÐ¸Ð½Ð°ÐµÑ Ð¿ÑедзагÑÑÐ·ÐºÑ ÐºÐ¾Ð´Ð° бÑдÑÑей ÑÑÑаниÑÑ. РмоменÑÑ ÐºÐ»Ð¸ÐºÐ° вÑÑ Ñже гоÑово â пеÑеÑ
од оÑÑÑаеÑÑÑ Ð¼Ð³Ð½Ð¾Ð²ÐµÐ½Ð½Ñм. РабоÑÐ°ÐµÑ Ð½Ð° деÑкÑопе (hover), мобилÑнÑÑ
(touch) и пÑи навигаÑии Ñ ÐºÐ»Ð°Ð²Ð¸Ð°ÑÑÑÑ (Tab).</li> <li data-num="703"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>ÐомменÑаÑии без дÑблей и гонок</strong> â ÑанÑÑе бÑÑÑÑÐ°Ñ Ð¾ÑпÑавка двÑÑ
комменÑаÑиев подÑÑд поÑождала два паÑаллелÑнÑÑ
запÑоÑа, и ÑÑÑаÑевÑий мог пеÑезапиÑаÑÑ Ñвежий. ТепеÑÑ Ð¿ÑедÑдÑÑий HTTP-запÑÐ¾Ñ Ð¾ÑменÑеÑÑÑ Ð½Ð° леÑÑ, а UI вÑегда показÑÐ²Ð°ÐµÑ Ð°ÐºÑÑалÑное ÑоÑÑоÑние.</li> <li data-num="704"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>ЧиÑÑÑй ÑÑ
од Ñо ÑÑÑаниÑÑ</strong> â еÑли Ð²Ñ Ð¿ÐµÑеÑ
одиÑе на дÑÑгÑÑ ÑÑаÑÑÑ, пока комменÑаÑии еÑÑ Ð³ÑÑзÑÑÑÑ, запÑÐ¾Ñ Ð¾ÑменÑеÑÑÑ. ÐикакиÑ
ÑанÑомнÑÑ
обновлений в Ñже покин
1ÑÑом компоненÑе, никакиÑ
ÑÑеÑек памÑÑи.</li> </ul> </div> </details> <details class="changelog-section"> <summary class="changelog-summary"><span class="changelog-meta"><span class="changelog-meta__version">v9.50.0</span><span class="changelog-meta__date">11-03-2026</span></span><h2 id="v9500-11-03-2026--пÑоÑай-restangular-плаÑÑоÑма-ÑбÑоÑила-баллаÑÑ">ÐÑоÑай, Restangular: плаÑÑоÑма ÑбÑоÑила баллаÑÑ</h2></summary> <div class="changelog-section__body"> <p>Ðод капоÑом â кÑÑпнейÑÐ°Ñ ÑиÑÑка ÑеÑевого ÑÐ»Ð¾Ñ Ð·Ð° вÑÑ Ð²ÑемÑ: забÑоÑÐµÐ½Ð½Ð°Ñ Ð±Ð¸Ð±Ð»Ð¸Ð¾Ñека Restangular полноÑÑÑÑ Ñдалена, запÑоÑÑ Ðº ÑеÑвеÑÑ Ð»ÐµÑÑÑ Ð½Ð°Ð¿ÑÑмÑÑ, а бандл ÑÑал легÑе на деÑÑÑки килобайÑ.</p> <ul> <li data-num="696"><span class="changelog-tag changelog-tag--PERF" data-tag-alias="PERF">PERF</span> <strong>Restangular ÑдалÑн навÑегда</strong> â unmaintained-библиоÑека (поÑледнее обновление â 2016) вÑÑезана из bower-завиÑимоÑÑей, конÑигов и вÑего кода. ÐÑе 17 ÑеÑвиÑов давно ÑабоÑаÑÑ ÑеÑез лÑгкий apiClient повеÑÑ
ÑÑаÑного $http â ÑепеÑÑ Ð¼ÑÑÑвÑй код ÑбÑан и ÑоÑмалÑно. ÐинÑÑ ~25 KiB из бандла, минÑÑ Ð¾Ð´Ð½Ð° дÑÑа в supply chain.</li> <li data-num="697"><span class="changelog-tag changelog-tag--PERF" data-tag-alias="PERF">PERF</span> <strong>Lodash-Ñим вмеÑÑо полной библиоÑеки</strong> â вмеÑÑо 70 KiB полного lodash подклÑÑаеÑÑÑ Ð¼Ð¸Ð½Ð¸Ð¼Ð°Ð»ÑнÑй Ñим на 3 KiB Ñ 26 базовÑми ÑÑнкÑиÑми. ÐÐºÐ¾Ð½Ð¾Ð¼Ð¸Ñ ~30 KiB gzip â ÑÑÑаниÑÑ Ð³ÑÑзÑÑÑÑ Ð±ÑÑÑÑее, оÑобенно на мобилÑнÑÑ
.</li> <li data-num="698"><span class="changelog-tag changelog-tag--PERF" data-tag-alias="PERF">PERF</span> <strong>buildConfig: единÑй конÑÑÑÑкÑÐ¾Ñ Ð·Ð°Ð¿ÑоÑов</strong> â дÑблиÑÑÑÑийÑÑ ÐºÐ¾Ð´ наÑÑÑойки timeout/params в каждом меÑоде apiClient заменÑн обÑим Ñ
елпеÑом. ÐенÑÑе копипаÑÑÑ â менÑÑе ÑанÑов на ÑаÑÑинÑ
Ñон пÑи доÑабоÑкаÑ
.</li> <li data-num="699"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> <strong>isCanceled: ÑаÑпознавание оÑменÑннÑÑ
запÑоÑов</strong> â apiClient ÑепеÑÑ ÑÐ¼ÐµÐµÑ Ð¾ÑлиÑаÑÑ Ð¾ÑменÑннÑй запÑÐ¾Ñ Ð¾Ñ ÑеалÑной оÑибки. СеÑвиÑÑ Ð¼Ð¾Ð³ÑÑ ÑиÑ
о пÑоглоÑиÑÑ abort вмеÑÑо показа ложного toast «ÐÑибка ÑеÑвеÑа».</li> <li data-num="700"><span class="changelog-tag changelog-tag--DX" data-tag-alias="DX">DEV</span> <strong>restangular.js â http-interceptors.js</strong> â Ñайл Ñ HTTP-инÑеÑÑепÑоÑами (circuit breaker, auth-заголовки, мониÑоÑинг 401) пеÑеименован по ÑмÑÑлÑ. ÐовÑй ÑазÑабоÑÑик болÑÑе не Ð³Ð°Ð´Ð°ÐµÑ Â«Ð¼Ñ Ð¸ÑполÑзÑем Restangular или неÑ?» â оÑÐ²ÐµÑ Ð¾Ð´Ð½Ð¾Ð·Ð½Ð°ÑнÑй.</li> <li data-num="701"><span class="changelog-tag changelog-tag--DX" data-tag-alias="DX">DEV</span> <strong>ÐокÑменÑаÑÐ¸Ñ Ð² Ð½Ð¾Ð³Ñ Ñ ÐºÐ¾Ð´Ð¾Ð¼</strong> â Ð¾Ð±Ð½Ð¾Ð²Ð»ÐµÐ½Ñ ARCHITECTURE.md, CLAUDE.md, README, ROADMAP и плановÑе докÑменÑÑ (MOBILE_APP, REACT-UPGRADE). ÐиагÑамма аÑÑ
иÑекÑÑÑÑ ÑепеÑÑ Ð¿Ð¾ÐºÐ°Ð·ÑÐ²Ð°ÐµÑ ÑеалÑнÑй ÑÑек, а не пÑизÑак ÑдалÑнной завиÑимоÑÑи.</li> </ul> </div> </details> <details class="changelog-section"> <summary class="changelog-summary"><span class="changelog-meta"><span class="changelog-meta__version">v9.49.0</span><span class="changelog-meta__date">11-03-2026</span></span><h2 id="v9490-11-03-2026--ÑиналÑнаÑ-полиÑовка-пеÑед-болÑÑим-Ñелизом">ФиналÑÐ½Ð°Ñ Ð¿Ð¾Ð»Ð¸Ñовка пеÑед болÑÑим Ñелизом</h2></summary> <div class="changelog-section__body"> <p>РеÑÐµÐ½Ñ Ð´ÐµÑÑÑки багов, пÑÐ¾Ð²ÐµÐ´ÐµÐ½Ñ Ð¼Ð°ÑÑÑабнÑе опÑимизаÑии. ÐлаÑÑоÑма ÑÑала ÑÑÑойÑивее к ÑбоÑм ÑеÑи, админка â безопаÑнее, а лаги, невидимÑе ÑÑеÑки памÑÑи и гонки ÑоÑÑоÑний ÑÑли в пÑоÑлое.</p> <ul> <li data-num="681"><span class="changelog-tag changelog-tag--SEC" data-tag-alias="SEC">SEC</span> <strong>Stripe под заÑиÑой Ð¾Ñ Ñпама</strong> â ÑÐ½Ð´Ð¿Ð¾Ð¸Ð½Ñ ÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ Ð¿Ð»Ð°ÑÑжнÑÑ
ÑеÑÑий ÑепеÑÑ Ð¾Ð³ÑаниÑен по IP (5 запÑоÑов в минÑÑÑ). ÐлоÑмÑÑленник болÑÑе не Ð¼Ð¾Ð¶ÐµÑ Ð·Ð°Ð±Ð¸ÑÑ Ð¾ÑеÑÐµÐ´Ñ ÑейковÑми ÑеÑÑиÑ
1ми и помеÑаÑÑ ÑеалÑнÑм доноÑам.</li> <li data-num="682"><span class="changelog-tag changelog-tag--SEC" data-tag-alias="SEC">SEC</span> <strong>ÐÑиглаÑÐµÐ½Ð¸Ñ Ð±ÐµÐ· гонок</strong> â пÑинÑÑие и оÑклонение инвайÑов ÑепеÑÑ Ð°ÑомаÑное: еÑли Ð²Ñ Ð½Ð°Ð¶Ð°Ð»Ð¸ «ÐÑинÑÑÑ» в двÑÑ
вкладкаÑ
одновÑеменно, вÑоÑой запÑÐ¾Ñ Ð¿Ð¾Ð»ÑÑÐ¸Ñ 409 вмеÑÑо дÑблиÑÐ¾Ð²Ð°Ð½Ð¸Ñ Ð´Ð¾ÑÑÑпа.</li> <li data-num="683"><span class="changelog-tag changelog-tag--SEC" data-tag-alias="SEC">SEC</span> <strong>Удаление полÑзоваÑелей Ñ Ð¿Ð¾Ð»Ð½Ð¾Ð¹ оÑиÑÑкой</strong> â новÑй диалог в админке: вÑбиÑаеÑе, ÑÑо делаÑÑ Ñ ÐºÐ¾Ð¼Ð¼ÐµÐ½ÑаÑиÑми, пÑбликаÑиÑми и ÑообÑениÑми. ÐаннÑе ÑдалÑÑÑÑÑ ÐºÐ°Ñкадом, но еÑли лÑбой Ñаг пÑовалиÑÑÑ â аккаÑÐ½Ñ Ð¾ÑÑанеÑÑÑ Ð½ÐµÑÑонÑÑÑм. ЦелоÑÑноÑÑÑ Ð´Ð°Ð½Ð½ÑÑ
пÑежде вÑего.</li> <li data-num="684"><span class="changelog-tag changelog-tag--SEC" data-tag-alias="SEC">SEC</span> <strong>ÐинимÑм 3 админиÑÑÑаÑоÑа</strong> â нелÑÐ·Ñ ÑлÑÑайно ÑнÑÑÑ ÑÐ¾Ð»Ñ Ð°Ð´Ð¼Ð¸Ð½Ð°, еÑли ÑÑо оÑÑÐ°Ð²Ð¸Ñ Ð¿Ð»Ð°ÑÑоÑÐ¼Ñ Ð±ÐµÐ· доÑÑаÑоÑного ÑиÑла ÑпÑавлÑÑÑиÑ
.</li> <li data-num="685"><span class="changelog-tag changelog-tag--PERF" data-tag-alias="PERF">PERF</span> <strong>ÐовÑоÑÐ½Ð°Ñ Ð·Ð°Ð³ÑÑзка пÑи Ñбое ÑеÑи</strong> â еÑли кÑÑок инÑеÑÑейÑа не пÑогÑÑзилÑÑ (обÑÑв ÑоединениÑ, деплой новой веÑÑии), плаÑÑоÑма Ñама повÑоÑÐ¸Ñ Ð¿Ð¾Ð¿ÑÑÐºÑ Ð´Ð²Ð°Ð¶Ð´Ñ Ñ Ð½Ð°ÑаÑÑаÑÑей паÑзой. Реже ÑвидиÑе белÑй ÑкÑан пÑи пеÑеÑ
оде Ð¼ÐµÐ¶Ð´Ñ Ñазделами.</li> <li data-num="686"><span class="changelog-tag changelog-tag--PERF" data-tag-alias="PERF">PERF</span> <strong>ÐенÑÑе дÑблей в памÑÑи</strong> â обÑие модÑли (донаÑÑ, комменÑаÑии, подпиÑки) ÑобÑÐ°Ð½Ñ Ð² оÑделÑнÑй Ñанк и загÑÑжаÑÑÑÑ Ð¾Ð´Ð¸Ð½ Ñаз, даже еÑли нÑÐ¶Ð½Ñ Ð½ÐµÑколÑким ÑÑÑаниÑам.</li> <li data-num="687"><span class="changelog-tag changelog-tag--PERF" data-tag-alias="PERF">PERF</span> <strong>ÐÑивÑзки компоненÑов: <code>=</code> â <code><</code></strong> â блок комменÑаÑиев под ÑÑаÑÑÑй пеÑеÑÑл на одноÑÑоÑоннÑÑ Ð¿ÑивÑÐ·ÐºÑ Ð´Ð°Ð½Ð½ÑÑ
. ÐенÑÑе лиÑниÑ
пеÑеÑаÑÑÑÑов â бÑÑÑÑее оÑклик.</li> <li data-num="688"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>Ð¡Ð»Ð°Ð¹Ð´ÐµÑ Â«ÐоÑ
ожие маÑеÑиалÑ» болÑÑе не ÑеÑÑÑ</strong> â пÑи пеÑеÑ
оде на дÑÑгÑÑ ÑÑÑаниÑÑ ÑÐ»Ð°Ð¹Ð´ÐµÑ ÐºÐ¾ÑÑекÑно ÑниÑÑожаеÑÑÑ. РанÑÑе оÑÑавалÑÑ Ð² памÑÑи â ÑепеÑÑ ÑиÑÑо.</li> <li data-num="689"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>ÐÑбли в «ÐÑкÑÑÑÑве»</strong> â пÑи пагинаÑии в Ñазделе Expo ÑлеменÑÑ Ð±Ð¾Ð»ÑÑе не повÑоÑÑÑÑÑÑ, даже еÑли ÑеÑÐ²ÐµÑ Ð²ÐµÑнÑл пеÑеÑекаÑÑиеÑÑ ÑезÑлÑÑаÑÑ.</li> <li data-num="690"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>ÐонÑÐ»Ð¸ÐºÑ Ð¸Ð½Ð²Ð°Ð¹Ñов â понÑÑÐ½Ð°Ñ Ð¾Ñибка</strong> â еÑли ÑÑаÑÑÑ Ð¿ÑиглаÑÐµÐ½Ð¸Ñ Ñже изменилÑÑ Ð² дÑÑгом окне, Ð²Ñ ÑвидиÑе «СÑаÑÑÑ Ð¿ÑиглаÑÐµÐ½Ð¸Ñ Ñже изменилÑÑ» вмеÑÑо загадоÑного ÑбоÑ.</li> </ul> <p><strong>Backend:</strong></p> <ul> <li data-num="691"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> <strong>Sentry на ÑеÑвеÑе</strong> â ÑеÑвеÑнÑе оÑибки ÑепеÑÑ Ð»Ð¾Ð²ÑÑÑÑ Ð¸ гÑÑппиÑÑÑÑÑÑ Ð² одном даÑбоÑде вмеÑÑе Ñ ÑÑонÑендом. ÐÐ¾Ð»Ð½Ð°Ñ ÐºÐ°ÑÑина здоÑовÑÑ Ð¿Ð»Ð°ÑÑоÑÐ¼Ñ Ð² одном окне.</li> <li data-num="692"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> <strong>ÐагинаÑÐ¸Ñ Ð°Ð²ÑоÑов и подпиÑок</strong> â пÑбликаÑии <code>authorsForCard</code> и <code>subscriptions</code> ÑепеÑÑ Ð¿Ð¾Ð´Ð´ÐµÑживаÑÑ <code>limit</code>/<code>skip</code>. СÑÑаниÑÑ Ñ Ð´Ð»Ð¸Ð½Ð½Ñми ÑпиÑками авÑоÑов и подпиÑок загÑÑжаÑÑÑÑ Ð±ÑÑÑÑее и не ÑÑнÑÑ Ð²ÑÑ Ñазом.</li> <li data-num="693"><span class="changelog-tag changelog-tag--SEC" data-tag-alias="SEC">SEC</span> <strong>CSP Ð´Ð»Ñ ÑаÑÑÑлок</strong> â ÑÑÑаниÑÑ Ð¿ÑевÑÑ, аÑÑ
ива и оÑпиÑки Ð¾Ñ ÑаÑÑÑлки полÑÑили ÑÑÑогие заголовки безопаÑноÑÑи: <code>script-src 'none'</code>, <code>sandbox</code>, <code>no-referrer</code>. ÐÑедоноÑÐ½Ð°Ñ Ð²ÑÑавка в пиÑÑмо не пÑобÑÑÑÑÑ.</li> <li data-num="694"><span class="changelog-tag changelog-tag--DX" data-tag-alias="DX">DEV</span> <strong>Rollbar ÑдалÑн</strong> â заменÑн на Sentry во вÑеÑ
ÑоÑкаÑ
: <code>$exceptionHandler</code>, логин/логаÑÑ, обÑабоÑка оÑибок. Ðдна завиÑимоÑÑÑ Ð¼ÐµÐ½ÑÑе, один инÑÑÑÑÐ¼ÐµÐ½Ñ Ð¼Ð¾Ð½Ð¸ÑоÑинга вмеÑÑо двÑÑ
.</li> <li data-num="695"><span class="changelog-tag changelog-tag--DX" data-tag-alias="DX">DEV</span> <strong>ÐнÑегÑаÑионнÑе ÑеÑÑÑ</strong> â 5 новÑÑ
набоÑов: полÑзоваÑели, коллабоÑаÑиÑ, загÑÑзка внеÑниÑ
изобÑажений, иÑÑоÑÐ¸Ñ Ð²ÐµÑÑий, оÑмена ÑаÑÑÑлок. Ðовим ÑегÑеÑÑии до деплоÑ.</li> </ul> </div> </details> <details class="changelog-section"> <summary class="changelog-summary"><span class="changelog-meta"><span class="changelog-meta__version">v9.48.0</span><span class="changelog-meta__date">11-03-2026</span></span>
1<h2 id="v9480-11-03-2026--ÑÑоÑож-на-ваÑ
Ñе-мониÑоÑинг-линÑинг-поÑÑдок">СÑоÑож на ваÑ
Ñе: мониÑоÑинг, линÑинг, поÑÑдок</h2></summary> <div class="changelog-section__body"> <p>ÐлаÑÑоÑма полÑÑила глаза в пÑодакÑене, закÑÑла Ð»Ð°Ð·ÐµÐ¹ÐºÑ Ð² ÑеÑевой заÑиÑе и навела поÑÑдок в маÑÑÑÑÑаÑ
â ÑепеÑÑ ÑбоÑка Ñама Ð»Ð¾Ð²Ð¸Ñ ÑаÑÑинÑ
Ñон, а ÑÑаÑÑе даннÑе не копÑÑÑÑ Ð²ÐµÑно.</p> <ul> <li data-num="675"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> <strong>Sentry: оÑибки болÑÑе не ÑÑ
одÑÑ Ð² пÑÑÑоÑÑ</strong> â пÑодакÑн-мониÑоÑинг ÑеÑез <code>@sentry/browser</code> Ñ Ð°Ð²ÑозагÑÑзкой source maps в CI. ÐаждÑй кÑÐ°Ñ Ð¿ÑевÑаÑаеÑÑÑ Ð² ÑиÑаемÑй ÑÑекÑÑÐµÐ¹Ñ Ñ Ð½Ð¾Ð¼ÐµÑом веÑÑии â Ñиним до Ñого, как полÑзоваÑÐµÐ»Ñ Ð½Ð°Ð¿Ð¸ÑÐµÑ Ð² поддеÑжкÑ.</li> <li data-num="676"><span class="changelog-tag changelog-tag--SEC" data-tag-alias="SEC">SEC</span> <strong>IPv6: закÑÑÑ Ð¾Ð±Ñ
од SSRF-заÑиÑÑ</strong> â адÑеÑа Ñ Ð²ÐµÐ´ÑÑими нÑлÑми (<code>2001:0db8::1</code>) ÑанÑÑе пÑоÑкакивали мимо ÑилÑÑÑа пÑиваÑнÑÑ
диапазонов. Ðобавлена ноÑмализаÑÐ¸Ñ ÑегменÑов и два Ñанее пÑопÑÑеннÑÑ
диапазона (Teredo, Discard). ÐагÑÑзка внеÑниÑ
каÑÑинок и OG-пÑевÑÑ ÑепеÑÑ Ð±ÐµÐ·Ð¾Ð¿Ð°Ñна Ð´Ð»Ñ Ð»Ñбого ÑоÑмаÑа IPv6.</li> <li data-num="677"><span class="changelog-tag changelog-tag--SEC" data-tag-alias="SEC">SEC</span> <strong>RSS-конÑÐµÐ½Ñ Ð¿Ð¾Ð´ÐºÐ°ÑÑов</strong> â Ñ
ÑÑпкий regex Ð´Ð»Ñ <code><style></code> Ñегов пÑопÑÑкал вÑедоноÑное ÑодеÑжимое Ñ Ñимволом <code><</code> внÑÑÑи. ÐÑпÑавлен на надÑжнÑй паÑÑеÑн; лиÑнÑÑ regex-ÑиÑÑка ÑбÑана â DOMPurify и Ñак ÑпÑавлÑеÑÑÑ.</li> <li data-num="678"><span class="changelog-tag changelog-tag--DX" data-tag-alias="DX">DEV</span> <strong>ÐдинÑй ÑееÑÑÑ Ð¼Ð°ÑÑÑÑÑов</strong> â 47 пÑÑей плаÑÑоÑÐ¼Ñ ÑепеÑÑ Ð¿ÑовеÑÑÑÑÑÑ Ð°Ð²ÑомаÑиÑеÑки: ÑкÑÐ¸Ð¿Ñ <code>validate:known-paths</code> ÑвеÑÑÐµÑ ÐºÐ°Ð½Ð¾Ð½Ð¸ÑеÑкий ÑпиÑок Ñ Cloudflare Worker пÑи каждой ÑбоÑке. ÐабÑл добавиÑÑ Ð¼Ð°ÑÑÑÑÑ Ð² Worker? СбоÑка ÑпадÑÑ Ñ Ð¿Ð¾Ð½ÑÑной оÑибкой â не полÑзоваÑÐµÐ»Ñ Ð½Ð° пÑоде.</li> <li data-num="679"><span class="changelog-tag changelog-tag--DX" data-tag-alias="DX">DEV</span> <strong>TTL-Ð¸Ð½Ð´ÐµÐºÑ Ð´Ð»Ñ ÑнапÑоÑов ÑаÑÑÑлки</strong> â ÑÑаÑÑе аÑдиÑоÑнÑе даннÑе кампаний ÑдалÑÑÑÑÑ Ð°Ð²ÑомаÑиÑеÑки ÑеÑез 30 дней. MongoDB болÑÑе не ÑаздÑваеÑÑÑ Ð¾Ñ Ð¾Ð´Ð½Ð¾ÑазовÑÑ
ÑнапÑоÑов.</li> <li data-num="680"><span class="changelog-tag changelog-tag--DX" data-tag-alias="DX">DEV</span> <strong>Prettier 3</strong> â обновление Ñ 2.6 до 3.8. ÐÑе ÑÐ°Ð¹Ð»Ñ Ð¿ÑоÑ
одÑÑ Ð»Ð¸Ð½Ñинг. ФоÑмаÑиÑование ÑÑало бÑÑÑÑее и ÑоÑнее.</li> </ul> </div> </details> <details class="changelog-section"> <summary class="changelog-summary"><span class="changelog-meta"><span class="changelog-meta__version">v9.47.0</span><span class="changelog-meta__date">11-03-2026</span></span><h2 id="v9470-11-03-2026--пÑиглаÑениÑ-Ñ-заÑиÑой-и-ÑÑоком-годноÑÑи">ÐÑиглаÑÐµÐ½Ð¸Ñ Ñ Ð·Ð°ÑиÑой и ÑÑоком годноÑÑи</h2></summary> <div class="changelog-section__body"> <p>ÐÑиглаÑÐµÐ½Ð¸Ñ Ðº ÑовмеÑÑÐ½Ð¾Ð¼Ñ ÑедакÑиÑÐ¾Ð²Ð°Ð½Ð¸Ñ ÑÑали безопаÑнее: иÑÑÑкÑие болÑÑе не даÑÑ ÑиÑ
ий доÑÑÑп к ÑÑÐ¶Ð¾Ð¼Ñ ÑеÑновикÑ, а вмеÑÑо глÑÑ
ой оÑибки â понÑÑнÑй ÑкÑан Ñ ÐºÐ½Ð¾Ð¿ÐºÐ¾Ð¹ «ÐолÑÑиÑÑ Ð´Ð¾ÑÑÑп».</p> <ul> <li data-num="673"><span class="changelog-tag changelog-tag--SEC" data-tag-alias="SEC">SEC</span> <strong>ÐÑÑÑкÑие пÑиглаÑÐµÐ½Ð¸Ñ Ð±Ð¾Ð»ÑÑе не пÑопÑÑкаÑÑ</strong> â ÑанÑÑе pending-Ð¸Ð½Ð²Ð°Ð¹Ñ Ñ Ð¿ÑоÑÑоÑеннÑм <code>expiresAt</code> вÑÑ ÐµÑÑ Ð´Ð°Ð²Ð°Ð» доÑÑÑп к ÑедакÑоÑÑ ÑеÑез пÑÑмой API-вÑзов. ТепеÑÑ ÑеÑÐ²ÐµÑ Ð¿ÑовеÑÑÐµÑ ÑÑок в ÑеÑÑÑÑÑ
ÑоÑкаÑ
доÑÑÑпа и в ÑндпоинÑе accept/decline â пÑоÑÑоÑенное пÑиглаÑение возвÑаÑÐ°ÐµÑ 410 Gone.</li> <li data-num="674"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> <strong>ÐкÑан «ÐÑиглаÑение иÑÑекло»</strong> â пÑи попÑÑке пÑинÑÑÑ Ð¸ÑÑÑкÑий Ð¸Ð½Ð²Ð°Ð¹Ñ Ð¸Ð· Ñведомлений вмеÑÑо невнÑÑной оÑибки Ð²Ñ ÑвидиÑе понÑÑное ÑообÑение и ÐºÐ½Ð¾Ð¿ÐºÑ Â«ÐолÑÑиÑÑ Ð´Ð¾ÑÑÑп», коÑоÑÐ°Ñ ÑÑÐ°Ð·Ñ Ð¾ÑкÑÐ¾ÐµÑ ÑоÑÐ¼Ñ Ð·Ð°Ð¿ÑоÑа нового пÑиглаÑÐµÐ½Ð¸Ñ Ñ Ð°Ð²ÑоÑа.</li> </ul> </div> </details> <details class="changelog-section"> <summary class="changelog-summary"><span class="changelog-meta"><span class="changelog-meta__version">v9.46.0</span><span class="changelog-meta__date">11-03-2026</span></span><h2 id="v9460-11-03-2026--живÑе-комменÑаÑии-и-лÑгкий-ÑедакÑоÑ">ÐивÑе комменÑаÑии и лÑгкий ÑедакÑоÑ</h2></summary> <div class="changelog-section__body"> <p>РедакÑÐ¾Ñ ÑÑал оÑзÑвÑивее: ÑÑили болÑÑе не воÑÑÑ Ð´ÑÑг Ñ Ð´ÑÑгом, длиннÑе ÑпиÑки комменÑаÑиев не ÑоÑмозÑÑ, а ÑÑжие комменÑаÑии поÑвл
1ÑÑÑÑÑ Ð¼Ð³Ð½Ð¾Ð²ÐµÐ½Ð½Ð¾ â без пеÑезагÑÑзки ÑÑÑаниÑÑ.</p> <ul> <li data-num="670"><span class="changelog-tag changelog-tag--PERF" data-tag-alias="PERF">PERF</span> <strong>CSS без Ð²Ð¾Ð¹Ð½Ñ <code>!important</code></strong> â пÑавило ÑÑиÑÑов Ð´Ð»Ñ ÑедакÑоÑа пеÑеведено на <code>:where()</code> Ñ Ð½Ñлевой ÑпеÑиÑиÑноÑÑÑÑ. УбÑÐ°Ð½Ñ 10+ ÑоÑеÑнÑÑ
<code>!important</code>-Ñ
аков в ÑÑилÑÑ
ÑиÑаÑ, ÑноÑок, каÑÑоÑек ÑÑÑлок, авÑокомплиÑа и ÑÑлÑипов. СÑили ÑÑали пÑедÑказÑемÑми â лÑбой ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÐµÐ½Ñ Ð²Ð½ÑÑÑи ÑедакÑоÑа задаÑÑ Ñвой ÑÐ°Ð·Ð¼ÐµÑ Ð±ÐµÐ· коÑÑÑлей.</li> <li data-num="671"><span class="changelog-tag changelog-tag--PERF" data-tag-alias="PERF">PERF</span> <strong>ÐагинаÑÐ¸Ñ Ð² боковой панели</strong> â пÑи 50+ комменÑаÑиÑÑ
или пÑавкаÑ
в ÑедакÑоÑе DOM болÑÑе не ÑаздÑваеÑÑÑ: показÑваÑÑÑÑ Ð¿ÐµÑвÑе 20 ÑлеменÑов, оÑÑалÑнÑе подгÑÑжаÑÑÑÑ Ð¿Ð¾ кнопке «ÐоказаÑÑ ÐµÑÑ». ÐавигаÑÐ¸Ñ Ð¿Ð¾ ÐºÐ»Ð¸ÐºÑ Ð½Ð° комменÑаÑий в ÑекÑÑе авÑомаÑиÑеÑки ÑаÑкÑÑÐ²Ð°ÐµÑ Ð½ÑжнÑÑ ÑÑÑаниÑÑ.</li> <li data-num="672"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> <strong>ÐомменÑаÑии в ÑеалÑном вÑемени</strong> â ÑепеÑÑ, когда ÑоавÑÐ¾Ñ Ð´Ð¾Ð±Ð°Ð²Ð»ÑеÑ, ÑедакÑиÑÑÐµÑ Ð¸Ð»Ð¸ пÑÐ¸Ð½Ð¸Ð¼Ð°ÐµÑ ÐºÐ¾Ð¼Ð¼ÐµÐ½ÑаÑий, Ð²Ñ Ð²Ð¸Ð´Ð¸Ñе ÑÑо мгновенно. ÐаннÑе леÑÑÑ ÑеÑез ÑÐ¾Ñ Ð¶Ðµ WebSocket, ÑÑо и ÑовмеÑÑное ÑедакÑиÑование â никакого polling, никакиÑ
задеÑжек.</li> </ul> </div> </details> <details class="changelog-section"> <summary class="changelog-summary"><span class="changelog-meta"><span class="changelog-meta__version">v9.45.0</span><span class="changelog-meta__date">11-03-2026</span></span><h2 id="v9450-11-03-2026--легÑе-на-ÑÑаÑÑе-Ñмнее-на-кÑаÑ">ÐегÑе на ÑÑаÑÑе, Ñмнее на кÑаÑ</h2></summary> <div class="changelog-section__body"> <p>ÐлаÑÑоÑма ÑÑала бÑÑÑÑее Ð´Ð»Ñ ÑиÑаÑелей и Ñдобнее Ð´Ð»Ñ ÑазÑабоÑки: ÑÑжÑлÑе модÑли гÑÑзÑÑÑÑ ÑолÑко когда нÑжнÑ, а 4300-ÑÑÑоÑнÑй Ð¼Ð¾Ð½Ð¾Ð»Ð¸Ñ Cloudflare Worker ÑазобÑан на 9 аккÑÑаÑнÑÑ
модÑлей.</p> <ul> <li data-num="666"><span class="changelog-tag changelog-tag--PERF" data-tag-alias="PERF">PERF</span> <strong>ÐÐµÐ½Ð¸Ð²Ð°Ñ Ð·Ð°Ð³ÑÑзка модалок и ÑеÑвиÑов</strong> â подпиÑки, донаÑÑ Ð¸ ÑеÑÐ²Ð¸Ñ ÐºÐ¾Ð¼Ð¼ÐµÐ½ÑаÑиев болÑÑе не ÑоÑмозÑÑ Ð¿ÐµÑвÑй ÑкÑан: они подгÑÑжаÑÑÑÑ Ð¿Ð¾ ÑÑебованиÑ. ÐаÑалÑнÑй бандл поÑ
Ñдел, ÑÑÑаниÑа оÑÑиÑовÑваеÑÑÑ Ð±ÑÑÑÑее.</li> <li data-num="667"><span class="changelog-tag changelog-tag--PERF" data-tag-alias="PERF">PERF</span> <strong>Ðкно вÑ
ода не блокиÑÑÐµÑ ÑендеÑ</strong> â loginModal ÑепеÑÑ ÑоздаÑÑÑÑ Ð² DOM ÑолÑко пÑи оÑкÑÑÑии (ng-if вмеÑÑо ng-show). ÐенÑÑе ÑабоÑÑ Ð¿Ñи загÑÑзке â бÑÑÑÑее инÑеÑакÑивноÑÑÑ.</li> <li data-num="668"><span class="changelog-tag changelog-tag--DX" data-tag-alias="DX">DEV</span> <strong>Worker: из монолиÑа â в модÑли</strong> â единÑй Ñайл на 4300 ÑÑÑок ÑÐ°Ð·Ð±Ð¸Ñ Ð½Ð° 9 ES-модÑлей (config, api, payments, html-utils, json-ld, rewriters, proxy, handlers, index). СбоÑка ÑеÑез esbuild Ñ tree-shaking: вÑÑ
одной Ñайл ÑжалÑÑ Ð½Ð° 37%. ÐавигаÑÐ¸Ñ Ð¿Ð¾ кодÑ, оÑладка и ÑевÑÑ ÑÑали в ÑÐ°Ð·Ñ Ð¿ÑоÑе.</li> <li data-num="669"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>Slug-ÑкÑÑÑакÑоÑÑ Ð² Worker</strong> â ÑбÑано оÑибоÑное декодиÑование URL пеÑед ÑазбоÑом пÑÑи. Символ <code>%2F</code> в slug болÑÑе не Ð»Ð¾Ð¼Ð°ÐµÑ Ð¼Ð°ÑÑÑÑÑизаÑÐ¸Ñ â ÑÑаÑÑи Ñ Ð½ÐµÐ¾Ð±ÑÑнÑми адÑеÑами оÑкÑÑваÑÑÑÑ ÐºÐ¾ÑÑекÑно.</li> </ul> </div> </details> <details class="changelog-section"> <summary class="changelog-summary"><span class="changelog-meta"><span class="changelog-meta__version">v9.44.0</span><span class="changelog-meta__date">11-03-2026</span></span><h2 id="v9440-11-03-2026--пÑоÑай-restangular-ÑÑндаменÑ-ÑÑал-легÑе-и-бÑÑÑÑее">ÐÑоÑай, Restangular: ÑÑÐ½Ð´Ð°Ð¼ÐµÐ½Ñ ÑÑал легÑе и бÑÑÑÑее</h2></summary> <div class="changelog-section__body"> <p>ÐÑÑпнейÑÐ°Ñ ÑеÑ
ниÑеÑÐºÐ°Ñ ÑеÑоÑма года: плаÑÑоÑма избавилаÑÑ Ð¾Ñ Ð·Ð°Ð±ÑоÑенной библиоÑеки Restangular, пеÑеÑла на наÑивнÑе вÑÐ·Ð¾Ð²Ñ Ð¸ ÑбÑоÑила лиÑний веÑ. 52 Ñайла пеÑепиÑÐ°Ð½Ñ â ни одна кнопка не поÑÑÑадала.</p> <ul> <li data-num="662"><span class="changelog-tag changelog-tag--PERF" data-tag-alias="PERF">PERF</span> <strong>Restangular ÑдалÑн</strong> â заменÑн лÑгким apiClient повеÑÑ
ÑÑаÑного $http. Ðдна забÑоÑÐµÐ½Ð½Ð°Ñ Ð±Ð¸Ð±Ð»Ð¸Ð¾Ñека менÑÑе в бандле, запÑоÑÑ Ðº ÑеÑвеÑÑ Ð»ÐµÑÑÑ Ð½Ð°Ð¿ÑÑмÑÑ â без лиÑниÑ
обÑÑÑок и конвеÑÑаÑий.</li> <li data-num="663"><span class="changelog-tag changelog-tag--PERF" data-tag-alias="PERF">PERF</span> <strong>Lodash: наÑивнÑе аналоги</strong>
1 â <code>shuffle</code>, <code>debounce</code>, <code>find</code>, <code>filter</code>, <code>map</code> и еÑÑ Ð´ÐµÑÑÑок lodash-ÑÑнкÑий Ð·Ð°Ð¼ÐµÐ½ÐµÐ½Ñ Ð½Ð° ÑиÑÑÑй JavaScript в 25+ ÑайлаÑ
. ÐенÑÑе кода â бÑÑÑÑее ÑÑаÑÑ.</li> <li data-num="664"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>Circuit breaker ÑоÑ
ÑанÑн</strong> â пÑи недоÑÑÑпноÑÑи ÑеÑвеÑа ÑÐ°Ð¹Ñ Ð¿Ð¾-пÑÐµÐ¶Ð½ÐµÐ¼Ñ Ð¿Ð¾ÐºÐ°Ð¶ÐµÑ Ð¿Ð¾Ð½ÑÑнÑй ÑоÑÑ Ð¸ пеÑеклÑÑиÑÑÑ Ð½Ð° кеÑ, а ÑоновÑй ping веÑнÑÑ Ð²ÑÑ Ð¾Ð±ÑаÑно пÑи воÑÑÑановлении.</li> <li data-num="665"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>ÐвÑоÑизаÑÐ¸Ñ Ð±ÐµÐ· Ñвов</strong> â auth-заголовки ÑепеÑÑ Ð¸Ð½Ð¶ÐµÐºÑиÑÑÑÑÑÑ ÐµÐ´Ð¸Ð½Ñм $http-инÑеÑÑепÑоÑом во вÑе запÑоÑÑ: ÑедакÑоÑ, комменÑаÑии, загÑÑзка каÑÑинок â без ÑÑÑной пеÑедаÑи Ñокенов.</li> </ul> </div> </details> <details class="changelog-section"> <summary class="changelog-summary"><span class="changelog-meta"><span class="changelog-meta__version">v9.43.0</span><span class="changelog-meta__date">11-03-2026</span></span><h2 id="v9430-11-03-2026--storybook-пеÑоÑниÑа-и-поÑÑдок">Storybook: пеÑоÑниÑа и поÑÑдок</h2></summary> <div class="changelog-section__body"> <p>Ðизайн-ÑиÑÑема вÑÑла на новÑй ÑÑовенÑ: компоненÑÑ ÑÑали инÑеÑакÑивнÑми, ÑÑили â конÑиÑÑенÑнÑми, а ÑазÑабоÑка â бÑÑÑÑее.</p> <ul> <li data-num="658"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> <strong>ÐеÑоÑниÑа компоненÑов</strong> â ÑейÑинг, подпиÑка и ÑÐ²ÐµÐ´Ð¾Ð¼Ð»ÐµÐ½Ð¸Ñ ÑепеÑÑ Ð¼Ð¾Ð¶Ð½Ð¾ кÑÑÑиÑÑ Ð¿ÑÑмо в Storybook: менÑйÑе ÑоÑÑоÑниÑ, ÑекÑÑÑ Ð¸ ваÑианÑÑ ÑеÑез Controls. ÐÑделÑÐ½Ð°Ñ ÐºÐ°ÑегоÑÐ¸Ñ Â«ÐеÑоÑниÑа» â не меÑаеÑÑÑ Ñ Ð¾Ð±Ð·Ð¾ÑнÑми stories.</li> <li data-num="659"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> <strong>CSS-ÑÑилиÑÑ Ð´Ð»Ñ Ð´ÐµÐ¼Ð¾</strong> â <code>.sb-card</code>, <code>.sb-row--lg</code>, <code>.sb-label</code>, <code>.sb-hint</code> и еÑÑ Ð´ÐµÑÑÑок клаÑÑов вмеÑÑо ÑоÑÑÑпи inline-ÑÑилей. Storybook ÑÑал ÑиÑе, а новÑе stories пиÑÑÑÑÑ Ð² ÑÐ°Ð·Ñ Ð±ÑÑÑÑее.</li> <li data-num="660"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>СамодоÑÑаÑоÑнÑе каÑÑоÑки</strong> â <code>.sb-card--shadow</code> и <code>.sb-card--wide</code> болÑÑе не забÑваÑÑ Ñон и padding, еÑли иÑполÑÐ·Ð¾Ð²Ð°Ð½Ñ Ð±ÐµÐ· базового клаÑÑа. SCSS placeholder <code>%sb-card-base</code> ÑбиÑÐ°ÐµÑ Ð´ÑблиÑование.</li> <li data-num="661"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>ÐÑÑÑвÑй код</strong> â ÑдалÑн неиÑполÑзÑемÑй <code>.sb-inline</code>, лиÑний <code>gap: 0</code>, беÑполезнÑе inline-ÑÑили. ÐаждÑй клаÑÑ ÑепеÑÑ ÑабоÑаеÑ.</li> </ul> </div> </details> <details class="changelog-section"> <summary class="changelog-summary"><span class="changelog-meta"><span class="changelog-meta__version">v9.42.0</span><span class="changelog-meta__date">10-03-2026</span></span><h2 id="v9420-10-03-2026--бÑÑÑÑее-Ñдобнее-оÑзÑвÑивее">ÐÑÑÑÑее, Ñдобнее, оÑзÑвÑивее</h2></summary> <div class="changelog-section__body"> <ul> <li data-num="655"><span class="changelog-tag changelog-tag--PERF" data-tag-alias="PERF">PERF</span> <strong>СжаÑие бандла: -80% ÑÑаÑика</strong> â вÑе ÑкÑипÑÑ Ð¸ ÑÑили ÑепеÑÑ Ð¾ÑдаÑÑÑÑ Ð² gzip и brotli. СÑÑаниÑÑ Ð³ÑÑзÑÑÑÑ Ð·Ð°Ð¼ÐµÑно бÑÑÑÑее, оÑобенно на мобилÑнÑÑ
и ÑлабÑÑ
ÑоединениÑÑ
â главнÑй JS-Ñайл поÑ
Ñдел Ñ 626 ÐРдо 128 ÐÐ.</li> <li data-num="656"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> <strong>СÑÑÑÑик непÑоÑиÑаннÑÑ
в заголовке вкладки</strong> â еÑли Ñ Ð²Ð°Ñ ÐµÑÑÑ Ð½Ð¾Ð²Ñе ÑведомлениÑ, Ð²Ñ ÑвидиÑе <code>(3) ÐиÑкÑÑÑ â ...</code> пÑÑмо на вкладке бÑаÑзеÑа. Ðе нÑжно возвÑаÑаÑÑÑÑ Ð½Ð° ÑайÑ, ÑÑÐ¾Ð±Ñ ÑзнаÑÑ, оÑвеÑил Ð
1»Ð¸ кÑо-Ñо на Ð²Ð°Ñ ÐºÐ¾Ð¼Ð¼ÐµÐ½ÑаÑий.</li> <li data-num="657"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> <strong>СоÑÑиÑовка комменÑаÑиев</strong> â под ÑÑаÑÑÑй поÑвилиÑÑ ÐºÐ½Ð¾Ð¿ÐºÐ¸ «СÑаÑÑе / ÐовÑе / ÐÑÑÑие». ÐÑÑÑÑо найдиÑе ÑвежÑÑ Ð´Ð¸ÑкÑÑÑÐ¸Ñ Ð¸Ð»Ð¸ ÑамÑй оÑенÑннÑй оÑклик â без беÑконеÑной пÑокÑÑÑки.</li> </ul> </div> </details> <details class="changelog-section"> <summary class="changelog-summary"><span class="changelog-meta"><span class="changelog-meta__version">v9.41.0</span><span class="changelog-meta__date">10-03-2026</span></span><h2 id="v9410-10-03-2026--комплекÑнÑй-аÑдиÑ-безопаÑноÑÑи">ÐомплекÑнÑй аÑÐ´Ð¸Ñ Ð±ÐµÐ·Ð¾Ð¿Ð°ÑноÑÑи</h2></summary> <div class="changelog-section__body"> <p>ÐÐ¾Ð»Ð½Ð°Ñ Ð¿ÑовеÑка плаÑÑоÑмÑ: код, API, заголовки, завиÑимоÑÑи. ÐакÑÑÑÑ Ð²Ñе найденнÑе ÑÑзвимоÑÑи без поÑеÑи ÑÑнкÑионалÑноÑÑи.</p> <ul> <li data-num="641"><span class="changelog-tag changelog-tag--SEC" data-tag-alias="SEC">SEC</span> <strong>XSS в пÑоÑмоÑÑе веÑÑий</strong> â HTML веÑÑий и diff ÑепеÑÑ Ð¿ÑоÑ
Ð¾Ð´Ð¸Ñ ÑеÑез DOMPurify-ÑаниÑизаÑиÑ</li> <li data-num="642"><span class="changelog-tag changelog-tag--SEC" data-tag-alias="SEC">SEC</span> <strong>Open redirect</strong> â заÑиÑа вÑеÑ
ÑоÑек запиÑи/ÑÑÐµÐ½Ð¸Ñ URL возвÑаÑа ÑеÑез localStorage; блокиÑовка внеÑниÑ
и protocol-relative URL</li> <li data-num="643"><span class="changelog-tag changelog-tag--SEC" data-tag-alias="SEC">SEC</span> <strong>ÐалидаÑÐ¸Ñ censoredLink</strong> â redirect пÑи ÑензÑÑе валидиÑÑеÑÑÑ ÐºÐ°Ðº same-origin; ÑенÑÑализованнÑй Ñ
ÐµÐ»Ð¿ÐµÑ <code>safeRedirect()</code> Ñ fallback</li> <li data-num="644"><span class="changelog-tag changelog-tag--SEC" data-tag-alias="SEC">SEC</span> <strong>ÐалидаÑÐ¸Ñ Stripe</strong> â redirect поÑле оплаÑÑ Ð¿ÑовеÑÑÐµÑ Ð¿Ð¾Ð´Ð»Ð¸Ð½Ð½Ð¾ÑÑÑ Ð´Ð¾Ð¼ÐµÐ½Ð° плаÑежной плаÑÑоÑмÑ</li> <li data-num="645"><span class="changelog-tag changelog-tag--SEC" data-tag-alias="SEC">SEC</span> <strong>ÐалидаÑÐ¸Ñ redirect в Worker</strong> â заÑиÑа canonical-ÑедиÑекÑов Ð¾Ñ protocol-relative URL в обоиÑ
обÑабоÑÑикаÑ
(LCP + API fallback); ÑÑÑÐ¾Ð³Ð°Ñ Ð¿ÑовеÑка hostname</li> <li data-num="646"><span class="changelog-tag changelog-tag--SEC" data-tag-alias="SEC">SEC</span> <strong>ÐогиÑование</strong> â ÑбÑано логиÑование Ñел оÑвеÑов внеÑниÑ
ÑеÑвиÑов (Mailgun), коÑоÑÑе могли ÑодеÑжаÑÑ ÐºÐ»ÑÑи</li> <li data-num="647"><span class="changelog-tag changelog-tag--SEC" data-tag-alias="SEC">SEC</span> <strong>Email-валидаÑиÑ</strong> â RFC 5321-ÑовмеÑÑÐ¸Ð¼Ð°Ñ Ð¿ÑовеÑка ÑоÑмаÑа email во вÑеÑ
API-ÑндпоинÑаÑ
</li> <li data-num="648"><span class="changelog-tag changelog-tag--SEC" data-tag-alias="SEC">SEC</span> <strong>Input limits</strong> â огÑаниÑÐµÐ½Ð¸Ñ Ð´Ð»Ð¸Ð½Ñ Ð¿Ð¾Ð¸ÑковÑÑ
запÑоÑов и полей заÑвок; заÑиÑа Ð¾Ñ DoS ÑеÑез ÑаздÑвание regex/докÑменÑов</li> <li data-num="649"><span class="changelog-tag changelog-tag--SEC" data-tag-alias="SEC">SEC</span> <strong>ÐаÑоли</strong> â ÑпÑоÑена и ÑаÑÑиÑена пÑовеÑка ÑпеÑÑимволов (лÑбой не-бÑквеннÑй Ñимвол)</li> <li data-num="650"><span class="changelog-tag changelog-tag--SEC" data-tag-alias="SEC">SEC</span> <strong>СаниÑизаÑÐ¸Ñ ÐºÐ¾Ð½ÑенÑа</strong> â вÑе raw <code>ng-bind-html</code> (баннеÑÑ, ÑиÑаÑÑ, опиÑаниÑ, punchline) пеÑÐµÐ²ÐµÐ´ÐµÐ½Ñ Ð½Ð° <code>trustedHtml</code> (DOMPurify)</li> <li data-num="651"><span class="changelog-tag changelog-tag--SEC" data-tag-alias="SEC">SEC</span> <strong>Cookies</strong>
1 â <code>uploadSessionParser</code> полÑÑил <code>httpOnly</code>, <code>secure</code>, <code>sameSite: 'strict'</code> â паÑиÑÐµÑ Ñ Ð¾Ñновной ÑеÑÑией</li> <li data-num="652"><span class="changelog-tag changelog-tag--SEC" data-tag-alias="SEC">SEC</span> <strong>charset=utf-8</strong> â вÑе JSON-оÑвеÑÑ Worker (donation, Stripe) Ñвно ÑказÑваÑÑ ÐºÐ¾Ð´Ð¸ÑовкÑ</li> <li data-num="653"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>Shared validation</strong> â <code>escapeRegExp</code> и <code>isValidEmail</code> вÑнеÑÐµÐ½Ñ Ð² единÑй модÑÐ»Ñ <code>/imports/validation</code>; ÑбÑÐ°Ð½Ñ Ð´Ñбли в 4 ÑайлаÑ
</li> <li data-num="654"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>npm audit fix</strong> â пÑÐ¸Ð¼ÐµÐ½ÐµÐ½Ñ Ð±ÐµÐ·Ð¾Ð¿Ð°ÑнÑе Ð¾Ð±Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ Ð·Ð°Ð²Ð¸ÑимоÑÑей</li> </ul> </div> </details> <details class="changelog-section"> <summary class="changelog-summary"><span class="changelog-meta"><span class="changelog-meta__version">v9.40.0</span><span class="changelog-meta__date">09-03-2026</span></span><h2 id="v9400-09-03-2026--ÑаÑпознание-ÑÑÑлок-ÑиÑ
ий-Ñежим-ÑÑавнение-веÑÑий-storybook-и-ÑиÑÑема-ÑаÑÑÑлок">РаÑпознание ÑÑÑлок, ÑиÑ
ий Ñежим, ÑÑавнение веÑÑий, storybook и ÑиÑÑема ÑаÑÑÑлок</h2></summary> <div class="changelog-section__body"> <ul> <li data-num="630"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> РаÑпознание ÑÑÑлок в каÑÑоÑки â в ÑедакÑоÑе вÑÑавка URL на пÑÑÑÑÑ ÑÑÑÐ¾ÐºÑ Ð´Ð°ÑÑ OG-пÑевÑÑ (title, опиÑание, каÑÑинка, домен). ÐовÑе ÑаÑÑиÑÐµÐ½Ð¸Ñ link-card.js и link-paste-handler.js, на бÑкенде â OG API.</li> <li data-num="631"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> ТиÑ
ий Ñежим (Zen) â Ctrl+Alt+Q и кнопка в панели: ÑкÑÑваÑÑÑÑ ÐºÑÑÑоÑÑ, комменÑаÑии на полÑÑ
и пÑавки; в ÑÑом Ñежиме нелÑÐ·Ñ Ð´Ð¾Ð±Ð°Ð²Ð»ÑÑÑ ÐºÐ¾Ð¼Ð¼ÐµÐ½ÑаÑии и оÑкÑÑваÑÑ ÑайдбаÑ.</li> <li data-num="632"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> Diff веÑÑий â в панели веÑÑий Ñежим «СÑавнение»: diff вÑбÑанной веÑÑии Ñ ÑекÑÑим ÑекÑÑом (<code>htmldiff-js</code>, <code><ins>/<del></code>).</li> <li data-num="633"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> ÐÑоизводиÑелÑноÑÑÑ â один пÑоÑ
од по докÑменÑÑ extractAll() вмеÑÑо ÑÑÑÑ
; виÑÑÑалÑнÑй ÑкÑолл в margin view пÑи >20 каÑÑоÑкаÑ
(в DOM ÑолÑко ÑлеменÑÑ Ð² зоне видимоÑÑи + бÑÑеÑ).</li> <li data-num="634"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> СÑили ÑедакÑоÑа â один болÑÑой SCSS ÑÐ°Ð·Ð±Ð¸Ñ Ð½Ð° модÑли: core, toolbar, content, collab, links, quiet-mode; ÑÑаÑÑй Ñайл ÑоÑ
ÑанÑн как .bak.</li> <li data-num="635"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> Lazy load главной â Ð´Ð»Ñ Ð¼Ð°ÑÑÑÑÑа / подгÑÑжаеÑÑÑ Ñанк home.js (MagazineIndexCtrl, hero/quotes/podcast/theme баннеÑÑ Ð¸ Ñ.д.), ÑÑи модÑли ÑбÑÐ°Ð½Ñ Ð¸Ð· оÑновного бандла.</li> <li data-num="636"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> Storybook â Ð´Ð¾Ð±Ð°Ð²Ð»ÐµÐ½Ñ ÐºÐ¾Ð½Ñиг и 21 ÑÑоÑÐ¸Ñ (Colors, Typography, Buttons, NotificationItem, Banners и дÑ.).</li> <li data-num="637"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> Worker â пÑавки: tag API пÑи не-JSON возвÑаÑÐ°ÐµÑ status: 0; иÑпÑавлена подÑÑановка пÑÑÑого alt Ñ ÐºÐ°ÑÑинок в SSR.</li> </ul> <p><strong>
1Backend:</strong></p> <ul> <li data-num="638"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> РаÑÑÑлки (Newsletter) â коллекÑÐ¸Ñ NewsletterCampaigns, ÑеÑÐ²Ð¸Ñ newsletterService.js (ÑеÑновики, ÑеÑÑÐ¾Ð²Ð°Ñ Ð¾ÑпÑавка, планиÑование, оÑпÑавка по ÑаÑпиÑаниÑ, оÑпиÑка по подпиÑÐ°Ð½Ð½Ð¾Ð¼Ñ ÑокенÑ, preview/archive). СÑаÑÑапÑ: unsubscribe (HTTP /newsletter/unsubscribe), scheduler (CronLock Ñаз в минÑÑÑ), preview, archive. Радминке â ÑеÑÑÑÑ Ñ Ð´ÐµÐ¹ÑÑвиÑми Test Send, Schedule, Preview и Ñ.д.</li> <li data-num="639"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> OG API â GET /api/v2/og?url=... Ð´Ð»Ñ ÑедакÑоÑÑкиÑ
link cards: ÑаймаÑÑ, заÑиÑа Ð¾Ñ Ð¿ÑиваÑнÑÑ
Ñ
оÑÑов, DNS-пÑовеÑка, кÑÑ, rate limit.</li> <li data-num="640"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> Ðдминка â setup.js ÑазгÑÑжен: ÑеÑÑÑÑÑ Ð²ÑнеÑÐµÐ½Ñ Ð² resources/*.js, Ñ
елпеÑÑ Ð² admin-helpers.js, аÑÐ´Ð¸Ñ Ð² admin-audit.js, загÑÑзка каÑÑинок в admin-image-upload.js; Ð´Ð¾Ð±Ð°Ð²Ð»ÐµÐ½Ñ ÑеÑÑÑÑÑ comments, content-item, events, feedback, newsletter, system, tools, user.</li> </ul> </div> </details> <details class="changelog-section"> <summary class="changelog-summary"><span class="changelog-meta"><span class="changelog-meta__version">v9.39.0</span><span class="changelog-meta__date">08-03-2026</span></span><h2 id="v9390-08-03-2026--ubuntu-18-â-20-â-22-â-24-надÑжнее-и-бÑÑÑÑее">Ubuntu 18 â 20 â 22 â 24: надÑжнее и бÑÑÑÑее</h2></summary> <div class="changelog-section__body"> <ul> <li data-num="628"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> ÐиÑкÑÑÑ Ð¿ÐµÑееÑ
ал на ÑовÑеменнÑй и ÑÑÑойÑивÑй ÑеÑвеÑнÑй ÑÑндаменÑ. ÐодеÑнизаÑÐ¸Ñ ÑиÑÑÐµÐ¼Ñ Ð´Ð¾ Ubuntu 24.04.4 LTS Ñ Ð½Ð¾Ð²Ñм ÑдÑом 6.8.0-101-generic, Ð¾Ð±Ð½Ð¾Ð²Ð»ÐµÐ½Ñ Ð²Ñе 435 пакеÑов. ÐаÑÑÑабное обновление невидимого, но кÑайне важного ÑÐ»Ð¾Ñ Ð¿Ð»Ð°ÑÑоÑмÑ.</li> <li data-num="629"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> ÐÑÑиÑованнÑе оÑвеÑÑ Ð¿Ñи падениÑÑ
ÑеÑез Cloudflare Caching. Ðаже в ÑлÑÑае аÑак и падений ÑÐ°Ð¹Ñ ÑвеÑеннее пеÑÐµÐ¶Ð¸Ð²Ð°ÐµÑ Ñбои, показÑÐ²Ð°Ñ Ð¼Ð°ÑеÑÐ¸Ð°Ð»Ñ Ð¸Ð· кÑÑа вмеÑÑо оÑибок.</li> </ul> </div> </details> <details class="changelog-section"> <summary class="changelog-summary"><span class="changelog-meta"><span class="changelog-meta__version">v9.38.0</span><span class="changelog-meta__date">08-03-2026</span></span><h2 id="v9380-08-03-2026--опÑимизаÑиÑ-загÑÑзки-каÑÑинок-авÑоÑизаÑии-и-загÑÑзки-главной">ÐпÑимизаÑÐ¸Ñ Ð·Ð°Ð³ÑÑзки каÑÑинок, авÑоÑизаÑии и загÑÑзки главной</h2></summary> <div class="changelog-section__body"> <ul> <li data-num="624"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>ÐÑ
од без неÑвов</strong> â логин, ÑоÑÑеÑи и возвÑÐ°Ñ Ð² ÑеÑÑÐ¸Ñ ÑабоÑаÑÑ ÑÑабилÑнее, Ñ Ð¿Ð¾Ð½ÑÑнÑми ÑообÑениÑми и без завиÑÑиÑ
окон</li> <li data-num="625"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>ÐаÑÑинки не ÑеÑÑÑÑÑÑ</strong> â вÑÑавка, загÑÑзка и галеÑеи в ÑедакÑоÑе ÑÑали надÑжнее даже пÑи Ñлабой ÑеÑи</li> <li data-num="626"><span class="changelog-tag changelog-tag--UX" data-tag-alias="UX">UX</span> <strong>РедакÑÐ¾Ñ Ð±ÐµÑежнее к авÑоÑÑ</strong> â более ÑмнÑе подпиÑи, аккÑÑаÑнÑе ÑÐ¿Ð¾Ð¼Ð¸Ð½Ð°Ð½Ð¸Ñ Ð¸ менÑÑе лиÑниÑ
ÑиÑков Ð´Ð»Ñ Ð¿ÑиваÑнÑÑ
ÑеÑновиков</li> <li data-num="627"><span class="changelog-tag changelog-tag--PERF" data-tag-alias="PERF">PERF</span> <strong>УÑкоÑее загÑÑзки блоков</strong> â ÑиÑаÑнÑй Ð±Ð°Ð½Ð½ÐµÑ Ð¸ инÑеÑÑÐµÐ¹Ñ Ð³ÑÑзÑÑ Ð±ÑаÑÐ·ÐµÑ Ð¼ÑгÑе и оÑÑÑаÑÑÑÑ Ð¿Ð»Ð°Ð²Ð½ÐµÐµ</li> </ul> </div> </details> <details class="changelog-section"> <summary class="changelog-summary"><span class="changelog-meta"><span class="changelog-meta__version">v9.37.0</span><span class="changelog-meta__date">07-03-2026</span></span><h2 id="v9370-07-03-2026--meteor-34-ÑеÑоÑма-ÑеÑ
ниÑеÑкого-ÑÑндаменÑа-бÑкенда">
1Meteor 3.4: ÑеÑоÑма ÑеÑ
ниÑеÑкого ÑÑндаменÑа бÑкенда</h2></summary> <div class="changelog-section__body"> <p>ÐиÑкÑÑÑ ÑовеÑÑил болÑÑой ÑеÑ
нологиÑеÑкий ÑÑвок: плаÑÑоÑма пеÑееÑ
ала Ñ Ð±Ñкенда Ð¿Ð¾ÐºÐ¾Ð»ÐµÐ½Ð¸Ñ 2015 на ÑовÑеменнÑй ÑÑек 2026.</p> <ul> <li data-num="620"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> <strong>СовÑеменнÑй бÑкенд 2026</strong> â болÑÑой Ñаг впеÑÑд в ÑкоÑоÑÑи, ÑÑабилÑноÑÑи и бÑдÑÑем ÑазвиÑии плаÑÑоÑмÑ</li> <li data-num="621"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>ÐÑ
од без ÑÑÑвов</strong> â авÑоÑизаÑиÑ, ÑегиÑÑÑаÑÐ¸Ñ Ð¸ воÑÑÑановление ÑеÑÑии ÑабоÑаÑÑ ÑвеÑеннее поÑле пеÑеезда</li> <li data-num="622"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>ÐÐ±Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ Ð²Ð¸Ð´Ð½Ñ ÑÑазÑ</strong> â ÑÐ²ÐµÐ¶Ð°Ñ Ð²ÐµÑÑÐ¸Ñ ÑайÑа бÑÑÑÑее доÑ
Ð¾Ð´Ð¸Ñ Ð´Ð¾ ÑиÑаÑелей без заÑÑÑÑвÑего кеÑа</li> <li data-num="623"><span class="changelog-tag changelog-tag--PERF" data-tag-alias="PERF">PERF</span> <strong>ÐегÑе и бÑÑÑÑее ÑÑÑаниÑÑ</strong> â ÑпеÑпÑоекÑÑ, ÑиÑаÑÑ Ð¸ баннеÑÑ Ð¾ÑкÑÑваÑÑÑÑ Ñкономнее и оÑзÑвÑивее</li> </ul> </div> </details> <details class="changelog-section"> <summary class="changelog-summary"><span class="changelog-meta"><span class="changelog-meta__version">v9.36.0</span><span class="changelog-meta__date">06-03-2026</span></span><h2 id="v9360-06-03-2026--даÑбоÑд-ÑедакÑии-ÑиÑ
ие-ÑведомлениÑ-и-ÑоÑнÑй-ÑедакÑоÑ">ÐаÑбоÑд ÑедакÑии, ÑиÑ
ие ÑÐ²ÐµÐ´Ð¾Ð¼Ð»ÐµÐ½Ð¸Ñ Ð¸ ÑоÑнÑй ÑедакÑоÑ</h2></summary> <div class="changelog-section__body"> <p>Ðдминка полÑÑила полноÑеннÑй даÑбоÑд: меÑÑики плаÑÑоÑмÑ, Ñвежие комменÑаÑии, ÑемаÑки и пÑбликаÑии â вÑÑ Ð½Ð° одном ÑкÑане. Ð£Ð²ÐµÐ´Ð¾Ð¼Ð»ÐµÐ½Ð¸Ñ Ð±Ð¾Ð»ÑÑе не заÑÑпаÑÑ ÑоÑÑами пÑи возвÑаÑе на ÑÐ°Ð¹Ñ â ÑепеÑÑ Ð¾Ð½Ð¸ ÑобиÑаÑÑÑÑ Ð² Ð¾Ð´Ð½Ñ ÐºÐ¾Ð¼Ð¿Ð°ÐºÑнÑÑ ÑводкÑ. Ðлики по комменÑаÑиÑм и пÑавкам в ÑедакÑоÑе ÑÑали ÑоÑнее.</p> <ul> <li data-num="616"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> <strong>ÐаÑбоÑд ÑедакÑии</strong> â пÑбликаÑии, авÑоÑÑ, комменÑаÑии и ÑемаÑки за 30 дней в одном меÑÑе Ñ Ð¶Ð¸Ð²Ñм обновлением</li> <li data-num="617"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> <strong>УмнÑе ÑведомлениÑ</strong> â пÑи возвÑаÑе на ÑÐ°Ð¹Ñ Ð²Ð¼ÐµÑÑо каÑкада ÑоÑÑов â одна Ñводка «У Ð²Ð°Ñ N новÑÑ
Ñведомлений»</li> <li data-num="618"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>ТоÑнÑе клики в ÑедакÑоÑе</strong> â пÑи вложеннÑÑ
комменÑаÑиÑÑ
и пÑавкаÑ
клик ÑепеÑÑ Ð¿Ð¾Ð¿Ð°Ð´Ð°ÐµÑ Ð² нÑжнÑй, а не в оÑ
ваÑÑваÑÑий</li> <li data-num="619"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>«ÐбновлÑн» вмеÑÑо «ÐпÑбликован»</strong> â пÑи пеÑеиздании маÑеÑиала ÑообÑение ÑооÑвеÑÑÑвÑÐµÑ Ð´ÐµÐ¹ÑÑвиÑ</li> </ul> </div> </details> <details class="changelog-section"> <summary class="changelog-summary"><span class="changelog-meta"><span class="changelog-meta__version">v9.35.0</span><span class="changelog-meta__date">06-03-2026</span></span><h2 id="v9350-06-03-2026--диÑкÑÑÑ-ÑепеÑÑ-в-tor">ÐиÑкÑÑÑ ÑепеÑÑ Ð² Tor</h2></summary> <div class="changelog-section__body"> <p>ÐлаÑÑоÑма полÑÑила ÑобÑÑвенное зеÑкало в ÑеÑи Tor. ЧиÑайÑе и пÑбликÑйÑе без огÑаниÑений â даже еÑли оÑновной ÑÐ°Ð¹Ñ Ð·Ð°Ð±Ð»Ð¾ÐºÐ¸Ñован в ваÑем Ñегионе. ÐÐ¾Ð»Ð½Ð°Ñ ÐºÐ¾Ð¿Ð¸Ñ ÐиÑкÑÑÑа, ÑабоÑаÑÑÐ°Ñ ÑеÑез анонимнÑÑ ÑеÑÑ.</p> <ul> <li data-num="613"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> <strong>Tor-зеÑкало плаÑÑоÑмÑ</strong> â ÐиÑкÑÑÑ Ð´Ð¾ÑÑÑпен по адÑеÑÑ <code>dscrsfyco6k7uhx2y5s57a54r26gdfs3vl72kf3fneavcoy5b3villqd.onion</code> ÑеÑез Tor Browser</li> <li data-num="614"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> <strong>ÐÐ¾Ð»Ð½Ð°Ñ ÑÑнкÑионалÑноÑÑÑ</strong> â вÑе маÑеÑиалÑ, навигаÑÐ¸Ñ Ð¸ API ÑабоÑаÑÑ ÑеÑез зеÑкало без огÑаниÑений</li> <li data-num="615"><span class="changelog-tag changelog-tag--SEC" data-tag-alias="SEC">SEC</span> <strong>ÐÑиваÑноÑÑÑ ÑиÑаÑелей</strong> â веÑÑ ÑÑаÑик пÑоÑ
Ð¾Ð´Ð¸Ñ ÑеÑез анонимнÑÑ ÑеÑÑ, API-запÑоÑÑ Ð½Ðµ вÑÑ
одÑÑ Ð·Ð° пÑÐµÐ´ÐµÐ»Ñ Ð·ÐµÑкала</li> </ul> </div> </details> <details class="changelog-section"> <summary class="changelog-summary"><span class="changelog-meta"><span class="changelog-meta__version">v9.34.0</span><span class="changelog-meta__date">06-03-2026</span></span><h2 id="v9340-06-03-2026--«ÑиÑайÑе-Ñакже»-одной-кнопкой-Ñапка-без-глиÑÑей">«ЧиÑайÑе Ñакже» одной кнопкой, Ñапка без глиÑÑей</h2></summary> <div class="changelog-section__body"> <p>Ðлок «ЧиÑайÑе Ñакже» вÑÑавлÑеÑÑÑ ÑеÑез ÑдобнÑй диалог â вÑÑавÑÑе ÑÑÑÐ»ÐºÑ Ð½Ð° лÑбÑÑ ÑÑаÑÑÑ. Шапка болÑÑе не ломаеÑÑÑ Ð½Ð° ÑкÑанаÑ
Ñ Ð½ÐµÑÑандаÑÑнÑм маÑÑÑабиÑованием (125%, 150%). ÐезопаÑноÑÑÑ Ð¿Ð»Ð°ÑÑоÑÐ¼Ñ ÑÑилена на неÑколÑкиÑ
ÑÑовнÑÑ
.</p> <ul> <li data-num="608"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> <strong>«ЧиÑайÑе Ñакже»</strong> â диалог вÑÑавки Ñ Ð¿Ð¾Ð´Ñказками, пÑÐ¸Ð½Ð¸Ð¼Ð°ÐµÑ Ð»ÑбÑÑ ÑÑÑÐ»ÐºÑ Ð½Ð° маÑеÑиал</li> <li data-num="609"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>
1Шапка на HiDPI-ÑкÑанаÑ
</strong> â ÑÑÑÑÐ°Ð½ÐµÐ½Ñ Ð½Ð°Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ Ð¼ÐµÐ½Ñ Ð¿Ñи дÑобном маÑÑÑабиÑовании</li> <li data-num="610"><span class="changelog-tag changelog-tag--SEC" data-tag-alias="SEC">SEC</span> <strong>CSRF-заÑиÑа админки</strong> â вÑе дейÑÑÐ²Ð¸Ñ Ð² панели админиÑÑÑаÑоÑа ÑепеÑÑ Ð¿ÑовеÑÑÑÑÑÑ Ð½Ð° подлинноÑÑÑ Ð¸ÑÑоÑника запÑоÑа; подделка запÑоÑов Ñо ÑÑоÑонниÑ
ÑайÑов невозможна</li> <li data-num="611"><span class="changelog-tag changelog-tag--SEC" data-tag-alias="SEC">SEC</span> <strong>XSS-заÑиÑа диалогов ÑедакÑоÑа</strong> â полÑзоваÑелÑÑкий ввод в диалогаÑ
вÑÑавки ÑкÑаниÑÑеÑÑÑ, пÑедоÑвÑаÑÐ°Ñ Ð²Ð½ÐµÐ´Ñение вÑедоноÑного кода</li> <li data-num="612"><span class="changelog-tag changelog-tag--SEC" data-tag-alias="SEC">SEC</span> <strong>ЧеÑÑÑÑÑ
ÑÐ»Ð¾Ð¹Ð½Ð°Ñ Ð·Ð°ÑиÑа админки</strong> â изолÑÑÐ¸Ñ cookie (SameSite strict + HttpOnly + Secure), пÑовеÑка иÑÑоÑника запÑоÑов, ÑеÑÑÐ¸Ð¾Ð½Ð½Ð°Ñ Ð°Ð²ÑоÑизаÑÐ¸Ñ Ð¸ rate-limiting на вÑ
оде</li> </ul> </div> </details> <details class="changelog-section"> <summary class="changelog-summary"><span class="changelog-meta"><span class="changelog-meta__version">v9.33.0</span><span class="changelog-meta__date">05-03-2026</span></span><h2 id="v9330-05-03-2026--живÑе-обÑÑждениÑ-мгновеннÑй-ÑбÑоÑ-пÑевÑÑ-и-надÑжнаÑ-поÑÑа">ÐивÑе обÑÑждениÑ, мгновеннÑй ÑбÑÐ¾Ñ Ð¿ÑевÑÑ Ð¸ надÑÐ¶Ð½Ð°Ñ Ð¿Ð¾ÑÑа</h2></summary> <div class="changelog-section__body"> <p>ÐбÑÑÐ¶Ð´ÐµÐ½Ð¸Ñ Ð² ÑедакÑоÑе ÑÑали по-наÑÑоÑÑÐµÐ¼Ñ Ð¶Ð¸Ð²Ñми: вÑе ÑÑаÑÑники полÑÑаÑÑ ÑÐ²ÐµÐ´Ð¾Ð¼Ð»ÐµÐ½Ð¸Ñ Ð¾ новÑÑ
оÑвеÑаÑ
, а пÑи пÑинÑÑии или оÑклонении комменÑаÑÐ¸Ñ â авÑÐ¾Ñ ÑзнаÑÑ Ð¿ÐµÑвÑм. ÐÑевÑÑ ÑÑаÑей в Telegram, Facebook и ÐÐонÑакÑе обновлÑÑÑÑÑ Ð² один клик из админки. Email-ÑÐ²ÐµÐ´Ð¾Ð¼Ð»ÐµÐ½Ð¸Ñ ÑÑали надÑжнее â пиÑÑма болÑÑе не ÑеÑÑÑÑÑÑ Ð¼Ð¾Ð»Ñа.</p> <ul> <li data-num="603"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> <strong>Ð£Ð²ÐµÐ´Ð¾Ð¼Ð»ÐµÐ½Ð¸Ñ ÑÑаÑÑникам обÑÑждениÑ</strong> â новÑй оÑÐ²ÐµÑ Ð² ÑÑеде â вÑе ÑÑаÑÑники полÑÑаÑÑ Ñведомление Ñ Ð¿ÑÑмой ÑÑÑлкой в ÑедакÑоÑ</li> <li data-num="604"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> <strong>«ÐомменÑаÑий пÑинÑÑ / оÑклонÑн»</strong> â авÑÐ¾Ñ ÐºÐ¾Ð¼Ð¼ÐµÐ½ÑаÑÐ¸Ñ ÑзнаеÑ, когда его пÑинÑли или оÑклонили</li> <li data-num="605"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> <strong>СбÑÐ¾Ñ Ð¿ÑевÑÑ Ð² ÑоÑÑеÑÑÑ
</strong> â из админки можно обновиÑÑ ÐºÐ°ÑÑоÑÐºÑ ÑÑаÑÑи в Telegram, Facebook и VK одной кнопкой</li> <li data-num="606"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>ÐвÑоÑизаÑÐ¸Ñ ÑеÑез VK</strong> â вÑ
од ÑеÑез ÐÐонÑакÑе Ñнова ÑабоÑÐ°ÐµÑ Ð¿Ð¾Ñле пеÑеезда API на новÑй домен</li> <li data-num="607"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>ÐиÑÑма доÑ
одÑÑ Ð½Ð°Ð´Ñжнее</strong> â email-ÑÐ²ÐµÐ´Ð¾Ð¼Ð»ÐµÐ½Ð¸Ñ Ð½Ðµ помеÑаÑÑÑÑ ÐºÐ°Ðº оÑпÑавленнÑе, пока ÑеалÑно не ÑйдÑÑ</li> </ul> </div> </details> <details class="changelog-section"> <summary class="changelog-summary"><span class="changelog-meta"><span class="changelog-meta__version">v9.32.0</span><span class="changelog-meta__date">05-03-2026</span></span><h2 id="v9320-05-03-2026--ÑведомлениÑ-ведÑÑ-пÑÑмо-к-оÑвеÑÑ-менÑ-на-вÑеÑ
-ÑкÑанаÑ
">Ð£Ð²ÐµÐ´Ð¾Ð¼Ð»ÐµÐ½Ð¸Ñ Ð²ÐµÐ´ÑÑ Ð¿ÑÑмо к оÑвеÑÑ, Ð¼ÐµÐ½Ñ Ð½Ð° вÑеÑ
ÑкÑанаÑ
</h2></summary> <div class="changelog-section__body"> <p>Ðлик по ÑÐ²ÐµÐ´Ð¾Ð¼Ð»ÐµÐ½Ð¸Ñ Ð¾ комменÑаÑии или пÑавке ÑепеÑÑ Ð¾ÑкÑÑÐ²Ð°ÐµÑ ÑедакÑÐ¾Ñ Ð¸ пÑокÑÑÑÐ¸Ð²Ð°ÐµÑ ÑоÑно к нÑÐ¶Ð½Ð¾Ð¼Ñ Ð¾ÑвеÑÑ â Ñ Ð¿Ð¾Ð´ÑвеÑкой. Ð¡Ð°Ð¹Ñ Ð¿ÐµÑÐµÐ¶Ð¸Ð²Ð°ÐµÑ Ñбои ÑеÑвеÑа. ÐÐ°Ð±Ð¾Ñ ÑекÑÑа болÑÑе не подвиÑÐ°ÐµÑ Ð´Ð°Ð¶Ðµ на длиннÑÑ
ÑÑаÑÑÑÑ
.</p> <ul> <li data-num="598"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> <strong>ÐеÑеÑ
од к оÑвеÑÑ Ð¸Ð· ÑведомлениÑ</strong> â клик по ÑÐ²ÐµÐ´Ð¾Ð¼Ð»ÐµÐ½Ð¸Ñ ÑаÑкÑÑÐ²Ð°ÐµÑ Ð½ÑжнÑй оÑÐ²ÐµÑ Ð² боковой панели или на полÑÑ
â Ñ Ð¿Ð¾Ð´ÑвеÑкой</li> <li data-num="599"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> <strong>ÐаÑиÑа Ð¾Ñ Ñбоев ÑеÑвеÑа</strong> â пÑи недоÑÑÑпноÑÑи бÑкенда ÑÐ°Ð¹Ñ Ð¿Ð¾ÐºÐ°Ð·ÑÐ²Ð°ÐµÑ Ñведомление и воÑÑÑанавливаеÑÑÑ Ð°Ð²ÑомаÑиÑеÑки</li> <li data-num="600"><span class="changelog-tag changelog-tag--PERF" data-tag-alias="PERF">PERF</span> <strong>ТипогÑаÑика без задеÑжек</strong> â кавÑÑки, ÑиÑе и ÑпеÑÑÐ¸Ð¼Ð²Ð¾Ð»Ñ Ð¾Ð±ÑабаÑÑваÑÑÑÑ Ð² Ñоновом поÑоке</li> <li data-num="601"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>Шапка на планÑеÑаÑ
</strong> â Ð¼ÐµÐ½Ñ ÐºÐ¾ÑÑекÑно ÑабоÑÐ°ÐµÑ Ð½Ð° вÑеÑ
ÑазмеÑаÑ
ÑкÑана</li> <li data-num="602"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>ÐонÑÑное иÑÑеÑение ÑеÑÑии</strong>
1 â «СеÑÑÐ¸Ñ Ð¸ÑÑекла» вмеÑÑо «Ðо ÑвиданиÑ!»</li> </ul> </div> </details> <details class="changelog-section"> <summary class="changelog-summary"><span class="changelog-meta"><span class="changelog-meta__version">v9.31.0</span><span class="changelog-meta__date">04-03-2026</span></span><h2 id="v9310-04-03-2026--ÑеÑвеÑ-ÑÑал-надÑжнее-и-безопаÑнее">СеÑÐ²ÐµÑ ÑÑал надÑжнее и безопаÑнее</h2></summary> <div class="changelog-section__body"> <p>ÐолÑÑÐ°Ñ Ð²Ð¾Ð»Ð½Ð° ÑлÑÑÑений ÑеÑвеÑной ÑаÑÑи поÑле Ð¾Ð±Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ ÑÑека. ÐвÑоÑизаÑÐ¸Ñ ÑеÑез ÑоÑÑеÑи ÑепеÑÑ ÑабоÑÐ°ÐµÑ Ð½Ð° вÑеÑ
зеÑкалаÑ
и пÑевÑÑ-веÑÑиÑÑ
плаÑÑоÑмÑ. ÐÑибки API болÑÑе не возвÑаÑаÑÑ Ð½ÐµÐ¿Ð¾Ð½ÑÑнÑÑ HTML-ÑÑÑаниÑÑ â ÐºÐ»Ð¸ÐµÐ½Ñ Ð²Ñегда полÑÑÐ°ÐµÑ Ð¿Ð¾Ð½ÑÑнÑй оÑвеÑ. ÐомменÑаÑии и ÑемаÑки заÑиÑÐµÐ½Ñ Ð¾Ñ Ð¿Ð¾ÑеÑи даннÑÑ
пÑи одновÑеменном ÑедакÑиÑовании. Email-дайджеÑÑ ÑÑал компакÑнее. Ðобавлена заÑиÑа Ð¾Ñ Ñпама на клÑÑевÑÑ
ÑоÑкаÑ
вÑ
ода.</p> </div> </details> <details class="changelog-section"> <summary class="changelog-summary"><span class="changelog-meta"><span class="changelog-meta__version">v9.30.0</span><span class="changelog-meta__date">03-03-2026</span></span><h2 id="v9300-03-03-2026--плаÑÑоÑма-обновлена-Ñо-ÑÑека-2016-на-2024-бÑÑÑÑее-надежнее-ÑовÑеменнее">ÐлаÑÑоÑма обновлена Ñо ÑÑека 2016 на 2024: бÑÑÑÑее, надежнее, ÑовÑеменнее</h2></summary> <div class="changelog-section__body"> <p>ÐаÑÑÑÐ°Ð±Ð½Ð°Ñ ÑеÑ
ниÑеÑÐºÐ°Ñ ÑеволÑÑÐ¸Ñ Ð¿Ð¾Ð´ капоÑом. СеÑвеÑнÑй ÑÑеймвоÑк обновлÑн Ñ Ð²ÐµÑÑии 2016 года до акÑÑалÑной веÑÑии 2024-го â ÑÑо как поменÑÑÑ Ð´Ð²Ð¸Ð³Ð°ÑÐµÐ»Ñ Ð°Ð²ÑомобилÑ, пока маÑина едеÑ. СÑаÑÐ°Ñ Ð¿Ð°Ð½ÐµÐ»Ñ Ð°Ð´Ð¼Ð¸Ð½Ð¸ÑÑÑиÑÐ¾Ð²Ð°Ð½Ð¸Ñ (Orion, ÑнÑÑа Ñ Ð¿Ð¾Ð´Ð´ÐµÑжки в 2017-м) полноÑÑÑÑ Ð·Ð°Ð¼ÐµÐ½ÐµÐ½Ð° ÑовÑеменной React-плаÑÑоÑмой AdminJS. УбÑÐ°Ð½Ñ ÑÑÑÑÑи ÑÑÑок ÑÑÑаÑевÑего кода, Ð·Ð°Ð¼ÐµÐ½ÐµÐ½Ñ ÑÑзвимÑе завиÑимоÑÑи, подклÑÑÑн новейÑий дÑÐ°Ð¹Ð²ÐµÑ MongoDB. ÐлаÑÑоÑма ÑÑала замеÑно оÑзÑвÑивее, надÑжнее и заÑиÑÑннее â без единого видимого Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð´Ð»Ñ Ð¿Ð¾Ð»ÑзоваÑелей.</p> <p><strong>ФÑндаменÑалÑное обновление ÑÑека:</strong></p> <ul> <li data-num="591"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> <strong>Meteor 1.8 â 2.16</strong> â ÑеÑвеÑнÑй ÑÑеймвоÑк обновлÑн Ñ Ð²ÐµÑÑии 2018 года до акÑÑалÑной (поддеÑжка до 2024+). ÐÑо даÑÑ Ð´Ð¾ÑÑÑп ко вÑем ÑовÑеменнÑм возможноÑÑÑм Node.js, ÑлÑÑÑенной ÑабоÑе Ñ async/await, Ñвежим паÑÑам безопаÑноÑÑи и более Ð½Ð¸Ð·ÐºÐ¾Ð¼Ñ Ð¿Ð¾ÑÑÐµÐ±Ð»ÐµÐ½Ð¸Ñ Ð¿Ð°Ð¼ÑÑи</li> <li data-num="592"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> <strong>MongoDB-дÑÐ°Ð¹Ð²ÐµÑ 3.x â 4.x</strong> â обновлÑн оÑиÑиалÑнÑй дÑÐ°Ð¹Ð²ÐµÑ Ð±Ð°Ð·Ñ Ð´Ð°Ð½Ð½ÑÑ
. ÐÐ¾Ð²Ð°Ñ Ð²ÐµÑÑÐ¸Ñ Ð±ÑÑÑÑее ÑабоÑÐ°ÐµÑ Ñ Ð±Ð¾Ð»ÑÑими вÑбоÑками, поддеÑÐ¶Ð¸Ð²Ð°ÐµÑ ÑÑанзакÑии и иÑпÑавлÑÐµÑ ÑÑд давниÑ
оÑибок Ñ ÐºÐ¾Ð´Ð¸Ñовкой и ÑаймаÑÑами Ñоединений</li> </ul> <p><strong>ÐÐ°Ð½ÐµÐ»Ñ ÑедакÑии â полноÑÑÑÑ Ð½Ð¾Ð²Ð°Ñ:</strong></p> <ul> <li data-num="593"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> <strong>
1AdminJS вмеÑÑо Orion</strong> â ÑÑаÑÐ°Ñ Ð¿Ð°Ð½ÐµÐ»Ñ Ð°Ð´Ð¼Ð¸Ð½Ð¸ÑÑÑиÑÐ¾Ð²Ð°Ð½Ð¸Ñ Ð½Ð° ÑÑÑаÑевÑей библиоÑеке Blaze (ÑнÑÑа Ñ Ð¿Ð¾Ð´Ð´ÐµÑжки в 2017 годÑ) заменена на ÑовÑеменнÑй AdminJS на React. ÐнÑеÑÑÐµÐ¹Ñ ÑÑал бÑÑÑÑее, ÑиÑабелÑнее и поддеÑÐ¶Ð¸Ð²Ð°ÐµÑ Ð°ÐºÑÑалÑнÑе бÑаÑзеÑÑ</li> <li data-num="594"><span class="changelog-tag changelog-tag--PERF" data-tag-alias="PERF">PERF</span> <strong>~5 000 ÑÑÑок Legacy-кода Ñдалено</strong> â веÑÑ ÐºÐ»Ð¸ÐµÐ½ÑÑкий код ÑÑаÑой Orion-панели вÑÑиÑен из кодовой базÑ. ÐенÑÑе кода = менÑÑе ÑоÑек оÑказа и бÑÑÑÑее Ñ
олоднÑй ÑÑаÑÑ ÑеÑвеÑа</li> </ul> <p><strong>ÐезопаÑноÑÑÑ Ð¸ завиÑимоÑÑи:</strong></p> <ul> <li data-num="595"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>УÑзвимÑе пакеÑÑ Ð·Ð°Ð¼ÐµÐ½ÐµÐ½Ñ</strong> â ÑÐ´Ð°Ð»ÐµÐ½Ñ ÑÑÑаÑевÑие и забÑоÑеннÑе Meteor-пакеÑÑ: Orion (2017), saucecode:rollbar, nimble:restivus, aldeed:tabular и ÑÑд дÑÑгиÑ
. ÐÑе Ð·Ð°Ð¼ÐµÐ½Ñ Ð¸Ð¼ÐµÑÑ Ð°ÐºÑивнÑÑ Ð¿Ð¾Ð´Ð´ÐµÑжкÑ</li> <li data-num="596"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>bcrypt 3.x â 5.x</strong> â библиоÑека Ñ
еÑиÑÐ¾Ð²Ð°Ð½Ð¸Ñ Ð¿Ð°Ñолей обновлена до акÑÑалÑной веÑÑии Ñ Ð¸ÑпÑавлениÑми безопаÑноÑÑи</li> <li data-num="597"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> <strong>СобÑÑвеннÑй поÑÑовÑй модÑлÑ</strong> â Ð¿Ð°ÐºÐµÑ <code>lookback:emails</code> (забÑоÑен, не ÑовмеÑÑим Ñ Meteor 2.x) заменÑн ÑобÑÑвенной ÑеализаÑией Ñ Ñем же API. Email-ÑÐ²ÐµÐ´Ð¾Ð¼Ð»ÐµÐ½Ð¸Ñ Ð¸ дайджеÑÑÑ ÑабоÑаÑÑ ÑÑабилÑно без ÑÑоÑонниÑ
завиÑимоÑÑей</li> </ul> </div> </details> <details class="changelog-section"> <summary class="changelog-summary"><span class="changelog-meta"><span class="changelog-meta__version">v9.23.0</span><span class="changelog-meta__date">03-03-2026</span></span><h2 id="v9230-03-03-2026--пÑавилÑнÑе-пÑевÑÑ-в-ÑоÑÑеÑÑÑ
-авÑоÑÑ-в-поиÑке-ÑÑаÑÑе-ÑÑÑлки-ÑабоÑаÑÑ">ÐÑавилÑнÑе пÑевÑÑ Ð² ÑоÑÑеÑÑÑ
, авÑоÑÑ Ð² поиÑке, ÑÑаÑÑе ÑÑÑлки ÑабоÑаÑÑ</h2></summary> <div class="changelog-section__body"> <p>СÑаÑÑи ÑепеÑÑ ÐºÐ¾ÑÑекÑно вÑглÑдÑÑ Ð¿Ñи ÑепоÑÑе в Telegram, Facebook и ÐÐонÑакÑе â заголовки Ñо ÑпеÑÑимволами болÑÑе не ломаÑÑÑÑ. СÑÑаниÑÑ Ð°Ð²ÑоÑов замеÑно ÑлÑÑÑили позиÑии и вид в поиÑке: Ñ ÐºÐ°Ð¶Ð´Ð¾Ð³Ð¾ авÑоÑа Ñвой ÑникалÑнÑй заголовок и каÑÑоÑка в Google/ЯндекÑ. СÑаÑÑе ÑÑÑлки на маÑеÑÐ¸Ð°Ð»Ñ ÑепеÑÑ Ð±ÑÑÑÑее пеÑенапÑавлÑÑÑ Ð½Ð° пÑавилÑнÑе ÑÑÑаниÑÑ. ÐÑкенд ÑÑкоÑен: ÑбÑÐ°Ð½Ñ ÑкÑÑÑÑе лиÑние запÑоÑÑ Ðº базе даннÑÑ
пÑи каждом обÑаÑении к плаÑÑоÑме.</p> <p><strong>СоÑÑеÑи и SEO:</strong></p> <ul> <li data-num="579"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>ÐÑевÑÑ Ð±ÐµÐ· аÑÑеÑакÑов</strong> â заголовки Ñ ÐºÐ°Ð²ÑÑками, ампеÑÑандами и ÑпеÑÑимволами (<code>«</code>, <code>&</code>, <code>â</code>) ÑепеÑÑ Ð¾ÑобÑажаÑÑÑÑ ÐºÐ¾ÑÑекÑно в каÑÑоÑкаÑ
Telegram, Facebook и дÑÑгиÑ
ÑоÑÑеÑей. РанÑÑе они пÑевÑаÑалиÑÑ Ð² <code>&</code>, <code>"</code> и пÑоÑий ÑеÑ
ниÑеÑкий мÑÑоÑ</li> <li data-num="580"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>Canonical без ÑÑекинга</strong> â паÑамеÑÑÑ <code>?utm_source=</code>, <code>?fbclid=</code>, <code>?ref=</code> и пÑоÑие ÑÑекинг-меÑки болÑÑе не попадаÑÑ Ð² канониÑеÑкий адÑÐµÑ ÑÑÑаниÑÑ Ð¸ Ñег <code>og:url</code>. ÐоиÑковики пеÑеÑÑанÑÑ Ð²Ð¸Ð´ÐµÑÑ ÑÑÑаниÑÑ Ð¸ ÐµÑ ÑаÑÑаÑеннÑе ваÑианÑÑ ÐºÐ°Ðº ÑазнÑе URL</li> <li data-num="581"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>ЧеÑновики не ÑÑекаÑÑ Ð² пÑевÑÑ</strong> â маÑеÑÐ¸Ð°Ð»Ñ Ð² ÑÑаÑÑÑе «ÑеÑновик» или «по ÑÑÑлке» ÑепеÑÑ Ð½Ð°Ð´Ñжно иÑклÑÑÐµÐ½Ñ Ð¸Ð· кеÑа ÑоÑиалÑнÑÑ
боÑов. РанÑÑе пÑевÑÑ ÑеÑновика могло завиÑнÑÑÑ Ð² кеÑе на неÑколÑко ÑаÑов</li> <li data-num="582"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>ÐÐ±Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ Ð²Ð¸Ð´Ð½Ñ ÑÑазÑ</strong> â OG-Ñеги поÑле Ð´ÐµÐ¿Ð»Ð¾Ñ Ð¿Ð»Ð°ÑÑоÑÐ¼Ñ ÑÑановÑÑÑÑ Ð°ÐºÑÑалÑнÑми мгновенно. ÐÑежде боÑÑ Ð¼Ð¾Ð³Ð»Ð¸ еÑÑ Ð½ÐµÑколÑко ÑаÑов показÑваÑÑ ÑÑÑаÑевÑее пÑевÑÑ</li> <li data-num="583"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> <strong>ÐвÑоÑÑ Ð² поиÑке</strong> â Ñ ÐºÐ°Ð¶Ð´Ð¾Ð³Ð¾ пÑоÑÐ¸Ð»Ñ Ð°Ð²ÑоÑа ÑепеÑÑ Ñвой ÑникалÑнÑй заголовок ÑÑÑаниÑÑ Ð¸ даннÑе Ð´Ð»Ñ Ð¿Ð¾Ð¸ÑковÑÑ
ÑиÑÑем (JSON-LD Person schema). Ð¯Ð½Ð´ÐµÐºÑ Ð¸ Google ÑмогÑÑ ÑазлиÑаÑÑ Ð°Ð²ÑоÑов и пÑавилÑно показÑваÑÑ Ð¸Ñ
пÑоÑили в ÑезÑлÑÑаÑаÑ
поиÑка</li> <li data-num="584"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> <strong>СÑаÑÑе ÑÑÑлки ÑабоÑаÑÑ</strong> â 301-ÑедиÑекÑÑ Ð´Ð»Ñ ÑÑÑаÑевÑиÑ
ÑоÑмаÑов URL (ÑÑÑÑкие Ð½Ð°Ð·Ð²Ð°Ð½Ð¸Ñ ÐºÐ°ÑегоÑий <code>/articles/kultura/</code>, ÑÑаÑÑе ÑÐ°Ð·Ð´ÐµÐ»Ñ ÑкÑпо <code>/expo/painting/</code>). СÑÑлки из ÑÑаÑÑÑ
пÑбликаÑий и ÑоÑÑеÑей болÑÑе не ведÑÑ Ð² никÑда</li> <li data-num="585"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>ТеÑ
ниÑеÑкие URL не в индекÑе</strong> â ÑÑÑаниÑÑ Ñ Ð¿Ð°ÑамеÑÑами <code>?modal=</code>, <code>?lng=</code>, <code>?fbclid=</code> и дÑÑгими ÑлÑжебнÑми меÑками иÑклÑÑÐµÐ½Ñ Ð¸Ð· индекÑаÑии ÑеÑез <code>noindex</code> и <code>robots.txt</code>. УÑÑÑанÑÐµÑ Ð´ÑблиÑование конÑенÑа, коÑоÑое Ñнижало позиÑии в поиÑке</li> </ul> <p><strong>ÐÑÑÑÑее и ÑÑабилÑнее:</strong></p> <ul> <li data-num="586"><span class="changelog-tag changelog-tag--PERF" data-tag-alias="PERF">PERF</span> <strong>СÑаÑиÑнÑе ÑÑÑаниÑÑ Ð¸Ð· edge-кеÑа</strong>
1 â <code>/about</code>, <code>/donate</code>, <code>/help</code> и дÑÑгие ÑÑÑаниÑÑ Ñ ÑикÑиÑованнÑм конÑенÑом ÑепеÑÑ Ð¾ÑдаÑÑÑÑ Ñ ÑеÑвеÑов Cloudflare, а не Ñ origin-Ñ
оÑÑа. ÐÑе UTM-ваÑианÑÑ URL ÑаÑÑÑ Ð¾Ð´Ð½Ñ Ð·Ð°Ð¿Ð¸ÑÑ ÐºÐµÑа â нагÑÑзка на origin Ñнижена</li> <li data-num="587"><span class="changelog-tag changelog-tag--PERF" data-tag-alias="PERF">PERF</span> <strong>ÐенÑÑе запÑоÑов к базе даннÑÑ
</strong> â пÑи каждом API-запÑоÑе Ð¾Ñ Ð°Ð²ÑоÑизованного полÑзоваÑÐµÐ»Ñ ÑÑÑÑанÑн лиÑний запÑÐ¾Ñ Ðº базе пÑи пÑовеÑке пÑав доÑÑÑпа (админиÑÑÑаÑоÑ/авÑоÑ). УÑкоÑение заÑÑÐ°Ð³Ð¸Ð²Ð°ÐµÑ Ð²Ñе дейÑÑÐ²Ð¸Ñ Ñ Ð¼Ð°ÑеÑиалами, комменÑаÑиÑми, подпиÑками и пÑоÑилÑми</li> <li data-num="588"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>Email-ÑÐ²ÐµÐ´Ð¾Ð¼Ð»ÐµÐ½Ð¸Ñ Ð½Ðµ ломаÑÑÑÑ Ð¼Ð¾Ð»Ñа</strong> â дополниÑелÑÐ½Ð°Ñ Ð¿ÑовеÑка MAIL_URL пÑи ÑÑаÑÑе ÑеÑвеÑа: еÑли наÑÑÑойки некоÑÑекÑнÑ, в логаÑ
поÑвиÑÑÑ Ð¿Ð¾Ð½ÑÑÐ½Ð°Ñ Ð¾Ñибка вмеÑÑо ÑиÑ
ого ÑбоÑ</li> </ul> <p><strong>РедакÑоÑ:</strong></p> <ul> <li data-num="589"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>СноÑки в ÑÑаÑÑÑ
маÑеÑиалаÑ
</strong> â ÑÑаÑÑи Ñ ÑноÑками в ÑÑÑаÑевÑем ÑоÑмаÑе авÑомаÑиÑеÑки конвеÑÑиÑованÑ. СноÑки коÑÑекÑно оÑобÑажаÑÑÑÑ Ð¸ ÑабоÑаÑÑ Ð² акÑÑалÑном ÑедакÑоÑе</li> <li data-num="590"><span class="changelog-tag changelog-tag--UX" data-tag-alias="UX">UX</span> <strong>ТоÑнÑй ÑкÑолл к кÑÑÑоÑÑ ÐºÐ¾Ð»Ð»ÐµÐ³Ð¸</strong> â клик по аваÑаÑке ÑоавÑоÑа в Ñапке ÑедакÑоÑа ÑепеÑÑ ÑÑабилÑно пÑокÑÑÑÐ¸Ð²Ð°ÐµÑ ÑÑÑаниÑÑ Ðº его ÑекÑÑей позиÑии</li> </ul> </div> </details> <details class="changelog-section"> <summary class="changelog-summary"><span class="changelog-meta"><span class="changelog-meta__version">v9.22.2</span><span class="changelog-meta__date">02-03-2026</span></span><h2 id="v9222-02-03-2026--повÑоÑ-ÑоÑ
ÑанениÑ-загÑÑзка-ÑеÑез-зеÑкало-бÑÑÑÑее-везде">ÐовÑÐ¾Ñ ÑоÑ
ÑанениÑ, загÑÑзка ÑеÑез зеÑкало, бÑÑÑÑее везде</h2></summary> <div class="changelog-section__body"> <p>ÐÑиблиÑÑ Ñоединением в Ð¼Ð¾Ð¼ÐµÐ½Ñ ÑоÑ
ÑанениÑ? ТепеÑÑ Ð¾Ð´Ð½Ð° кнопка «ÐовÑоÑиÑÑ» в Ñведомлении â и маÑеÑиал Ñнова оÑпÑавлÑеÑÑÑ, без пеÑезагÑÑзки ÑÑÑаниÑÑ. ÐаÑÑинки и аÑдио загÑÑжаÑÑÑÑ ÑеÑез зеÑкало: ÑÑабилÑнее пÑи ÑбоÑÑ
Ñ
ÑанилиÑа. Удалили ÑÑжÑлÑÑ Ð±Ð¸Ð±Ð»Ð¸Ð¾ÑÐµÐºÑ Ð´Ð°Ñ (~50 KB менÑÑе) â ÑÑÑаниÑÑ Ð³ÑÑзÑÑÑÑ ÑÑÑÑ Ð±ÑÑÑÑее, оÑобенно Ñ Ð¼ÐµÐ´Ð»ÐµÐ½Ð½Ñм инÑеÑнеÑом. Ð¨Ð°Ð±Ð»Ð¾Ð½Ñ ÐºÐ¾Ð¼Ð¼ÐµÐ½ÑаÑиев, пÑавок и Ñведомлений ÑÑали поÑÑеблÑÑÑ Ð¼ÐµÐ½ÑÑе памÑÑи бÑаÑзеÑа.</p> <p><strong>РедакÑоÑ:</strong></p> <ul> <li data-num="575"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> <strong>Ðнопка «ÐовÑоÑиÑÑ» пÑи оÑибке ÑоÑ
ÑанениÑ</strong> â еÑли маÑеÑиал не ÑдалоÑÑ ÑоÑ
ÑаниÑÑ (Ð½ÐµÑ ÑеÑи, оÑибка ÑеÑвеÑа), в Ñведомлении поÑвлÑеÑÑÑ ÐºÐ½Ð¾Ð¿ÐºÐ° мгновенного повÑоÑа. РабоÑÐ°ÐµÑ Ð´Ð»Ñ ÑеÑновиков и пÑбликаÑий</li> <li data-num="576"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>ÐагÑÑзка каÑÑинок и аÑдио ÑеÑез зеÑкало</strong> â медиаÑÐ°Ð¹Ð»Ñ Ð·Ð°Ð³ÑÑжаÑÑÑÑ Ð½Ð°Ð´Ñжнее: пÑи пÑоблемаÑ
Ñ Ð¾ÑновнÑм Ñ
ÑанилиÑем авÑомаÑиÑеÑки иÑполÑзÑеÑÑÑ ÑезеÑвнÑй адÑеÑ</li> </ul> <p><strong>ÐÑÑÑÑее и легÑе:</strong></p> <ul> <li data-num="577"><span class="changelog-tag changelog-tag--PERF" data-tag-alias="PERF">PERF</span> <strong>â50 KB в бандле</strong> â библиоÑека moment.js полноÑÑÑÑ Ð·Ð°Ð¼ÐµÐ½ÐµÐ½Ð° на компакÑнÑй dayjs. ÐенÑÑе даннÑÑ
пÑи каждом оÑкÑÑÑии ÑÑÑаниÑÑ</li> <li data-num="578"><span class="changelog-tag changelog-tag--PERF" data-tag-alias="PERF">PERF</span> <strong>ÐомменÑаÑии, пÑавки и ÑÐ²ÐµÐ´Ð¾Ð¼Ð»ÐµÐ½Ð¸Ñ ÑендеÑÑÑÑÑ Ð±ÑÑÑÑее</strong> â опÑимизиÑÐ¾Ð²Ð°Ð½Ñ ÑаблонÑ: Ð¿Ð°Ð½ÐµÐ»Ñ ÑедакÑоÑа и ленÑа Ñведомлений ÑепеÑÑ ÑÑебÑÑÑ Ð¼ÐµÐ½ÑÑе ÑеÑÑÑÑов пÑи обновлении и пÑокÑÑÑке</li> </ul> </div> </details> <details class="changelog-section"> <summary class="changelog-summary"><span class="changelog-meta"><span class="changelog-meta__version">v9.22.1</span><span class="changelog-meta__date">02-03-2026</span></span><h2 id="v9221-02-03-2026--мгновеннаÑ-повÑоÑнаÑ-загÑÑзка-ÑкелеÑонÑ-и-мобилÑнаÑ-клавиаÑÑÑа">ÐÐ³Ð½Ð¾Ð²ÐµÐ½Ð½Ð°Ñ Ð¿Ð¾Ð²ÑоÑÐ½Ð°Ñ Ð·Ð°Ð³ÑÑзка, ÑкелеÑÐ¾Ð½Ñ Ð¸ мобилÑÐ½Ð°Ñ ÐºÐ»Ð°Ð²Ð¸Ð°ÑÑÑа</h2></summary> <div class="changelog-section__body"> <p>Ð¡Ð°Ð¹Ñ Ð·Ð°Ð¿Ð¾Ð¼Ð¸Ð½Ð°ÐµÑ ÑÑиÑÑÑ, ÑÑили и изобÑÐ°Ð¶ÐµÐ½Ð¸Ñ â повÑоÑнÑе визиÑÑ Ð·Ð°Ð³ÑÑжаÑÑÑÑ Ð¿ÑакÑиÑеÑки мгновенно. Ð ÑедакÑоÑе вмеÑÑо пÑÑÑого пÑоÑÑÑанÑÑва ÑепеÑÑ Ð¿Ð»Ð°Ð²Ð½Ñй ÑкелеÑон, пока комменÑаÑии подгÑÑжаÑÑÑÑ. Ðа мобилÑнÑÑ
ÑÑÑÑойÑÑваÑ
Ð¿Ð¾Ð»Ñ Ð²Ð²Ð¾Ð´Ð° наконеÑ-Ñо показÑваÑÑ Ð¿ÑавилÑнÑÑ ÐºÐ»Ð°Ð²Ð¸Ð°ÑÑÑÑ: поÑÑовÑÑ Ð´Ð»Ñ email, ÑиÑÑовÑÑ Ð´Ð»Ñ ÑÑмм.</p> <p><strong>ÐгновеннÑе повÑоÑнÑе визиÑÑ:</strong></p> <ul> <li data-num="562"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> <strong>ÐÑлайн-кеÑиÑование ÑеÑÑÑÑов</strong> â ÑÑиÑÑÑ, ÑÑили, ÑкÑипÑÑ Ð¸ изобÑÐ°Ð¶ÐµÐ½Ð¸Ñ ÑоÑ
ÑанÑÑÑÑÑ Ð² кеÑе бÑаÑзеÑа. ÐÑи повÑоÑном визиÑе ÑÑÑаниÑа загÑÑжаеÑÑÑ Ð·Ð° доли ÑекÑндÑ, даже пÑи неÑÑабилÑном Ñоединении
1</li> <li data-num="563"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> <strong>ÐеÑиÑование иллÑÑÑÑаÑий</strong> â загÑÑженнÑе обложки и ÑоÑогÑаÑии из ÑедакÑионнÑÑ
маÑеÑиалов болÑÑе не ÑкаÑиваÑÑÑÑ Ð¿Ð¾Ð²ÑоÑно</li> </ul> <p><strong>РедакÑÐ¾Ñ â пÑиÑÑнее и оÑзÑвÑивее:</strong></p> <ul> <li data-num="564"><span class="changelog-tag changelog-tag--UX" data-tag-alias="UX">UX</span> <strong>СкелеÑон пÑи загÑÑзке комменÑаÑиев</strong> â вмеÑÑо пÑÑÑой панели оÑобÑажаеÑÑÑ Ð°Ð½Ð¸Ð¼Ð¸ÑÐ¾Ð²Ð°Ð½Ð½Ð°Ñ Ð·Ð°Ð³Ð»ÑÑка, пока комменÑаÑии гÑÑзÑÑÑÑ Ð¸Ð· API</li> <li data-num="565"><span class="changelog-tag changelog-tag--UX" data-tag-alias="UX">UX</span> <strong>ÐоÑÑÑие клавиÑи в подÑказкаÑ
</strong> â пÑи наведении на кнопки ÑÑлбаÑа Ð²Ð¸Ð´Ð½Ñ ÑоÑеÑÐ°Ð½Ð¸Ñ ÐºÐ»Ð°Ð²Ð¸Ñ: Ctrl+B, Ctrl+I, Ctrl+K и дÑÑгие</li> <li data-num="566"><span class="changelog-tag changelog-tag--UX" data-tag-alias="UX">UX</span> <strong>ТÑлÑÐ¸Ð¿Ñ ÑкÑÑÑÑ Ð½Ð° мобилÑнÑÑ
</strong> â каÑÑоÑки комменÑаÑиев на полÑÑ
болÑÑе не пеÑекÑÑваÑÑ ÑекÑÑ Ð½Ð° ÑенÑоÑнÑÑ
ÑкÑанаÑ
</li> </ul> <p><strong>ÐобилÑÐ½Ð°Ñ ÐºÐ»Ð°Ð²Ð¸Ð°ÑÑÑа â Ñа, ÑÑо нÑжна:</strong></p> <ul> <li data-num="567"><span class="changelog-tag changelog-tag--UX" data-tag-alias="UX">UX</span> <strong>Email-клавиаÑÑÑа</strong> â вÑе Ð¿Ð¾Ð»Ñ Ð´Ð»Ñ Ð²Ð²Ð¾Ð´Ð° поÑÑÑ (логин, ÑегиÑÑÑаÑиÑ, подпиÑка, обÑаÑÐ½Ð°Ñ ÑвÑзÑ) показÑваÑÑ ÐºÐ»Ð°Ð²Ð¸Ð°ÑÑÑÑ Ñ <code>@</code> и <code>.com</code> на мобилÑнÑÑ
ÑÑÑÑойÑÑваÑ
</li> <li data-num="568"><span class="changelog-tag changelog-tag--UX" data-tag-alias="UX">UX</span> <strong>ЦиÑÑÐ¾Ð²Ð°Ñ ÐºÐ»Ð°Ð²Ð¸Ð°ÑÑÑа</strong> â Ð¿Ð¾Ð»Ñ ÑÑмм пожеÑÑвований показÑваÑÑ ÑиÑÑовÑÑ ÐºÐ»Ð°Ð²Ð¸Ð°ÑÑÑÑ</li> </ul> <p><strong>ÐоÑÑÑпноÑÑÑ Ð¸ навигаÑиÑ:</strong></p> <ul> <li data-num="569"><span class="changelog-tag changelog-tag--UX" data-tag-alias="UX">UX</span> <strong>ФоÑÐ¼Ñ Ð¿Ð¾Ð¸Ñка</strong> â навигаÑÐ¸Ñ Ð¿Ð¾ ÑайÑÑ Ð¸ ÑкÑаннÑе ÑиÑалки коÑÑекÑно ÑаÑпознаÑÑ Ð¿Ð¾Ð¸ÑковÑе полÑ</li> <li data-num="570"><span class="changelog-tag changelog-tag--UX" data-tag-alias="UX">UX</span> <strong>ÐагинаÑиÑ</strong> â ÑÑÑелки и ÑекÑÑÐ°Ñ ÑÑÑаниÑа озвÑÑиваÑÑÑÑ ÑкÑаннÑми ÑиÑалками</li> <li data-num="571"><span class="changelog-tag changelog-tag--UX" data-tag-alias="UX">UX</span> <strong>ÐÑизÑв к диалогÑ</strong> â залогиненнÑе ÑиÑаÑели видÑÑ Ð¿ÑиглаÑение оÑÑавиÑÑ Ð¿ÐµÑвÑй комменÑаÑий</li> </ul> <p><strong>СÑабилÑноÑÑÑ Ð¸ ÑиÑÑоÑа:</strong></p> <ul> <li data-num="572"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>Ðамена Rollbar на облегÑÑннÑй модÑлÑ</strong> â ÑдалÑн неиÑполÑзÑемÑй обÑабоÑÑик оÑибок, ÑÐºÐ¾Ð½Ð¾Ð¼Ð¸Ñ ~2 KB в бандле</li> <li data-num="573"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>Ð£Ð²ÐµÐ´Ð¾Ð¼Ð»ÐµÐ½Ð¸Ñ Ð¾Ð± оÑибкаÑ
</strong> â в production полÑзоваÑÐµÐ»Ñ Ð²Ð¸Ð´Ð¸Ñ Ð´ÐµÐ»Ð¸ÐºÐ°ÑнÑй toast вмеÑÑо молÑаливого ÑбоÑ</li> <li data-num="574"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>УÑÑÑанение меÑÑÐ°Ð½Ð¸Ñ Ð¿Ñи загÑÑзке</strong> â главнÑй CSS болÑÑе не загÑÑжаеÑÑÑ Ð°ÑинÑ
Ñонно, ÑÑо иÑклÑÑÐ°ÐµÑ Ð²ÑпÑÑÐºÑ Ð½ÐµÑÑилизованного конÑенÑа</li> </ul> </div> </details> <details class="changelog-section"> <summary class="changelog-summary"><span class="changelog-meta"><span class="changelog-meta__version">v9.22.0</span><span class="changelog-meta__date">01-03-2026</span></span><h2 id="v9220-01-03-2026--комменÑаÑии-на-полÑÑ
-ÑоÑмаÑиÑование-в-обÑÑждениÑÑ
-ÑпоминаниÑ-Ñ-именами-и-многое-дÑÑгое">ÐомменÑаÑии на полÑÑ
, ÑоÑмаÑиÑование в обÑÑждениÑÑ
, @ÑÐ¿Ð¾Ð¼Ð¸Ð½Ð°Ð½Ð¸Ñ Ñ Ð¸Ð¼ÐµÐ½Ð°Ð¼Ð¸ и многое дÑÑгое</h2></summary> <div class="changelog-section__body"> <p>ÐолÑÑое обновление ÑовмеÑÑной ÑабоÑÑ Ð² ÑедакÑоÑе. ÐомменÑаÑии и пÑавки ÑепеÑÑ Ð¾ÑобÑажаÑÑÑÑ Ð½Ð° полÑÑ
â как замеÑки на ÑÑкопиÑи. РобÑÑждениÑÑ
поÑвилоÑÑ ÑоÑмаÑиÑование ÑекÑÑа: жиÑнÑй, кÑÑÑив, Ctrl+B/I. @Ð£Ð¿Ð¾Ð¼Ð¸Ð½Ð°Ð½Ð¸Ñ ÑÑали Ñмнее â показÑваÑÑ Ð¸Ð¼Ñ Ð°Ð²ÑоÑа вмеÑÑо ÑеÑ
ниÑеÑкого slug, а авÑÐ¾ÐºÐ¾Ð¼Ð¿Ð»Ð¸Ñ Ñ Ð°Ð²Ð°ÑаÑками ÑабоÑÐ°ÐµÑ Ð²ÐµÐ·Ð´Ðµ: в комменÑаÑиÑÑ
, оÑвеÑаÑ
, ÑемаÑкаÑ
и обÑÑждениÑÑ
пÑавок.</p> <p><strong>ÐомменÑаÑии на полÑÑ
â как замеÑки на ÑÑкопиÑи:</strong></p> <ul> <li data-num="530"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> <strong>Режим «ÐомменÑаÑии на полÑÑ
»</strong> â на ÑиÑокиÑ
ÑкÑанаÑ
(â¥1280px) комменÑаÑии и пÑавки оÑобÑажаÑÑÑÑ Ð² колонке ÑпÑава Ð¾Ñ ÑекÑÑа, ÑоÑно напÑоÑив оÑмеÑенного ÑÑагменÑа. ÐÐ°Ð¶Ð´Ð°Ñ ÐºÐ°ÑÑоÑка пÑивÑзана к Ñвоей позиÑии и плавно ÑледÑÐµÑ Ð·Ð° пÑокÑÑÑкой</li> <li data-num="531"><span class="changelog-tag changelog-tag--UX" data-tag-alias="UX">UX</span> <strong>РаÑкÑÑÑие по кликÑ</strong> â каÑÑоÑка ÑаÑкÑÑваеÑÑÑ Ñ Ð¿Ð¾Ð»Ð½Ñм ÑекÑÑом, оÑвеÑами и полем Ð´Ð»Ñ Ð¾ÑвеÑа; оÑÑалÑнÑе авÑомаÑиÑеÑки ÑвоÑаÑиваÑÑÑÑ</li> <li data-num="532"><span class="changelog-tag changelog-tag--UX" data-tag-alias="UX">UX</span> <strong>ÐÐ»Ð°Ð²Ð½Ð°Ñ ÑинÑ
ÑонизаÑиÑ</strong> â позиÑии каÑÑоÑек пеÑеÑÑиÑÑваÑÑÑÑ Ð¿Ñи пÑокÑÑÑке (60 fps) и изменении ÑазмеÑа окна без ÑÑвков и меÑÑаниÑ</li> <li data-num="533"><span class="changelog-tag changelog-tag--UX" data-tag-alias="UX">UX</span> <strong>Ðнопка в панели инÑÑÑÑменÑов</strong> â бÑÑÑÑое вклÑÑение и оÑклÑÑение Ñежима полей. ÐÑÐ±Ð¾Ñ ÑоÑ
ÑанÑеÑÑÑ Ð¼ÐµÐ¶Ð´Ñ ÑеÑÑиÑ
1ми</li> </ul> <p><strong>ФоÑмаÑиÑование в комменÑаÑиÑÑ
и оÑвеÑаÑ
:</strong></p> <ul> <li data-num="534"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> <strong>ÐиÑнÑй и кÑÑÑив</strong> â в комменÑаÑиÑÑ
, оÑвеÑаÑ
и ÑемаÑкаÑ
ÑепеÑÑ Ð¼Ð¾Ð¶Ð½Ð¾ иÑполÑзоваÑÑ ÑоÑмаÑиÑование: <code>**жиÑнÑй</code>** и <code>*кÑÑÑив*</code> оÑобÑажаÑÑÑÑ ÐºÐ°Ðº полноÑеннÑе ÑÑили</li> <li data-num="535"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> <strong>Ctrl+B / Ctrl+I</strong> â пÑивÑÑнÑе клавиаÑÑÑнÑе ÑоÑеÑÐ°Ð½Ð¸Ñ ÑабоÑаÑÑ Ð²Ð¾ вÑеÑ
полÑÑ
ввода: в комменÑаÑиÑÑ
, оÑвеÑаÑ
на комменÑаÑии и пÑавки, в ÑемаÑкаÑ
и ÑведомлениÑÑ
</li> <li data-num="536"><span class="changelog-tag changelog-tag--UX" data-tag-alias="UX">UX</span> <strong>ÐизÑалÑнÑй ÑедакÑоÑ</strong> â пÑи нажаÑии Ctrl+B или Ctrl+I вÑделеннÑй ÑекÑÑ Ð¾Ð±Ð¾ÑаÑиваеÑÑÑ Ð² <code>**</code> или <code>*</code> пÑÑмо в поле ввода â видно, ÑÑо ÑоÑмаÑиÑование пÑименилоÑÑ</li> </ul> <p><strong>@Ð£Ð¿Ð¾Ð¼Ð¸Ð½Ð°Ð½Ð¸Ñ â имена вмеÑÑо slug:</strong></p> <ul> <li data-num="537"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> <strong>Ðмена в ÑпоминаниÑÑ
</strong> â пÑи вÑбоÑе авÑоÑа из авÑокомплиÑа вÑÑавлÑеÑÑÑ <code>@ÐÐ¼Ñ Ð¤Ð°Ð¼Ð¸Ð»Ð¸Ñ</code> вмеÑÑо ÑеÑ
ниÑеÑкого <code>@slug</code>. ЧиÑаÑÑ Ð¸ понимаÑÑ, кÑо ÑпомÑнÑÑ, ÑÑало намного пÑоÑе</li> <li data-num="538"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> <strong>ÐвÑÐ¾ÐºÐ¾Ð¼Ð¿Ð»Ð¸Ñ Ð²ÐµÐ·Ð´Ðµ</strong> â подÑказки Ñ Ð°Ð²Ð°ÑаÑками и именами пÑи набоÑе <code>@</code> ÑабоÑаÑÑ Ð²Ð¾ вÑеÑ
полÑÑ
: в комменÑаÑиÑÑ
ÑедакÑоÑа, оÑвеÑаÑ
на пÑавки, ÑемаÑкаÑ
и модалкаÑ
</li> <li data-num="539"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> <strong>ÐликабелÑнÑе ÑпоминаниÑ</strong> â <code>@ÐмÑ</code> авÑомаÑиÑеÑки пÑевÑаÑаеÑÑÑ Ð² ÑÑÑÐ»ÐºÑ Ð½Ð° пÑоÑÐ¸Ð»Ñ Ð°Ð²ÑоÑа. РабоÑÐ°ÐµÑ Ð² комменÑаÑиÑÑ
, оÑвеÑаÑ
и ÑемаÑкаÑ
. СÑаÑÑй ÑоÑÐ¼Ð°Ñ <code>@slug</code> Ñоже поддеÑживаеÑÑÑ</li> </ul> <p><strong>РедакÑиÑование комменÑаÑиев и оÑвеÑов:</strong></p> <ul> <li data-num="540"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> <strong>РедакÑиÑование ÑвоиÑ
комменÑаÑиев</strong> â авÑÐ¾Ñ Ð¼Ð¾Ð¶ÐµÑ Ð¾ÑÑедакÑиÑоваÑÑ ÑекÑÑ Ñвоего комменÑаÑÐ¸Ñ Ð¿ÑÑмо в боковой панели, без необÑ
одимоÑÑи ÑдалÑÑÑ Ð¸ пиÑаÑÑ Ð·Ð°Ð½Ð¾Ð²Ð¾</li> <li data-num="541"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> <strong>РедакÑиÑование оÑвеÑов</strong> â Ñвои оÑвеÑÑ Ð² веÑкаÑ
обÑÑждений Ñоже можно иÑпÑавиÑÑ. Ðнопка-каÑÐ°Ð½Ð´Ð°Ñ Ð¿Ð¾ÑвлÑеÑÑÑ Ð¿Ñи наведении</li> <li data-num="542"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> <strong>Удаление оÑвеÑов</strong> â авÑÐ¾Ñ Ð¼Ð¾Ð¶ÐµÑ ÑдалиÑÑ Ñвой оÑвеÑ; админиÑÑÑаÑÐ¾Ñ Ð¸ авÑÐ¾Ñ Ð¼Ð°ÑеÑиала â лÑбой оÑвеÑ</li> </ul> <p><strong>ÐбÑÑÐ¶Ð´ÐµÐ½Ð¸Ñ Ð¿Ñавок â полноÑеннÑе ÑÑедÑ:</strong></p> <ul> <li data-num="543"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> <strong>ÐÑвеÑÑ Ð½Ð° пÑавки</strong> â ÐºÐ°Ð¶Ð´Ð°Ñ Ð¿ÑÐµÐ´Ð»Ð¾Ð¶ÐµÐ½Ð½Ð°Ñ Ð¿Ñавка ÑепеÑÑ Ð¸Ð¼ÐµÐµÑ ÑÐ²Ð¾Ñ Ð²ÐµÑÐºÑ Ð¾Ð±ÑÑждениÑ. ÐвÑÐ¾Ñ Ð¸ ÑеÑÐµÐ½Ð·ÐµÐ½Ñ Ð¼Ð¾Ð³ÑÑ Ð¾Ð±ÑÑдиÑÑ ÐºÐ¾Ð½ÐºÑеÑное изменение, не ÑмеÑÐ¸Ð²Ð°Ñ ÐºÐ¾Ð½ÑекÑÑ Ñ Ð´ÑÑгими пÑавками</li> <li data-num="544"><span class="changelog-tag changelog-tag--UX" data-tag-alias="UX">UX</span> <strong>ФоÑмаÑиÑование и @ÑÐ¿Ð¾Ð¼Ð¸Ð½Ð°Ð½Ð¸Ñ Ð² обÑÑждениÑÑ
</strong> â вÑе возможноÑÑи ÑоÑмаÑиÑÐ¾Ð²Ð°Ð½Ð¸Ñ Ð¸ Ñпоминаний доÑÑÑÐ¿Ð½Ñ Ð¸ в оÑвеÑаÑ
на пÑавки</li> </ul> <p><strong>ÐÑблиÑнÑй доÑÑÑп к ÑедакÑоÑÑ â комменÑиÑование без ÑегиÑÑÑаÑии:</strong></p> <ul> <li data-num="545"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> <strong>Ðнонимное комменÑиÑование</strong> â еÑли Ð´Ð»Ñ Ð¼Ð°ÑеÑиала наÑÑÑоен пÑблиÑнÑй доÑÑÑп по ÑÑÑлке, незаÑегиÑÑÑиÑованнÑе ÑиÑаÑели могÑÑ Ð¾ÑÑавлÑÑÑ ÐºÐ¾Ð¼Ð¼ÐµÐ½ÑаÑии и ÑемаÑки, не ÑÐ¾Ð·Ð´Ð°Ð²Ð°Ñ Ð°ÐºÐºÐ°ÑнÑ</li> <li data-num="546"><span class="changelog-tag changelog-tag--UX" data-tag-alias="UX">UX</span> <strong>ÐÐ°Ð½Ð½ÐµÑ Â«ÐойдиÑе Ð´Ð»Ñ ÑеÑензиÑованиÑ»</strong> â анонимнÑй полÑзоваÑÐµÐ»Ñ Ð²Ð¸Ð´Ð¸Ñ Ð¿Ñедложение авÑоÑизоваÑÑÑÑ Ð´Ð»Ñ Ð´Ð¾ÑÑÑпа к ÑÐµÐ¶Ð¸Ð¼Ñ Ð¿Ñавок</li> <li data-num="547"><span class="changelog-tag changelog-tag--UX" data-tag-alias="UX">UX</span> <strong>Ðконка Ð´Ð»Ñ Ð°Ð½Ð¾Ð½Ð¸Ð¼Ð½ÑÑ
авÑоÑов</strong> â вмеÑÑо пÑÑÑого меÑÑа оÑобÑажаеÑÑÑ Ð²Ð¸Ð·ÑалÑнÑй индикаÑÐ¾Ñ Ð°Ð½Ð¾Ð½Ð¸Ð¼Ð½Ð¾Ð³Ð¾ ÑÑаÑÑника</li> <li data-num="548"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>ÐвÑоÑоÑ
Ñанение не ÑÑабаÑÑÐ²Ð°ÐµÑ Ñ ÑиÑаÑелей</strong> â полÑзоваÑели в Ñежиме «ÑолÑко ÑÑение» болÑÑе не ÑоздаÑÑ Ð½ÐµÐ½ÑжнÑÑ
запÑоÑов на ÑеÑвеÑ</li> </ul> <p><strong>ÐÐ¾ÐºÐ¾Ð²Ð°Ñ Ð¿Ð°Ð½ÐµÐ»Ñ â Ñмнее и ÑÑабилÑнее:</strong></p> <ul> <li data-num="549"><span class="changelog-tag changelog-tag--UX" data-tag-alias="UX">UX</span> <strong>СвоÑаÑиваемÑе комменÑаÑии</strong> â в боковой панели комменÑаÑии по ÑмолÑÐ°Ð½Ð¸Ñ ÑвÑÑнÑÑÑ: Ð²Ð¸Ð´Ð½Ñ Ð°Ð²ÑоÑ, ÑиÑаÑа и ÑÑÑÑÑик оÑвеÑов. Ðлик ÑаÑкÑÑÐ²Ð°ÐµÑ Ð¿Ð¾Ð»Ð½Ñй ÑекÑÑ Ð¸ веÑкÑ</li> <li data-num="550"><span class="changelog-tag changelog-tag--UX" data-tag-alias="UX">UX</span> <strong>ÐаÑÑоÑки не ÑÑ
лопÑваÑÑÑÑ</strong> â ÑаÑкÑÑÑÑе комменÑаÑии и пÑавки ÑоÑ
ÑанÑÑÑ ÑоÑÑоÑние пÑи обновлении даннÑÑ
. РанÑÑе каÑÑоÑка могла ÑвеÑнÑÑÑÑÑ Ð² Ð¼Ð¾Ð¼ÐµÐ½Ñ ÑÑениÑ</li> <li data-num="551"><span class="changelog-tag changelog-tag--UX" data-tag-alias="UX">UX</span> <strong>СÑÑÑÑик оÑвеÑов</strong> â под каждÑм ÑвÑÑнÑÑÑм комменÑаÑием видно колиÑеÑÑво оÑвеÑов</li> <li data-num="552"><span class="changelog-tag changelog-tag--UX" data-tag-alias="UX">UX</span> <strong>ÐногоÑÑÑоÑнÑе оÑвеÑÑ</strong> â поле оÑвеÑа авÑомаÑиÑеÑки ÑаÑÑÑгиваеÑÑÑ. ÐÑпÑавка по Ctrl+Enter</li> </ul> <p><strong>SVG-иконки в Ñапке:</strong></p> <ul> <li data-num="553"><span class="changelog-tag changelog-tag--UX" data-tag-alias="UX">UX</span> <strong>ÐоиÑк, каÑандаÑ, ÑообÑениÑ, колоколÑÑик</strong> â вÑе иконки в Ñапке Ð·Ð°Ð¼ÐµÐ½ÐµÐ½Ñ Ð½Ð° наÑивнÑе SVG. ЧÑÑкие на Retina-ÑкÑанаÑ
, мгновенно оÑобÑажаÑÑÑÑ Ð±ÐµÐ· загÑÑзки ÑÑиÑÑа</li> </ul> <p><strong>Ð£Ð²ÐµÐ´Ð¾Ð¼Ð»ÐµÐ½Ð¸Ñ â болÑÑе конÑекÑÑа:</strong></p> <ul> <li data-num="554"><span class="changelog-tag changelog-tag--UX" data-tag-alias="UX">UX</span> <strong>Ðлиннее пÑевÑÑ</strong> â в ÑведомлениÑÑ
оÑобÑажаеÑÑÑ Ð±Ð¾Ð»ÑÑе ÑекÑÑа комменÑаÑиÑ, ÑÑÐ¾Ð±Ñ ÑÑÐ°Ð·Ñ Ð¿Ð¾Ð½ÑÑÑ ÑÑÑÑ Ð±ÐµÐ· пеÑеÑ
ода в ÑедакÑоÑ</li> <li data-num="555"><span class="changelog-tag changelog-tag--UX" data-tag-alias="UX">UX</span> <strong>УмнÑе ÑÑÑлки</strong> â ÑÐ²ÐµÐ´Ð¾Ð¼Ð»ÐµÐ½Ð¸Ñ Ð¾ пÑавкаÑ
и комменÑаÑиÑÑ
в ÑедакÑоÑе ведÑÑ Ð½Ð° нÑжнÑÑ ÑÑÑаниÑÑ, а не на ÑÑÑаниÑÑ Ð¼Ð°ÑеÑиала</li> </ul> <p><strong>Ðдминка â кликабелÑнÑе ÑÑÑлки в ÑаблиÑе маÑеÑиалов:</strong></p> <ul> <li data-num="556"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> <strong>Ðаголовки, авÑоÑÑ Ð¸ Ñеги кликабелÑнÑ</strong> â в ÑаблиÑе маÑеÑиалов заголовок ведÑÑ Ð½Ð° ÑÑаÑÑÑ, Ð¸Ð¼Ñ Ð°Ð²ÑоÑа â на пÑоÑилÑ, Ñеги â на ÑÑÑаниÑÑ ÑемÑ</li> <li data-num="557"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> <strong>Slug Ð´Ð»Ñ Ð²ÑеÑ
Ñегов</strong> â авÑомаÑиÑеÑÐºÐ°Ñ Ð¼Ð¸Ð³ÑаÑÐ¸Ñ Ð³ÐµÐ½ÐµÑиÑÑÐµÑ Ð°Ð´ÑеÑа Ð´Ð»Ñ Ñегов, Ñ ÐºÐ¾ÑоÑÑÑ
они оÑÑÑÑÑÑвовали</li> <li data-num="558"><span class="changelog-tag changelog-tag--UX" data-tag-alias="UX">UX</span> <strong>ÐдапÑÐ¸Ð²Ð½Ð°Ñ ÑиÑина ÑÑÑаниÑ</strong> â ÑоÑÐ¼Ñ Ð¸ ÑпиÑки полÑÑили опÑималÑнÑÑ ÑиÑÐ¸Ð½Ñ Ð²Ð¼ÐµÑÑо ÑаÑÑÑÐ³Ð¸Ð²Ð°Ð½Ð¸Ñ Ð½Ð° веÑÑ ÑкÑан</li> </ul> <p><strong>СÑабилÑноÑÑÑ Ð¸ пÑоизводиÑелÑноÑÑÑ:</strong></p> <ul> <li data-num="559"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>ÐоÑÑекÑÐ½Ð°Ñ Ð¿ÑовеÑка доÑÑÑпа</strong> â ÑеÑвеÑÐ½Ð°Ñ Ð²Ð°Ð»Ð¸Ð´Ð°ÑÐ¸Ñ Ð¿Ñав на ÑедакÑиÑование пÑавок и обÑÑждений ÑабоÑÐ°ÐµÑ ÐµÐ´Ð¸Ð½Ð¾Ð¾Ð±Ñазно Ñ ÐºÐ¾Ð¼Ð¼ÐµÐ½ÑаÑиÑми</li> <li data-num="560"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>ÐаÑиÑа Ð¾Ñ ÑÑеÑек памÑÑи</strong> â кÑÑи комменÑаÑиев и пÑоÑмоÑÑеннÑÑ
ÑлеменÑов оÑиÑаÑÑÑÑ Ð¿Ñи навигаÑии Ð¼ÐµÐ¶Ð´Ñ Ð¼Ð°ÑеÑиалами</li> <li data-num="561"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>ÐаÑиÑа Ð¾Ñ XSS</strong> â ÑдалÑн ÑÑÑаÑевÑий код, обÑ
одивÑий HTML-ÑаниÑизаÑиÑ. Ð
1Ñе полÑзоваÑелÑÑкие даннÑе пÑоÑ
одÑÑ ÑкÑаниÑование</li> </ul> </div> </details> <details class="changelog-section"> <summary class="changelog-summary"><span class="changelog-meta"><span class="changelog-meta__version">v9.21.0</span><span class="changelog-meta__date">27-02-2026</span></span><h2 id="v9210-27-02-2026--ÑмнÑе-кнопки-ÑедакÑоÑа-ÑиÑÑÑе-ÑообÑениÑ-и-мгновеннÑе-иÑпÑавлениÑ">УмнÑе кнопки ÑедакÑоÑа, ÑиÑÑÑе ÑообÑÐµÐ½Ð¸Ñ Ð¸ мгновеннÑе иÑпÑавлениÑ</h2></summary> <div class="changelog-section__body"> <p>Ðнопки пÑбликаÑии ÑепеÑÑ Ð³Ð¾Ð²Ð¾ÑÑÑ Ð½Ð° ÑеловеÑеÑком ÑзÑке: еÑли маÑеÑиал Ñже опÑбликован, авÑÐ¾Ñ Ð²Ð¸Ð´Ð¸Ñ Â«Ð¡Ð¾Ñ
ÑаниÑÑ» и «ÐбновиÑÑ Ð¿ÑбликаÑиÑ» вмеÑÑо абÑÑÑакÑного «ÐпÑбликоваÑÑ». ÐÑовеÑка гÑаммаÑики наконеÑ-Ñо мгновенно ÑбиÑÐ°ÐµÑ Ð¿Ð¾Ð´ÑÑÑкивание поÑле пÑинÑÑÐ¸Ñ Ð¸ÑпÑавлениÑ. ÐобилÑÐ½Ð°Ñ Ð²ÐµÑÑÐ¸Ñ ÑедакÑоÑа ÑÑала замеÑно аккÑÑаÑнее â конÑенÑ, Ñапка и Ð¿Ð°Ð½ÐµÐ»Ñ Ð¸Ð½ÑÑÑÑменÑов вÑÑÐ¾Ð²Ð½ÐµÐ½Ñ Ð´Ð¾ пикÑелÑ.</p> <p><strong>РедакÑÐ¾Ñ â кнопки, коÑоÑÑе не пÑÑаÑÑ:</strong></p> <ul> <li data-num="519"><span class="changelog-tag changelog-tag--UX" data-tag-alias="UX">UX</span> <strong>«СоÑ
ÑаниÑÑ» вмеÑÑо «ÐпÑбликоваÑÑ»</strong> â Ð´Ð»Ñ Ñже опÑбликованнÑÑ
маÑеÑиалов Ð³Ð»Ð°Ð²Ð½Ð°Ñ ÐºÐ½Ð¾Ð¿ÐºÐ° в Ñапке ÑедакÑоÑа ÑепеÑÑ Ð¿Ð¾ÐºÐ°Ð·ÑÐ²Ð°ÐµÑ Â«Ð¡Ð¾Ñ
ÑаниÑÑ», а в вÑпадаÑÑем Ð¼ÐµÐ½Ñ â «ÐбновиÑÑ Ð¿ÑбликаÑиÑ». РанÑÑе авÑÐ¾Ñ Ð²Ð¸Ð´ÐµÐ» «ÐбновиÑÑ» на обоиÑ
ÑлеменÑаÑ
и не мог бÑÑÑÑо оÑлиÑиÑÑ ÑоÑ
Ñанение ÑеÑновика Ð¾Ñ Ð¾Ð±Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ Ð¿ÑбликаÑии</li> <li data-num="520"><span class="changelog-tag changelog-tag--UX" data-tag-alias="UX">UX</span> <strong>Ðиалог подÑвеÑÐ¶Ð´ÐµÐ½Ð¸Ñ Ð°Ð´Ð°Ð¿ÑиÑован</strong> â пÑи обновлении опÑбликованного маÑеÑиала диалог ÑÑÑко ÑпÑаÑÐ¸Ð²Ð°ÐµÑ Â«ÐбновиÑÑ Ð¿ÑбликаÑиÑ?» Ñ Ð¿Ð¾ÑÑнением «ÐÐ·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ ÑÑанÑÑ Ð´Ð¾ÑÑÑÐ¿Ð½Ñ ÑиÑаÑелÑм». Ðл
1Ñ Ð½Ð¾Ð²ÑÑ
маÑеÑиалов â «ÐпÑбликоваÑÑ?» как пÑежде</li> <li data-num="521"><span class="changelog-tag changelog-tag--UX" data-tag-alias="UX">UX</span> <strong>Ðконка на кнопке «ÐÑиглаÑиÑÑ»</strong> â аккÑÑаÑÐ½Ð°Ñ SVG-иконка полÑзоваÑÐµÐ»Ñ Ñ Ð¿Ð»ÑÑом Ð´ÐµÐ»Ð°ÐµÑ ÐºÐ½Ð¾Ð¿ÐºÑ Ð²Ð¸Ð·ÑалÑно понÑÑнее</li> </ul> <p><strong>ÐÑовеÑка гÑаммаÑики â подÑÑÑкивание иÑÑÐµÐ·Ð°ÐµÑ Ð¼Ð³Ð½Ð¾Ð²ÐµÐ½Ð½Ð¾:</strong></p> <ul> <li data-num="522"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>ÐÑпÑавленнÑе оÑибки болÑÑе не подÑÑÑкиваÑÑÑÑ</strong> â поÑле пÑÐ¸Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð·Ð°Ð¼ÐµÐ½Ñ Ð¸Ð· LanguageTool волниÑÑое подÑÑÑкивание ÑбиÑаеÑÑÑ ÑÑазÑ. РанÑÑе декоÑаÑÐ¸Ñ Â«Ð²Ñживала» поÑле Ð·Ð°Ð¼ÐµÐ½Ñ ÑекÑÑа и оÑÑавалаÑÑ Ð²Ð¸Ð´Ð¸Ð¼Ð¾Ð¹ до ÑледÑÑÑей полной пеÑепÑовеÑки докÑменÑа</li> </ul> <p><strong>СообÑÐµÐ½Ð¸Ñ â ÑиÑÑÑй ÑпиÑок диалогов:</strong></p> <ul> <li data-num="523"><span class="changelog-tag changelog-tag--UX" data-tag-alias="UX">UX</span> <strong>ÐÑÑÑÑе диалоги ÑкÑÑÑÑ</strong> â в ÑпиÑке ÑообÑений болÑÑе не оÑобÑажаÑÑÑÑ Ð´Ð¸Ð°Ð»Ð¾Ð³Ð¸, в коÑоÑÑÑ
еÑÑ Ð½Ð¸ÐºÑо не напиÑал. ТолÑко ÑеалÑнÑе пеÑепиÑки</li> </ul> <p><strong>ÐобилÑÐ½Ð°Ñ Ð²ÐµÑÑÐ¸Ñ ÑедакÑоÑа â пикÑÐµÐ»Ñ Ðº пикÑелÑ:</strong></p> <ul> <li data-num="524"><span class="changelog-tag changelog-tag--UX" data-tag-alias="UX">UX</span> <strong>ÐонÑÐµÐ½Ñ Ð²ÑÑовнен Ñ Ñапкой</strong> â на мобилÑнÑÑ
и планÑеÑаÑ
боковÑе оÑÑÑÑÐ¿Ñ ÐºÐ¾Ð½ÑенÑа ÑовпадаÑÑ Ñ Ð¾ÑÑÑÑпами Ñапки ÑедакÑоÑа. ÐолÑÑе никакого визÑалÑного «Ñдвига» Ð¼ÐµÐ¶Ð´Ñ Ñапкой и ÑекÑÑом</li> <li data-num="525"><span class="changelog-tag changelog-tag--UX" data-tag-alias="UX">UX</span> <strong>Ðнопка «ÐÑиглаÑиÑÑ» ÑбÑана из Ñапки</strong> â на мобилÑнÑÑ
ÑÑо дейÑÑвие доÑÑÑпно в вÑпадаÑÑем Ð¼ÐµÐ½Ñ Â«â¢â¢â¢Â», Ñапка ÑÑала компакÑнее</li> <li data-num="526"><span class="changelog-tag changelog-tag--UX" data-tag-alias="UX">UX</span> <strong>ÐÐ°Ð½ÐµÐ»Ñ Ð¸Ð½ÑÑÑÑменÑов на веÑÑ ÑкÑан</strong> â на планÑеÑаÑ
(â¤768px) вÑпадаÑÑее Ð¼ÐµÐ½Ñ ÑепеÑÑ ÑикÑиÑованное и ÑаÑÑÑнÑÑо на ÑиÑÐ¸Ð½Ñ ÑкÑана Ñ Ð¿Ð»Ð°Ð²Ð½Ñми ÑкÑÑглÑннÑми кÑаÑми. Ðе обÑезаеÑÑÑ Ð¸ не пÑÑÑеÑÑÑ Ð·Ð° Ñ
едеÑом</li> <li data-num="527"><span class="changelog-tag changelog-tag--UX" data-tag-alias="UX">UX</span> <strong>ÐблаÑки ÑообÑений ÑиÑе</strong> â на мобилÑнÑÑ
макÑималÑÐ½Ð°Ñ ÑиÑина облаÑка ÑвелиÑена Ñ 80% до 92% â длиннÑе ÑообÑÐµÐ½Ð¸Ñ Ñдобнее ÑиÑаÑÑ</li> </ul> <p><strong>ÐагÑÑзка ÑедакÑоÑа â без лиÑниÑ
задеÑжек:</strong></p> <ul> <li data-num="528"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>ÐгновеннÑй ÑкÑан авÑоÑизаÑии</strong> â еÑли полÑзоваÑÐµÐ»Ñ Ð½Ðµ залогинен или не Ð¸Ð¼ÐµÐµÑ Ð´Ð¾ÑÑÑпа к маÑеÑиалÑ, ÑкÑан Ñ Ð¿Ñедложением войÑи поÑвлÑеÑÑÑ ÑÑазÑ, а не поÑле 8-ÑекÑндного ÑаймеÑа загÑÑзки</li> </ul> <p><strong>ÐÑÑоÑÐ¸Ñ Ð²ÐµÑÑий â понÑÑнÑе меÑки:</strong></p> <ul> <li data-num="529"><span class="changelog-tag changelog-tag--UX" data-tag-alias="UX">UX</span> <strong>ЧеловеÑеÑкие Ð½Ð°Ð·Ð²Ð°Ð½Ð¸Ñ Ð²ÐµÑÑий</strong> â «ÐлÑÑевой ÑÑап» â «ÐÑÑпное изменение», «ÐÑбликаÑиÑ» â «СоÑ
Ñанение пÑи пÑбликаÑии», «СÑаÑÐ°Ñ Ð²ÐµÑÑиÑ» â «СоÑ
Ñанение». ÐÐ¼Ñ Â«Ð¡Ð¸ÑÑема» в авÑоÑе веÑÑии болÑÑе не оÑобÑажаеÑÑÑ â еÑли веÑÑÐ¸Ñ Ñоздана авÑомаÑиÑеÑки, Ñказ
1ÑваеÑÑÑ ÑолÑко даÑа</li> </ul> </div> </details> <details class="changelog-section"> <summary class="changelog-summary"><span class="changelog-meta"><span class="changelog-meta__version">v9.20.0</span><span class="changelog-meta__date">26-02-2026</span></span><h2 id="v9200-26-02-2026--мгновеннаÑ-загÑÑзка-ÑедакÑоÑа-пÑавилÑнÑе-ÑÑÑлки-и-пÑовеÑка-гÑаммаÑики">ÐÐ³Ð½Ð¾Ð²ÐµÐ½Ð½Ð°Ñ Ð·Ð°Ð³ÑÑзка ÑедакÑоÑа, пÑавилÑнÑе ÑÑÑлки и пÑовеÑка гÑаммаÑики</h2></summary> <div class="changelog-section__body"> <p>РедакÑÐ¾Ñ Ð±Ð¾Ð»ÑÑе не Ð¼Ð¸Ð³Ð°ÐµÑ Ð±ÐµÐ»Ñм ÑкÑаном пÑи оÑкÑÑÑии â вмеÑÑо ÑÑого полÑзоваÑÐµÐ»Ñ Ð²Ð¸Ð´Ð¸Ñ Ð¿Ð»Ð°Ð²Ð½Ñй ÑкелеÑон, имиÑиÑÑÑÑий ÑекÑÑ, пока конÑÐµÐ½Ñ Ð·Ð°Ð³ÑÑжаеÑÑÑ. СÑÑлки в ÑведомлениÑÑ
и пиÑÑмаÑ
ÑепеÑÑ Ð²ÐµÐ´ÑÑ ÑоÑно на нÑжнÑй маÑеÑиал Ñ ÑÑÑÑом ÑÑбÑики. ÐÑовеÑка гÑаммаÑики LanguageTool наконеÑ-Ñо ÑабоÑÐ°ÐµÑ Ð±ÐµÐ· Ñбоев в пÑодакÑене.</p> <p><strong>ÐагÑÑзка ÑедакÑоÑа â никакого белого ÑкÑана:</strong></p> <ul> <li data-num="512"><span class="changelog-tag changelog-tag--UX" data-tag-alias="UX">UX</span> <strong>СкелеÑон вмеÑÑо пÑÑÑоÑÑ</strong> â пÑи оÑкÑÑÑии ÑедакÑоÑа вмеÑÑо белого пÑÑмоÑголÑника оÑобÑажаÑÑÑÑ Ð°Ð½Ð¸Ð¼Ð¸ÑованнÑе ÑÑÑоки-заглÑÑки, имиÑиÑÑÑÑие ÑекÑÑ. РабоÑÐ°ÐµÑ Ð´Ð»Ñ Ð²ÑеÑ
Ñипов маÑеÑиалов: ÑÑаÑÑи, лиÑеÑаÑÑÑа, ÑоÑо, мÑзÑка, алÑбомÑ, видео</li> <li data-num="513"><span class="changelog-tag changelog-tag--UX" data-tag-alias="UX">UX</span> <strong>Ðлавное поÑвление заголовка</strong> â Ñапка ÑедакÑоÑа мÑгко пÑоÑвлÑеÑÑÑ Ð¿Ð¾Ñле загÑÑзки даннÑÑ
вмеÑÑо Ñезкого «пÑÑжка» из ниоÑкÑда</li> <li data-num="514"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>УÑÑÑанÑн белÑй ÑкÑан Ð¼ÐµÐ¶Ð´Ñ ÑкелеÑоном и ÑедакÑоÑом</strong> â ÑиÑÑема дожидаеÑÑÑ Ð¿Ð¾Ð»Ð½Ð¾Ð¹ загÑÑзки ÑÑилей пеÑед ÑнÑÑием ÑкелеÑона. РанÑÑе на медленном Ñоединении мог пÑоÑкакиваÑÑ Ð±ÐµÐ»Ñй ÑкÑан на 0.5â2 ÑекÑндÑ</li> <li data-num="515"><span class="changelog-tag changelog-tag--A11Y" data-tag-alias="A11Y">A11Y</span> <strong>СкелеÑон ÑÐ²Ð°Ð¶Ð°ÐµÑ <code>prefers-reduced-motion</code></strong> â анимаÑÐ¸Ñ Ð¼ÐµÑÑÐ°Ð½Ð¸Ñ Ð¾ÑклÑÑаеÑÑÑ Ð´Ð»Ñ Ð¿Ð¾Ð»ÑзоваÑелей, пÑедпоÑиÑаÑÑиÑ
минимÑм движениÑ</li> <li data-num="516"><span class="changelog-tag changelog-tag--UX" data-tag-alias="UX">UX</span> <strong>ТÑÐ¼Ð½Ð°Ñ Ñема</strong> â ÑкелеÑон коÑÑекÑно оÑобÑажаеÑÑÑ Ð¸ в ÑÑмном Ñежиме</li> </ul> <p><strong>Ð£Ð²ÐµÐ´Ð¾Ð¼Ð»ÐµÐ½Ð¸Ñ Ð¸ пиÑÑма â пÑавилÑнÑе ÑÑÑлки:</strong></p> <ul> <li data-num="517"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>СÑÑлки ведÑÑ ÐºÑда надо</strong> â пÑиглаÑениÑ, заÑвки на ÑоавÑоÑÑÑво и оÑвеÑÑ Ð½Ð° пÑавки ÑепеÑÑ ÑодеÑÐ¶Ð°Ñ Ð¿Ð¾Ð»Ð½Ñй пÑÑÑ Ðº маÑеÑÐ¸Ð°Ð»Ñ Ñ ÑÑÑÑом ÑÑбÑики. РанÑÑе ÑÑÑлка могла веÑÑи на неÑÑÑеÑÑвÑÑÑÑÑ ÑÑÑаниÑÑ, еÑли slug Ñовпадал в ÑазнÑÑ
ÑÑбÑикаÑ
</li> </ul> <p><strong>LanguageTool â ÑнÑÑ Ð¿Ð¾Ñледний баÑÑеÑ:</strong></p> <ul> <li data-num="518"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>ÐÑовеÑка гÑаммаÑики ÑабоÑÐ°ÐµÑ Ð² пÑодакÑене</strong> â добавлено ÑазÑеÑение CSP Ð´Ð»Ñ Ð·Ð°Ð¿ÑоÑов к <code>api.languagetool.org</code>. РанÑÑе бÑаÑÐ·ÐµÑ Ð¼Ð¾Ð»Ñа блокиÑовал запÑоÑÑ, и пÑовеÑка пÑоÑÑо не запÑÑкалаÑÑ</li> </ul> </div> </details> <details class="changelog-section"> <summary class="changelog-summary"><span class="changelog-meta"><span class="changelog-meta__version">v9.19.0</span><span class="changelog-meta__date">25-02-2026</span></span><h2 id="v9190-25-02-2026--ÑоавÑоÑÑÑво-опÑимизиÑованнÑе-ÑÑиÑÑÑ-и-hardened-security">СоавÑоÑÑÑво, опÑимизиÑованнÑе ÑÑиÑÑÑ Ð¸ hardened security</h2></summary> <div class="changelog-section__body"> <p>ЧиÑаÑели могÑÑ Ð·Ð°Ð¿ÑоÑиÑÑ Ð´Ð¾ÑÑÑп к ÑедакÑиÑÐ¾Ð²Ð°Ð½Ð¸Ñ Ð¿ÑÑмо Ñо ÑÑÑаниÑÑ Ð¼Ð°ÑеÑиала. ÐÑе иконки дейÑÑвий в заголовкаÑ
полÑÑили ÑÑÐ
1»ÑипÑ, клавиаÑÑÑнÑÑ Ð½Ð°Ð²Ð¸Ð³Ð°ÑÐ¸Ñ Ð¸ единÑй визÑалÑнÑй ÑзÑк. Font Awesome ÑжалÑÑ Ñ 113 ÐРдо 9.5 ÐÐ â пÑи ÑÑом добавилиÑÑ Ð¸ÐºÐ¾Ð½ÐºÐ¸ embed-пÑовайдеÑов, коÑоÑÑе ÑанÑÑе показÑвалиÑÑ Ð¿ÑÑÑÑми квадÑаÑами. Ðод капоÑом â закÑÑÑие XSS-векÑоÑа ÑеÑез ÑиÑловÑе HTML-ÑÑÑноÑÑи, ÑÑÑÑанение невидимÑÑ
ÑÑÑлок в Ñежиме пÑевÑÑ Ð¸ пеÑеÑ
од на AngularJS best practices.</p> <p><strong>СоавÑоÑÑÑво â запÑÐ¾Ñ Ð´Ð¾ÑÑÑпа в один клик:</strong></p> <ul> <li data-num="489"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> <strong>Ðнопка «ÐапÑоÑиÑÑ Ð´Ð¾ÑÑÑп к ÑедакÑиÑованиÑ»</strong> â на ÑÑÑаниÑаÑ
маÑеÑиалов и ÑкÑпозиÑии. Ðконка ÑÑкопожаÑиÑ, ÑÑлÑип Ñ Ð¿Ð¾ÑÑнением, оÑобÑажаеÑÑÑ ÑолÑко авÑоÑизованнÑм полÑзоваÑелÑм без ÑедакÑоÑÑкого доÑÑÑпа</li> <li data-num="490"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> <strong>ТÑлÑÐ¸Ð¿Ñ Ð½Ð° иконкаÑ
дейÑÑвий</strong> â «РедакÑиÑоваÑÑ», «ÐапÑоÑиÑÑ Ð´Ð¾ÑÑÑп», «ÐÑкÑÑÑÑ Ð² админке» â единÑй ÑÑÐ¸Ð»Ñ Ñ Ð¿Ð»Ð°Ð²Ð½Ð¾Ð¹ анимаÑией, ÑÑÑелкой-ÑказаÑелем и z-index без конÑликÑов</li> <li data-num="491"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> <strong>ÐдинÑй микÑин <code>title-icon-styles</code></strong> â DRY: один иÑÑоÑник пÑÐ°Ð²Ð´Ñ Ð´Ð»Ñ Ð¸ÐºÐ¾Ð½Ð¾Ðº в заголовкаÑ
ÑÑаÑей, ÑкÑпозиÑии, пÑоÑилей авÑоÑов, ÑобÑÑий и Ñегов</li> <li data-num="492"><span class="changelog-tag changelog-tag--UX" data-tag-alias="UX">UX</span> <strong>ТекÑÑ Ð±Ð°Ð½Ð½ÐµÑа</strong> â «ХоÑиÑе ÑоÑÑÑдниÑаÑÑ» â «ÐолÑÑе ÑоÑÑÑдниÑаÑÑ» â ÑоÑнее пеÑедаÑÑ ÑÑÑÑ</li> </ul> <p><strong>Font Awesome â в 12 Ñаз легÑе и полнее:</strong></p> <ul> <li data-num="493"><span class="changelog-tag changelog-tag--PERF" data-tag-alias="PERF">PERF</span> <strong>СÑбÑеÑиÑование ÑÑиÑÑов</strong> â полнÑй FA (113 ÐÐ) заменÑн ÑоÑеÑнÑм ÑÑбÑеÑом (9.5 ÐÐ woff2). 125 глиÑов: 112 solid + 13 brands â Ñовно Ñе, ÑÑо иÑполÑзÑÑÑÑÑ Ð½Ð° ÑайÑе</li> <li data-num="494"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>9 embed-иконок болÑÑе не пÑÑÑÑе квадÑаÑÑ</strong> â Ð´Ð¾Ð±Ð°Ð²Ð»ÐµÐ½Ñ Vimeo, SoundCloud, Spotify, Telegram, RuTube (play-circle), Datawrapper (chart-bar), Typeform (poll-h), itch.io (gamepad), Imgur (images)</li> <li data-num="495"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>Legacy-алиаÑÑ</strong> â Ð´Ð¾Ð±Ð°Ð²Ð»ÐµÐ½Ñ <code>fa-clock-o</code> и <code>fa-refresh</code> (â <code>fa-sync-alt</code>) Ð´Ð»Ñ Ð¾Ð±ÑаÑной ÑовмеÑÑимоÑÑи Ñо ÑÑаÑÑм конÑенÑом</li> <li data-num="496"><span class="changelog-tag changelog-tag--REFACTOR" data-tag-alias="REFACTOR">CODE</span> <strong>ÐвÑомаÑиÑеÑÐºÐ°Ñ ÑбоÑка</strong> â <code>scripts/copy-assets.js</code> болÑÑе не пеÑезапиÑÑÐ²Ð°ÐµÑ ÑÑбÑеÑиÑованнÑе ÑÑиÑÑÑ Ð¿Ð¾Ð»Ð½Ñми из bower</li> </ul> <p><strong>ÐезопаÑноÑÑÑ â еÑÑ Ð¾Ð´Ð¸Ð½ Ñлой заÑиÑÑ:</strong></p> <ul> <li data-num="497"><span class="changelog-tag changelog-tag--SEC" data-tag-alias="SEC">SEC</span> <strong>ЧиÑловÑе HTML-ÑÑÑноÑÑи Ð´Ð»Ñ <code><</code>, <code>></code>, <code>&</code> болÑÑе не декодиÑÑÑÑÑÑ</strong> â <code>decodeSafeEntities()</code> в <code>stripTagsAndTruncate</code> пÑопÑÑÐºÐ°ÐµÑ <code><</code>/<code>></code>/<code>&</code> и иÑ
hex-аналоги. ÐакÑÑÐ²Ð°ÐµÑ Ð²ÐµÐºÑÐ¾Ñ ÑеконÑÑÑÑкÑии HTML-Ñегов ÑеÑез <code><script></code> в конÑекÑÑе <code>ng-bind-html</code></li> <li data-num="498"><span class="changelog-tag changelog-tag--SEC" data-tag-alias="SEC">SEC</span> <strong>ÐалидаÑÐ¸Ñ contentItem ID</strong> â regex-пÑовеÑка на допÑÑÑимÑе ÑÐ¸Ð¼Ð²Ð¾Ð»Ñ (лаÑиниÑа, киÑиллиÑа, ÑиÑÑÑ, деÑиÑÑ) + заÑиÑа Ð¾Ñ path traversal (<code>..</code>) в <code>remarksService</code></li> <li data-num="499"><span class="changelog-tag changelog-tag--SEC" data-tag-alias="SEC">SEC</span> <strong>СаниÑизаÑÐ¸Ñ href в пÑевÑÑ</strong>
1 â <code>decodeSafeEntities()</code> вÑзÑваеÑÑÑ Ð´Ð¾ href-ÑкÑаниÑованиÑ, ÑÑÐ¾Ð±Ñ <code>"</code> не вÑÑвалÑÑ Ð·Ð° пÑÐµÐ´ÐµÐ»Ñ Ð°ÑÑибÑÑа</li> </ul> <p><strong>AngularJS â пÑавилÑнÑе паÑÑеÑнÑ:</strong></p> <ul> <li data-num="500"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>ÐÐµÐ²Ð¸Ð´Ð¸Ð¼Ð°Ñ ÑÑÑлка «РедакÑиÑоваÑÑ» в Ñежиме пÑевÑÑ</strong> â <code>ng-if</code> пеÑенеÑÑн Ñ <code><i></code> на <code><a></code>, вÑÑ ÑÑÑлка Ñеликом ÑкÑÑваеÑÑÑ Ð²Ð¼ÐµÑÑо ÑендеÑинга пÑÑÑого кликабелÑного ÑлеменÑа</li> <li data-num="501"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <code>**$timeout</code> вмеÑÑо <code>setTimeout</code> в retry-логике ÑемаÑок** â повÑоÑнÑе попÑÑки коÑÑекÑно оÑменÑÑÑÑÑ Ð¿Ñи ÑниÑÑожении ÑкоÑпа, ÑÑеÑий паÑамеÑÑ <code>false</code> опÑимизиÑÑÐµÑ digest</li> <li data-num="502"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>СинÑ
ÑонизаÑÐ¸Ñ <code>remarkWindowOpen</code></strong> â <code>socialTextDirective</code> на <code>post-body</code> (вне ÑкоÑпа <code>SocialSelectionCtrl</code>) ÑепеÑÑ Ð¸ÑполÑзÑÐµÑ <code>$rootScope.remarkWindowOpen</code> â обÑабоÑÑики touch/mouseup коÑÑекÑно оÑвÑзÑваÑÑÑÑ Ð½Ð° мобилÑнÑÑ
</li> </ul> <p><strong>ÐоÑÑÑпноÑÑÑ (A11Y):</strong></p> <ul> <li data-num="503"><span class="changelog-tag changelog-tag--A11Y" data-tag-alias="A11Y">A11Y</span> <code>**:focus-visible</code> на иконкаÑ
дейÑÑвий** â клавиаÑÑÑÐ½Ð°Ñ Ð½Ð°Ð²Ð¸Ð³Ð°ÑÐ¸Ñ Ð¿Ð¾ÐºÐ°Ð·ÑÐ²Ð°ÐµÑ ÑÑлÑÐ¸Ð¿Ñ Ð¿Ñи ÑокÑÑе, не ÑолÑко пÑи hover</li> <li data-num="504"><span class="changelog-tag changelog-tag--A11Y" data-tag-alias="A11Y">A11Y</span> <code>**prefers-reduced-motion</code>** â анимаÑии ÑÑлÑипов и иконок оÑклÑÑаÑÑÑÑ Ð´Ð»Ñ Ð¿Ð¾Ð»ÑзоваÑелей, пÑедпоÑиÑаÑÑиÑ
минимÑм движениÑ</li> <li data-num="505"><span class="changelog-tag changelog-tag--A11Y" data-tag-alias="A11Y">A11Y</span> <code>**aria-hidden="true"</code> на декоÑаÑивнÑÑ
иконкаÑ
и ÑÑлÑипаÑ
** â ÑкÑинÑидеÑÑ ÑиÑаÑÑ <code>aria-label</code> ÑÑÑлки, а не «fa-pencil-alt РедакÑиÑоваÑÑ»</li> <li data-num="506"><span class="changelog-tag changelog-tag--A11Y" data-tag-alias="A11Y">A11Y</span> <strong>ÐонÑиÑÑенÑнÑе <code>aria-label</code></strong> â «РедакÑиÑоваÑÑ ÑÑÑаниÑÑ Ð°Ð²ÑоÑа» â «РедакÑиÑоваÑÑ Ð¿ÑоÑилÑ» â ÑÐ¾Ð²Ð¿Ð°Ð´Ð°ÐµÑ Ñ <code>title</code> и ÑÑлÑипом</li> </ul> <p><strong>ÐÑоизводиÑелÑноÑÑÑ Ð¸ ÑÑабилÑноÑÑÑ:</strong></p> <ul> <li data-num="507"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>ÐÑпÑавка ÑемаÑок</strong> â на мобилÑнÑÑ
болÑÑе не должно бÑÑÑ Ð¿Ñоблем Ñ Ð½ÐµÐ¾Ð±Ñ
одимоÑÑÑÑ Ð½ÐµÑколÑко Ñаз нажимаÑÑ Ð½Ð° кнопкÑ</li> <li data-num="508"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>ÐобилÑнÑе ÑообÑениÑ</strong> â адапÑÐ¸Ð²Ð½Ð°Ñ Ð²ÐµÑÑÑка, ÑÑÐ¾Ð±Ñ Ð¿Ð¾Ð»Ðµ Ð´Ð»Ñ ÑообÑÐµÐ½Ð¸Ñ Ð¾ÑÑавалоÑÑ Ð² пÑеделаÑ
ÑкÑана</li> <li data-num="509"><span class="changelog-tag changelog-tag--PERF" data-tag-alias="PERF">PERF</span> <strong>DOMParser â один на компоненÑ</strong> â <code>notificationItem</code> ÑоздаÑÑ <code>DOMParser</code> один Ñаз вмеÑÑо нового ÑкземплÑÑа на каждое Ñведомление</li> <li data-num="510"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>z-index овеÑÐ»ÐµÑ ÑемаÑок</strong>
1 â <code>.send-remark-overlay</code> полÑÑил <code>position: fixed</code> и <code>z-index: 9999998</code> (ниже <code>.social-selection</code> на 1) â коÑÑекÑное наложение ÑлоÑв</li> <li data-num="511"><span class="changelog-tag changelog-tag--REFACTOR" data-tag-alias="REFACTOR">CODE</span> <strong>SCSS-пеÑеменнÑе вмеÑÑо Ñ
аÑдкода</strong> â <code>$color-black</code>, <code>$color-tag</code>, <code>$font-1</code> в микÑине иконок</li> </ul> </div> </details> <details class="changelog-section"> <summary class="changelog-summary"><span class="changelog-meta"><span class="changelog-meta__version">v9.18.0</span><span class="changelog-meta__date">24-02-2026</span></span><h2 id="v9180-24-02-2026--баннеÑÑ-ÑоÑÑаÑÑиÑ-в-ленÑаÑ
-и-languagetool-на-ÑÑеÑоидаÑ
">ÐаннеÑÑ ÑоÑÑаÑÑÐ¸Ñ Ð² ленÑаÑ
и LanguageTool на ÑÑеÑоидаÑ
</h2></summary> <div class="changelog-section__body"> <p>ÐенÑа полÑÑила два новÑÑ
баннеÑа, пÑевÑаÑаÑÑиÑ
паÑÑивного ÑиÑаÑÐµÐ»Ñ Ð² акÑивного ÑÑаÑÑника. LanguageTool ÑÑал надÑжнее ÑÑали: паÑаллелÑнÑе пÑовеÑки болÑÑе не ÑбиваÑÑ Ð´ÑÑг дÑÑга, навигаÑÐ¸Ñ Ð¿Ð¾ оÑибкам безопаÑна даже пÑи закÑÑÑии ÑедакÑоÑа. Ðод капоÑом â 28 ÑоÑеÑнÑÑ
ÑикÑов: Ð¾Ñ ÐºÑиÑиÑеÑкиÑ
багов маÑÑÑÑÑизаÑии до полноÑенной keyboard accessibility.</p> <p><strong>ÐенÑа â баннеÑÑ ÑоÑÑаÑÑиÑ:</strong></p> <ul> <li data-num="468"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> <strong>ÐÐ°Ð½Ð½ÐµÑ Â«ÐÑÑÑ Ð¸Ð´ÐµÐ¸?»</strong> â в ÑайдбаÑе ленÑÑ: ÑеÑÑÑе бÑÑÑÑÑÑ
дейÑÑÐ²Ð¸Ñ (пÑедложиÑÑ Ð¸Ð´ÐµÑ, обÑÑдиÑÑ, пÑедложиÑÑ ÑемÑ, наÑаÑÑ ÑоÑÑÑдниÑеÑÑво) â каждое оÑкÑÑÐ²Ð°ÐµÑ ÑоÑÐ¼Ñ Ð¾Ð±ÑаÑной ÑвÑзи Ñ Ð½Ñжной Ñемой. ÐлеганÑнÑй дизайн Ñ SVG-иконками, ÑÑÐ¼Ð½Ð°Ñ Ñема, мобилÑÐ½Ð°Ñ Ð°Ð´Ð°Ð¿ÑаÑиÑ</li> <li data-num="469"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> <strong>ÐÐ°Ð½Ð½ÐµÑ Â«Ðаза знаний»</strong> â оÑобÑажаеÑÑÑ Ð½Ð° вкладке «РедакÑиÑ»: пÑÑÑ ÑÑÑлок на клÑÑевÑе маÑеÑÐ¸Ð°Ð»Ñ Ð¿Ð»Ð°ÑÑоÑÐ¼Ñ (гайд, пÑинÑипÑ, пÑавила, кодекÑ, библиоÑека инÑÑÑÑменÑов). ÐÑÑÑÑÑй онбоÑдинг Ð´Ð»Ñ Ð½Ð¾Ð²ÑÑ
авÑоÑов</li> </ul> <p><strong>LanguageTool â кÑиÑиÑеÑкие ÑикÑÑ:</strong></p> <ul> <li data-num="470"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>ÐаÑаллелÑнÑе Ñанки болÑÑе не ÑбиваÑÑ Ð´ÑÑг дÑÑга</strong> â длиннÑе ÑекÑÑÑ (>18 ÐÐ) ÑазбиваÑÑÑÑ Ð½Ð° Ñанки и пÑовеÑÑÑÑÑÑ Ð¿Ð°ÑаллелÑно ÑеÑез <code>Promise.all</code>. РанÑÑе каждÑй Ñанк Ñоздавал Ñвой <code>AbortController</code> и оÑменÑл пÑедÑдÑÑие â вÑживал ÑолÑко поÑледний. ТепеÑÑ Ð²Ñе Ñанки делÑÑ Ð¾Ð´Ð¸Ð½ конÑÑоллеÑ</li> <li data-num="471"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>ÐаÑиÑа Ð¾Ñ Â«Ð¼ÑÑÑвого» ÑедакÑоÑа</strong> â <code>isDestroyed</code> guard в <code>navigateToDecoration()</code> пÑедоÑвÑаÑÐ°ÐµÑ Ð¾Ð±ÑаÑение к Ñже ÑниÑÑÐ¾Ð¶ÐµÐ½Ð½Ð¾Ð¼Ñ ÑедакÑоÑÑ Ð¸Ð· оÑложенного <code>setTimeout</code></li> <li data-num="472"><span class="changelog-tag changelog-tag--PERF" data-tag-alias="PERF">PERF</span> <strong>УмнÑй кÑÑ-инвалидаÑоÑ</strong> â доÑогоÑÑоÑÑий <code>DecorationSet.find()</code> в ProseMirror <code>apply()</code> ÑепеÑÑ Ð²ÑзÑваеÑÑÑ ÑолÑко пÑи Yjs-ÑинÑ
ÑонизаÑиÑ
1Ñ
и кÑÑпнÑÑ
ÑÑанзакÑиÑÑ
(>3 Ñагов), а не на каждÑй Ñимвол</li> </ul> <p><strong>ÐенÑа â маÑÑÑÑÑизаÑÐ¸Ñ Ð¸ ÑÑабилÑноÑÑÑ:</strong></p> <ul> <li data-num="473"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>ÐеÑеклÑÑение вкладок болÑÑе не пеÑеÑоздаÑÑ ÐºÐ¾Ð½ÑÑоллеÑ</strong> â обÑÑÑка <code>updateUrl()</code> ÑепеÑÑ ÐºÐ¾ÑÑекÑно пÑобÑаÑÑÐ²Ð°ÐµÑ <code>preventRouteReload</code>, и route-hijack ÑабоÑÐ°ÐµÑ ÐºÐ°Ðº задÑмано. Ðез ÑÑого ÐºÐ°Ð¶Ð´Ð°Ñ Ñмена вкладки Ñбивала и пеÑеÑоздавала <code>feedCtrl</code> Ñ Ð½ÑлÑ</li> <li data-num="474"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>УÑÑÑÐ°Ð½ÐµÐ½Ñ Ð´Ð²Ð¾Ð¹Ð½Ñе API-запÑоÑÑ Ð½Ð° вкладке «РедакÑиÑ»</strong> â ноÑмализаÑÐ¸Ñ <code>statusChanged</code> пÑедоÑвÑаÑÐ°ÐµÑ Ð»Ð¾Ð¶Ð½Ð¾Ðµ ÑÑабаÑÑвание пÑи ÑÑавнении <code>null</code> Ñ <code>'current'</code></li> <li data-num="475"><span class="changelog-tag changelog-tag--PERF" data-tag-alias="PERF">PERF</span> <strong>One-time bindings в комменÑаÑиÑÑ
</strong> â <code>::</code> на <code>article.comments</code>, <code>article.newComments</code> и <code>article.link#comments</code> в каÑÑоÑкаÑ
ленÑÑ ÑбиÑаÑÑ Ð»Ð¸Ñние watcher'Ñ</li> </ul> <p><strong>ÐоÑÑÑпноÑÑÑ (A11Y):</strong></p> <ul> <li data-num="476"><span class="changelog-tag changelog-tag--A11Y" data-tag-alias="A11Y">A11Y</span> <code>**:focus-visible</code> на ~15 инÑеÑакÑивнÑÑ
ÑлеменÑаÑ
** â клавиаÑÑÑÐ½Ð°Ñ Ð½Ð°Ð²Ð¸Ð³Ð°ÑÐ¸Ñ Ñ ÑиÑменнÑм Ñиним конÑÑÑом (<code>#1b2fd8</code> / <code>#6b8aff</code> в ÑÑмной Ñеме) на кнопкаÑ
панели инÑÑÑÑменÑов, ÑогглаÑ
, пÑнкÑаÑ
менÑ, вкладкаÑ
ленÑÑ Ð¸ баннеÑнÑÑ
ÑÑÑлкаÑ
</li> <li data-num="477"><span class="changelog-tag changelog-tag--A11Y" data-tag-alias="A11Y">A11Y</span> <code>**prefers-reduced-motion</code>** â анимаÑии пÑлÑÑиÑÑÑÑиÑ
ÑоÑек авÑоÑизаÑии и вÑпÑÑки LanguageTool оÑклÑÑаÑÑÑÑ Ð´Ð»Ñ Ð¿Ð¾Ð»ÑзоваÑелей, пÑедпоÑиÑаÑÑиÑ
минимÑм движениÑ</li> <li data-num="478"><span class="changelog-tag changelog-tag--A11Y" data-tag-alias="A11Y">A11Y</span> <code>**role="menuitem"</code> в Tools-панели** â вÑе пÑнкÑÑ Ð¼ÐµÐ½Ñ ÑедакÑоÑа полÑÑили ÑеманÑиÑеÑкÑÑ ÑÐ¾Ð»Ñ Ð´Ð»Ñ ÑкÑинÑидеÑов</li> <li data-num="479"><span class="changelog-tag changelog-tag--A11Y" data-tag-alias="A11Y">A11Y</span> <code>**aria-hidden="true"</code> на декоÑаÑивнÑÑ
иконкаÑ
** â <code>fa-user-plus</code> во вÑеÑ
ÑаблонаÑ
ÑкÑÑÑÑ Ð¾Ñ Ð°ÑÑиÑÑивнÑÑ
ÑеÑ
нологий</li> <li data-num="480"><span class="changelog-tag changelog-tag--A11Y" data-tag-alias="A11Y">A11Y</span> <strong>СеманÑиÑеÑкие <code><button></code> вмеÑÑо <code><a href=""></code></strong> â Ð±Ð°Ð½Ð½ÐµÑ Â«ÐÑÑÑ Ð¸Ð´ÐµÑ?» иÑполÑзÑÐµÑ Ð½Ð°ÑÑоÑÑие кнопки Ð´Ð»Ñ Ð´ÐµÐ¹ÑÑвий, не навигаÑии</li> </ul> <p><strong>ТÑÐ¼Ð½Ð°Ñ Ñема â полное покÑÑÑие:</strong></p> <ul> <li data-num="481"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>ÐоиÑк по базе ÑноÑок</strong> â <code>footnote-search</code> полÑÑил полноÑеннÑй dark mode: инпÑÑ, ÑезÑлÑÑаÑÑ, ÑекÑÑ ÑлеменÑов, ÑÑаÑÑÑ Ð·Ð°Ð³ÑÑзки, оÑибки â вÑÑ ÑиÑаемо на ÑÑмном Ñоне</li> <li data-num="482"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>Ðейджи и индикаÑоÑÑ Ð»ÐµÐ½ÑÑ</strong>
1 â <code>.feed-sidebar__badge</code>, <code>.feed-tabs__badge</code>, <code>.feed-tabs__dot</code> коÑÑекÑно оÑобÑажаÑÑÑÑ Ð² ÑÑмной Ñеме</li> <li data-num="483"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>СÑаÑÑÑ ÑÐ¾ÐµÐ´Ð¸Ð½ÐµÐ½Ð¸Ñ Ð² Tools-панели</strong> â компакÑнÑе индикаÑоÑÑ Ð² ÑÑÑеÑе панели пеÑÐµÐ²ÐµÐ´ÐµÐ½Ñ Ñ Ñ
аÑдкоженнÑÑ
Ant Design ÑвеÑов на единÑе пеÑеменнÑе <code>$success-color</code> / <code>$warning-color</code> / <code>$danger-color</code></li> </ul> <p><strong>Ðод и ÑÑабилÑноÑÑÑ:</strong></p> <ul> <li data-num="484"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <code>**encodeURIComponent</code> на <code>documentName</code>** â в <code>acceptRequest</code> / <code>declineRequest</code> Ñведомлений. ÐвоеÑоÑие в <code>content-item:<slug></code> болÑÑе не Ð»Ð¾Ð¼Ð°ÐµÑ URL</li> <li data-num="485"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>try/catch на <code>enableLanguageTool()</code></strong> â иниÑиализаÑÐ¸Ñ LanguageTool в <code>$onChanges</code> не ÑонÑÐµÑ ÑедакÑоÑ, еÑли ÑаÑÑиÑение еÑÑ Ð½Ðµ гоÑово</li> <li data-num="486"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>DRY в <code>sendFeedbackMessage</code></strong> â дÑблиÑÑÑÑаÑÑÑ Ð»Ð¾Ð³Ð¸ÐºÐ° оÑкÑÑÑÐ¸Ñ Ð¼Ð¾Ð´Ð°Ð»ÐºÐ¸ из hash-watcher и broadcast-handler вÑнеÑена в обÑÑÑ <code>_openWithTopic()</code></li> <li data-num="487"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>Error logging в ÑведомлениÑÑ
</strong> â catch-блоки <code>acceptRequest</code> / <code>declineRequest</code> логиÑÑÑÑ Ð¾Ñибки вмеÑÑо молÑаливого пÑоглаÑÑваниÑ</li> <li data-num="488"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>ÐенеÑаÑÐ¸Ñ <code>.woff</code> ÑÑиÑÑов</strong> â <code>subset-fontawesome.py</code> ÑепеÑÑ ÑоздаÑÑ Ð¸ <code>.woff</code>, и <code>.woff2</code> Ð´Ð»Ñ Ð¿Ð¾Ð»Ð½Ð¾Ð³Ð¾ покÑÑÑÐ¸Ñ Ð±ÑаÑзеÑов</li> </ul> </div> </details> <details class="changelog-section"> <summary class="changelog-summary"><span class="changelog-meta"><span class="changelog-meta__version">v9.17.0</span><span class="changelog-meta__date">23-02-2026</span></span><h2 id="v9170-23-02-2026--бейджи-непÑоÑиÑанного-в-ленÑе-лиÑеÑаÑÑÑа-без-обÑÑÑок-и-Ñ
иÑÑÑгиÑеÑкаÑ-ÑÑабилÑноÑÑÑ">Ðейджи непÑоÑиÑанного в ленÑе, лиÑеÑаÑÑÑа без обÑÑÑок и Ñ
иÑÑÑгиÑеÑÐºÐ°Ñ ÑÑабилÑноÑÑÑ</h2></summary> <div class="changelog-section__body"> <p>ÐенÑа ÑÑала живой: бейджи показÑваÑÑ, ÑколÑко нового поÑвилоÑÑ Ñ Ð¿Ð¾Ñледнего визиÑа. ÐиÑеÑаÑÑÑнÑе ÑекÑÑÑ Ð¿ÑбликÑÑÑÑÑ Ð½Ð°Ð¿ÑÑмÑÑ, без медиа-пÑоÑлойки. Ðод капоÑом â ÑеÑÐ¸Ñ Ñ
иÑÑÑгиÑеÑкиÑ
ÑикÑов: ÑÑеÑки ÑаймеÑов, гонки запÑоÑов и кÑоÑÑ-аккаÑнÑнÑе аÑÑеÑакÑÑ Ð¿Ð¾Ð»Ð½Ð¾ÑÑÑÑ ÑÑÑÑаненÑ.</p> <p><strong>ÐенÑа â непÑоÑиÑанное и ÑедакÑионнÑе ÑилÑÑÑÑ:</strong></p> <ul> <li data-num="454"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> <strong>Ðейджи непÑоÑиÑанного</strong> â на каждой вкладке ленÑÑ Ð¾ÑобÑажаеÑÑÑ ÐºÐ¾Ð»Ð¸ÑеÑÑво новÑÑ
маÑеÑиалов Ñ Ð¼Ð¾Ð¼ÐµÐ½Ñа поÑледнего поÑеÑениÑ. ТоÑка-индикаÑÐ¾Ñ Ð´Ð»Ñ Ð²ÐºÐ»Ð°Ð´Ð¾Ðº, коÑоÑÑе еÑÑ Ð½Ð¸ ÑÐ°Ð·Ñ Ð½Ðµ оÑкÑÑвалиÑÑ</li> <li data-num="455"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> <strong>РедакÑионнÑе подвкладки inline</strong> â ÐаÑвки, ÐÑÑнал, ЧÑлан оÑобÑажаÑÑÑÑ ÑÑдом Ñ ÑилÑÑÑами на деÑкÑопе, оÑделÑной ÑÑÑокой Ñипов на мобилÑнÑÑ
. СоÑÑиÑовка авÑомаÑиÑеÑки ÑкÑÑваеÑÑÑ Ð´Ð»Ñ Ð ÐµÐ´Ð°ÐºÑии (вÑегда «новое»)</li> <li data-num="456"><span class="changelog-tag changelog-tag--PERF" data-tag-alias="PERF">PERF</span> <strong>ÐÑедвÑÑиÑленнÑе оÑÑÑвки</strong>
1 â <code>_excerpt</code> ÑаÑÑÑиÑÑваеÑÑÑ Ð¾Ð´Ð¸Ð½ Ñаз пÑи загÑÑзке, а не на каждÑй digest-Ñикл Angular â минÑÑ O(2N) вÑзовов на каждÑй ÑендеÑ</li> </ul> <p><strong>ÐиÑеÑаÑÑÑа â пÑÑÐ¼Ð°Ñ Ð¿ÑбликаÑиÑ:</strong></p> <ul> <li data-num="457"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> <strong>ÐÑÑмой body</strong> â ÑекÑÑÑ Ð»Ð¸ÑеÑаÑÑÑного ÑоÑмаÑа пÑбликÑÑÑÑÑ Ð½Ð°Ð¿ÑÑмÑÑ Ð² оÑновное Ñело докÑменÑа, без пÑомежÑÑоÑнÑÑ
медиа-обÑекÑов</li> <li data-num="458"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> <strong>СинÑ
ÑонизаÑÐ¸Ñ Ð¼ÐµÐ´Ð¸Ð°</strong> â пÑи пеÑеклÑÑении Ñипа конÑенÑа медиа авÑомаÑиÑеÑки пеÑеÑÑиÑÑваÑÑÑÑ Ð¿Ð¾Ð´ новÑÑ ÑÑÑÑкÑÑÑÑ</li> <li data-num="459"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> <strong>ÐÐ¾Ð»Ð½Ð°Ñ Ð¸Ð½ÑегÑаÑÐ¸Ñ Tools-панели</strong> â ноÑной Ñежим, авÑоÑипогÑаÑ, ÑÑÑÑÑики Ñлов/Ñимволов и кнопка пÑиглаÑений ÑепеÑÑ Ð´Ð¾ÑÑÑÐ¿Ð½Ñ Ð¸ в Ñаблоне лиÑеÑаÑÑÑÑ</li> </ul> <p><strong>СÑабилÑноÑÑÑ:</strong></p> <ul> <li data-num="460"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>УÑеÑка ÑаймеÑов ÑейÑинга</strong> â popover-ÑаймеÑÑ ÐºÐ¾ÑÑекÑно оÑменÑÑÑÑÑ Ð¿Ñи ÑÑ
оде Ñо ÑÑÑаниÑÑ (<code>$destroy</code>). ÐоиÑк попапа ÑеÑез <code>aria-describedby</code> вмеÑÑо глобалÑного DOM-ÑканиÑÐ¾Ð²Ð°Ð½Ð¸Ñ â нÑлевой ÑиÑк коллизий</li> <li data-num="461"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>ÐзолÑÑÐ¸Ñ Ð»ÐµÐ½ÑÑ Ð¿Ð¾ аккаÑнÑÑ</strong> â клÑÑи <code>lastSeen</code> в localStorage пÑивÑÐ·Ð°Ð½Ñ Ðº userId, иÑклÑÑÐ°Ñ ÑмеÑение меÑок непÑоÑиÑанного пÑи пеÑеклÑÑении аккаÑнÑов</li> <li data-num="462"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>ЧиÑÑÐ°Ñ ÑоÑÑиÑовка Ñведомлений</strong> â <code>_sortTimestamp</code> Ñ
ÑаниÑÑÑ ÐºÐ°Ðº non-enumerable ÑвойÑÑво, не загÑÑзнÑÑ Ð¾Ð±ÑекÑÑ Ð¿Ñи ÑеÑиализаÑии и <code>$watch</code></li> <li data-num="463"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>ÐÑÑ Ð¿Ð¾Ð´Ð¿Ð¸Ñок</strong> â пÑи пÑоÑмоÑÑе ÑобÑÑвеннÑÑ
подпиÑок кÑÑ Ð·Ð°Ð¿Ð¾Ð»Ð½ÑеÑÑÑ Ð´Ð»Ñ ÐСÐÐ¥ ÑлеменÑов, а не ÑолÑко ÑекÑÑего ÑилÑÑÑа â пеÑеклÑÑение вкладок болÑÑе не ÑеÑÑÐµÑ ÑÑаÑÑÑÑ</li> </ul> <p><strong>ÐÑоизводиÑелÑноÑÑÑ:</strong></p> <ul> <li data-num="464"><span class="changelog-tag changelog-tag--PERF" data-tag-alias="PERF">PERF</span> <strong>ÐебаÑÐ½Ñ ÑÑÑÑÑиков ленÑÑ</strong> â неÑколÑко одновÑеменнÑÑ
вÑзовов <code>loadUnreadCounts()</code> коалеÑÑиÑÑÑÑÑÑ Ð² один запÑоÑ, пÑедоÑвÑаÑÐ°Ñ Ð´ÑблиÑование API-вÑзовов пÑи иниÑиализаÑии</li> </ul> <p><strong>UX:</strong></p> <ul> <li data-num="465"><span class="changelog-tag changelog-tag--UX" data-tag-alias="UX">UX</span> <strong>ÐвÑоÑкÑÑÑие «ÐапÑоÑиÑÑ Ð´Ð¾ÑÑÑп»</strong> â поÑле оÑпÑавки запÑоÑа кнопка мгновенно иÑÑÐµÐ·Ð°ÐµÑ Ð½Ð° вÑеÑ
ÑÑÑаниÑаÑ
, ÑоÑÑоÑние ÑоÑ
ÑанÑеÑÑÑ Ð¼ÐµÐ¶Ð´Ñ ÑеÑÑиÑми в localStorage</li> <li data-num="466"><span class="changelog-tag changelog-tag--UX" data-tag-alias="UX">UX</span> <strong>
1ÐнимиÑованнÑе ÑоÑки авÑоÑизаÑии</strong> â вмеÑÑо ÑÑаÑиÑного ÑпиннеÑа â живÑе пÑлÑÑиÑÑÑÑие ÑоÑки «ÐвÑоÑизаÑиÑ...» в модалке вÑ
ода</li> <li data-num="467"><span class="changelog-tag changelog-tag--UX" data-tag-alias="UX">UX</span> <strong>УмнÑй popover ÑейÑинга</strong> â <code>auto bottom</code> вмеÑÑо ÑикÑиÑованного напÑавлениÑ: попап авÑомаÑиÑеÑки вÑбиÑÐ°ÐµÑ ÑÑоÑÐ¾Ð½Ñ Ñ Ð¼Ð°ÐºÑималÑнÑм пÑоÑÑÑанÑÑвом</li> </ul> </div> </details> <details class="changelog-section"> <summary class="changelog-summary"><span class="changelog-meta"><span class="changelog-meta__version">v9.16.0</span><span class="changelog-meta__date">23-02-2026</span></span><h2 id="v9160-23-02-2026--запÑоÑÑ-на-ÑоавÑоÑÑÑво-ÑмнÑе-ÑноÑки-и-моÑнÑе-инÑÑÑÑменÑÑ-ÑедакÑоÑа">ÐапÑоÑÑ Ð½Ð° ÑоавÑоÑÑÑво, ÑмнÑе ÑноÑки и моÑнÑе инÑÑÑÑменÑÑ ÑедакÑоÑа</h2></summary> <div class="changelog-section__body"> <p>ÐÑÐ¾Ñ Ñелиз ÑÑанÑÑоÑмиÑÑÐµÑ Ð¿Ð¾Ð´Ñ
од к ÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ ÑовмеÑÑнÑÑ
маÑеÑиалов и ÑабоÑе Ñ ÑекÑÑом. ТепеÑÑ ÑиÑаÑели могÑÑ Ð¿ÑоакÑивно пÑиÑоединÑÑÑÑÑ Ðº ÑабоÑе над ÑÑаÑÑÑми, а авÑоÑÑ Ð¿Ð¾Ð»ÑÑили новÑе пÑоÑеÑÑионалÑнÑе инÑÑÑÑменÑÑ: Ð¾Ñ Ð¿ÑовеÑки гÑаммаÑики на леÑÑ Ð´Ð¾ глобалÑной Ð±Ð°Ð·Ñ Ð¸ÑÑоÑников.</p> <p><strong>СовмеÑÑÐ½Ð°Ñ ÑабоÑа â пÑоакÑивное ÑоавÑоÑÑÑво:</strong></p> <ul> <li data-num="440"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> <strong>ÐапÑоÑÑ Ð½Ð° ÑÑаÑÑие (Request Contribution)</strong> â лÑбой авÑоÑизованнÑй ÑиÑаÑÐµÐ»Ñ ÑепеÑÑ Ð¼Ð¾Ð¶ÐµÑ Ð·Ð°Ð¿ÑоÑиÑÑ Ð´Ð¾ÑÑÑп к маÑеÑиалÑ. Ð Ñдобном модалÑном окне можно вÑбÑаÑÑ Ð¶ÐµÐ»Ð°ÐµÐ¼ÑÑ ÑÐ¾Ð»Ñ (СоавÑоÑ, РедакÑоÑ, РеÑензенÑ) и пÑиложиÑÑ Ð¼Ð¾ÑиваÑионное пиÑÑмо.</li> <li data-num="441"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> <strong>Ðгновенное ÑпÑавление заÑвками</strong> â авÑоÑÑ Ð²Ð¸Ð´ÑÑ Ð½Ð¾Ð²Ñе запÑоÑÑ Ð¿ÑÑмо в ÑÑоÑке Ñведомлений (колоколÑÑик) и могÑÑ Ð¿ÑинÑÑÑ Ð¸Ð»Ð¸ оÑклониÑÑ Ð·Ð°ÑÐ²ÐºÑ Ð² один клик, без пеÑеÑ
ода в наÑÑÑойки.</li> <li data-num="442"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> <strong>Email-ноÑиÑикаÑии</strong> â ÑиÑÑема авÑомаÑиÑеÑки ÑаÑÑÑÐ»Ð°ÐµÑ ÑÑилÑнÑе пиÑÑма авÑоÑам о новÑÑ
заÑвкаÑ
на ÑÑаÑÑие Ñ Ñказанием запÑаÑиваемой Ñоли.</li> <li data-num="443"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> <strong>Ðнопки запÑоÑа повÑÑдÑ</strong> â запÑоÑиÑÑ ÑоавÑоÑÑÑво можно из ÑеÑÑÑÑÑ
ÑоÑек: заголовок ÑÑаÑÑи, Ð±Ð°Ð½Ð½ÐµÑ shared-ÑеÑновика, подвал Ñ Ð¸Ð¼ÐµÐ½ÐµÐ¼ авÑоÑа и ÑÑÑаниÑа «ÐÐµÑ Ð´Ð¾ÑÑÑпа» â кнопка вÑегда под ÑÑкой, когда ÑÑо нÑжно</li> </ul> <p><strong>УмнÑе ÑноÑки и ÑабоÑа Ñ Ð¸ÑÑоÑниками:</strong></p> <ul> <li data-num="444"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> <strong>ÐлобалÑÐ½Ð°Ñ Ð±Ð°Ð·Ð° ÑноÑок</strong> â вÑе ÑноÑки плаÑÑоÑÐ¼Ñ ÑепеÑÑ Ð¸Ð½Ð´ÐµÐºÑиÑÑÑÑÑÑ. ÐÑи добавлении новой ÑноÑки в ÑедакÑоÑе ÑабоÑÐ°ÐµÑ Ð¼Ð³Ð½Ð¾Ð²ÐµÐ½Ð½Ñй полноÑекÑÑовÑй поиÑк Ñ Ð°Ð²Ñодополнением по базе Ñже ÑÑÑеÑÑвÑÑÑиÑ
ÑноÑок. ÐдеалÑно Ð´Ð»Ñ Ð¿ÐµÑеиÑполÑÐ·Ð¾Ð²Ð°Ð½Ð¸Ñ Ð¸ÑÑоÑников и ÑÑÑлок!</li> <li data-num="445"><span class="changelog-tag changelog-tag--PERF" data-tag-alias="PERF">PERF</span> <strong>Ð¤Ð¾Ð½Ð¾Ð²Ð°Ñ Ð¼Ð¸Ð³ÑаÑиÑ</strong> â индекÑаÑÐ¸Ñ Ð´ÐµÑÑÑков ÑÑÑÑÑ ÑÑÑеÑÑвÑÑÑиÑ
ÑноÑок вÑполнена ÑеÑез вÑÑокопÑоизводиÑелÑнÑй <code>bulkWrite</code> без малейÑего влиÑÐ½Ð¸Ñ Ð½Ð° ÑабоÑÑ Ð±Ð°Ð·Ñ Ð´Ð°Ð½Ð½ÑÑ
.</li> </ul> <p><strong>ÐÐ°Ð½ÐµÐ»Ñ Ð¸Ð½ÑÑÑÑменÑов ÑедакÑоÑа нового поколениÑ:</strong></p> <ul> <li data-num="446"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> <strong>ÐлаваÑÑÐ°Ñ Tools-панелÑ</strong> â Ð½Ð¾Ð²Ð°Ñ ÑлеганÑÐ½Ð°Ñ ÑÑоÑка в Ñапке ÑедакÑоÑа, обÑединÑÑÑÐ°Ñ Ð²Ñе клÑÑевÑе наÑÑÑойки и компакÑнÑй индикаÑÐ¾Ñ ÑÑаÑÑÑа ÑоединениÑ.</li> <li data-num="447"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> <strong>ÐÑовеÑка оÑÑогÑаÑии и гÑаммаÑики (LanguageTool)</strong> â инÑеллекÑÑалÑÐ½Ð°Ñ Ð¿ÑовеÑка ÑекÑÑа на леÑÑ. ÐÑаÑÐ½Ð°Ñ Ð²Ð¾Ð»Ð½Ð° Ð´Ð»Ñ Ð¾Ð¿ÐµÑаÑок, оÑÐ°Ð½Ð¶ÐµÐ²Ð°Ñ â Ð´Ð»Ñ ÑÑилиÑÑики и пÑнкÑÑаÑии. Ðлик по подÑÑÑÐºÐ¸Ð²Ð°Ð½Ð¸Ñ Ð¾ÑкÑÑÐ²Ð°ÐµÑ Ð¿Ð¾Ð¿Ð°Ð¿ Ñ Ð²Ð°ÑианÑами иÑпÑÐ°Ð²Ð»ÐµÐ½Ð¸Ñ Ð² один клик. ÐоддеÑÐ¶Ð¸Ð²Ð°ÐµÑ Ð¸Ð³Ð½Ð¾ÑиÑование пÑавил и Ñлов.</li> <li data-num="448"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> <strong>ÐоÑной Ñежим (Dark Mode)</strong> â полноÑÐµÐ½Ð½Ð°Ñ ÑÑÐ¼Ð½Ð°Ñ Ñема Ð´Ð»Ñ ÑедакÑоÑа, пеÑеклÑÑÐ°ÐµÐ¼Ð°Ñ Ð¿ÑÑмо из новой панели инÑÑÑÑменÑов. ÐеÑежÑÑ Ð·Ñение пÑи ÑабоÑе по ноÑам.</li> <li data-num="449"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> <strong>ÐвÑоÑипогÑÐ°Ñ Ð¸ аналиÑика</strong> â запÑÑк авÑоÑипогÑаÑа и живÑе ÑÑÑÑÑики Ñлов/Ñимволов ÑепеÑÑ Ð²Ñегда под ÑÑкой.</li> </ul> <p><strong>UX, СÑабилÑноÑÑÑ Ð¸ ÐезопаÑноÑÑÑ:</strong></p> <ul> <li data-num="450"><span class="changelog-tag changelog-tag--UX" data-tag-alias="UX">UX</span> <strong>ÐдеалÑÐ½Ð°Ñ ÑинÑ
ÑонизаÑÐ¸Ñ LanguageTool</strong> â ÑÐ¼Ð½Ð°Ñ Ð·Ð°ÑиÑа Ð¾Ñ Ñдвига позиÑий подÑÑÑкиваний пÑи бÑÑÑÑой пеÑаÑи и мгновенное ÑкÑÑÑие попапов-подÑказок, еÑли авÑÐ¾Ñ Ð¿ÑÐ¾Ð´Ð¾Ð»Ð¶Ð°ÐµÑ Ð½Ð°Ð±Ð¾Ñ ÑекÑÑа. ÐикакиÑ
«залипаний» инÑеÑÑейÑа.</li> <li data-num="451"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>ÐзолÑÑÐ¸Ñ ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÐµÐ½Ñов ÑедакÑоÑа</strong> â Ð¿Ð¾Ð»Ð½Ð°Ñ Ð°ÑÑ
иÑекÑÑÑÐ½Ð°Ñ Ð·Ð°ÑиÑа Ð¾Ñ DOM-конÑликÑов. ÐÑли на ÑÑÑаниÑе вÑÑÑоено неÑколÑко ÑедакÑоÑов (оÑновной ÑекÑÑ Ð¸ подпиÑи к ÑоÑо), иÑ
ÑÑлбаÑÑ, Ð¿Ð¾Ð¿Ð°Ð¿Ñ Ð¸ ÑоновÑе запÑоÑÑ ÑабоÑаÑÑ Ð°Ð±ÑолÑÑно незавиÑимо дÑÑг Ð¾Ñ Ð´ÑÑга.</li> <li data-num="452"><span class="changelog-tag changelog-tag--SEC" data-tag-alias="SEC">SEC</span> <strong>ÐаÑиÑа Ð¾Ñ Ñпама (Rate Limiting)</strong> â на ÑÑовне бÑкенда вÑÑÑоен ÑÑÑогий Ð»Ð¸Ð¼Ð¸Ñ Ð½Ð° оÑпÑÐ°Ð²ÐºÑ Ð·Ð°Ð¿ÑоÑов ÑоавÑоÑÑÑва, заÑиÑаÑÑий авÑоÑов Ð¾Ñ ÑлÑда.</li> <li data-num="453"><span class="changelog-tag changelog-tag--PERF" data-tag-alias="PERF">PERF</span> <strong>ÐпÑимизиÑованнÑе индекÑÑ MongoDB</strong> â Ñоздание новÑÑ
<code>sparse</code> и <code>background</code> индекÑов Ð´Ð»Ñ Ð±ÑÑÑÑого поиÑка ÑноÑок и маÑÑÑÑÑизаÑии запÑоÑов без блокиÑовок пÑи деплое.</li> </ul> </div> </details> <details class="changelog-section"> <summary class="changelog-summary"><span class="changelog-meta"><span class="changelog-meta__version">v9.15.0</span><span class="changelog-meta__date">22-02-2026</span></span><h2 id="v9150-22-02-2026--мгновеннаÑ-акÑÑализаÑиÑ-Ñолей-пÑи-оÑкÑÑÑии-плаÑÑоÑмÑ">ÐÐ³Ð½Ð¾Ð²ÐµÐ½Ð½Ð°Ñ Ð°ÐºÑÑализаÑÐ¸Ñ Ñолей пÑи оÑкÑÑÑии плаÑÑоÑмÑ</h2></summary> <div class="changelog-section__body"> <p>ÐвÑоÑÑ, авÑоÑизовавÑиеÑÑ Ð´Ð°Ð²Ð½Ð¾ до обновлений, ÑепеÑÑ ÑÑÐ°Ð·Ñ Ð²Ð¸Ð´ÑÑ ÑÐ°Ð¹Ñ Ñо вÑеми возможноÑÑÑми без пеÑелогиниваниÑ.</p> </div> </details> <details class="changelog-section"> <summary class="changelog-summary"><span class="changelog-meta"><span class="changelog-meta__version">v9.14.0</span><span class="changelog-meta__date">22-02-2026</span></span><h2 id="v9140-22-02-2026--коллабоÑаÑии-в-один-клик-и-seo-без-компÑомиÑÑов">ÐоллабоÑаÑии в один клик и SEO без компÑомиÑÑов</h2></summary> <div class="changelog-section__body"> <p>ÐÑиглаÑÐµÐ½Ð¸Ñ Ðº ÑоавÑоÑÑÑÐ²Ñ ÑепеÑÑ ÑпÑавлÑÑÑÑÑ Ð¿ÑÑмо из ÑеÑновиков â без лиÑниÑ
пеÑеÑ
одов. Google Ð²Ð¸Ð´Ð¸Ñ ÑÐ¾Ñ Ð¶Ðµ конÑенÑ, ÑÑо и ÑиÑаÑели â никакого ÑкÑÑÑого ÑекÑÑа, никакого cloaking. РгалеÑеи и визÑалÑнÑе маÑеÑÐ¸Ð°Ð»Ñ Ð±Ð¾Ð»ÑÑе не вÑглÑдÑÑ Â«Ð¿ÑÑÑÑми» в поиÑковой вÑдаÑе.</p> <p><strong>ÐоллабоÑаÑии â ÑпÑавление пÑиглаÑениÑми:</strong></p> <ul> <li data-num="428"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> ÐÑинÑÑие и оÑклонение пÑиглаÑений пÑÑмо Ñо вкладки «СовмеÑÑнÑе» на ÑÑÑаниÑе ÑеÑновиков â кнопки «ÐÑинÑÑÑ» / «ÐÑклониÑÑ» Ñ Ð¸Ð½Ð´Ð¸ÐºÐ°ÑоÑом загÑÑзки и заÑиÑой Ð¾Ñ Ð´Ð²Ð¾Ð¹Ð½Ð¾Ð³Ð¾ клика</li> <li data-num="429"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> ÐовÑоÑÐ½Ð°Ñ Ð¾ÑпÑавка пÑиглаÑений â Ð´Ð»Ñ Ð¸ÑÑÑкÑиÑ
и оÑклонÑннÑÑ
инвайÑов кнопка «ÐÑпÑавиÑÑ Ð¿Ð¾Ð²ÑоÑно» Ñ Ð°Ð½Ð¸Ð¼Ð°Ñией и авÑообновлением ÑпиÑка</li> <li data-num="430"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> ÐбÑаÑнÑй оÑÑÑÑÑ Ð´Ð¾ иÑÑеÑÐµÐ½Ð¸Ñ Ð¿ÑиглаÑÐµÐ½Ð¸Ñ â «ÐÐ´ÐµÑ Ð¿Ð¾Ð´ÑвеÑÐ¶Ð´ÐµÐ½Ð¸Ñ (оÑÑалоÑÑ 2 днÑ)», кÑаÑÐ½Ð°Ñ Ð¼ÐµÑка пÑи иÑÑеÑении ÑÑока</li> <li data-num="431"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> ÐоÑÑекÑнÑй авÑÐ¾Ñ Ð² ÑведомлениÑÑ
об оÑвеÑе на пÑиглаÑение â инвайÑÐµÑ Ð²Ð¸Ð´Ð¸Ñ Ð°Ð²Ð°ÑÐ°Ñ Ð¸ Ð¸Ð¼Ñ Ð¿ÑиглаÑÑнного, а не ÑвоÑ</li> </ul> <p><strong>SEO â Ð¿Ð¾Ð»Ð½Ð°Ñ Ð¿ÐµÑеÑÑÑойка логики Ð´Ð»Ñ Ð¿Ð¾Ð¸ÑковÑÑ
боÑов:</strong></p> <ul> <li data-num="432"><span class="changelog-tag changelog-tag--SEO" data-tag-alias="SEO">SEO</span> ÐоиÑковÑе боÑÑ (Google, Bing, Yandex) ÑепеÑÑ Ð¿Ð¾Ð»ÑÑаÑÑ ÑÐ¾Ñ Ð¶Ðµ HTML, ÑÑо и полÑзоваÑели â ÑÑÑÑанÑн ÑкÑÑÑÑй <code>#seo-prerender</code> блок, коÑоÑÑй Google мог ÑаÑÑениÑÑ ÐºÐ°Ðº cloaking</li> <li data-num="433"><span class="changelog-tag changelog-tag--SEO" data-tag-alias="SEO">SEO</span> OG-Ñеги инжекÑиÑÑÑÑÑÑ Ð´Ð»Ñ ÐСÐÐ¥ поÑеÑиÑелей â пÑавилÑнÑй title, description и image Ð²Ð¸Ð´Ð½Ñ Ð¿Ñи пеÑвом же запÑоÑе, до загÑÑзки JavaScript</li> <li data-num="434"><span class="changelog-tag changelog-tag--SEO" data-tag-alias="SEO">SEO</span> ЧеÑновики и пÑевÑÑ Ð·Ð°ÑиÑÐµÐ½Ñ Ð¾Ñ Ð¸Ð½Ð´ÐµÐºÑаÑии â <code><meta name="robots" content="noindex"></code> + заголовок <code>X-Robots-Tag</code> + пÑиваÑнÑй кеÑ</li> <li data-num="435"><span class="changelog-tag changelog-tag--SEO" data-tag-alias="SEO">SEO</span> Ð£Ð¼Ð½Ð°Ñ Ð³ÐµÐ½ÐµÑаÑÐ¸Ñ Ð¾Ð¿Ð¸Ñаний â Ð´Ð»Ñ Ð³Ð°Ð»ÐµÑей и конÑенÑа без ÑекÑÑа description ÑобиÑаеÑÑÑ Ð¸Ð· меÑаданнÑÑ
(Ñаздел, авÑоÑ, Ñеги), обÑезаеÑÑÑ Ð¿Ð¾ гÑаниÑе Ñлова Ñ Ð¼Ð½Ð¾Ð³Ð¾ÑоÑием. ÐолÑÑе никакого «thin content» в Google Search Console</li> <li data-num="436"><span class="changelog-tag changelog-tag--SEO" data-tag-alias="SEO">SEO</span> JSON-LD ÑазмеÑка (Article, Video, Music, Image) иÑполÑзÑÐµÑ ÑÐ¾Ñ Ð¶Ðµ инÑеллекÑÑалÑнÑй description вмеÑÑо пÑÑÑÑÑ
ÑÑÑок</li> </ul> <p><strong>UX и ÑипогÑаÑика:</strong></p> <ul> <li data-num="437"><span class="changelog-tag changelog-tag--UX" data-tag-alias="UX">UX</span> Ðконка «ÐÑкÑÑÑÑ» в ÑеÑновикаÑ
заменена на <code>fa-file-alt</code> â визÑалÑно понÑÑнее</li> <li data-num="438"><span class="changelog-tag changelog-tag--UX" data-tag-alias="UX">UX</span> ÐеÑазÑÑвнÑе пÑÐ¾Ð±ÐµÐ»Ñ Ð² диалогаÑ
ÑедакÑоÑа â «Ðокин
1ÑÑÑ\\u00A0ÑÑÑаниÑÑ?», «ÑдалиÑÑ\\u00A0маÑеÑиал?» болÑÑе не ÑазÑÑваÑÑÑÑ Ð½Ð° две ÑÑÑоки в Ñамом некÑаÑивом меÑÑе</li> <li data-num="439"><span class="changelog-tag changelog-tag--UX" data-tag-alias="UX">UX</span> ÐеÑÑики в каÑÑоÑкаÑ
ÑеÑновиков вÑÑÐ¾Ð²Ð½ÐµÐ½Ñ â единÑй gap, конÑиÑÑенÑнÑе ÑазмеÑÑ Ð¸ÐºÐ¾Ð½Ð¾Ðº</li> </ul> </div> </details> <details class="changelog-section"> <summary class="changelog-summary"><span class="changelog-meta"><span class="changelog-meta__version">v9.13.0</span><span class="changelog-meta__date">21-02-2026</span></span><h2 id="v9130-21-02-2026--ÑпоминаниÑ-ÑквознаÑ-ÑиÑÑема-оÑ-ÑедакÑоÑа-до-Ñведомлений">@ÑпоминаниÑ: ÑÐºÐ²Ð¾Ð·Ð½Ð°Ñ ÑиÑÑема Ð¾Ñ ÑедакÑоÑа до Ñведомлений</h2></summary> <div class="changelog-section__body"> <p>ÐабÑал <code>@</code> â Ñвидел коллег. УпомÑнÑл â они Ñзнали. СиÑÑема @mention ÑабоÑÐ°ÐµÑ Ð² каждой ÑоÑке ввода ÑекÑÑа на плаÑÑоÑме: в Ñеле ÑÑаÑÑи, в комменÑаÑиÑÑ
ÑедакÑоÑа, в ÑемаÑкаÑ
ÑиÑаÑелей, в оÑвеÑаÑ
на пÑавки и пÑÑмо из Ñведомлений â Ñ ÐµÐ´Ð¸Ð½Ñм авÑокомплиÑом и мгновеннÑми ноÑиÑикаÑиÑми.</p> <p><strong>РедакÑÐ¾Ñ ÑÑаÑей â @mention как ÑаÑÑÑ ÑекÑÑа:</strong></p> <ul> <li data-num="411"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> Tiptap Mention Node â аÑомаÑнÑй inline-ÑÐ»ÐµÐ¼ÐµÐ½Ñ <code>@ÐмÑ</code> в Ñеле пÑбликаÑии. ÐеÑазÑÑвнÑй блок: нелÑÐ·Ñ ÑаÑÑиÑно ÑдалиÑÑ Ð¸Ð»Ð¸ оÑÑедакÑиÑоваÑÑ, Backspace ÑдалÑÐµÑ Ñеликом. РендеÑиÑÑÑ ÐºÐ°Ðº кликабелÑÐ½Ð°Ñ ÑÑÑлка на пÑоÑÐ¸Ð»Ñ Ð°Ð²ÑоÑа</li> <li data-num="412"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> ÐвÑÐ¾ÐºÐ¾Ð¼Ð¿Ð»Ð¸Ñ Ð² ÑедакÑоÑе â пÑи вводе <code>@</code> + 2 Ñимвола поÑвлÑеÑÑÑ dropdown Ñ Ð°Ð²Ð°ÑаÑками, именами и path'ами полÑзоваÑелей. ÐавигаÑÐ¸Ñ ÑÑÑелками, вÑÐ±Ð¾Ñ Enter/Tab, закÑÑÑие Escape. Debounce 200ms, поиÑк по API</li> <li data-num="413"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> ÐозиÑиониÑование dropdown Ñ ÐºÑÑÑоÑа â popup авÑомаÑиÑеÑки оÑÑажаеÑÑÑ Ð²Ð²ÐµÑÑ
, еÑли не помеÑаеÑÑÑ ÑнизÑ, и ÑдвигаеÑÑÑ Ð¾Ñ Ð¿Ñавого кÑÐ°Ñ ÑкÑана</li> </ul> <p><strong>ÐомменÑаÑии, ÑемаÑки, оÑвеÑÑ â @mention везде:</strong></p> <ul> <li data-num="414"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> ÐиÑекÑива <code>mention-autocomplete</code> â ÑнивеÑÑалÑнÑй аÑÑибÑÑ Ð´Ð»Ñ Ð»Ñбого <code><textarea></code> или <code><input></code> Ñ <code>ng-model</code>. ÐодÑÑавлÑÐµÑ <code>@path</code> в ÑекÑÑ Ð¿Ñи вÑбоÑе из dropdown</li> <li data-num="415"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> @mention в модалÑном окне комменÑаÑÐ¸Ñ â оÑделÑÐ½Ð°Ñ vanilla JS ÑеализаÑÐ¸Ñ (модалка ÑоздаÑÑÑÑ ÑеÑез DOM API, вне Angular), Ñ Ð°Ð²ÑомаÑиÑеÑким cleanup пÑи закÑÑÑии</li> <li data-num="416"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> @mention в оÑвеÑаÑ
на комменÑаÑии â поле ввода оÑвеÑа в ÑайдбаÑе ÑедакÑоÑа</li> <li data-num="417"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> @mention в ÑемаÑкаÑ
ÑиÑаÑелей â textarea вÑÐ´ÐµÐ»ÐµÐ½Ð¸Ñ ÑекÑÑа (socialSelection)</li> <li data-num="418"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> @mention в оÑвеÑаÑ
из Ñведомлений â textarea inline-оÑвеÑа пÑÑмо в каÑÑоÑке ÑведомлениÑ</li> </ul> <p><strong>Ð£Ð²ÐµÐ´Ð¾Ð¼Ð»ÐµÐ½Ð¸Ñ â Â«Ð²Ð°Ñ ÑпомÑнÑли»:</strong></p> <ul> <li data-num="419"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> ÐовÑй Ñип Ñведомлений <code>mentions</code> â ÑиолеÑÐ¾Ð²Ð°Ñ Ð¼ÐµÑка «Упоминание» в ленÑе</li> <li data-num="420"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> Ðкладка «УпоминаниÑ» на ÑÑÑаниÑе Ñведомлений Ñ Ð±ÐµÐ¹Ð´Ð¶ÐµÐ¼ непÑоÑиÑаннÑÑ
</li> <li data-num="421"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> ÐонÑекÑÑнÑе ÑообÑениÑ: «Ðван ÑпомÑнÑл(а) Ð²Ð°Ñ Ð² комменÑаÑии к «Ðазвание ÑÑаÑÑи»» â Ñ ÑазлиÑением комменÑаÑиÑ, оÑвеÑа, ÑемаÑки и обÑÑÐ¶Ð´ÐµÐ½Ð¸Ñ Ð¿Ñавки</li> <li data-num="422"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> Email-дайджеÑÑ: ÑÐ¿Ð¾Ð¼Ð¸Ð½Ð°Ð½Ð¸Ñ Ð²ÐºÐ»ÑÑÐµÐ½Ñ Ð² ÑÐ²Ð¾Ð´ÐºÑ (наÑÑÑаиваемо ÑеÑез <code>mentions_email</code> в пÑоÑиле)</li> </ul> <p><strong>РендеÑинг @mention в ÑекÑÑе:</strong></p> <ul> <li data-num="423"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> ФилÑÑÑ <code>mentionLinks</code> â авÑомаÑиÑеÑкое пÑевÑаÑение <code>@path</code> в кликабелÑнÑе ÑÑÑлки на пÑоÑÐ¸Ð»Ñ Ð¿Ñи оÑобÑажении комменÑаÑиев и оÑвеÑов</li> <li data-num="424"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> СÑили <code>.tiptap-mention</code> и <code>.mention-link</code> â голÑбÑе ÑÑÑлки Ñ hover-ÑÑÑекÑом, единÑй визÑалÑнÑй ÑзÑк Ð´Ð»Ñ Ð²ÑеÑ
Ñпоминаний</li> </ul> <p><strong>ÐÑкенд:</strong></p> <ul> <li data-num="425"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> <code>extractMentionedUsers()</code> â ÑеÑвеÑнÑй паÑÑинг <code>@path</code> из ÑекÑÑа Ñ Ð´ÐµÐºÐ¾Ð´Ð¸Ñованием HTML entities и batch-запÑоÑом полÑзоваÑелей из MongoDB</li> <li data-num="426"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> <code>createMentionNotifications()</code> â Ñоздание Ñведомлений Ð´Ð»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð³Ð¾ ÑпомÑнÑÑого (иÑклÑÑÐ°Ñ Ð°Ð²ÑоÑа ÑообÑениÑ)</li> <li data-num="427"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> ÐнÑегÑаÑÐ¸Ñ Ð² 4 POST-обÑабоÑÑика: комменÑаÑии, оÑвеÑÑ Ð½Ð° комменÑаÑии, ÑемаÑки, оÑвеÑÑ Ð² обÑÑждениÑÑ
пÑавок</li> </ul> </div> </details> <details class="changelog-section"> <summary class="changelog-summary"><span class="changelog-meta"><span class="changelog-meta__version">v9.12.1</span><span class="changelog-meta__date">20-02-2026</span></span><h2 id="v9121-20-02-2026--безопаÑноÑÑÑ-пÑоизводиÑелÑноÑÑÑ-и-ÑÑабилÑноÑÑÑ-
1pre-release-polish">ÐезопаÑноÑÑÑ, пÑоизводиÑелÑноÑÑÑ Ð¸ ÑÑабилÑноÑÑÑ: pre-release polish</h2></summary> <div class="changelog-section__body"> <p><strong>ÐезопаÑноÑÑÑ:</strong></p> <ul> <li data-num="397"><span class="changelog-tag changelog-tag--SEC" data-tag-alias="SEC">SEC</span> СаниÑизаÑÐ¸Ñ <code>doc.body</code> в ÑведомлениÑÑ
â HTML-Ñеги ÑÑÑипаÑÑÑÑ Ð´Ð¾ plain text, обÑезка до 300 Ñимволов. ÐакÑÑÑ Ð²ÐµÐºÑÐ¾Ñ XSS ÑеÑез комменÑаÑии и ÑемаÑки в email-дайджеÑÑе</li> <li data-num="398"><span class="changelog-tag changelog-tag--SEC" data-tag-alias="SEC">SEC</span> ÐÑовеÑка пÑав на <code>/collab/suggestion-action</code> â ÑолÑко авÑоÑ, ÑоÑедакÑоÑÑ Ð¸ Ð°Ð´Ð¼Ð¸Ð½Ñ Ð¼Ð¾Ð³ÑÑ Ð¿ÑинимаÑÑ/оÑклонÑÑÑ Ð¿Ñавки. РанÑÑе лÑбой авÑоÑизованнÑй полÑзоваÑÐµÐ»Ñ Ð¼Ð¾Ð³ вÑзваÑÑ endpoint</li> <li data-num="399"><span class="changelog-tag changelog-tag--SEC" data-tag-alias="SEC">SEC</span> Whitelist Ð´Ð»Ñ <code>notificationPreferences</code> â ÑолÑко 12 допÑÑÑимÑÑ
boolean-клÑÑей ÑоÑ
ÑанÑÑÑÑÑ Ð² пÑоÑилÑ, пÑоизволÑнÑе даннÑе оÑÑекаÑÑÑÑ</li> <li data-num="400"><span class="changelog-tag changelog-tag--SEC" data-tag-alias="SEC">SEC</span> <code>_escapeHtml</code> в toast-ÑведомлениÑÑ
ÑепеÑÑ ÑкÑаниÑÑÐµÑ Ð¾Ð´Ð¸Ð½Ð°ÑнÑе кавÑÑки (<code>'</code> â <code>'</code>)</li> </ul> <p><strong>ÐÑоизводиÑелÑноÑÑÑ:</strong></p> <ul> <li data-num="401"><span class="changelog-tag changelog-tag--PERF" data-tag-alias="PERF">PERF</span> СÑÑÑÑики и Ñлаги Ñведомлений (<code>notificationsCount</code>, <code>hasUnreadForActiveType</code>, <code>hasAnyForActiveType</code>) пеÑевÑÑиÑлÑÑÑÑÑ Ð² <code>$watch</code> â один Ñаз за digest вмеÑÑо 12+ full-scan вÑзовов из Ñаблона</li> <li data-num="402"><span class="changelog-tag changelog-tag--PERF" data-tag-alias="PERF">PERF</span> Fingerprint кÑÑа <code>displayItems()</code> ÑÑилен <code>_id</code> кÑайниÑ
ÑлеменÑов â Ð½ÐµÑ stale-кÑÑа пÑи замене ÑлеменÑа</li> <li data-num="403"><span class="changelog-tag changelog-tag--PERF" data-tag-alias="PERF">PERF</span> Cloudflare Worker: chunked-оÑвеÑÑ Ð±ÐµÐ· <code>content-length</code> болÑÑе не бÑÑеÑизÑÑÑÑÑ Ñеликом â streaming-Ñежим ÑеÑез HTMLRewriter без блокиÑовки памÑÑи</li> </ul> <p><strong>СÑабилÑноÑÑÑ:</strong></p> <ul> <li data-num="404"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> ÐÐ¸Ð¼Ð¸Ñ 500 на <code>_seenNotificationIds</code> в sessionStorage Ñ ÑоÑаÑией ÑÑаÑÑÑ
запиÑей â болÑÑе Ð½ÐµÑ Ð±ÐµÑконеÑного ÑоÑÑа и пеÑÐµÐ¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ ÐºÐ²Ð¾ÑÑ</li> <li data-num="405"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> TTL-fallback в дайджеÑÑе: ÑÐ²ÐµÐ´Ð¾Ð¼Ð»ÐµÐ½Ð¸Ñ Ñ <code>emailSent: false</code> ÑÑаÑÑе 7 дней помеÑаÑÑÑÑ Ð°Ð²ÑомаÑиÑеÑки â болÑÑе не завиÑаÑÑ Ð½Ð°Ð²Ñегда Ð´Ð»Ñ Ð¾Ð½Ð»Ð°Ð¹Ð½-полÑзоваÑелей</li> <li data-num="406"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <code>linkTitle</code> добавлен в projection пÑбликаÑии notifications â ÑÑонÑенд полÑÑÐ°ÐµÑ Ð¿Ð¾Ð»Ðµ коÑÑекÑно</li> <li data-num="407"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> ÐндекÑÑ <code>{ emailSent, createdAt }</code> и <code>{ userId, createdAt }</code> на коллекÑии Notifications â бÑÑÑÑÑй дайджеÑÑ Ð¸ подпиÑка</li> </ul> <p><strong>UX и доÑÑÑпноÑÑÑ:</strong></p> <ul> <li data-num="408"><span class="changelog-tag changelog-tag--UX" data-tag-alias="UX">UX</span> ÐоÑог Ñвайпа ÑÐ´Ð°Ð»ÐµÐ½Ð¸Ñ ÑвелиÑен Ñ 60px до 100px â заÑиÑа Ð¾Ñ ÑлÑÑайного ÑÐ´Ð°Ð»ÐµÐ½Ð¸Ñ Ð¿Ñи пÑокÑÑÑке на мобилÑнÑÑ
</li> <li data-num="409"><span class="changelog-tag changelog-tag--A11Y" data-tag-alias="A11Y">
1A11Y</span> <code>aria-live="polite"</code> на skeleton-заглÑÑке Ñведомлений â ÑкÑинÑидеÑÑ Ð¾Ð±ÑÑвлÑÑÑ Ð¿Ð¾Ñвление конÑенÑа</li> <li data-num="410"><span class="changelog-tag changelog-tag--REFACTOR" data-tag-alias="REFACTOR">CODE</span> УÑÑÑанено дÑблиÑование логики в <code>notificationItem.js</code> â обÑий Ñ
ÐµÐ»Ð¿ÐµÑ <code>_resolveDocData()</code> вмеÑÑо двÑÑ
копий</li> </ul> </div> </details> <details class="changelog-section"> <summary class="changelog-summary"><span class="changelog-meta"><span class="changelog-meta__version">v9.12.0</span><span class="changelog-meta__date">19-02-2026</span></span><h2 id="v9120-19-02-2026--ÑведомлениÑ-коллабоÑаÑии-ноÑнаÑ-Ñема-ÑедакÑоÑа">УведомлениÑ, коллабоÑаÑии, ноÑÐ½Ð°Ñ Ñема ÑедакÑоÑа</h2></summary> <div class="changelog-section__body"> <p><strong>Ð£Ð²ÐµÐ´Ð¾Ð¼Ð»ÐµÐ½Ð¸Ñ â полноÑеннÑй ÑенÑÑ Ð°ÐºÑивноÑÑи:</strong></p> <p>СÑÑаниÑа Ñведомлений пÑевÑаÑилаÑÑ Ð¸Ð· двÑÑ
вкладок (комменÑаÑии / ÑемаÑки) в полноÑеннÑй ÑенÑÑ Ð°ÐºÑивноÑÑи Ñ ÑеÑÑÑÑ ÐºÐ°ÑегоÑиÑми, гÑÑппиÑовкой по маÑеÑиалам, inline-дейÑÑвиÑми, мобилÑнÑми жеÑÑами, realtime-toast'ами и ÑмнÑм email-дайджеÑÑом.</p> <ul> <li data-num="356"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> ÐенÑа «ÐÑе» â единÑй поÑок Ñведомлений вÑеÑ
Ñипов Ñ ÑвеÑнÑми меÑками каÑегоÑий (комменÑаÑий, ÑемаÑка, пÑиглаÑение, пÑбликаÑиÑ, пÑавка, ÑообÑение)</li> <li data-num="357"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> ШеÑÑÑ ÑилÑÑÑов Ñ Ð±ÐµÐ¹Ð´Ð¶Ð°Ð¼Ð¸ непÑоÑиÑаннÑÑ
: ÐÑе, ÐомменÑаÑии, РемаÑки, ÐÑиглаÑениÑ, ÐÑбликаÑии, СообÑениÑ</li> <li data-num="358"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> ÐÑÑппиÑовка по маÑеÑиалам â ÑÐ²ÐµÐ´Ð¾Ð¼Ð»ÐµÐ½Ð¸Ñ Ð¾Ð±ÑединÑÑÑÑÑ Ð² collapsible-каÑÑоÑки по пÑбликаÑиÑм, ÑменÑÑÐ°Ñ Ð²Ð¸Ð·ÑалÑнÑй ÑÑм пÑи акÑивнÑÑ
обÑÑждениÑÑ
</li> <li data-num="359"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> Ðнопка «ÐÑоÑиÑаÑÑ Ð²Ñе» â batch-update непÑоÑиÑаннÑÑ
Ð´Ð»Ñ ÑекÑÑего ÑилÑÑÑа Ñ optimistic UI и rollback пÑи оÑибке</li> <li data-num="360"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> Mark as read пÑи клике â пеÑеÑ
од по ÑÐ²ÐµÐ´Ð¾Ð¼Ð»ÐµÐ½Ð¸Ñ Ð¼Ð³Ð½Ð¾Ð²ÐµÐ½Ð½Ð¾ помеÑÐ°ÐµÑ ÐµÐ³Ð¾ пÑоÑиÑаннÑм</li> <li data-num="361"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> ÐагинаÑÐ¸Ñ Â«ÐагÑÑзиÑÑ ÐµÑÑ» â инкÑеменÑалÑÐ½Ð°Ñ Ð¿Ð¾Ð´Ð³ÑÑзка по 50 Ñведомлений ÑеÑез DDP-подпиÑÐºÑ Ñ <code>limit</code></li> <li data-num="362"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> Удаление Ñведомлений â кнопка ÑÐ´Ð°Ð»ÐµÐ½Ð¸Ñ ÑÑдом Ñ Â«Ð¾ÑпиÑаÑÑÑÑ» + Ñвайп влево на мобилÑнÑÑ
</li> <li data-num="363"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> Ð£Ð²ÐµÐ´Ð¾Ð¼Ð»ÐµÐ½Ð¸Ñ Ð¾ лиÑнÑÑ
ÑообÑениÑÑ
â новÑй Ñип <code>messages</code> Ñ Ð²Ð¸ÑÑÑалÑнÑми каÑÑоÑками диалогов и ÑÑÑлками на <code>/messages/:id</code></li> <li data-num="364"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> Ð£Ð²ÐµÐ´Ð¾Ð¼Ð»ÐµÐ½Ð¸Ñ Ð¾ пÑинÑÑии/оÑклонении пÑавок â ÑоавÑÐ¾Ñ Ð¿Ð¾Ð»ÑÑÐ°ÐµÑ Ñведомление пÑи accept/reject его suggestion</li> <li data-num="365"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> Inline-дейÑÑвиÑ: кнопки «ÐÑинÑÑÑ» / «ÐÑклониÑÑ» пÑиглаÑение пÑÑмо в каÑÑоÑке ÑведомлениÑ, «ÐÑвеÑиÑÑ» на комменÑаÑий â без пеÑеÑ
ода в ÑедакÑоÑ</li> <li data-num="366"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> Realtime toast-ÑÐ²ÐµÐ´Ð¾Ð¼Ð»ÐµÐ½Ð¸Ñ â новое Ñведомление по WebSocket показÑÐ²Ð°ÐµÑ toast ввеÑÑ
Ñ ÑкÑана Ñ Ð½Ð°Ð²Ð¸Ð³Ð°Ñионной ÑÑÑлкой, дедÑпликаÑÐ¸Ñ Ð¿Ð¾Ð²ÑоÑнÑÑ
toast в ÑеÑение 3 ÑекÑнд</li> <li data-num="367"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> ÐаÑÑÑойки Ñведомлений â ÑÑÑаниÑа в пÑоÑиле Ð´Ð»Ñ Ð²ÐºÐ»ÑÑениÑ/вÑклÑÑÐµÐ½Ð¸Ñ email и on-site Ñведомлений по каждой каÑегоÑии (комменÑаÑии, ÑемаÑки, пÑиглаÑениÑ, пÑбликаÑии, пÑавки, ÑообÑениÑ)</li> <li data-num="368"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> УмнÑй email-дайджеÑÑ â адапÑивнÑй инÑеÑвал на оÑнове WebSocket-пÑиÑÑÑÑÑвиÑ: онлайн-полÑзоваÑелÑм email не оÑпÑавлÑеÑÑÑ, оÑлайн >1 ÑаÑа â ÑÑазÑ, недавно оÑклÑÑилÑÑ â ждÑм ÑледÑÑÑий Ñикл</li> <li data-num="369"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> ÐобилÑÐ½Ð°Ñ Ð¾Ð¿ÑимизаÑиÑ: адапÑÐ¸Ð²Ð½Ð°Ñ Ð²ÐµÑÑÑка каÑÑоÑек, swipe-жеÑÑÑ (влево â ÑдалиÑÑ, впÑаво â пÑоÑиÑаÑÑ) ÑеÑез Pointer Events API, наÑивнÑй вид ÑилÑÑÑ-Ñипов, <code>prefers-reduced-motion</code> Ð´Ð»Ñ Ð°Ð½Ð¸Ð¼Ð°Ñий</li> <li data-num="370"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> Skeleton-заглÑÑка пÑи загÑÑзке Ñведомлений Ñ <code>aria-busy</code> и конÑекÑÑнÑе пÑÑÑÑе ÑоÑÑоÑÐ½Ð¸Ñ Ð¿Ð¾ ÑÐ¸Ð¿Ñ Ñ
1илÑÑÑа</li> <li data-num="371"><span class="changelog-tag changelog-tag--PERF" data-tag-alias="PERF">PERF</span> ÐÑÑиÑование ÑÑÑÑÑиков â <code>notificationsCount</code> вÑÑиÑлÑеÑÑÑ Ð¾Ð´Ð¸Ð½ Ñаз за digest вмеÑÑо повÑоÑнÑÑ
пÑоÑ
одов</li> <li data-num="372"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> ÐÑиÑÑка подпиÑки <code>notifications</code> пÑи ÑÑ
оде Ñо ÑÑÑаниÑÑ â Ð½ÐµÑ ÑÑеÑки DDP-подпиÑок</li> <li data-num="373"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <code>loadMore</code> â коÑÑекÑÐ½Ð°Ñ Ð¾Ð±ÑабоÑка оÑибок подпиÑки (кнопка не залипаеÑ)</li> </ul> <p><strong>СовмеÑÑнÑе маÑеÑÐ¸Ð°Ð»Ñ â Ð½Ð¾Ð²Ð°Ñ Ð²ÐºÐ»Ð°Ð´ÐºÐ° «СовмеÑÑнÑе»:</strong></p> <p>Ð ÑпиÑке маÑеÑиалов авÑоÑа поÑвилаÑÑ Ð²ÐºÐ»Ð°Ð´ÐºÐ° «СовмеÑÑнÑе»: вÑе докÑменÑÑ, где полÑзоваÑÐµÐ»Ñ ÑÑаÑÑвÑÐµÑ ÑеÑез комменÑаÑии, пÑавки или пÑиглаÑениÑ. ÐаÑÑоÑка показÑÐ²Ð°ÐµÑ ÑÐ¾Ð»Ñ (ÑоавÑоÑ, ÑедакÑоÑ, комменÑаÑоÑ), меÑÑики акÑивноÑÑи, ÐºÐ½Ð¾Ð¿ÐºÑ Ð¿ÐµÑеÑ
ода в комменÑаÑии.</p> <ul> <li data-num="374"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> Ðкладка «СовмеÑÑнÑе» в «Ðои маÑеÑиалÑ» Ñ Ð¾ÑделÑнÑм ÑÑÑÑÑиком на Ñабе</li> <li data-num="375"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> ÐаÑÑоÑка коллабоÑаÑии: ÑÐ¾Ð»Ñ ÑÑаÑÑника, колиÑеÑÑво комменÑаÑиев/пÑавок, ÑиÑло ÑÑаÑÑников</li> <li data-num="376"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> ÐÑÑÑÑÑй пеÑеÑ
од «ÐомменÑаÑии» â оÑкÑÑÐ²Ð°ÐµÑ ÑедакÑÐ¾Ñ ÑÑÐ°Ð·Ñ Ñ Ð±Ð¾ÐºÐ¾Ð²Ð¾Ð¹ панелÑÑ ÐºÐ¾Ð¼Ð¼ÐµÐ½ÑаÑиев (<code>?sidebar=comments</code>)</li> <li data-num="377"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> СоÑÑиÑовка по акÑивноÑÑи или по наÐ
1·Ð²Ð°Ð½Ð¸Ñ</li> <li data-num="378"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> API <code>GET /my/collaborations</code> Ñ Ð¿Ð°Ð³Ð¸Ð½Ð°Ñией, поиÑком и ÑÑÑÑÑиками</li> </ul> <p><strong>ÐоÑÐ½Ð°Ñ Ñема ÑедакÑоÑа:</strong></p> <p>ÐолноÑеннÑй dark mode Ð´Ð»Ñ ÑедакÑоÑа â пеÑеклÑÑаеÑÑÑ Ð³Ð¾ÑÑÑей клавиÑей Ctrl+Shift+N (Night) или ÑоÑ
ÑанÑеÑÑÑ Ð² localStorage. ÐокÑÑÐ²Ð°ÐµÑ ProseMirror-поле, ÑÑлбаÑ, ÑÐ°Ð¹Ð´Ð±Ð°Ñ ÐºÐ¾Ð¼Ð¼ÐµÐ½ÑаÑиев, диалоги, ÑпÑÐ°Ð²ÐºÑ Ð³Ð¾ÑÑÑиÑ
ÐºÐ»Ð°Ð²Ð¸Ñ Ð¸ ÑапкÑ.</p> <ul> <li data-num="379"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> Dark mode: ~700 ÑÑÑок CSS Ð´Ð»Ñ Ð²ÑеÑ
компоненÑов ÑедакÑоÑа (ProseMirror, ÑÑлбаÑ, ÑайдбаÑ, Ñапка, диалоги, TOC)</li> <li data-num="380"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> ÐоÑÑÑÐ°Ñ ÐºÐ»Ð°Ð²Ð¸Ñа Ctrl+Shift+N (Night) + запиÑÑ Ð² ÑпÑавке гоÑÑÑиÑ
клавиÑ</li> <li data-num="381"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> ÐÐ»Ð°Ð²Ð½Ð°Ñ Ð°Ð½Ð¸Ð¼Ð°ÑÐ¸Ñ Ð¿ÐµÑеклÑÑÐµÐ½Ð¸Ñ (<code>dark-transition</code> клаÑÑ) Ñ ÑоÑ
Ñанением в localStorage</li> <li data-num="382"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> ÐвÑомаÑиÑеÑкий cleanup клаÑÑа <code>dark</code> пÑи ÑÑ
оде Ñо ÑÑÑаниÑÑ ÑедакÑоÑа</li> </ul> <p><strong>ФилÑÑÑ ÐºÐ¾Ð¼Ð¼ÐµÐ½ÑаÑиев в ÑедакÑоÑе:</strong></p> <ul> <li data-num="383"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> ÐеÑеклÑÑаÑÐµÐ»Ñ Â«ÐÑе / ÐÑкÑÑÑÑе / ÐакÑÑÑÑе» в ÑайдбаÑе комменÑаÑиев â Ð¼Ð³Ð½Ð¾Ð²ÐµÐ½Ð½Ð°Ñ ÑилÑÑÑаÑÐ¸Ñ Ð±ÐµÐ· пеÑезагÑÑзки</li> <li data-num="384"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> ÐизÑалÑнÑе индикаÑоÑÑ: «ÑеÑÑн» (зелÑÐ½Ð°Ñ Ð¿Ð¾Ð»Ð¾Ñка) и «оÑклонÑн» (кÑаÑÐ½Ð°Ñ Ð¿Ð¾Ð»Ð¾Ñка) вмеÑÑо полÑпÑозÑаÑноÑÑи</li> <li data-num="385"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> Rejected-комменÑаÑии оÑÑаÑÑÑÑ Ð² ÑпиÑке как «оÑклонÑннÑе» (а не иÑÑезаÑÑ) â Ð¿Ð¾Ð»Ð½Ð°Ñ Ð¸ÑÑоÑÐ¸Ñ Ð¼Ð¾Ð´ÐµÑаÑии<
1/li> <li data-num="386"><span class="changelog-tag changelog-tag--UX" data-tag-alias="UX">UX</span> Ðнопки дейÑÑвий ÑкÑÑÑÑ Ñ Ð¾ÑклонÑннÑÑ
комменÑаÑиев â нелÑÐ·Ñ Ð¿Ð¾Ð²ÑоÑно пÑинÑÑÑ/оÑклониÑÑ</li> </ul> <p><strong>ТÑекинг пÑоÑмоÑÑов â «новÑе» комменÑаÑии и пÑавки:</strong></p> <ul> <li data-num="387"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> localStorage-ÑÑекинг пÑоÑмоÑÑеннÑÑ
комменÑаÑиев/пÑавок (по document) â ÑÑÑÑÑик на кнопке панели показÑÐ²Ð°ÐµÑ Ð¸Ð¼ÐµÐ½Ð½Ð¾ непÑоÑмоÑÑеннÑе, а не неÑазÑеÑÑннÑе</li> <li data-num="388"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> ÐвÑомаÑиÑеÑÐºÐ°Ñ Ð¾ÑмеÑка «пÑоÑмоÑÑено» пÑи оÑкÑÑÑии боковой панели</li> </ul> <p><strong>ÐÑоизводиÑелÑноÑÑÑ Ð¸ LCP:</strong></p> <ul> <li data-num="389"><span class="changelog-tag changelog-tag--PERF" data-tag-alias="PERF">PERF</span> ÐпÑимизаÑÐ¸Ñ srcset: ÑбÑÐ°Ð½Ñ Ð¸Ð·Ð±ÑÑоÑнÑе 2560w-ваÑианÑÑ Ð´Ð»Ñ Ð¾Ð±Ð»Ð¾Ð¶ÐµÐº, Ð´Ð¾Ð±Ð°Ð²Ð»ÐµÐ½Ñ Ð¿ÑомежÑÑоÑнÑе ÑазмеÑÑ (480w, 800w) Ð´Ð»Ñ ÐºÐ¾Ð¼Ð¿Ð°ÐºÑнÑÑ
каÑÑоÑек â менÑÑе ÑÑаÑика без поÑеÑи каÑеÑÑва</li> <li data-num="390"><span class="changelog-tag changelog-tag--PERF" data-tag-alias="PERF">PERF</span> SSR homepage hero: Worker инжекÑиÑÑÐµÑ Ð¿Ð¾Ð»Ð½ÑÑ ÐºÐ°ÑÑоÑÐºÑ Ð³ÐµÑÐ¾Ñ (image + title + author + category) пÑÑмо в <code><main></code> â LCP-ÑÐ»ÐµÐ¼ÐµÐ½Ñ Ð²Ð¸Ð´ÐµÐ½ на FCP, до загÑÑзки JavaScript</li> <li data-num="391"><span class="changelog-tag changelog-tag--PERF" data-tag-alias="PERF">PERF</span> <code>scheduler.yield()</code> Ð´Ð»Ñ Angular bootstrap â ÑовÑеменнÑй API пÑиоÑиÑеÑного yield вмеÑÑо <code>setTimeout(0)</code>, Ñ graceful fallback</li> <li data-num="392"><span class="changelog-tag changelog-tag--PERF" data-tag-alias="PERF">PERF</span> <code>content-visibility: auto</code> Ð´Ð»Ñ ÑекÑий ÑлайдеÑа избÑанного â пÑедоÑвÑаÑение CLS пÑи ÑкÑолле</li> <li data-num="393"><span class="changelog-tag changelog-tag--PERF" data-tag-alias="PERF">PERF</span> Inline CSS minification в HTML template â ÑÐºÐ¾Ð½Ð¾Ð¼Ð¸Ñ ~3 ÐиРбез ÑиÑка поломки proxy-паÑÑеÑов</li> <li data-num="394"><span class="changelog-tag changelog-tag--PERF" data-tag-alias="PERF">PERF</span> Strip sourceMappingURL из vendor-бандла â Ð½ÐµÑ 404 Ð´Ð»Ñ .map-Ñайлов в production</li> </ul> <p><strong>ÐоÑÑÑпноÑÑÑ:</strong></p> <ul> <li data-num="395"><span class="changelog-tag changelog-tag--A11Y" data-tag-alias="A11Y">A11Y</span> <code>focus-visible</code> outlines на вÑеÑ
инÑеÑакÑивнÑÑ
ÑлеменÑаÑ
ÑайдбаÑа (ÑабÑ, кнопки, каÑÑоÑки комменÑаÑиев, ÑилÑÑÑ)</li> <li data-num="396"><span class="changelog-tag changelog-tag--A11Y" data-tag-alias="A11Y">A11Y</span> Hover-ÑÑилизаÑÐ¸Ñ Ð´Ð»Ñ ÐºÐ½Ð¾Ð¿Ð¾Ðº ÑилÑÑÑа и Ñабов ÑайдбаÑа</li> </ul> </div> </details> <details class="changelog-section"> <summary class="changelog-summary"><span class="changelog-meta"><span class="changelog-meta__version">v9.11.3</span><span class="changelog-meta__date">19-02-2026</span></span><h2 id="v9113-19-02-2026--загÑÑзка-обложек-дÑблиÑование-ÑекÑÑа-конÑликÑÑ-веÑÑиÑ">ÐагÑÑзка обложек, дÑблиÑование ÑекÑÑа, конÑликÑÑ Ð²ÐµÑÑиÑ</h2></summary> <div class="changelog-section__body"> <ul> <li data-num="353"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>СоÑ
Ñанение и обновление обложек</strong>. ТепеÑÑ Ð¾Ð±Ð»Ð¾Ð¶ÐºÐ¸ без пÑоблем ÑоÑ
ÑанÑÑÑÑÑ Ð¸ ÑÑÑеÑÑвÑÑÑиÑ
ÑеÑновиков и маÑеÑиалов.</li> <li data-num="354"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>Ðглавление: ÑабоÑÐ°ÐµÑ Ð² Ñежиме пÑоÑмоÑÑа пÑбликаÑий</strong>. ТепеÑÑ Ð¾Ð³Ð»Ð°Ð²Ð»ÐµÐ½Ð¸Ðµ кликабелÑно и инÑеÑакÑивно во вÑеÑ
ÑежимаÑ
взаимодейÑÑÐ²Ð¸Ñ Ñ Ð¼Ð°ÑеÑиалами.</li> <li data-num="355"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <strong>СÑилизаÑÐ¸Ñ Ð¾Ð³Ð»Ð°Ð²Ð»ÐµÐ½Ð¸Ð¹ и вложеннÑÑ
заголовков</strong>. СкÑÑгленнÑе Ñамки в ÑедакÑоÑе, Ñежиме пÑедпÑоÑмоÑÑа и в оÑкÑÑÑÑÑ
маÑеÑиалаÑ
.</li> </ul> </div> </details> <details class="changelog-section"> <summary class="changelog-summary"><span class="changelog-meta"><span class="changelog-meta__version">v9.11.2</span><span class="changelog-meta__date">18-02-2026</span></span><h2 id="v9112-18-02-2026--changelog-полиÑовка-оÑибок-видео-и-email">Changelog, полиÑовка оÑибок, видео и email</h2></summary> <div class="changelog-section__body"> <ul> <li data-num="345"><strong>СÑÑаниÑа Changelog</strong> â пÑблиÑÐ½Ð°Ñ Ð¸ÑÑоÑÐ¸Ñ Ð¾Ð±Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ð¹ плаÑÑоÑÐ¼Ñ ÑепеÑÑ Ð´Ð¾ÑÑÑпна на <code>/changelog</code>. ÐлаваÑÑее оглавление Ð´Ð»Ñ Ð½Ð°Ð²Ð¸Ð³Ð°Ñии, аккоÑÐ´ÐµÐ¾Ð½Ñ Ð²ÐµÑÑий, ÑвеÑнÑе бейджи <code>[NEW]</code> / <code>[FIX]</code> / <code>[SEC]</code>. Сам ÑпиÑок обновление авÑомаÑиÑеÑки генеÑиÑÑеÑÑÑ Ð¸Ð· запиÑей ÑазÑабоÑÑиков в <code>CHANGELOG.md</code> пÑи каждой ÑбоÑке.</li> <li data-num="346"><strong>СÑÑаниÑа оÑибки â не ÑÑпик, а Ñазвилка</strong> â кÑаÑÐ¸Ð²Ð°Ñ ÐºÐ½Ð¾Ð¿ÐºÐ° «ÐеÑнÑÑÑÑÑ Ð½Ð° главнÑÑ», поле поиÑка, коÑÑекÑное оÑобÑажение на лÑбÑÑ
ÑкÑанаÑ
(вклÑÑÐ°Ñ Ð¼Ð¾Ð±Ð¸Ð»ÑнÑй ландÑаÑÑ). Header, footer и Ð¿Ð»ÐµÐµÑ Ð¾ÑÑаÑÑÑÑ Ð²Ð¸Ð´Ð¸Ð¼Ñми на stub-ÑÑÑаниÑаÑ
â полÑзоваÑÐµÐ»Ñ Ð½Ðµ ÑеÑÑÐµÑ Ð½Ð°Ð²Ð¸Ð³Ð°ÑиÑ.</li> <li data-num="347"><strong>ÐопиÑование ÑÑÑлки одним кликом</strong> â пÑи наведении на ÑÑÑÐ»ÐºÑ Ð² ÑедакÑоÑе поÑвл
1ÑеÑÑÑ ÐºÐ½Ð¾Ð¿ÐºÐ° копиÑÐ¾Ð²Ð°Ð½Ð¸Ñ Ñ Ð²Ð¸Ð·ÑалÑнÑм подÑвеÑждением. РабоÑÐ°ÐµÑ Ð²Ð¾ вÑеÑ
бÑаÑзеÑаÑ
, вклÑÑÐ°Ñ ÑÑаÑÑе â Ñ Ð°Ð²ÑомаÑиÑеÑким fallback.</li> <li data-num="348"><strong>Ðидео без ÑÑÑнÑÑ
полоÑ</strong> â YouTube, Vimeo и RuTube маÑÑÑабиÑÑÑÑÑÑ 16:9 на лÑбÑÑ
ÑкÑанаÑ
. ÐÑиваÑнÑе Vimeo (Ñ hash) воÑпÑоизводÑÑÑÑ Ð² галеÑее. Spotify и Twitter embed не «пÑÑгаÑÑ» пÑи загÑÑзке.</li> <li data-num="349"><strong>ÐÑоÑили авÑоÑов</strong> â ÑиÑаÑели видÑÑ ÑолÑко опÑбликованнÑе маÑеÑиалÑ, авÑоÑÑ Ð¸ ÑедакÑÐ¸Ñ â вÑе Ñвои ÑекÑÑÑ, вклÑÑÐ°Ñ Ð¿Ð¾Ð´Ð°Ð½Ð½Ñе на модеÑаÑиÑ.</li> <li data-num="350"><strong>ÐоÑÑÑп к маÑеÑиалам</strong> â ÐµÐ´Ð¸Ð½Ð°Ñ ÑÑÑаниÑа «ÐÐµÑ Ð´Ð¾ÑÑÑпа» вмеÑÑо ÑеÑ
ниÑеÑкиÑ
оÑибок. ÐаÑеÑÐ¸Ð°Ð»Ñ Ð½Ð° модеÑаÑии: авÑоÑизованнÑм â полнÑй ÑекÑÑ, анонимнÑм â пÑевÑÑ Ñ Ð¿Ñедложением войÑи.</li> <li data-num="351"><strong>Email-ÑведомлениÑ</strong> â веÑиÑикаÑиÑ, ÑбÑÐ¾Ñ Ð¿Ð°ÑÐ¾Ð»Ñ Ð¸ пÑиглаÑÐµÐ½Ð¸Ñ Ð°Ð²ÑоÑов пеÑÐµÐ²ÐµÐ´ÐµÐ½Ñ Ð½Ð° Mailgun. ÐÑказоÑÑÑойÑивоÑÑÑ: еÑли поÑÑа недоÑÑÑпна, оÑновнÑе опеÑаÑии не пÑеÑÑваÑÑÑÑ.</li> <li data-num="352"><strong>ÐезопаÑноÑÑÑ</strong> â ÑоÑеÑÐ½Ð°Ñ ÑаниÑизаÑÐ¸Ñ CSS (ÑолÑко опаÑнÑе ÑвойÑÑва, embed-конÑейнеÑÑ ÑабоÑаÑÑ). ÐÐ¸Ð¼Ð¸Ñ Ð·Ð°Ð³ÑÑзки каÑÑинок ÑвелиÑен до 15 ÐÐ.</li> </ul> </div> </details> <details class="changelog-section"> <summary class="changelog-summary"><span class="changelog-meta"><span class="changelog-meta__version">v9.11.1</span><span class="changelog-meta__date">17-02-2026</span></span><h2 id="v9111-17-02-2026--надÑжноÑÑÑ-безопаÑноÑÑÑ-и-доÑÑÑпноÑÑÑ-post-review-polish">ÐадÑжноÑÑÑ, безопаÑноÑÑÑ Ð¸ доÑÑÑпноÑÑÑ: post-review polish</h2></summary> <div class="changelog-section__body"> <p>Ðлавное: ÑоÑма обÑаÑной ÑвÑзи Ñ ÐºÐ°ÑегоÑиÑми и deep linkâами, ÑемаÑки ÑиÑаÑелей пÑÑмо в ÑайдбаÑе ÑедакÑоÑа (вклÑÑÐ°Ñ Â«Ð¾ÑÑÑавÑие» без пÑивÑзки к ÑекÑÑÑ), подпиÑки на Ñеги Ñ ÐºÐ¾Ð»Ð¸ÑеÑÑвом пÑбликаÑий, плÑÑ Ð´Ð²Ð¾Ð¹Ð½Ð¾Ð¹ Backspace/Delete Ð´Ð»Ñ ÑÐ´Ð°Ð»ÐµÐ½Ð¸Ñ Ð±Ð»Ð¾ÐºÐ¾Ð² и Ð¿Ð»Ð°Ð²Ð½Ð°Ñ Ñмена SSRâAngular без ÑкаÑков веÑÑÑки.</p> <p><strong>ÐезопаÑноÑÑÑ â еÑÑ Ð¾Ð´Ð¸Ð½ Ñлой заÑиÑÑ:</strong></p> <ul> <li data-num="334"><span class="changelog-tag changelog-tag--SEC" data-tag-alias="SEC">SEC</span> XSS defense-in-depth в <code>stripTagsAndTruncate</code>: whitelist пÑоÑоколов (<code>https:</code>, <code>mailto:</code>, <code>/</code>) Ð´Ð»Ñ ÑÑÑлок â <code>javascript:</code> и <code>data:</code> болÑÑе не пÑоÑкоÑÐ°Ñ Ð´Ð°Ð¶Ðµ пÑи обÑ
оде ngSanitize</li> <li data-num="335"><span class="changelog-tag changelog-tag--SEC" data-tag-alias="SEC">SEC</span> Tag-closing logic: ложнÑе ÑÑабаÑÑÐ²Ð°Ð½Ð¸Ñ <code><i</code> â <code></i></code> болÑÑе не пÑÑаÑÑ <code><img></code> и <code><iframe></code> Ñ ÐºÑÑÑивом</li> </ul> <p><strong>РедакÑÐ¾Ñ â кÑÑÑÐ¾Ñ Ð½Ð° меÑÑе:</strong></p> <ul> <li data-num="336"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> РазвоÑаÑивание ÑпойлеÑа Ñ Ð·Ð°Ð³Ð¾Ð»Ð¾Ð²ÐºÐ¾Ð¼: кÑÑÑÐ¾Ñ Ð±Ð¾Ð»ÑÑе не пÑÑÐ³Ð°ÐµÑ Ðº наÑÐ°Ð»Ñ Ð´Ð¾ÐºÑменÑа â ÑмеÑение коÑÑекÑно ÑÑиÑÑÐ²Ð°ÐµÑ Ð²ÑÑавленнÑй паÑагÑÐ°Ñ Ð·Ð°Ð³Ð¾Ð»Ð¾Ð²ÐºÐ°</li> <li data-num="337"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> Ðейдж «ÑемаÑка» вмеÑÑо debug-аÑÑеÑакÑа «old» â ÑиÑаÑÐµÐ»Ñ Ð²Ð¸Ð´Ð¸Ñ Ð¿Ð¾Ð½ÑÑнÑÑ Ð¼ÐµÑкÑ</li> <li data-num="338"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <code>ng-attr-role</code> болÑÑе не ÑендеÑÐ¸Ñ Ð»Ð¸ÑеÑал <code>"undefined"</code> в DOM â ÑиÑÑÑй HTML Ð´Ð»Ñ screen readers</li> </ul> <p><strong>РемаÑки â ни одна не поÑеÑÑеÑÑÑ:</strong></p> <ul> <li data-num="339"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> Backend: merge InlineComments + legacy Remarks Ñ Ð´ÐµÐ´ÑпликаÑией â во вÑÐµÐ¼Ñ Ð¼Ð¸Ð³ÑаÑии ÑемаÑки из обоиÑ
иÑÑоÑников обÑединÑÑÑÑÑ, а не ÑеÑÑÑÑÑÑ</li> <li data-num="340"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> Backend: guard пÑбликаÑии коÑÑекÑно обÑабаÑÑÐ²Ð°ÐµÑ <code>directBody</code> â ÑÑÐ°Ð²Ð½Ð¸Ð²Ð°ÐµÑ Ñ ÑекÑÑим body вмеÑÑо Ñлепого пÑопÑÑка</li> <li data-num="341"><span class="changelog-tag changelog-tag--PERF" data-tag-alias="PERF">PERF</span> Backend: compound index <code>{documentName, isRemark, createdAt}</code> â запÑоÑÑ ÑемаÑок Ð¼Ð³Ð½Ð¾Ð²ÐµÐ½Ð½Ñ Ð´Ð°Ð¶Ðµ на болÑÑиÑ
коллекÑиÑÑ
</li> </ul> <p><strong>ÐоÑÑÑпноÑÑÑ â клавиаÑÑÑа ÑабоÑÐ°ÐµÑ Ð²ÐµÐ·Ð´Ðµ:</strong></p> <ul> <li data-num="342"><span class="changelog-tag changelog-tag--A11Y" data-tag-alias="A11Y">
1A11Y</span> Social-кнопки (VK, Facebook, X, Telegram) полÑÑили <code>role="button"</code> и <code>tabindex="0"</code> â полноÑÐµÐ½Ð½Ð°Ñ ÐºÐ»Ð°Ð²Ð¸Ð°ÑÑÑÐ½Ð°Ñ Ð½Ð°Ð²Ð¸Ð³Ð°ÑÐ¸Ñ Ð²Ð¾ вÑеÑ
ÑеÑÑÑÑÑ
ÑоÑкаÑ
: ÑÐ°Ð¹Ð´Ð±Ð°Ñ ÑÑаÑÑи, мобилÑÐ½Ð°Ñ Ð¿Ð°Ð½ÐµÐ»Ñ, ÑÑÑаниÑа ÑкÑпо, оÑновной Ñаблон</li> <li data-num="343"><span class="changelog-tag changelog-tag--UX" data-tag-alias="UX">UX</span> ТÑлÑип на обÑезаннÑÑ
названиÑÑ
маÑеÑиалов в баннеÑе комменÑаÑиев â наводиÑÑ Ð¸ видиÑÑ Ð¿Ð¾Ð»Ð½Ñй заголовок</li> </ul> <p><strong>ÐенÑа â аккÑÑаÑнÑе каÑÑоÑки:</strong></p> <ul> <li data-num="344"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> ÐгÑаниÑение вÑÑоÑÑ Ð¿ÑевÑÑ Ð² каÑÑоÑкаÑ
ленÑÑ (<code>max-height: 6.4em</code>) â поÑле ÑÐ´Ð°Ð»ÐµÐ½Ð¸Ñ <code>-webkit-line-clamp</code> ÑекÑÑ Ð±Ð¾Ð»ÑÑе не вÑваливаеÑÑÑ Ð·Ð° гÑаниÑÑ ÐºÐ°ÑÑоÑки</li> </ul> </div> </details> <details class="changelog-section"> <summary class="changelog-summary"><span class="changelog-meta"><span class="changelog-meta__version">v9.11.0</span><span class="changelog-meta__date">16-02-2026</span></span><h2 id="v9110-16-02-2026--каÑегоÑии-обÑаÑной-ÑвÑзи-ÑемаÑки-в-ÑедакÑоÑе-подпиÑки-на-Ñеги">ÐаÑегоÑии обÑаÑной ÑвÑзи, ÑемаÑки в ÑедакÑоÑе, подпиÑки на Ñеги</h2></summary> <div class="changelog-section__body"> <p><strong>ФоÑма обÑаÑной ÑвÑзи â ÑепеÑÑ Ñ ÐºÐ°ÑегоÑиÑми:</strong></p> <p>ФоÑма «ÐÑедложиÑÑ Ð¸Ð´ÐµÑ» пÑевÑаÑилаÑÑ Ð² полноÑеннÑй ÑенÑÑ Ð¾Ð±ÑаÑной ÑвÑзи. ЧиÑаÑÐµÐ»Ñ Ð²ÑбиÑÐ°ÐµÑ ÑÐµÐ¼Ñ Ð¸Ð· вÑпадаÑÑего ÑпиÑка â пÑедложиÑÑ Ð¸Ð´ÐµÑ, ÑообÑиÑÑ Ð¾ баге, пÑедложиÑÑ ÑоÑÑÑдниÑеÑÑво, пожеÑÑÐ²Ð¾Ð²Ð°Ð½Ð¸Ñ Ð¸ дÑÑгие â и Ð²Ð¸Ð´Ð¸Ñ Ð¿Ð¾Ð´ÑказкÑ-плейÑÑ
олдеÑ, адапÑиÑованнÑÑ Ðº вÑбÑанной Ñеме. ФоÑма оÑкÑÑваеÑÑÑ Ð¿Ð¾ пÑÑмой ÑÑÑлке Ñ Ñ
еÑем (<code>#bug</code>, <code>#help</code>, <code>#collab</code>), Ñ Ð¾Ð±ÑаÑной ÑовмеÑÑимоÑÑÑÑ legacy-ÑоÑмаÑа <code>#idea</code>.</p> <ul> <li data-num="305"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> ÐаÑÑомнÑй dropdown Ñ ÐºÐ°ÑегоÑиÑми Ñем: идеÑ, помоÑÑ, опеÑаÑка, пожеÑÑвованиÑ, баг, ÑоÑÑÑдниÑеÑÑво, дÑÑгое</li> <li data-num="306"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> ÐонÑекÑÑнÑе плейÑÑ
олдеÑÑ Ð´Ð»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð¹ каÑегоÑии â полÑзоваÑÐµÐ»Ñ ÑÑÐ°Ð·Ñ Ð¿Ð¾Ð½Ð¸Ð¼Ð°ÐµÑ, ÑÑо именно опиÑаÑÑ</li> <li data-num="307"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> Deep link: <code>#bug</code>, <code>#help</code>, <code>#collab</code> и Ñ.д. â оÑкÑÑÐ²Ð°ÐµÑ Ð¼Ð¾Ð´Ð°Ð»ÐºÑ Ñ Ð½Ñжной Ñемой</li> <li data-num="308"><span class="changelog-tag changelog-tag--UX" data-tag-alias="UX">UX</span> Keyboard-навигаÑÐ¸Ñ (ArrowUp/Down, Escape), ARIA-аÑÑибÑÑÑ, закÑÑÑие по ÐºÐ»Ð¸ÐºÑ Ð²Ð½Ðµ облаÑÑи</li> <li data-num="309"><span class="changelog-tag changelog-tag--UX" data-tag-alias="UX">UX</span> ÐаÑиÑа Ð¾Ñ Ð´Ð²Ð¾Ð¹Ð½Ð¾Ð¹ оÑпÑавки (<code>ng-disabled</code> во вÑÐµÐ¼Ñ Ð¾ÑпÑавки)</li> <li data-num="310"><span class="changelog-tag changelog-tag--UX" data-tag-alias="UX">UX</span> ÐаÑÐ¸Ð²Ð½Ð°Ñ Ð²Ð°Ð»Ð¸Ð´Ð°ÑÐ¸Ñ email (<code>type="email"</code>, <code>autocomplete="email"</code>)</li> <li data-num="311"><span class="changelog-tag changelog-tag--UX" data-tag-alias="UX">UX</span> Dark mode Ð´Ð»Ñ dropdown</li> <li data-num="312"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <code>$timeout</code> пÑи авÑооÑкÑÑÑии модалки по Ñ
еÑÑ â DOM гаÑанÑиÑованно гоÑов</li> <li data-num="313"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <code>$onDestroy</code> cleanup Ð´Ð»Ñ document click listener â Ð½ÐµÑ ÑÑеÑки памÑÑи</li> <li data-num="314"><span class="changelog-tag changelog-tag--REFACTOR" data-tag-alias="REFACTOR">CODE</span> Inline-ÑÑили вÑнеÑÐµÐ½Ñ Ð² CSS-клаÑÑÑ (<code>form-group--topic</code>, <code>send-idea-submit__btn</code>)</li> </ul> <p><strong>РемаÑки ÑиÑаÑелей â ÑепеÑÑ Ð¿ÑÑмо в ÑедакÑоÑе:</strong></p> <p>РемаÑки (иÑпÑÐ°Ð²Ð»ÐµÐ½Ð¸Ñ Ð¾Ñ ÑиÑаÑелей) пÑиÑ
одÑÑ Ð¿ÑÑмо в ÑÐ°Ð¹Ð´Ð±Ð°Ñ ÐºÐ¾Ð¼Ð¼ÐµÐ½ÑаÑиев ÑедакÑоÑа. ÐвÑÐ¾Ñ Ð²Ð¸Ð´Ð¸Ñ Ð¸Ñ
вмеÑÑе Ñ Ð¾Ð±ÑÑнÑми комменÑаÑиÑми, помеÑеннÑми бейджом «ÑемаÑка» и жÑлÑой полоÑкой. Ðожно пÑинÑÑÑ, оÑклониÑÑ, оÑвеÑиÑÑ â как Ñ Ð¾Ð±ÑÑнÑми комменÑаÑиÑми.</p> <ul> <li data-num="315"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> РемаÑки ÑоÑ
ÑанÑÑÑÑÑ ÐºÐ°Ðº InlineComment Ñ <code>isRemark: true</code> ÑеÑез <code>POST /collab/remarks/:documentName</code></li> <li data-num="316"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> Orphaned-ÑемаÑки (без пÑивÑзки к ÑÑагменÑÑ) оÑобÑажаÑÑÑÑ Ñ Ð¸ÐºÐ¾Ð½ÐºÐ¾Ð¹ fa-unlink и ÑÑлÑипом «Ðе пÑивÑзана к ÑекÑÑÑ»</li> <li data-num="317"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> Ðейдж «ÑемаÑка» в Ñ
едеÑе комменÑаÑÐ¸Ñ + ÑиÑиÑÑемÑй ÑекÑÑ <code>quotedText</code></li> <li data-num="318"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> ТекÑÑ Ð¿Ð¾Ð´ÑвеÑÐ¶Ð´ÐµÐ½Ð¸Ñ Ð´Ð»Ñ ÑиÑаÑелÑ: «ÐвÑÐ¾Ñ ÑÐ²Ð¸Ð´Ð¸Ñ ÐµÑ Ð² ÑедакÑоÑе»</li> <li data-num="319"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> Backend: поле <code>isRemark</code> добавлено в projection <code>GET /collab/comments</code> â ÑемаÑки ÑепеÑÑ ÐºÐ¾ÑÑекÑно иденÑиÑиÑиÑÑÑÑÑÑ</li> <li data-num="320"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> ÐалидаÑÐ¸Ñ contentItem ID (regex Ð¾Ñ path traversal) + гаÑд на пÑÑÑой ID пеÑед оÑпÑавкой</li> <li data-num="321"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> ÐаÑиÑа Ð¾Ñ Ð´Ð²Ð¾Ð¹Ð½Ð¾Ð¹ оÑпÑавки ÑемаÑки (<code>remarkIsSending</code> guard)</li> <li data-num="322"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> ÐонÑиÑÑенÑнÑй <code>.trim()</code> Ð´Ð»Ñ textSelected, textBefore, textAfter</li> </ul> <p><strong>ÐодпиÑки â Ñеги Ñ Ð¾Ð¿Ð¸ÑаниÑми:</strong></p> <ul> <li data-num="323"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> Теги показÑваÑÑ ÐºÐ¾Ð»Ð¸ÑеÑÑво пÑбликаÑий (ÑеÑез новÑй ÑилÑÑÑ <code>pluralize</code>)</li> <li data-num="324"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> SVG-иконка Ñ
еÑÑега вмеÑÑо FontAwesome (<code>/partials/icons/hashtag.html</code>)</li> <li data-num="325"><span class="changelog-tag changelog-tag--UX" data-tag-alias="UX">UX</span> СÑилевÑе пеÑеменнÑе <code>$color-tag</code> / <code>$color-tag-dark</code> Ð´Ð»Ñ ÐµÐ´Ð¸Ð½Ð¾Ð¾Ð±Ñазного оÑоÑмлениÑ</li> <li data-num="326"><span class="changelog-tag changelog-tag--PERF" data-tag-alias="PERF">PERF</span> ÐпиÑÐ°Ð½Ð¸Ñ Ð¿ÑедвÑÑиÑлÑÑÑÑÑ Ð¾Ð´Ð¸Ð½ Ñаз пÑи ÑилÑÑÑаÑии вмеÑÑо вÑзова на каждом digest-Ñикле</li> </ul> <p><strong>РедакÑÐ¾Ñ â ÑÑабилÑнее и ÑиÑе:</strong></p> <ul> <li data-num="327"><span class="changelog-tag changelog-tag--REFACTOR" data-tag-alias="REFACTOR">REFACTOR</span> Шаблон ÑпиÑка комменÑаÑиев вÑнеÑен в обÑий partial
1<code>comment-list.html</code> â ÑбÑана дÑпликаÑÐ¸Ñ ~110 ÑÑÑок Ð¼ÐµÐ¶Ð´Ñ Article и Literature</li> <li data-num="328"><span class="changelog-tag changelog-tag--REFACTOR" data-tag-alias="REFACTOR">REFACTOR</span> Ðконка Ñ
айлайÑеÑа: CSS-mask <code>.btn-icon-highlighter</code> â inline SVG + конÑÑанÑа <code>ICON_HIGHLIGHTER</code></li> <li data-num="329"><span class="changelog-tag changelog-tag--PERF" data-tag-alias="PERF">PERF</span> ÐеÑиÑование <code>_sortTime</code> пеÑед ÑоÑÑиÑовкой комменÑаÑиев â <code>new Date()</code> вÑзÑваеÑÑÑ O(n) вмеÑÑо O(n log n)</li> <li data-num="330"><span class="changelog-tag changelog-tag--UX" data-tag-alias="UX">UX</span> Orphaned-комменÑаÑии: <code>cursor: default</code>, no-op click на ÑÑÑоке</li> <li data-num="331"><span class="changelog-tag changelog-tag--REFACTOR" data-tag-alias="REFACTOR">CODE</span> ЦвеÑа remark-badge и orphaned-border вÑнеÑÐµÐ½Ñ Ð² SCSS-пеÑеменнÑе <code>$color-remark-</code>*</li> <li data-num="332"><span class="changelog-tag changelog-tag--REFACTOR" data-tag-alias="REFACTOR">CODE</span> ФилÑÑÑ <code>pluralize</code> Ñ Ð´Ð¾ÐºÑменÑаÑией ÑазлиÑий Ð¾Ñ <code>russianNumber</code></li> <li data-num="333"><span class="changelog-tag changelog-tag--REFACTOR" data-tag-alias="REFACTOR">CODE</span> Ð£Ð´Ð°Ð»ÐµÐ½Ñ decaffeinate-комменÑаÑии из sendFeedbackMessage и remarksService</li> </ul> </div> </details> <details class="changelog-section"> <summary class="changelog-summary"><span class="changelog-meta"><span class="changelog-meta__version">v9.10.0</span><span class="changelog-meta__date">15-02-2026</span></span><h2 id="v9100-15-02-2026--пÑбликаÑиÑ-без-неÑвов-валидаÑиÑ-подÑвеÑждение-и-ÑмнÑе-оÑибки">ÐÑбликаÑÐ¸Ñ Ð±ÐµÐ· неÑвов: валидаÑиÑ, подÑвеÑждение и ÑмнÑе оÑибки</h2></summary> <div class="changelog-section__body"> <p><strong>Post-review ÑикÑÑ:</strong></p> <ul> <li data-num="276"><span class="changelog-tag changelog-tag--UX" data-tag-alias="UX">UX</span> Ðиалог ÑоÑ
ÑанениÑ: «ÐпÑбликоваÑÑ» ÑепеÑÑ primary-кнопка (confirm), «СоÑ
ÑаниÑÑ ÑеÑновик» â secondary (cancel). СеманÑика коÑÑекÑна, Ð½ÐµÑ ÑиÑка ÑлÑÑайной пÑбликаÑии ÑеÑез cancel-кнопкÑ</li> <li data-num="277"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> Publish: retry пÑи HTTP 409 (optimistic locking race Ñ autosave) â авÑомаÑиÑеÑкий повÑÐ¾Ñ ÑеÑез 500ms</li> <li data-num="278"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> Validation guard: еÑли onValidateBeforePublish веÑнÑÑ Promise вмеÑÑо boolean â publish блокиÑÑеÑÑÑ</li> <li data-num="279"><span class="changelog-tag changelog-tag--PERF" data-tag-alias="PERF">PERF</span> SWR Ñнижен 300â120 Ñек (2 мин) â иÑпÑавлениÑ/пÑавки Ð²Ð¸Ð´Ð½Ñ Ð±ÑÑÑÑее, пÑи ÑоÑ
Ñанении кÑÑ-пÑеимÑÑеÑÑв</li> <li data-num="280"><span class="changelog-tag changelog-tag--PERF" data-tag-alias="PERF">PERF</span> Backward-compat middleware: fast-path по statusCode < 400 â 99%+ success-оÑвеÑов не паÑÑÑÑÑÑ</li> <li data-num="281"><span class="changelog-tag changelog-tag--PERF" data-tag-alias="PERF">PERF</span> localStorage cleanup: MAX_SCAN=500 guard â заÑиÑа Ð¾Ñ Ð·Ð°Ð²Ð¸ÑÐ°Ð½Ð¸Ñ Ð½Ð° ÑÑÑÑойÑÑваÑ
Ñ ÑÑÑÑÑами клÑÑей</li> <li data-num="282"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> ÐпеÑаÑка в donate-success.html: «поддеÑжÑ» â «поддеÑжкÑ»</li> <li data-num="283"><span class="changelog-tag changelog-tag--REFACTOR" data-tag-alias="REFACTOR">CODE</span> captionEditorService/footnoteService: debug helper вмеÑÑо дÑблиÑÐ¾Ð²Ð°Ð½Ð¸Ñ console.debug в каждом catch</li> <li data-num="284"><span class="changelog-tag changelog-tag--REFACTOR" data-tag-alias="REFACTOR">CODE</span> loadEditorScripts: ÑдалÑн мÑÑÑвÑй код <strong>EDITOR_CSS_VERSION</strong> (DefinePlugin недоÑÑÑпен)</li> </ul> <p><strong>ÐÑбликаÑÐ¸Ñ â ÑепеÑÑ Ð±ÐµÐ·Ð¾Ð¿Ð°Ñно и понÑÑно:</strong></p> <ul> <li data-num="285"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> ÐвÑÑ
ÑÑÑпенÑаÑÐ°Ñ Ð·Ð°ÑиÑа Ð¾Ñ ÑлÑÑайной пÑбликаÑии: валидаÑÐ¸Ñ Ð¿Ð¾Ð»ÐµÐ¹ â диалог подÑвеÑÐ¶Ð´ÐµÐ½Ð¸Ñ Â«ÐпÑбликоваÑÑ Ð¼Ð°ÑеÑиал?»</li> <li data-num="286"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> Pre-publish валидаÑиÑ: заголовок, ÑÑбÑика и минималÑÐ½Ð°Ñ Ð´Ð»Ð¸Ð½Ð° ÑекÑÑа пÑовеÑÑÑÑÑÑ ÐРпоказа диалога â Ð¼Ð³Ð½Ð¾Ð²ÐµÐ½Ð½Ð°Ñ Ð¾Ð±ÑаÑÐ½Ð°Ñ ÑвÑзÑ</li> <li data-num="287"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> Ðедиа-ÑÐ¸Ð¿Ñ (ÑоÑо, видео, аÑдио, галеÑеи) имеÑÑ Ð¿Ð¾Ð½Ð¸Ð¶ÐµÐ½Ð½Ñй поÑог Ð´Ð»Ð¸Ð½Ñ ÑекÑÑа â 10 Ñимволов вмеÑÑо 50</li> <li data-num="288"><span class="changelog-tag changelog-tag--UX" data-tag-alias="UX">UX</span> ÐаÑиÑа Ð¾Ñ double-click: кнопка «ÐпÑбликоваÑÑ» блокиÑÑеÑÑÑ Ð¿Ð¾ÐºÐ° диалог оÑкÑÑÑ Ð¸Ð»Ð¸ идÑÑ Ð¾ÑпÑавка</li> <li data-num="289"><span class="changelog-tag changelog-tag--UX" data-tag-alias="UX">UX</span> ÐонÑекÑÑнÑе оÑибки авÑоÑоÑ
ÑÐ°Ð½ÐµÐ½Ð¸Ñ Ð²Ð¼ÐµÑÑо generic «ÐÑибка ÑоÑ
ÑанениÑ»: «СодеÑжимое ÑлиÑком болÑÑое», «ÐедоÑÑаÑоÑно пÑав», «ÐÐµÑ ÑвÑзи Ñ ÑеÑвеÑом»</li> <li data-num="290"><span class="changelog-tag changelog-tag--UX" data-tag-alias="UX">UX</span> ÐндикаÑÐ¾Ñ Ð²Ð¾ÑÑÑановлениÑ: поÑле ÑÑпеÑного ÑоÑ
ÑÐ°Ð½ÐµÐ½Ð¸Ñ Ð¾Ñибка авÑомаÑиÑеÑки иÑÑÐµÐ·Ð°ÐµÑ â не виÑÐ¸Ñ Ð´Ð¾ пеÑезагÑÑзки</li> </ul> <p><strong>РедакÑÐ¾Ñ â ÑÑабилÑнее и бÑÑÑÑее:</strong></p> <ul> <li data-num="291"><span class="changelog-tag changelog-tag--PERF" data-tag-alias="PERF">PERF</span> Scroll-обÑабоÑÑик social selection ÑепеÑÑ throttled ÑеÑез requestAnimationFrame â 1 DOM-ÑÑение за ÐºÐ°Ð´Ñ Ð²Ð¼ÐµÑÑо 60+</li> <li data-num="292"><span class="changelog-tag changelog-tag--PERF" data-tag-alias="PERF">PERF</span> One-time <code>$watch</code> unwatching: <code>contentItem</code>, <code>
1tiptapEditor</code> и <code>editorInstance</code> watchers оÑклÑÑаÑÑÑÑ Ð¿Ð¾Ñле иниÑиализаÑии â менÑÑе ÑабоÑÑ Ð½Ð° каждом digest</li> <li data-num="293"><span class="changelog-tag changelog-tag--PERF" data-tag-alias="PERF">PERF</span> ÐÑÑавка изобÑажений: retry Ñ exponential backoff (до 3 попÑÑок) â ÑÑÑойÑивоÑÑÑ Ðº вÑеменнÑм ÑбоÑм ÑеÑи</li> <li data-num="294"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> localStorage cleanup: пÑоакÑÐ¸Ð²Ð½Ð°Ñ Ð¾ÑиÑÑка пÑоÑÑоÑеннÑÑ
бекапов ÑеÑез <code>requestIdleCallback</code>, заÑиÑа Ð¾Ñ QuotaExceededError</li> <li data-num="295"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> РеÑенÑн бекапов ÑвелиÑен до 7 дней â длиннÑе маÑеÑÐ¸Ð°Ð»Ñ Ð±Ð¾Ð»ÑÑе не ÑеÑÑÑÑÑÑ Ð¿Ñи пеÑеÑмоÑÑе ÑеÑез неÑколÑко дней</li> <li data-num="296"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> ÐнвалидаÑÐ¸Ñ feed-кÑÑей поÑле пÑбликаÑии: авÑÐ¾Ñ Ð¼Ð³Ð½Ð¾Ð²ÐµÐ½Ð½Ð¾ Ð²Ð¸Ð´Ð¸Ñ ÑÐ²Ð¾Ñ ÑÑаÑÑÑ Ð½Ð° главной</li> </ul> <p><strong>ÐÑÑиÑование и ÑеÑÑ:</strong></p> <ul> <li data-num="297"><span class="changelog-tag changelog-tag--PERF" data-tag-alias="PERF">PERF</span> Stale-while-revalidate ÑвелиÑен до 5 мин â мгновеннÑе оÑвеÑÑ Ð¸Ð· кÑÑа, ÑевалидаÑÐ¸Ñ Ð² Ñоне</li> <li data-num="298"><span class="changelog-tag changelog-tag--PERF" data-tag-alias="PERF">PERF</span> Preconnect к Google Tag Manager, <code>fetchpriority="high"</code> Ð´Ð»Ñ Ð¾Ñновного CSS</li> <li data-num="299"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> Cloudflare worker: <code>stale-while-revalidate</code> ÑепеÑÑ Ð¸ÑполÑзÑÐµÑ ÐµÐ´Ð¸Ð½Ñй <code>CONFIG</code> вмеÑÑо Ñ
аÑдкода</li> </ul> <p><strong>ÐезопаÑноÑÑÑ Ð¸ каÑеÑÑво кода:</strong></p> <ul> <li data-num="300"><span class="changelog-tag changelog-tag--SEC" data-tag-alias="SEC">SEC</span> <code>rel="noopener noreferrer"</code> на вÑеÑ
внеÑниÑ
ÑÑÑлкаÑ
(авÑоÑ, footer, ÑедакÑоÑ)</li> <li data-num="301"><span class="changelog-tag changelog-tag--SEC" data-tag-alias="SEC">SEC</span> <code>loading="lazy"</code> на изобÑажениÑÑ
editorial и donate pages</li> <li data-num="302"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> ESLint конÑигÑÑаÑÐ¸Ñ Ñ <code>no-unsanitized</code> plugin + lint-staged инÑегÑаÑиÑ</li> <li data-num="303"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <code>console.log</code> â <code>console.debug</code> по вÑей кодовой базе â ÑиÑÑÐ°Ñ production-конÑолÑ</li> <li data-num="304"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> MAX_RESCHEDULE_COUNT ÑвелиÑен до 10 Ñ visible warning â авÑоÑоÑ
Ñанение ÑолеÑанÑнее к медленнÑм ÑеÑвеÑам</li> </ul> </div> </details> <details class="changelog-section"> <summary class="changelog-summary"><span class="changelog-meta"><span class="changelog-meta__version">v9.9.0</span><span class="changelog-meta__date">14-02-2026</span></span><h2 id="v990-14-02-2026--ÑеÑновики-без-гÑаниÑ-ÑовмеÑÑное-ÑедакÑиÑование-обÑий-доÑÑÑп-по-ÑÑÑлке-и-безопаÑноÑÑÑ-нового-поколениÑ">ЧеÑновики без гÑаниÑ: ÑовмеÑÑное ÑедакÑиÑование, обÑий доÑÑÑп по ÑÑÑлке и безопаÑноÑÑÑ Ð½Ð¾Ð²Ð¾Ð³Ð¾ поколениÑ</h2></summary> <div class="changelog-section__body"> <p><strong>СовмеÑÑное ÑедакÑиÑование â Ð½Ð°ÐºÐ¾Ð½ÐµÑ Ð¿Ð¾-наÑÑоÑÑемÑ:</strong></p> <ul> <li data-num="236"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> ÐÑиглаÑение ÑоавÑоÑов пÑÑмо из ÑедакÑоÑа â поиÑк полÑзоваÑелей, вÑÐ±Ð¾Ñ Ñоли (авÑоÑ, ÑедакÑоÑ, комменÑаÑоÑ), оÑпÑавка по email</li> <li data-num="237"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> ÐбÑий доÑÑÑп по ÑÑÑлке: «ÐÑбой, Ñ ÐºÐ¾Ð³Ð¾ еÑÑÑ ÑÑÑлка» / «ТолÑко авÑоÑизованнÑе» / «ÐгÑаниÑеннÑй» â как в Google Docs, но Ð´Ð»Ñ ÐиÑкÑÑÑа</li> <li data-num="238"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> ÐопиÑование ÑÑÑлки обÑего доÑÑÑпа одним кликом Ñ fallback Ð´Ð»Ñ ÑÑаÑÑÑ
бÑаÑзеÑов</li> <li data-num="239"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> ÐÐ°Ð½ÐµÐ»Ñ ÑпÑÐ°Ð²Ð»ÐµÐ½Ð¸Ñ Ð¿ÑиглаÑениÑми: ÑÑаÑÑÑÑ, Ñмена Ñолей, оÑзÑв доÑÑÑпа</li> <li data-num="240"><span class="changelog-tag changelog-tag--UX" data-tag-alias="UX">UX</span> ТÑи Ñоли Ñ Ð¿Ð¾Ð½ÑÑнÑми опиÑаниÑми â «СоавÑоÑ: ÑедакÑиÑование и пÑбликаÑиÑ», «РедакÑоÑ: пÑавки и комменÑаÑии», «ÐомменÑаÑоÑ: ÑолÑко комменÑаÑии»</li> </ul> <p><strong>ЧеÑновики â полнÑй workflow:</strong></p> <ul> <li data-num="241"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> СоÑ
Ñанение нового маÑеÑиала как ÑеÑновик (без пÑбликаÑии) â кнопка «СоÑ
ÑаниÑÑ» ÑоздаÑÑ ÑеÑновик и пеÑеÑ
Ð¾Ð´Ð¸Ñ Ðº полноÑÐµÐ½Ð½Ð¾Ð¼Ñ ÑедакÑоÑÑ Ñ Ð°Ð²ÑоÑоÑ
Ñанением</li> <li data-num="242"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> ÐÑбликаÑÐ¸Ñ Ð½Ð¾Ð²ÑÑ
ÑкÑпо-маÑеÑиалов (ÑоÑо, видео, мÑзÑка, алÑбомÑ) ÑеÑез единÑй <code>sendFormForPublish</code> â болÑÑе Ð½ÐµÑ ÑÐ°Ð·Ð´ÐµÐ»ÐµÐ½Ð¸Ñ article vs expo</li> <li data-num="243"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> СÑÑаниÑа «Ðои веÑи» Ñ ÑилÑÑÑаÑией по ÑÑаÑÑÑам: ЧеÑновик, Ðа модеÑаÑии, РжÑÑнале, ÐпÑбликован, ÐÑозван</li> <li data-num="244"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span>
1 ÐоиÑк по Ð½Ð°Ð·Ð²Ð°Ð½Ð¸Ñ Ð¼Ð°ÑеÑиалов Ñ <code>type="search"</code> â наÑивнÑй clear-button и мобилÑÐ½Ð°Ñ ÐºÐ»Ð°Ð²Ð¸Ð°ÑÑÑа</li> <li data-num="245"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> Ðейджи ÑÑаÑÑÑов Ñ ÑвеÑовой диÑÑеÑенÑиаÑией, индикаÑÐ¾Ñ Ð¾Ð±Ñего доÑÑÑпа ÑÑдом Ñ Ð·Ð°Ð³Ð¾Ð»Ð¾Ð²ÐºÐ¾Ð¼</li> <li data-num="246"><span class="changelog-tag changelog-tag--UX" data-tag-alias="UX">UX</span> ТеÑÐ¼Ð¸Ð½Ð¾Ð»Ð¾Ð³Ð¸Ñ Ð¾Ð±Ð½Ð¾Ð²Ð»ÐµÐ½Ð°: «ÐÑбоÑнÑе» â «РжÑÑнале», «ÐпÑбликован» â «Ðа модеÑаÑии» Ð´Ð»Ñ posted-маÑеÑиалов</li> </ul> <p><strong>ÐезопаÑноÑÑÑ â DOMPurify вмеÑÑо blind trust:</strong></p> <ul> <li data-num="247"><span class="changelog-tag changelog-tag--SEC" data-tag-alias="SEC">SEC</span> ÐовÑй ÑилÑÑÑ <code>| trustedHtml</code> на базе DOMPurify заменÑÐµÑ ÑÑаÑÑй <code>| unsafe</code> â Ð¿Ð¾Ð»Ð½Ð°Ñ ÑаниÑизаÑÐ¸Ñ HTML Ñ whitelist Ñегов, аÑÑибÑÑов и data-URI</li> <li data-num="248"><span class="changelog-tag changelog-tag--SEC" data-tag-alias="SEC">SEC</span> iframe-Ð´Ð¾Ð¼ÐµÐ½Ñ Ð¾Ð³ÑаниÑÐµÐ½Ñ allowlist'ом (YouTube, Vimeo, Spotify, SoundCloud, Bandcamp, VK, Telegram и дÑ.)</li> <li data-num="249"><span class="changelog-tag changelog-tag--SEC" data-tag-alias="SEC">SEC</span> CSS-ÑаниÑизаÑÐ¸Ñ ÑеÑез CSSStyleDeclaration API â не обÑ
одиÑÑÑ CSS-escape'ами в оÑлиÑие Ð¾Ñ regex</li> <li data-num="250"><span class="changelog-tag changelog-tag--SEC" data-tag-alias="SEC">SEC</span> <code>data:</code> URI заблокиÑÐ¾Ð²Ð°Ð½Ñ Ð³Ð»Ð¾Ð±Ð°Ð»Ñно, <code>expression()</code> в ÑÑилÑÑ
оÑлавливаеÑÑÑ</li> <li data-num="251"><span class="changelog-tag changelog-tag--SEC" data-tag-alias="SEC">SEC</span> LRU-кÑÑ ÑаниÑизиÑованного HTML Ñ ÐºÑÑиÑованием <code>$sce.trustAsHtml()</code> â zero allocation overhead на каждÑй digest</li> <li data-num="252"><span class="changelog-tag changelog-tag--SEC" data-tag-alias="SEC">SEC</span> Cloudflare worker: HSTS (<code>max-age=63072000</code>), ÑаÑÑиÑеннÑй <code>isPrivatePage</code> на вÑе пÑиваÑнÑе маÑÑÑÑÑÑ</li> <li data-num="253"><span class="changelog-tag changelog-tag--SEC" data-tag-alias="SEC">SEC</span> DOMPurify закÑеплÑн на ÑоÑной веÑÑии 3.3.1 â Ð¾Ð±Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ security-critical завиÑимоÑÑи ÑолÑко Ñ ÑевÑÑ</li> </ul> <p><strong>Cloudflare worker â edge-безопаÑноÑÑÑ:</strong></p> <ul> <li data-num="254"><span class="changelog-tag changelog-tag--SEC" data-tag-alias="SEC">SEC</span> <code>isDraftContent</code> ÑниÑиÑиÑован: маÑеÑÐ¸Ð°Ð»Ñ Ñо ÑÑаÑÑÑом <code>posted</code> болÑÑе не ÑÑекаÑÑ ÑеÑез edge cache</li> <li data-num="255"><span class="changelog-tag changelog-tag--SEC" data-tag-alias="SEC">SEC</span> ÐÑиваÑнÑе маÑÑÑÑÑÑ <code>/edit/</code>, <code>/preview</code>, <code>/editorial</code>, <code>/notifications</code> полÑÑили server-side <code><meta name="robots" content="noindex"></code></li> <li data-num="256"><span class="changelog-tag changelog-tag--SEC" data-tag-alias="SEC">SEC</span> HSTS header Ð´Ð»Ñ Ð¿ÑинÑдиÑелÑного HTTPS на вÑеÑ
поддоменаÑ
</li> <li data-num="257"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> ÐÑедоÑвÑаÑение cache poisoning: draft и preview конÑÐµÐ½Ñ Ð²Ñегда <code>private, no-store, no-cache</code></li> </ul> <p><strong>ÐÑоизводиÑелÑноÑÑÑ:</strong></p> <ul> <li data-num="258"><span class="changelog-tag changelog-tag--PERF" data-tag-alias="PERF">PERF</span> <code>$scope.$applyAsync()</code> в success-path баннеÑов â гаÑанÑиÑованнÑй digest поÑле async/await</li> <li data-num="259"><span class="changelog-tag changelog-tag--PERF" data-tag-alias="PERF">PERF</span> <code>handleScroll</code> â early return на ÑÑÑаниÑаÑ
без ÑедакÑоÑа (не ÑканиÑÑÐµÑ DOM каждÑе 16мÑ)</li> <li data-num="260"><span class="changelog-tag changelog-tag--PERF" data-tag-alias="PERF">PERF</span> fireplace.png (2.9 ÐÐ) â fireplace.webp (251 ÐÐ) â ÑÐ°Ð·Ð¼ÐµÑ Ð»Ð¾Ð³Ð¸Ð½-ÑÑÑаниÑÑ ÑменÑÑен в 11 Ñаз</li> <li data-num="261"><span class="changelog-tag changelog-tag--PERF" data-tag-alias="PERF">PERF</span> SCSS: <code>@mixin tiptap-placeholder</code> и <code>list-styles</code> вÑнеÑÐµÐ½Ñ Ð² shared <code>_tiptap-mixins.scss</code> â один иÑÑоÑник пÑавдÑ</li> <li data-num="262"><span class="changelog-tag changelog-tag--PERF" data-tag-alias="PERF">PERF</span> <code>$timeout</code> â <code>$scope.$applyAsync</code> в tiptap-конÑÑоллеÑаÑ
â менÑÑе ÑаймеÑов, бÑÑÑÑее digest</li> <li data-num="263"><span class="changelog-tag changelog-tag--PERF" data-tag-alias="PERF">PERF</span> <code>track by</code> в ng-repeat Ð´Ð»Ñ Ð¿ÑиглаÑений, Ñолей, ÑезÑлÑÑаÑов поиÑка â менÑÑе пеÑеÑиÑовок DOM</li> </ul> <p><strong>ÐоÑÑÑпноÑÑÑ:</strong></p> <ul> <li data-num="264"><span class="changelog-tag changelog-tag--A11Y" data-tag-alias="A11Y">
1A11Y</span> <code>aria-hidden="true"</code> на вÑеÑ
декоÑаÑивнÑÑ
SVG в панели пÑиглаÑений (6 иконок)</li> <li data-num="265"><span class="changelog-tag changelog-tag--A11Y" data-tag-alias="A11Y">A11Y</span> <code>ng-attr-aria-pressed</code> на кнопке sidebar â коÑÑекÑное знаÑение пÑи undefined</li> <li data-num="266"><span class="changelog-tag changelog-tag--A11Y" data-tag-alias="A11Y">A11Y</span> <code>ng-cloak</code> на ÑкÑане «ÐÐµÑ Ð´Ð¾ÑÑÑпа» â пÑедоÑвÑаÑÐ°ÐµÑ flash of unstyled content</li> <li data-num="267"><span class="changelog-tag changelog-tag--A11Y" data-tag-alias="A11Y">A11Y</span> Disabled-кнопки в иÑÑоÑии веÑÑий: <code>cursor: not-allowed</code> вмеÑÑо <code>pointer-events: none</code> â ÑоÑ
ÑÐ°Ð½ÐµÐ½Ñ ÑÑлÑипÑ</li> </ul> <p><strong>СÑабилÑноÑÑÑ:</strong></p> <ul> <li data-num="268"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <code>deferred.resolve(err)</code> â <code>deferred.reject(err)</code> â API-оÑибки коÑÑекÑно оÑклонÑÑÑ Ð¿ÑомиÑÑ</li> <li data-num="269"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <code>VERSION_SAVE_ERROR</code> коÑÑекÑно Ð¸Ð·Ð²Ð»ÐµÐºÐ°ÐµÑ <code>.message</code> из Error-обÑекÑов</li> <li data-num="270"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <code>CONTENT_PUBLISH_ERROR</code> â JSDoc, обÑабоÑка Error instances, безопаÑÐ½Ð°Ñ Ð¾Ð±Ñезка до 200 Ñимволов</li> <li data-num="271"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <code>sendFormForPublish</code> иÑполÑзÑÐµÑ <code>$q</code> вмеÑÑо native <code>Promise</code> â гаÑанÑиÑованнÑй digest cycle</li> <li data-num="272"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> ÐÑблиÑованнÑй tooltip «СоÑ
ÑаниÑÑ ÑеÑновик (Ctrl+S)» обÑединÑн в один ÑлеменÑ</li> <li data-num="273"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> 10+ ÑÑеÑек памÑÑи: <code>$rootScope.$on</code>, <code>window.resize</code>, scroll-Ñ
ÑндлеÑÑ ÑиÑÑÑÑÑÑ Ð² <code>$destroy</code></li> <li data-num="274"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> ÐÑе <code>__guard_</code>_ Ñ
елпеÑÑ Ð¸Ð· decaffeinate Ð·Ð°Ð¼ÐµÐ½ÐµÐ½Ñ Ð½Ð° idiomatic null checks</li> <li data-num="275"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> Restangular: ÑбÑÐ°Ð½Ñ Ð·Ð°Ð³Ð¾Ð»Ð¾Ð²ÐºÐ¸ <code>X-User-Id: undefined</code> Ð´Ð»Ñ Ð½ÐµÐ°Ð²ÑоÑизованнÑÑ
запÑоÑов</li> </ul> </div> </details> <details class="changelog-section"> <summary class="changelog-summary"><span class="changelog-meta"><span class="changelog-meta__version">v9.8.0</span><span class="changelog-meta__date">13-02-2026</span></span><h2 id="v980-13-02-2026---ÑведомлениÑ-меÑÑÑ-ÑеÑновики-наÑвÑ-и-заÑиÑа-без-компÑомиÑÑов">Ð£Ð²ÐµÐ´Ð¾Ð¼Ð»ÐµÐ½Ð¸Ñ Ð¼ÐµÑÑÑ, ÑеÑновики наÑÐ²Ñ Ð¸ заÑиÑа без компÑомиÑÑов</h2></summary> <div class="changelog-section__body"> <p><strong>Ð£Ð²ÐµÐ´Ð¾Ð¼Ð»ÐµÐ½Ð¸Ñ â полноÑÑÑÑ Ð¿ÐµÑеоÑмÑÑленÑ:</strong></p> <ul> <li data-num="174"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> ÐÐ´Ð¸Ð½Ð°Ñ ÑиÑÑема ÑоÑÑов Ñ ÑипизаÑией: <code>success</code> (зелÑнÑй), <code>error</code> (кÑаÑнÑй), <code>warning</code> (жÑлÑÑй ÑÑеÑголÑник), <code>info</code> (Ñиний кÑÑг) â каждое ÑообÑение визÑалÑно пеÑедаÑÑ ÑÐ²Ð¾Ñ Ð·Ð½Ð°Ñение</li> <li data-num="175"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> ÐедÑпликаÑÐ¸Ñ Ñведомлений: повÑоÑнÑй клик не Ð¿Ð»Ð¾Ð´Ð¸Ñ ÑÑÐ¾Ð¿ÐºÑ Ð¾Ð´Ð¸Ð½Ð°ÐºÐ¾Ð²ÑÑ
ÑоÑÑов â вмеÑÑо ÑÑого ÑÑÑеÑÑвÑÑÑий «подмигиваеÑ» (nudge-анимаÑиÑ)</li> <li data-num="176"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> <code>ConfirmDialog</code> â ÑÑилÑÐ½Ð°Ñ Ð·Ð°Ð¼ÐµÐ½Ð° ÑÑÐ¾Ð´Ð»Ð¸Ð²Ð¾Ð¼Ñ <code>window.confirm()</code>: ÑокÑÑ-ÑÑап, Escape, ARIA, CSS-анимаÑиÑ, поддеÑжка Ñипов (danger/warning/info)</li> <li data-num="177"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> SVG-иконки в каждом Ñипе ÑведомлениÑ: галоÑка, кÑеÑÑик, ÑÑеÑголÑник Ñ Ð²Ð¾ÑклиÑаÑелÑнÑм знаком, i-в-кÑÑжке</li> <li data-num="178"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span>
1 Ðнопка «Ã» Ð´Ð»Ñ ÑÑÑного dismiss (поÑвлÑеÑÑÑ Ð¿Ñи наведении, видима Ð´Ð»Ñ keyboard users)</li> <li data-num="179"><span class="changelog-tag changelog-tag--A11Y" data-tag-alias="A11Y">A11Y</span> <code>role="status"</code>, <code>aria-live="polite"</code>, <code>aria-atomic="true"</code> â screen readers озвÑÑиваÑÑ ÐºÐ°Ð¶Ð´Ñй ÑоÑÑ</li> <li data-num="180"><span class="changelog-tag changelog-tag--A11Y" data-tag-alias="A11Y">A11Y</span> <code>prefers-reduced-motion</code> оÑклÑÑÐ°ÐµÑ Ð²Ñе анимаÑии ÑоÑÑов и диалога подÑвеÑждениÑ</li> <li data-num="181"><span class="changelog-tag changelog-tag--A11Y" data-tag-alias="A11Y">A11Y</span> WCAG AA конÑÑаÑÑ Ð½Ð° вÑеÑ
кнопкаÑ
: warning-кнопка полÑÑила ÑÑмнÑй ÑекÑÑ Ð²Ð¼ÐµÑÑо белого на жÑлÑом</li> <li data-num="182"><span class="changelog-tag changelog-tag--UX" data-tag-alias="UX">UX</span> Ð ÑÑиÑикаÑÐ¸Ñ backend-оÑибок: «Email must be a valid e-mail address» â «УкажиÑе коÑÑекÑнÑй адÑÐµÑ ÑлекÑÑонной поÑÑÑ»</li> <li data-num="183"><span class="changelog-tag changelog-tag--UX" data-tag-alias="UX">UX</span> Тон ÑообÑений ноÑмализован â ÑпокойнÑй ÑедакÑионнÑй ÑÑÐ¸Ð»Ñ Ð±ÐµÐ· воÑклиÑаÑелÑнÑÑ
знаков и HTML-Ñегов</li> </ul> <p><strong>«Ðои веÑи» â ÑеÑновики оÑкÑÑÑÑ:</strong></p> <ul> <li data-num="184"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> СÑÑаниÑа «Ðои веÑи» (ÑеÑновики и маÑеÑиалÑ) доÑÑÑпна из Ð¼ÐµÐ½Ñ â болÑÑе не за заглÑÑкой</li> <li data-num="185"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> Ðнопка «СоÑ
ÑаниÑÑ Ð² ÑеÑновики» в ÑедакÑоÑе Ð´Ð»Ñ Ð½ÐµÐ·Ð°Ð²ÐµÑÑÑннÑÑ
маÑеÑиалов</li> <li data-num="186"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> Ðнопка «СоÑ
ÑаниÑÑ Ð²ÐµÑÑиÑ» Ñ Ð¸ÐºÐ¾Ð½ÐºÐ¾Ð¹ диÑкеÑÑ Ð²Ð¾ÑÑÑановлена в Ñапке и в панели иÑÑоÑии</li> <li data-num="187"><span class="changelog-tag changelog-tag--UX" data-tag-alias="UX">UX</span> ÐÑÑÑой пÑоÑÐ¸Ð»Ñ Ð°Ð²ÑоÑа ведÑÑ Ð½Ð° ÑеÑновики: «ÐдеÑÑ Ð¿Ð¾ÑвÑÑÑÑ Ð²Ð°Ñи пÑбликаÑии» â «Ðои маÑеÑиалÑ»</li> </ul> <p><strong>ЧиÑаÑели голоÑÑÑÑ Ð·Ð° комменÑаÑии:</strong></p> <ul> <li data-num="188"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> ÐолоÑование за комменÑаÑии оÑкÑÑÑо вÑем заÑегиÑÑÑиÑованнÑм полÑзоваÑелÑм â не нÑжно бÑÑÑ Ð°Ð²ÑоÑом, ÑÑÐ¾Ð±Ñ Ð¾ÑениÑÑ ÑÑжое мнение</li> <li data-num="189"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> ЧеÑÑÑе ÑоÑÑоÑÐ½Ð¸Ñ ÐºÐ½Ð¾Ð¿ÐºÐ¸ ÑейÑинга: Ð¿Ð¾Ð¿Ð°Ð²ÐµÑ (авÑоÑÑ/админÑ), подÑказка «ÑÑÐ°Ð½Ñ Ð°Ð²ÑоÑом» (ÑиÑаÑели), ÑегиÑÑÑаÑÐ¸Ñ (анонимÑ), заблÑÑеннÑй плейÑÑ
Ð¾Ð»Ð´ÐµÑ (пÑбликаÑии)</li> <li data-num="190"><span class="changelog-tag changelog-tag--UX" data-tag-alias="UX">UX</span> Ðнопки ±1/±2 блокиÑÑÑÑÑÑ Ð²Ð¾ вÑÐµÐ¼Ñ Ð·Ð°Ð³ÑÑзки â двойной клик болÑÑе не дÑблиÑÑÐµÑ API-запÑоÑÑ</li> </ul> <p><strong>ÐенÑа â Ñмнее и бÑÑÑÑее:</strong></p> <ul> <li data-num="191"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> ÐовÑй пеÑиод «Ðа ÑÑи меÑÑÑа» и ÑвнÑй пÑÐ½ÐºÑ Â«Ðа вÑÑ Ð²ÑемÑ» (деÑолÑ) â вÑе опÑии ÑавнопÑавнÑ</li> <li data-num="192"><span class="changelog-tag changelog-tag--UX" data-tag-alias="UX">UX</span> ÐалендаÑÐ½Ð°Ñ Ð°ÑиÑмеÑика ÑеÑез <code>setMonth()</code>/<code>setFullYear()</code> â «за меÑÑÑ» вÑегда Ñовно меÑÑÑ</li> <li data-num="193"><span class="changelog-tag changelog-tag--UX" data-tag-alias="UX">UX</span> СÑÑÑÑик пÑоÑмоÑÑов ÑкÑÑÑ Ð¾Ñ ÑиÑаÑелей â авÑоÑÑÐºÐ°Ñ Ð¼ÐµÑÑика; <code>canViewEditorialMetrics()</code> пÑименÑн в 50+ меÑÑаÑ
</li> </ul> <p><strong>ÐезопаÑноÑÑÑ â 6 закÑÑÑÑÑ
ÑÑзвимоÑÑей:</strong></p> <ul> <li data-num="194"><span class="changelog-tag changelog-tag--SEC" data-tag-alias="SEC">SEC</span> XSS-ÑÑзвимоÑÑÑ Ð² дедÑпликаÑии Ñведомлений: <code>innerHTML</code> â безопаÑнÑй <code>DOMParser</code></li> <li data-num="195"><span class="changelog-tag changelog-tag--SEC" data-tag-alias="SEC">SEC</span> СеÑвеÑÐ½Ð°Ñ Ð²Ð°Ð»Ð¸Ð´Ð°ÑÐ¸Ñ Ð·Ð½Ð°ÑÐµÐ½Ð¸Ñ Ð³Ð¾Ð»Ð¾Ñа: <code>[-1, 0, 1]</code> Ð´Ð»Ñ Ð¿ÑбликаÑий, <code>[-2..2]</code> Ð´Ð»Ñ ÐºÐ°ÑмÑ</li> <li data-num="196"><span class="changelog-tag changelog-tag--SEC" data-tag-alias="SEC">SEC</span> РаннÑÑ Ð²Ð°Ð»Ð¸Ð´Ð°ÑÐ¸Ñ Ñипа обÑекÑа ÑеÑез <code>
1VOTE_TYPE_CONFIG</code> â неизвеÑÑнÑе ÑÐ¸Ð¿Ñ Ð¾ÑÑеиваÑÑÑÑ Ð´Ð¾ пÑовеÑки ÑазÑеÑений</li> <li data-num="197"><span class="changelog-tag changelog-tag--SEC" data-tag-alias="SEC">SEC</span> CSP-safe обÑабоÑÑик ÑÑÑлок в ÑведомлениÑÑ
Ñ guard Ð¾Ñ Ð¾ÑÑÑÑÑÑÐ²Ð¸Ñ jQuery</li> <li data-num="198"><span class="changelog-tag changelog-tag--SEC" data-tag-alias="SEC">SEC</span> Grid directive: DI-анноÑаÑÐ¸Ñ ÑеÑез inline array â не ломаеÑÑÑ Ð¿Ñи миниÑикаÑии</li> <li data-num="199"><span class="changelog-tag changelog-tag--SEC" data-tag-alias="SEC">SEC</span> Danger-диалоги ÑокÑÑиÑÑÑÑ cancel-ÐºÐ½Ð¾Ð¿ÐºÑ â заÑиÑа Ð¾Ñ ÑлÑÑайного подÑвеÑÐ¶Ð´ÐµÐ½Ð¸Ñ Ð´ÐµÑÑÑÑкÑивного дейÑÑвиÑ</li> </ul> <p><strong>Ðодалка вÑ
ода â мгновеннÑе пеÑеклÑÑениÑ:</strong></p> <ul> <li data-num="200"><span class="changelog-tag changelog-tag--UX" data-tag-alias="UX">UX</span> <code>ng-show</code> â <code>ng-if</code> â лиÑние DOM-ÑлеменÑÑ ÑдалÑÑÑÑÑ, ÑÐºÐ¾Ð½Ð¾Ð¼Ñ ÑеÑÑÑÑÑ</li> <li data-num="201"><span class="changelog-tag changelog-tag--UX" data-tag-alias="UX">UX</span> ÐÑибка «Такого аккаÑнÑа неÑ» пеÑееÑ
ала пÑÑмо под поле ввода</li> <li data-num="202"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> Flex-layout двÑпанелÑного Ñежима: обе панели ÑаÑÑÑгиваÑÑÑÑ ÑавномеÑно, без overflow</li> <li data-num="203"><span class="changelog-tag changelog-tag--A11Y" data-tag-alias="A11Y">A11Y</span> <code>aria-labelledby</code> коÑÑекÑен на вÑеÑ
ÑкÑанаÑ
модалки; ÑбÑан конÑÐ»Ð¸ÐºÑ <code>role="alert"</code> + <code>aria-live</code></li> </ul> <p><strong>ÐеÑаÑÑ â колонÑиÑÑл на каждой ÑÑÑаниÑе:</strong></p> <ul> <li data-num="204"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> ÐеÑаÑнÑй колонÑиÑÑл ÑеÑез наÑивнÑй <code><thead></code> повÑоÑÑеÑÑÑ Ð²Ð²ÐµÑÑ
Ñ ÐºÐ°Ð¶Ð´Ð¾Ð¹ ÑÑÑаниÑÑ</li> <li data-num="205"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <code>position: fixed</code> â <code><table>/<thead></code> â бÑаÑÐ·ÐµÑ Ñам ÑÑиÑÑÐ²Ð°ÐµÑ Ð²ÑÑоÑÑ Ð¿Ñи Ñазбиении</li> <li data-num="206"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <code><header></code> полноÑÑÑÑ ÑкÑÑÑ Ð¿Ñи пеÑаÑи â ÑбÑÐ°Ð½Ñ Ð¾ÑÑаÑоÑнÑе аÑÑеÑакÑÑ</li> <li data-num="207"><span class="changelog-tag changelog-tag--A11Y" data-tag-alias="A11Y">A11Y</span> <code>role="presentation"</code> на print-обÑÑÑке â ÑкÑинÑидеÑÑ Ð½Ðµ обÑÑвлÑÑÑ Ð²ÑпомогаÑелÑнÑÑ ÑаблиÑÑ</li> </ul> <p><strong>ÐавигаÑÐ¸Ñ Ð¸ ÑÑÑаниÑа оÑибки:</strong></p> <ul> <li data-num="208"><span class="changelog-tag changelog-tag--UX" data-tag-alias="UX">UX</span> <code>/editorial</code> â <code>/feed/editorial</code> â единÑй маÑÑÑÑÑ Ñо ÑÑаÑÑми ÑедиÑекÑами</li> <li data-num="209"><span class="changelog-tag changelog-tag--UX" data-tag-alias="UX">UX</span> СеÑевÑе оÑибки: «?» + ÑекÑÑ Â«ÐÑовеÑÑÑе Ñоединение» + кнопка «ÐбновиÑÑ ÑÑÑаниÑÑ»</li> </ul> <p><strong>РедакÑÐ¾Ñ â пÑавки обÑединÑÑÑÑÑ Ð¿ÑавилÑно:</strong></p> <ul> <li data-num="210"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <code>findAdjacentSuggestion</code> â ÑмежнÑе пÑавки в единÑй <code><span></code>, ÑбÑан баг «подÑвеÑка по ÑимволÑ»</li> <li data-num="211"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <code>Cmd+A</code> / <code>Ctrl+A</code> пÑинÑдиÑелÑно ÑÑÑÐ°Ð½Ð°Ð²Ð»Ð¸Ð²Ð°ÐµÑ DOM Selection в Safari и Chrome</li> <li data-num="212"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <code>cleanHTML</code> ÑоÑ
ÑанÑÐµÑ ÐºÐ»Ð°ÑÑÑ Ð²Ð¸Ð´ÐµÐ¾Ñмбедов â видео не иÑÑезаÑÑ Ð¿Ñи ÑоÑ
Ñанении
1</li> <li data-num="213"><span class="changelog-tag changelog-tag--UX" data-tag-alias="UX">UX</span> Ðконка Ñ
айлайÑеÑа: CSS-SVG вмеÑÑо FontAwesome â легÑе и ÑÑабилÑнее</li> </ul> <p><strong>СÑабилÑноÑÑÑ â 12 закÑÑÑÑÑ
багов:</strong></p> <ul> <li data-num="214"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <code>feedbackMessages.post()</code>: оÑибка ÑепеÑÑ ÐºÐ¾ÑÑекÑно reject'Ð¸Ñ Ð¿ÑÐ¾Ð¼Ð¸Ñ â Ð½ÐµÑ Ð»Ð¾Ð¶Ð½ÑÑ
«ÑообÑение оÑпÑавлено»</li> <li data-num="215"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <code>comment.js</code>: API-оÑибка пÑи Ñдалении комменÑаÑÐ¸Ñ Ð¿ÐµÑеÑ
ваÑÑваеÑÑÑ Ð¸ показÑваеÑÑÑ Ð¿Ð¾Ð»ÑзоваÑелÑ</li> <li data-num="216"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <code>subscriptionService</code>: 409 â info «ÐÑ Ñже подпиÑанÑ», оÑÑалÑнÑе оÑибки â error</li> <li data-num="217"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <code>resetPasswordCtrl</code>: кнопка submit блокиÑÑеÑÑÑ Ð¿Ñи пÑÑÑом подÑвеÑждении паÑолÑ</li> <li data-num="218"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <code>resetPasswordCtrl</code>: backend-оÑибки извлекаÑÑÑÑ Ð¸Ð· <code>e.data.message</code> вмеÑÑо generic ÑекÑÑа</li> <li data-num="219"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <code>privateEditorialCtrl</code>: resize-listener оÑвÑзÑваеÑÑÑ Ð¿Ñи <code>$destroy</code> â ÑÑÑÑанена ÑÑеÑка памÑÑи</li> <li data-num="220"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <code>editAuthorCtrl</code>: навигаÑионнÑй guard Ñ Ñлагом <code>_navigatingAway</code> â Ð½ÐµÑ Ð±ÐµÑконеÑного Ñикла подÑвеÑждений</li> <li data-num="221"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <code>editAuthorCtrl</code>: безопаÑÐ½Ð°Ñ ÑкÑÑÑакÑÐ¸Ñ Angular-пÑÑи Ð´Ð»Ñ hashbang и HTML5 mode</li> <li data-num="222"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> Lazy Notification wrappers (<code>s3uploader</code>, <code>loginService</code>): пÑокÑиÑÑÑÑ Ð²Ñе аÑгÑменÑÑ Ð¸ <code>primary()</code></li> <li data-num="223"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> Dedup sticky timers оÑиÑаÑÑÑÑ Ð¿Ñи <code>clearAll()</code> â повÑоÑÐ½Ð°Ñ Ð½Ð¾ÑиÑикаÑÐ¸Ñ Ð½Ðµ подавлÑеÑÑÑ</li> <li data-num="224"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <code>verifyEmailCtrl</code>: <code>\\n</code> â пÑобел (невидимÑй пеÑÐµÐ½Ð¾Ñ Ð² HTML заменÑн на ÑабоÑий ÑекÑÑ)</li> <li data-num="225"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> Font Awesome: <code>.woff</code>-fallback Ð´Ð»Ñ Safari â ÑÑбÑеÑÑиÑованнÑе ÑÑиÑÑÑ Ð½Ðµ пÑопадаÑÑ Ð² WebKit</li> <li data-num="226"><span class="changelog-tag changelog-tag--A11Y" data-tag-alias="A11Y">A11Y</span> <code>:focus-visible</code> добавлен на save-version button, notification unsubscribe, popover links</li> <li data-num="227"><span class="changelog-tag changelog-tag--PERF" data-tag-alias="PERF">PERF</span> <code>transition: all</code> â конкÑеÑнÑе ÑвойÑÑва в editorHeader â пÑедоÑвÑаÑÐ°ÐµÑ Ð»Ð¸Ñние reflow</li> <li data-num="228"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <code>sendFeedbackMessage</code>: добавлен <code>.catch()</code> Ð´Ð»Ñ <code>feedbackMessages.post()</code> â reject болÑÑе не Ð¿Ð°Ð´Ð°ÐµÑ Ð±ÐµÐ· обÑабоÑки</li> <li data-num="229"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <code>editAuthorCtrl</code>: Ñлаг <code>_navigatingAway</code> ÑбÑаÑÑваеÑÑÑ Ð¿Ð¾Ñле навигаÑии ÑеÑез <code>$timeout</code></li> <li data-num="230"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> Lazy Notification wrappers: добавлен guard <code>typeof svc[type] === 'function'</code> â заÑиÑа Ð¾Ñ Ð¿ÑеждевÑеменного вÑзова</li> <li data-num="231"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> CSS <code>:has()</code> fallback ÑеÑез клаÑÑ <code>.counters-sibling</code> â ÑовмеÑÑимоÑÑÑ Ñо ÑÑаÑÑм Firefox</li> <li data-num="232"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> ÐобилÑнÑе ÑведомлениÑ: <code>top: 0 !important</code> â ÑоÑÑÑ Ð¿ÑижаÑÑ Ðº веÑÑ
Ñ ÑкÑана без заÐ
1·Ð¾Ñа</li> <li data-num="233"><span class="changelog-tag changelog-tag--UX" data-tag-alias="UX">UX</span> Dark mode CSS custom properties Ð´Ð»Ñ Ð½Ð¾ÑиÑикаÑий: <code>prefers-color-scheme: dark</code> адапÑиÑÑÐµÑ ÑонÑ</li> <li data-num="234"><span class="changelog-tag changelog-tag--UX" data-tag-alias="UX">UX</span> <code>NOTIFICATION_MESSAGES</code> мигÑиÑÐ¾Ð²Ð°Ð½Ñ Ð² <code>editContentItemCtrl</code>, <code>newComment</code>, <code>comment</code>, <code>loginModal</code>, <code>loginService</code>, <code>editorPocCtrl</code>, <code>draftsCtrl</code>, <code>s3uploader</code></li> <li data-num="235"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> CHANGELOG: ÑÑоÑнено ÑÑо деÑÐ¾Ð»Ñ ÑилÑÑÑа â «Ðа вÑÑ Ð²ÑемÑ», не «Ðа ÑÑи меÑÑÑа»</li> </ul> </div> </details> <details class="changelog-section"> <summary class="changelog-summary"><span class="changelog-meta"><span class="changelog-meta__version">v9.7.0</span><span class="changelog-meta__date">12-02-2026</span></span><h2 id="v970-12-02-2026---пÑавки-живÑÑ-веÑно-suggestion-persistence-пеÑеоÑмÑÑленнÑе-комменÑаÑии-и-пеÑаÑÑ">ÐÑавки живÑÑ Ð²ÐµÑно: suggestion-persistence, пеÑеоÑмÑÑленнÑе комменÑаÑии и пеÑаÑÑ</h2></summary> <div class="changelog-section__body"> <p><strong>Ðлавное â пÑавки болÑÑе не ÑеÑÑÑÑÑÑ:</strong></p> <ul> <li data-num="151"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> Suggestion marks пеÑеживаÑÑ Ð¿ÐµÑезагÑÑÐ·ÐºÑ ÑÑÑаниÑÑ â даже без HocusPocus. Ðовое поле <code>rawDraftBody</code> Ñ
ÑÐ°Ð½Ð¸Ñ Ð¿Ð¾Ð»Ð½Ñй HTML Ñ track-changes ÑазмеÑкой; пÑи загÑÑзке ÑедакÑÐ¾Ñ Ð²Ð¾ÑÑÑÐ°Ð½Ð°Ð²Ð»Ð¸Ð²Ð°ÐµÑ Ð²Ñе pending-пÑавки ÑоÑно в Ñом виде, в каком авÑÐ¾Ñ Ð¸Ñ
оÑÑавил</li> <li data-num="152"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> ÐпÑимизиÑованнÑй single-pass pipeline ÑоÑ
ÑанениÑ: один DOMParser + cloneNode вмеÑÑо ÑÑÑÑ
ÑазделÑнÑÑ
паÑÑингов â бÑÑÑÑее и Ñкономнее по памÑÑи</li> <li data-num="153"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> Backend Collab API: GET возвÑаÑÐ°ÐµÑ <code>rawBody</code>, PUT пÑÐ¸Ð½Ð¸Ð¼Ð°ÐµÑ <code>rawBody</code>, publish коÑÑекÑно оÑиÑÐ°ÐµÑ Ð¾Ð±Ð° draft-Ð¿Ð¾Ð»Ñ ÑеÑез <code>$unset</code></li> </ul> <p><strong>ÐомменÑаÑии â новÑй ÑÑовенÑ:</strong></p> <ul> <li data-num="154"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> ÐÑедзагÑÑзка комменÑаÑиев и suggestion-ÑÑедов из API пÑи пеÑвом оÑкÑÑÑии â ÑекÑÑ ÐºÐ¾Ð¼Ð¼ÐµÐ½ÑаÑиев виден мгновенно, без «пÑÑÑой» вÑпÑÑки</li> <li data-num="155"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> ÐбÑÑÐ¶Ð´ÐµÐ½Ð¸Ñ Ð¿Ñавок (suggestion threads) загÑÑжаÑÑÑÑ Ñ ÑеÑвеÑа и меÑжаÑÑÑ Ñ Y.js â ÑÑÐµÐ´Ñ Ð½Ðµ ÑеÑÑÑÑÑÑ Ð¿Ñи оÑÑÑÑÑÑвии HocusPocus</li> <li data-num="156"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> CommentBubbleMenu авÑомаÑиÑеÑки пеÑÑиÑÑÐ¸Ñ ÐºÐ¾Ð¼Ð¼ÐµÐ½ÑаÑии в backend â каждÑй комменÑаÑий, ÑозданнÑй ÑеÑез пÑзÑÑÑ, ÑоÑ
ÑанÑеÑÑÑ Ð½Ð° ÑеÑвеÑе</li> <li data-num="157"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> Retry-логика Ñ <code>MAX_API_RETRIES</code> (3) â заÑиÑа Ð¾Ñ Ð±ÐµÑконеÑнÑÑ
Ñиклов пÑи недоÑÑÑпном API</li> <li data-num="158"><span class="changelog-tag changelog-tag--UX" data-tag-alias="UX">UX</span> Ðнопки дейÑÑвий пеÑееÑ
али в ÑÐ°Ð¿ÐºÑ ÐºÐ°ÑÑоÑки комменÑаÑиÑ: компакÑнÑе иконки Ñ Ð¿Ð»Ð°Ð²Ð½Ñм reveal ÑекÑÑа пÑи наведении (<code>max-width</code> transition + <code>@media (hover: hover)</code>)</li> <li data-num="159"><span class="changelog-tag changelog-tag--UX" data-tag-alias="UX">UX</span> «ÐÑинÑÑÑ Ð²Ñе» / «ÐÑклониÑÑ Ð²Ñе» пÑавки â ÑÑилизованнÑе bootbox-диалоги вмеÑÑо наÑивнÑÑ
<code>confirm()</code></li> </ul> <p><strong>ÐÑ
од и главнаÑ:</strong></p> <ul> <li data-num="160"><span class="changelog-tag changelog-tag--UX" data-tag-alias="UX">UX</span> VK пÑиоÑиÑеÑнее Facebook в ÑÑÐ´Ñ OAuth-кнопок â оÑÑÐ°Ð¶Ð°ÐµÑ ÑеалÑнÑе пÑедпоÑÑÐµÐ½Ð¸Ñ Ð°ÑдиÑоÑии</li> <li data-num="161"><span class="changelog-tag changelog-tag--UX" data-tag-alias="UX">UX</span> УвелиÑена ÑиÑина ÑоÑÐ¼Ñ Ð²Ñ
ода (460px), оÑÑиÑаÑелÑнÑе margins Ð´Ð»Ñ ÑÑда кнопок â дÑÑаÑÐ°Ñ ÐºÐ¾Ð¼Ð¿Ð¾Ð½Ð¾Ð²ÐºÐ°</li> <li data-num="162"><span class="changelog-tag changelog-tag--UX" data-tag-alias="UX">UX</span> Hero-баннеÑ: «обÑединÑÑÑÑÑ» â «ÑоздаваÑÑ» â ÑоÑнее пеÑедаÑÑ Ð¼Ð¸ÑÑÐ¸Ñ Ð¿Ð»Ð°ÑÑоÑмÑ</li> </ul> <p><strong>ÐеÑаÑÑ:</strong></p> <ul> <li data-num="163"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> ÐолноÑеннÑе print-ÑÑили: ÑкÑÑÑ Ð²ÐµÑÑ UI-chrome (Ñ
едеÑ, ÑÑÑеÑ, кнопки, баннеÑÑ), логоÑип Discours на пеÑвой ÑÑÑаниÑе, коÑÑекÑнÑе Ð¿Ð¾Ð»Ñ (<code>1.5cm à 1.5cm</code>, 2.5cm ÑÐ½Ð¸Ð·Ñ Ð´Ð»Ñ ÐºÐ¾Ð»Ð¾Ñона), <code>orphans: 3 / widows: 3</code>, <code>page-break-inside: avoid</code> Ð´Ð»Ñ Ð¸Ð·Ð¾Ð±Ñажений и подпиÑей</li> </ul> <p><strong>РедакÑÐ¾Ñ â ÑÑабилÑноÑÑÑ ÑÑлбаÑов:</strong></p> <ul> <li data-num="164"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> ТÑлбаÑÑ Ð¸Ð·Ð¾Ð±Ñажений, галеÑей и Ñмбедов болÑÑе не «пÑоваливаÑÑÑÑ» под ÑоÑедние блоки â <code>z-index: 100</code> + клаÑÑ <code>toolbar-visible</code> на figure/gallery/sub-node пÑи показе ÑÑлбаÑа</li> <li data-num="165"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> СÑÑлки в Ñапке ÑедакÑоÑа не окÑаÑиваÑÑÑÑ Ð² Ñиний поÑле поÑеÑÐµÐ½Ð¸Ñ (<code>:visited/:active/:focus</code> reset)</li> </ul> <p><strong>ÐезопаÑноÑÑÑ Ð¸ надÑжноÑÑÑ:</strong></p> <ul> <li data-num="166"><span class="changelog-tag changelog-tag--SEC" data-tag-alias="SEC">SEC</span> Autosave PUT ÑÑебÑÐµÑ <code>canDirectEditContentItem</code> â comment-only авÑоÑÑ Ð½Ðµ могÑÑ Ð¿ÐµÑезапиÑаÑÑ ÑеÑновик</li> <li data-num="167"><span class="changelog-tag changelog-tag--SEC" data-tag-alias="SEC">SEC</span> СаниÑизаÑÐ¸Ñ <code>replies</code> в bulk comment sync и single-comment PUT â ÑÑÑÑкÑÑÑа и ÑекÑÑ ÐºÐ°Ð¶Ð´Ð¾Ð³Ð¾ оÑвеÑа валидиÑÑÑÑÑÑ</li> <li data-num="168"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <code>destroyed</code>-guard на вÑеÑ
async callbacks â навигаÑÐ¸Ñ Ð²Ð¾ вÑÐµÐ¼Ñ API-запÑоÑов не вÑзÑÐ²Ð°ÐµÑ Ð¾Ñибок</li> <li data-num="169"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> Autosave reschedule пÑи isSaving â пÑопÑÑеннÑй save пеÑепланиÑÑеÑÑÑ, даннÑе не ÑеÑÑÑÑÑÑ</li> <li data-num="170"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> Dedup в <code>onCommentAdd</code> â комменÑаÑий не дÑблиÑÑеÑÑÑ Ð² sidebar</li> <li data-num="171"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> Publish запиÑÑÐ²Ð°ÐµÑ <code>updatedBy</code> â bodyHistory коÑÑекÑно аÑÑибÑÑиÑÑÐµÑ Ð°Ð²ÑоÑа</li> <li data-num="172"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <code>lastEditedBy</code> â ÑипизиÑÐ¾Ð²Ð°Ð½Ð½Ð°Ñ sub-schema вмеÑÑо <code>blackbox: true</code></li> </ul> <p><strong>Accessibility:</strong></p> <ul> <li data-num="173"><span class="changelog-tag changelog-tag--A11Y" data-tag-alias="A11Y">
1A11Y</span> ÐÑе кнопки-иконки комменÑаÑиев имеÑÑ <code>aria-label</code>, <code>title</code> и <code>.btn-label</code> â доÑÑÑÐ¿Ð½Ñ screen readers и инÑоÑмаÑÐ¸Ð²Ð½Ñ Ð½Ð° touch-ÑÑÑÑойÑÑваÑ
</li> </ul> </div> </details> <details class="changelog-section"> <summary class="changelog-summary"><span class="changelog-meta"><span class="changelog-meta__version">v9.6.0</span><span class="changelog-meta__date">12-02-2026</span></span><h2 id="v960-12-02-2026---галеÑеÑ-ÑпойлеÑÑ-oauth-ÑеÑновики-и-обновлÑннÑй-вÑ
од">ÐалеÑеÑ, ÑпойлеÑÑ, OAuth, ÑеÑновики и обновлÑннÑй вÑ
од</h2></summary> <div class="changelog-section__body"> <p><strong>РедакÑÐ¾Ñ â новÑе инÑÑÑÑменÑÑ:</strong></p> <ul> <li data-num="121"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> ð¼ï¸ ÐалеÑÐµÑ Ð¸Ð·Ð¾Ð±Ñажений â полноÑÐµÐ½Ð½Ð°Ñ ÐºÐ°ÑÑÑÐµÐ»Ñ Ð¿ÑÑмо в ÑедакÑоÑе: drag одного Ñайла ÑоздаÑÑ ÐºÐ°ÑÑинкÑ, неÑколÑкиÑ
â ÑлайдÑÐ¾Ñ Ñ Ð½Ð°Ð²Ð¸Ð³Ð°Ñией, ÑоÑками, подпиÑÑми к ÐºÐ°Ð¶Ð´Ð¾Ð¼Ñ ÑÐ»Ð°Ð¹Ð´Ñ Ð¸ ÑеоÑдеÑингом</li> <li data-num="122"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> ð СпойлеÑ-блок (подкаÑ) â ÑвоÑаÑиваемÑй блок Ñ ÐºÐ°ÑÑомнÑм заголовком; в опÑбликованной ÑÑаÑÑе ÑендеÑиÑÑÑ ÐºÐ°Ðº наÑивнÑй <code><details></code> Ñ ÐºÐ½Ð¾Ð¿ÐºÐ¾Ð¹ «â РазвеÑнÑÑÑ» / «â СвеÑнÑÑÑ» â без единой ÑÑÑоÑки JS</li> <li data-num="123"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> ÐлавиаÑÑÑнÑй ÑоÑÑÐºÐ°Ñ <code>Ctrl+Shift+H</code> Ð´Ð»Ñ Ð¼Ð³Ð½Ð¾Ð²ÐµÐ½Ð½Ð¾Ð¹ вÑÑавки ÑпойлеÑа</li> <li data-num="124"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> ÐонвеÑÑаÑÐ¸Ñ Ð¾Ð´Ð¸Ð½Ð¾Ñного изобÑÐ°Ð¶ÐµÐ½Ð¸Ñ Ð² галеÑÐµÑ Ð¿Ð¾ нажаÑÐ¸Ñ Â«+» на ÑÑлбаÑе каÑÑинки</li> <li data-num="125"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> ÐÑлÑÑи-аплоад пÑи вÑÑавке/пеÑеÑаÑкивании неÑколÑкиÑ
изобÑажений â авÑомаÑиÑеÑкое Ñоздание галеÑеи</li> </ul> <p><strong>ÐÑ
од и авÑоÑизаÑиÑ:</strong></p> <ul> <li data-num="126"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> ð OAuth ÑеÑез Google, GitHub, Facebook и VK â один клик Ð´Ð»Ñ Ð²Ñ
ода</li> <li data-num="127"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> ÐвÑпанелÑнÑй ÑкÑан вÑ
ода Ñ Ð°ÑмоÑÑеÑной каÑÑинкой пÑи «паÑадном» вÑ
оде из Ñ
едеÑа</li> <li data-num="128"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> Ð¡Ð¿Ð¸Ð½Ð½ÐµÑ Ð½Ð° конкÑеÑной OAuth-кнопке â видно, какой пÑÐ¾Ð²Ð°Ð¹Ð´ÐµÑ Ð¾Ð±ÑабаÑÑваеÑÑÑ</li> <li data-num="129"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> ÐезопаÑнÑй обмен Ñокена на одноÑазовÑй linkId пÑи пÑивÑзке пÑовайдеÑа к аккаÑнÑÑ (Ñокен не ÑÑÐµÐºÐ°ÐµÑ ÑеÑез URL/Referer)</li> </ul> <p><strong>ЧеÑновики:</strong></p> <ul> <li data-num="130"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> СÑÑаниÑа «Ðои маÑеÑиалÑ» Ñ Ð¿Ð¾Ð¸Ñком, ÑилÑÑÑаÑией по ÑÑаÑÑÑÑ Ð¸ ÑипÑ, ÑоÑÑиÑовкой</li> <li data-num="131"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> ÐодалÑное окно подÑвеÑÐ¶Ð´ÐµÐ½Ð¸Ñ ÑÐ´Ð°Ð»ÐµÐ½Ð¸Ñ Ñ focus trap и Escape â вмеÑÑо наÑивного <code>confirm()</code></li> <li data-num="132"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> ÐÑевÑÑ Ñела маÑеÑиала ÑеÑез <code>stripTagsAndTruncate</code> â единообÑазно Ñ Ð»ÐµÐ½Ñой</li> </ul> <p><strong>UX и визÑал:</strong></p> <ul> <li data-num="133"><span class="changelog-tag changelog-tag--UX" data-tag-alias="UX">UX</span> Sticky footer â подвал вÑегда пÑÐ¸Ð¶Ð°Ñ Ðº низÑ, даже на коÑоÑкиÑ
ÑÑÑаниÑаÑ
</li> <li data-num="134"><span class="changelog-tag changelog-tag--UX" data-tag-alias="UX">UX</span> ÐÑогÑеÑÑ-Ð±Ð°Ñ Ð·Ð°Ð³ÑÑзки ÑедакÑоÑа вмеÑÑо ÑпиннеÑа â визÑалÑно ÑиÑе, оÑÑÑение ÑкоÑоÑÑи</li> <li data-num="135"><span class="changelog-tag changelog-tag--UX" data-tag-alias="UX">UX</span> ÐлавнÑй fade-in пÑи вÑ
оде в Ñежим пÑедпÑоÑмоÑÑа (150ms, наÑинаеÑÑÑ Ñ opacity: 0.3)</li> <li data-num="136"><span class="changelog-tag changelog-tag--UX" data-tag-alias="UX">UX</span> Per-button loading на кнопкаÑ
«ÐÑпÑавиÑÑ» / «СоÑ
ÑаниÑÑ ÑеÑновик» â кнопка не пÑÑгаеÑ</li> <li data-num="137"><span class="changelog-tag changelog-tag--UX" data-tag-alias="UX">UX</span> Excerpt в ленÑе ÑвелиÑен до 400 Ñимволов Ñ CSS line-clamp (4 ÑÑÑоки на мобилÑном, 6 на деÑкÑопе)</li> <li data-num="138"><span class="changelog-tag changelog-tag--UX" data-tag-alias="UX">UX</span> ÐбновлÑннÑй ÑекÑÑ hero-баннеÑа</li> </ul> <p><strong>СÑабилÑноÑÑÑ:</strong></p> <ul> <li data-num="139"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> УдалÑн ÑÑÑаÑевÑий postPreview-ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÐµÐ½Ñ â preview ÑепеÑÑ inline ÑеÑез TipTap-ÑедакÑоÑ</li> <li data-num="140"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <code>updatingPath</code> пÑи пеÑеклÑÑении editorâpreview болÑÑе не ÑбÑаÑÑÐ²Ð°ÐµÑ body-клаÑÑÑ Ð¸ не показÑÐ²Ð°ÐµÑ Ð¾Ð²ÐµÑлей</li> <li data-num="141"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> Ребилд preview пÑи пÑÑмой навигаÑии на /preview URL â retry ÑеÑез 600ms + 1500ms Ð´Ð»Ñ Ð¼ÐµÐ´Ð»ÐµÐ½Ð½ÑÑ
ÑеÑей</li> <li data-num="142"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> <code>renderHTML</code> галеÑеи пеÑеведÑн на DOMOutputSpec-маÑÑив â ÑÑабилÑÐ½Ð°Ñ ÑеÑиализаÑÐ¸Ñ Ð² getHTML/collab/SSR</li> <li data-num="143"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> Shimmer-анимаÑÐ¸Ñ Ð½Ð° логин-каÑÑинке оÑÑанавливаеÑÑÑ Ð¿Ð¾Ñле загÑÑзки; пÑи оÑибке Ð¿Ð°Ð½ÐµÐ»Ñ ÑкÑÑваеÑÑÑ Ñеликом</li> <li data-num="144"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> Backdrop-ÑелекÑÐ¾Ñ <code>+</code> â <code>~</code> â коÑÑекÑÐ½Ð°Ñ ÑабоÑа Ñ verify-email модалкой Ð¼ÐµÐ¶Ð´Ñ ÑлеменÑами</li> </ul> <p><strong>Accessibility:</strong></p> <ul> <li data-num="145"><span class="changelog-tag changelog-tag--A11Y" data-tag-alias="A11Y">
1A11Y</span> ÐалеÑеÑ: <code>role="region"</code>, <code>aria-roledescription="carousel"</code>, <code>aria-live</code> ÑÑÑÑÑик Ñлайдов</li> <li data-num="146"><span class="changelog-tag changelog-tag--A11Y" data-tag-alias="A11Y">A11Y</span> Ðодалка ÑдалениÑ: focus trap, Escape, <code>aria-modal</code>, <code>tabindex</code>, scale-анимаÑиÑ</li> <li data-num="147"><span class="changelog-tag changelog-tag--A11Y" data-tag-alias="A11Y">A11Y</span> СпойлеÑ: наÑивнÑй <code><details>/<summary></code> Ð´Ð»Ñ published â ÑабоÑÐ°ÐµÑ Ð±ÐµÐ· JS, доÑÑÑпен screen readers</li> </ul> <p><strong>РеÑакÑоÑинг:</strong></p> <ul> <li data-num="148"><span class="changelog-tag changelog-tag--REFACTOR" data-tag-alias="REFACTOR">REFACTOR</span> ÐбÑÐ°Ñ ÑÑилиÑа <code>uploadMultipleImages()</code> â DRY Ð´Ð»Ñ Ð¿Ð°ÑаллелÑной загÑÑзки Ñайлов</li> <li data-num="149"><span class="changelog-tag changelog-tag--REFACTOR" data-tag-alias="REFACTOR">REFACTOR</span> <code>editorHeader.publish()</code> â коÑÑекÑÐ½Ð°Ñ Ð¾Ð±ÑабоÑка Angular <code>&</code> binding (ÑбÑан мÑÑÑвÑй fallback)</li> <li data-num="150"><span class="changelog-tag changelog-tag--REFACTOR" data-tag-alias="REFACTOR">REFACTOR</span> ÐаÑÑÑÑÑÑ preview обÑÐµÐ´Ð¸Ð½ÐµÐ½Ñ Ñ editor â единÑй конÑÑоллеÑ, менÑÑе кода</li> </ul> </div> </details> <details class="changelog-section"> <summary class="changelog-summary"><span class="changelog-meta"><span class="changelog-meta__version">v9.5.0</span><span class="changelog-meta__date">11-02-2026</span></span><h2 id="v950-11-02-2026---молниеноÑнаÑ-загÑÑзка-lazy-split-Ñаблонов-ÑкелеÑонÑ-prefetch-и-плавнÑе-пеÑеÑ
одÑ">ÐолниеноÑÐ½Ð°Ñ Ð·Ð°Ð³ÑÑзка: lazy-split Ñаблонов, ÑкелеÑонÑ, prefetch и плавнÑе пеÑеÑ
одÑ</h2></summary> <div class="changelog-section__body"> <p><strong>ÐÑоизводиÑелÑноÑÑÑ â ÑадикалÑное ÑÑкоÑение загÑÑзки:</strong></p> <ul> <li data-num="83"><span class="changelog-tag changelog-tag--PERF" data-tag-alias="PERF">PERF</span> Lazy-split Ñаблонов: ~126 KB Ñаблонов вÑнеÑÐµÐ½Ñ Ð¸Ð· кÑиÑиÑеÑкого бандла в 5 ленивÑÑ
Ñанков (editor, expo, podcasts, private, misc) â Ð³Ð»Ð°Ð²Ð½Ð°Ñ ÑÑÑаниÑа загÑÑжаеÑÑÑ Ð¾ÑÑÑимо бÑÑÑÑее</li> <li data-num="84"><span class="changelog-tag changelog-tag--PERF" data-tag-alias="PERF">PERF</span> Lazy-load ÑеÑвиÑов: captionEditorService, versioningService, quoteCardExporterService, podcastsInitialData загÑÑжаÑÑÑÑ ÑолÑко на ÑÑÑаниÑаÑ
, где они нÑжнÑ</li> <li data-num="85"><span class="changelog-tag changelog-tag--PERF" data-tag-alias="PERF">PERF</span> Prefetch ÑедакÑоÑа пÑи наведении на ÑÑÑÐ»ÐºÑ Â«Ð ÐµÐ´Ð°ÐºÑиÑоваÑÑ» â к моменÑÑ ÐºÐ»Ð¸ÐºÐ° Ñанк Ñже в кеÑе, оÑкÑÑÑие мгновенное</li> <li data-num="86"><span class="changelog-tag changelog-tag--PERF" data-tag-alias="PERF">PERF</span> Prefetch editor.css Ð´Ð»Ñ Ð·Ð°Ð»Ð¾Ð³Ð¸Ð½ÐµÐ½Ð½ÑÑ
полÑзоваÑелей â CSS загÑÑжаеÑÑÑ Ð² Ñоне до пеÑеÑ
ода в ÑедакÑоÑ</li> <li data-num="87"><span class="changelog-tag changelog-tag--PERF" data-tag-alias="PERF">PERF</span> Expo: даннÑе поÑÑа загÑÑжаÑÑÑÑ Ð² route resolve â изобÑÐ°Ð¶ÐµÐ½Ð¸Ñ Ð½Ð°ÑинаÑÑ ÑендеÑиÑÑÑÑ ÑÑазÑ, без Ð¾Ð¶Ð¸Ð´Ð°Ð½Ð¸Ñ ÐºÐ¾Ð½ÑÑоллеÑа</li> <li data-num="88"><span class="changelog-tag changelog-tag--PERF" data-tag-alias="PERF">PERF</span> Expo галеÑеÑ: опÑимизаÑÐ¸Ñ fetchpriority Ð´Ð»Ñ ÐºÐ°ÑÑÑели â пеÑвое изобÑажение high, оÑÑалÑнÑе auto (не low)</li> <li data-num="89"><span class="changelog-tag changelog-tag--PERF" data-tag-alias="PERF">PERF</span> Expo миниаÑÑÑÑ: ÑменÑÑÐµÐ½Ñ Ñ 200px до 150px, Ð´Ð¾Ð±Ð°Ð²Ð»ÐµÐ½Ñ width/height Ð´Ð»Ñ ÑÑабилÑного layout</li> <li data-num="90"><span class="changelog-tag changelog-tag--PERF" data-tag-alias="PERF">PERF</span> Deduplication import() Ð´Ð»Ñ collab-модÑлей â паÑаллелÑнÑе вÑÐ·Ð¾Ð²Ñ Ð½Ðµ поÑождаÑÑ Ð´ÑблиÑÑÑÑиÑ
ÑеÑевÑÑ
запÑоÑов</li> <li data-num="91"><span class="changelog-tag changelog-tag--PERF" data-tag-alias="PERF">PERF</span> loadEditorScripts.js пеÑеведÑн на defer â не блокиÑÑÐµÑ Ð¿Ð°ÑÑинг HTML</li> </ul> <p><strong>UX â плавноÑÑÑ Ð¸ обÑаÑÐ½Ð°Ñ ÑвÑзÑ:</strong></p> <ul> <li data-num="92"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> Route loading bar â ÑÐ¾Ð½ÐºÐ°Ñ Ð¿Ð¾Ð»Ð¾Ñка пÑогÑеÑÑа пÑи пеÑеÑ
одаÑ
Ð¼ÐµÐ¶Ð´Ñ lazy-ÑÑÑаниÑами (как GitHub/YouTube)</li> <li data-num="93"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> Editor skeleton â пÑи оÑкÑÑÑии ÑедакÑоÑа вмеÑÑо белого ÑкÑана показÑваеÑÑÑ ÑкелеÑон Ñ shimmer-анимаÑией, ÑоÑно повÑоÑÑÑÑий layout ÑеалÑного ÑедакÑоÑа</li> <li data-num="94"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> ÐлавнÑй fade-in Ð´Ð»Ñ Ð²ÑеÑ
изобÑажений: expo, ÑÑаÑÑи, галеÑеи, обложки â ÑеÑез <code>ng-image-onload</code> + <code>is-loaded</code>/<code>is-failsafe</code></li> <li data-num="95"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> Lazy-render reveal â ÑекÑии, загÑÑженнÑе по IntersectionObserver, плавно поÑвл
1ÑÑÑÑÑ Ñ Ð°Ð½Ð¸Ð¼Ð°Ñией</li> <li data-num="96"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> ÐаÑиÑа меÑа-полей в ÑедакÑоÑе â beforeunload пÑедÑпÑÐµÐ¶Ð´Ð°ÐµÑ Ð¾ неÑоÑ
ÑанÑннÑÑ
изменениÑÑ
заголовка, Ñегов, каÑегоÑии, обложки и опиÑаниÑ</li> <li data-num="97"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> Offline-деÑекÑÐ¸Ñ Ð¿Ñи оÑибке загÑÑзки ÑоÑÑа â вмеÑÑо беÑконеÑнÑÑ
пеÑезагÑÑзок показÑваеÑÑÑ ÐºÐ½Ð¾Ð¿ÐºÐ° «ÐопÑобоваÑÑ Ñнова»</li> <li data-num="98"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> ÐодкаÑÑÑ Ð² header â dropdown Ñ Ð¿ÑÑмÑми ÑÑÑлками на вÑе подкаÑÑÑ (ÐÐ¸Ñ Ð² иÑÑоÑиÑÑ
, Nota Bene, УÑи маÑÑаÑÑÑ, ÐÑблиÑнÑе пÑизÑвÑ, ÐеÑÑÑÑкие земли)</li> <li data-num="99"><span class="changelog-tag changelog-tag--UX" data-tag-alias="UX">UX</span> Header dropdown: анимаÑÐ¸Ñ fade-in, border-left акÑенÑ, ÑлÑÑÑÐµÐ½Ð½Ð°Ñ ÑипогÑаÑика пÑнкÑов менÑ</li> <li data-num="100"><span class="changelog-tag changelog-tag--UX" data-tag-alias="UX">UX</span> TOC-панелÑ: плавное ÑкÑÑÑие/поÑвление ÑеÑез opacity + visibility (вмеÑÑо Ñезкого display:none)</li> <li data-num="101"><span class="changelog-tag changelog-tag--UX" data-tag-alias="UX">UX</span> IntersectionObserver: rootMargin ÑвелиÑен до 400px â конÑÐµÐ½Ñ Ð½Ð°ÑÐ¸Ð½Ð°ÐµÑ Ð³ÑÑзиÑÑÑÑ ÑанÑÑе пÑи пÑокÑÑÑке</li> </ul> <p><strong>СÑабилÑноÑÑÑ Ð¸ надÑжноÑÑÑ:</strong></p> <ul> <li data-num="102"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> Unified header dropdown â ÑбÑано дÑблиÑование по login-state (бÑло 2 одинаковÑÑ
менÑ)</li> <li data-num="103"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> InviteCollaborators: ng-if вмеÑÑо ng-class пÑедоÑвÑаÑÐ°ÐµÑ FOUC до загÑÑзки editor.css</li> <li data-num="104"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> Asteroid: подавление ожидаемой оÑибки «No login token» пÑи пеÑвом подклÑÑении</li> <li data-num="105"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> Route error recovery: MAX_RELOADS Ñнижен до 2, поÑле Ñего â retry-кнопка (не беÑконеÑнÑй Ñикл)</li> <li data-num="106"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> ExpoItemCtrl: robust error guard Ð´Ð»Ñ postData (queryOne resolves Ñ error-обÑекÑом, не reject'иÑ)</li> <li data-num="107"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span>
1 after-post: ng-show вмеÑÑо ng-if â гаÑанÑиÑÑÐµÑ Ð¸Ð½Ð¸ÑиализаÑÐ¸Ñ Ð¿Ñи edge cases Ñ ng-include onload</li> <li data-num="108"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> lazyRouteLoading ÑбÑаÑÑваеÑÑÑ Ð² $destroy â пÑедоÑвÑаÑÐ°ÐµÑ Ð·Ð°Ð²Ð¸ÑÑий loading bar</li> <li data-num="109"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> Editor skeleton коÑÑекÑно ÑкÑÑÐ²Ð°ÐµÑ footer overlay и site header пÑи загÑÑзке</li> <li data-num="110"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> hideSiteHeader авÑомаÑиÑеÑки воÑÑÑанавливаеÑÑÑ Ð¿Ñи оÑибке загÑÑзки ÑоÑÑа ÑедакÑоÑа</li> </ul> <p><strong>Accessibility:</strong></p> <ul> <li data-num="111"><span class="changelog-tag changelog-tag--A11Y" data-tag-alias="A11Y">A11Y</span> prefers-reduced-motion: вÑе новÑе анимаÑии (fade-in, shimmer, loading bar, lazy-reveal) оÑклÑÑаÑÑÑÑ Ð´Ð»Ñ Ð¿Ð¾Ð»ÑзоваÑелей, пÑедпоÑиÑаÑÑиÑ
минималÑнÑÑ Ð°Ð½Ð¸Ð¼Ð°ÑиÑ</li> <li data-num="112"><span class="changelog-tag changelog-tag--A11Y" data-tag-alias="A11Y">A11Y</span> Skeleton: aria-label, aria-busy, role="status" Ð´Ð»Ñ screen readers</li> <li data-num="113"><span class="changelog-tag changelog-tag--A11Y" data-tag-alias="A11Y">A11Y</span> Expo изобÑажениÑ: placeholder background-color (#f6f6f6) вмеÑÑо пÑÑÑоÑÑ Ð¿Ñи загÑÑзке</li> </ul> <p><strong>РеÑакÑоÑинг:</strong></p> <ul> <li data-num="114"><span class="changelog-tag changelog-tag--REFACTOR" data-tag-alias="REFACTOR">REFACTOR</span> compile-styles.js: DRY â обÑий compileEntry() и cleanCssOptions Ð´Ð»Ñ Ð²ÑеÑ
CSS entry points</li> <li data-num="115"><span class="changelog-tag changelog-tag--REFACTOR" data-tag-alias="REFACTOR">REFACTOR</span> generate-templates.js: --split Ñежим Ñ CRITICAL_OVERRIDES Ð´Ð»Ñ ÐºÑоÑÑ-завиÑимÑÑ
Ñаблонов</li> <li data-num="116"><span class="changelog-tag changelog-tag--REFACTOR" data-tag-alias="REFACTOR">REFACTOR</span> routes.js: showRouteMessage() â ÐµÐ´Ð¸Ð½Ð°Ñ ÑÑнкÑÐ¸Ñ Ð´Ð»Ñ Ð²ÑеÑ
error/retry ÑообÑений</li> <li data-num="117"><span class="changelog-tag changelog-tag--REFACTOR" data-tag-alias="REFACTOR">REFACTOR</span> podcastsInitialData: <code>angular.module('discours.constants')</code> вмеÑÑо глобалÑного <code>app</code></li> <li data-num="118">
1[CONFIG] .gitattributes: eol=lf Ð´Ð»Ñ Ð²ÑеÑ
source-Ñайлов (пÑедоÑвÑаÑÐ°ÐµÑ CRLF-пÑедÑпÑÐµÐ¶Ð´ÐµÐ½Ð¸Ñ Ð½Ð° Windows)</li> <li data-num="119">[CONFIG] .gitignore: templates-<em>.js, analyze-</em>.js</li> </ul> <p><strong>Backend:</strong></p> <ul> <li data-num="120"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> Hidden-каÑегоÑии (напÑ. «РедакÑиÑÑем») ÑкÑÑÑÑ Ð´Ð»Ñ Ð²ÑеÑ
полÑзоваÑелей, вклÑÑÐ°Ñ Ð°Ð²ÑоÑизованнÑÑ
</li> </ul> </div> </details> <details class="changelog-section"> <summary class="changelog-summary"><span class="changelog-meta"><span class="changelog-meta__version">v9.4.0</span><span class="changelog-meta__date">10-02-2026</span></span><h2 id="v940-10-02-2026---html-ÑедакÑоÑ-Ñ-codemirror-Ñема-monokai-Ñмное-ÑоÑмаÑиÑование-и-гоÑÑÑие-клавиÑи">HTML-ÑедакÑÐ¾Ñ Ñ CodeMirror: Ñема Monokai, Ñмное ÑоÑмаÑиÑование и гоÑÑÑие клавиÑи</h2></summary> <div class="changelog-section__body"> <p><strong>ÐовÑй HTML-ÑедакÑÐ¾Ñ Ð² ÑÑиле TextAngular:</strong></p> <ul> <li data-num="72"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> CodeMirror Ñ Ñемой Monokai â ÑÑÐ¼Ð½Ð°Ñ Ñема Ñ Ð¿Ð¾Ð»Ð½Ð¾Ð¹ подÑвеÑкой ÑинÑакÑиÑа HTML/CSS/JS</li> <li data-num="73"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> ÐоÑÑÑÐ°Ñ ÐºÐ»Ð°Ð²Ð¸Ñа Ctrl+Shift+H â оÑкÑÑÑие HTML-ÑедакÑоÑа из л
1Ñбого меÑÑа (ÑабоÑÐ°ÐµÑ Ð´Ð°Ð¶Ðµ без ÑокÑÑа в ÑедакÑоÑе)</li> <li data-num="74"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> ÐвÑоÑоÑмаÑиÑование пÑи оÑкÑÑÑии â HTML ÑÑÐ°Ð·Ñ ÑоÑмаÑиÑÑеÑÑÑ Ð´Ð»Ñ ÑиÑаемоÑÑи и коÑÑекÑной подÑвеÑки</li> <li data-num="75"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> Умное ÑоÑмаÑиÑование â каждÑй блок на оÑделÑной ÑÑÑоке, но вложеннÑй конÑÐµÐ½Ñ ÐºÐ¾Ð¼Ð¿Ð°ÐºÑно:<ul> <li data-num="76"><code><blockquote><p>ЦиÑаÑа</p></blockquote></code> â на одной ÑÑÑоке</li> <li data-num="77"><code><h2>Ðаголовок<br></h2></code> â без лиÑниÑ
пеÑеноÑов</li> </ul> </li> <li data-num="78"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> Ðиалог подÑвеÑÐ¶Ð´ÐµÐ½Ð¸Ñ "СоÑ
ÑаниÑÑ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ?" â пÑи закÑÑÑии Ñ Ð½ÐµÑоÑ
ÑанÑннÑми пÑавками (кнопки СбÑоÑиÑÑ/СоÑ
ÑаниÑÑ)</li> <li data-num="79"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> Ctrl+S / Cmd+S â ÑоÑ
Ñанение пÑÑмо из CodeMirror</li> </ul> <p><strong>UX-ÑлÑÑÑениÑ:</strong></p> <ul> <li data-num="80"><span class="changelog-tag changelog-tag--UX" data-tag-alias="UX">UX</span> ÐомпакÑнÑй ÑÐ°Ð·Ð¼ÐµÑ Ð¾ÐºÐ½Ð° (800px à 90vh) â не пеÑекÑÑÐ²Ð°ÐµÑ Ð²ÐµÑÑ ÑкÑан</li> <li data-num="81"><span class="changelog-tag changelog-tag--UX" data-tag-alias="UX">UX</span> Ðнопки "ФоÑмаÑиÑоваÑÑ" и "ÐÑовеÑиÑÑ" Ñ ÑенÑÑиÑованнÑм ÑÑаÑÑÑом</li> <li data-num="82"><span class="changelog-tag changelog-tag--UX" data-tag-alias="UX">UX</span> Escape закÑÑÐ²Ð°ÐµÑ ÑедакÑÐ¾Ñ (Ñ Ð¿Ð¾Ð´ÑвеÑждением пÑи изменениÑÑ
)</li> </ul> </div> </details> <details class="changelog-section"> <summary class="changelog-summary"><span class="changelog-meta"><span class="changelog-meta__version">v9.3.0</span><span class="changelog-meta__date">10-02-2026</span></span><h2 id="v930-10-02-2026---embeddings--suggestion-mode-полнаÑ-поддеÑжка-ÑÑилей-медиа-и-блоÑного-ÑоÑмаÑиÑованиÑ">Embeddings & Suggestion Mode: Ð¿Ð¾Ð»Ð½Ð°Ñ Ð¿Ð¾Ð´Ð´ÐµÑжка ÑÑилей, медиа и блоÑного ÑоÑмаÑиÑованиÑ</h2></summary> <div class="changelog-section__body"> <p><strong>Режим комменÑиÑÐ¾Ð²Ð°Ð½Ð¸Ñ / пÑавок (Suggestion Mode) â полнÑй ÑÑнкÑионал:</strong></p> <ul> <li data-num="46"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> Node-level suggestions â оÑÑлеживание добавлениÑ/ÑÐ´Ð°Ð»ÐµÐ½Ð¸Ñ Ð¸Ð·Ð¾Ð±Ñажений, видео, Ñмбедов и ÑноÑок</li> <li data-num="47"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> Block format suggestions â оÑÑлеживание изменений заголовков (H2/H3), вÑÑавниваниÑ, ÑпиÑков, подвÑÑÑÑок и ÑиÑаÑ</li> <li data-num="48"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> Paragraph break tracking â оÑÑлеживание ÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ Ð½Ð¾Ð²ÑÑ
абзаÑев ÑеÑез Enter (zero-width space маÑкеÑ)</li> <li data-num="49"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> Accept All / Reject All в batch mode â ÐµÐ´Ð¸Ð½Ð°Ñ ÑÑанзакÑÐ¸Ñ Ð´Ð»Ñ Ð²ÑеÑ
пÑавок, коÑÑекÑÐ½Ð°Ñ ÑабоÑа Ñ Ð¿Ð¾Ð·Ð¸ÑиÑми</li> <li data-num="50"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> Paste handling в suggestion mode â вÑÑавка Ñ Ð²Ñделением коÑÑекÑно помеÑÐ°ÐµÑ ÑдалÑнное и добавленное</li> <li data-num="51"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> Debug logging â <code>window.DISCOURS_DEBUG = true</code> вклÑÑÐ°ÐµÑ Ð´ÐµÑалÑнÑе логи Ð´Ð»Ñ Ð¾Ñладки suggestion commands</li> <li data-num="52"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> ÐизÑалÑнÑе индикаÑоÑÑ node suggestions â outline и badge "Ðобавление"/"Удаление" на изобÑажениÑÑ
/ÑмбедаÑ
</li> <li data-num="53"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> Sidebar UI Ð´Ð»Ñ format/node suggestions â новÑе ÑÐ¸Ð¿Ñ Ð¿Ñавок Ñ ÑвеÑовой ÑÑ
емой (жÑлÑÑй/cyan/pink)</li> <li data-num="54"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> Piktochart embed support â авÑомаÑиÑеÑкое опÑеделение и коÑÑекÑнÑй ÑендеÑинг вÑÑокиÑ
инÑогÑаÑик</li> <li data-num="55"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> postMessage resize listener â динамиÑеÑкое изменение вÑÑоÑÑ iframe Ð´Ð»Ñ embed-пÑовайдеÑов</li> <li data-num="56"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> Mod+A ÑвнÑй handler â гаÑанÑиÑÐ¾Ð²Ð°Ð½Ð½Ð°Ñ ÑабоÑа Cmd+A на Mac незавиÑимо Ð¾Ñ Ð¿Ð»Ð°Ð³Ð¸Ð½Ð¾Ð²</li> </ul> <p><strong>РегиÑÑÑаÑÐ¸Ñ Ð¸ UX:</strong></p> <ul> <li data-num="57"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> УлÑÑÑеннÑй flow ÑегиÑÑÑаÑии â пÑÑмой вÑ
од ÑеÑез Ñокен из оÑвеÑа (без race condition)</li> <li data-num="58"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> РедиÑÐµÐºÑ Ð½Ð¾Ð²Ð¾Ð³Ð¾ полÑзоваÑÐµÐ»Ñ Ð½Ð° ÑÑÑаниÑÑ Ð¿ÑоÑÐ¸Ð»Ñ Ð´Ð»Ñ Ð½Ð°ÑÑÑойки</li> <li data-num="59"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> Email verification toast â напоминание о подÑвеÑждении email (15 Ñек, без ÑаздÑажениÑ)</li> </ul> <p><strong>ÐÑпÑÐ°Ð²Ð»ÐµÐ½Ð¸Ñ Ð¸ ÑлÑÑÑениÑ:</strong></p> <ul> <li data-num="60"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> ProseMirror infinite loop â crawlableLinks болÑÑе не конÑликÑÑÐµÑ Ñ MutationObserver ÑедакÑоÑа</li> <li data-num="61"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> Embed dimension repair â авÑомаÑиÑеÑкое воÑÑÑановление поÑеÑÑннÑÑ
ÑазмеÑов iframe из Y.js док
1ÑменÑа</li> <li data-num="62"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> Keyboard shortcuts в suggestion mode â Mod+B/I/U/K коÑÑекÑно ÑабоÑаÑÑ ÑеÑез smartToggleFormat</li> <li data-num="63"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> Typography shortcut заблокиÑован в suggestion mode â пÑедоÑвÑаÑÐ°ÐµÑ Ð¿Ð¾ÑеÑÑ tracking даннÑÑ
</li> <li data-num="64"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> ZWS cleanup в stripTiptapMarksFromHtml â конÑеÑваÑивное Ñдаление маÑкеÑов без повÑÐµÐ¶Ð´ÐµÐ½Ð¸Ñ ÐºÐ¾Ð½ÑенÑа</li> </ul> <p><strong>РеÑакÑоÑинг и ÑÑабилÑноÑÑÑ:</strong></p> <ul> <li data-num="65"><span class="changelog-tag changelog-tag--REFACTOR" data-tag-alias="REFACTOR">REFACTOR</span> revertBlockFormat ÑÐ°Ð·Ð±Ð¸Ñ Ð½Ð° helper-ÑÑнкÑии Ð´Ð»Ñ Ð»ÑÑÑей оÑладки</li> <li data-num="66"><span class="changelog-tag changelog-tag--REFACTOR" data-tag-alias="REFACTOR">REFACTOR</span> repairBrokenEmbedDimensions вÑнеÑен в оÑделÑнÑÑ ÑÑнкÑÐ¸Ñ Ð´Ð»Ñ ÑеÑÑиÑÑемоÑÑи</li> <li data-num="67"><span class="changelog-tag changelog-tag--REFACTOR" data-tag-alias="REFACTOR">REFACTOR</span> Memory leak prevention â Ñвное обнÑление DOM-ÑÑÑлок в destroy() Ð´Ð»Ñ DiscoursImage и SocialEmbed</li> <li data-num="68"><span class="changelog-tag changelog-tag--PERF" data-tag-alias="PERF">PERF</span> Single traversal в acceptAll/rejectAll â O(n) вмеÑÑо O(n²) Ð´Ð»Ñ Ð´Ð¾ÐºÑменÑов Ñ Ð±Ð¾Ð»ÑÑим колиÑеÑÑвом пÑавок</li> </ul> <p><strong>СÑили:</strong></p> <ul> <li data-num="69"><span class="changelog-tag changelog-tag--UX" data-tag-alias="UX">UX</span> СÑили Ð´Ð»Ñ node-level suggestions (outline, opacity, badges)</li> <li data-num="70"><span class="changelog-tag changelog-tag--UX" data-tag-alias="UX">UX</span> СÑили Ð´Ð»Ñ format suggestions в sidebar (жÑлÑÐ°Ñ ÑвеÑÐ¾Ð²Ð°Ñ ÑÑ
ема)</li> <li data-num="71"><span class="changelog-tag changelog-tag--UX" data-tag-alias="UX">UX</span> Gradient hint Ð´Ð»Ñ scrollable tall embeds (Piktochart)</li> </ul> </div> </details> <details class="changelog-section"> <summary class="changelog-summary"><span class="changelog-meta"><span class="changelog-meta__version">v9.2.0</span><span class="changelog-meta__date">10-02-2026</span></span><h2 id="v920-10-02-2026---коллабоÑаÑивнÑй-ÑедакÑоÑ-полнÑй-комплекÑ-ÑÑилей-Ñазделение-кода--новÑе-наÑÑÑойки-пÑоÑилÑ">ÐоллабоÑаÑивнÑй ÑедакÑоÑ: полнÑй ÐºÐ¾Ð¼Ð¿Ð»ÐµÐºÑ ÑÑилей, Ñазделение кода + новÑе наÑÑÑойки пÑоÑилÑ</h2></summary> <div class="changelog-section__body"> <ul> <li data-num="37"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> СÑÑаниÑа наÑÑÑоек (Settings) â ÑÑили Ð´Ð»Ñ Ð¿ÑоÑÐ¸Ð»Ñ Ñ Ð±Ð¾ÐºÐ¾Ð²Ð¾Ð¹ навигаÑией и Ñабами; ÑеÑка вÑÑовнена Ñ Ñапкой (sidebar = колонка логоÑипа, конÑÐµÐ½Ñ = колонка навигаÑии)</li> <li data-num="38"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> ÐдинÑй ÑпиÑок ÑазÑеÑÑннÑÑ
доменов Ð´Ð»Ñ Ñмбедов (allowed-embed-domains.js) â иÑполÑзÑеÑÑÑ html-cleaner пÑи вÑÑавке/загÑÑзке и social-embed пÑи вÑÑавке; добавление домена в одном меÑÑе</li> <li data-num="39"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> ÐбÑие ÑÑили ÑÑÑлок «подÑÑÑкивание + инвеÑÑÐ¸Ñ Ð¿Ñи Ñ
овеÑе» (link-invert-hover-styles.js) â единÑй вид в ÑедакÑоÑе ÑноÑок, подпиÑей и caption-ÑедакÑоÑе (TipTap и TextAngular)</li> <li data-num="40"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> ÐдинообÑазное оÑобÑажение ÑÑÑлок в модалкаÑ
ÑноÑок и подпиÑей к медиа â один иÑÑоÑник ÑÑилей, без ÑаÑÑ
ождений Ð¼ÐµÐ¶Ð´Ñ ÑедакÑоÑами</li> <li data-num="41"><span class="changelog-tag changelog-tag--UX" data-tag-alias="UX">UX</span> УлÑÑÑÐµÐ½Ð¸Ñ ÑÑилей ÑедакÑоÑа: оÑÑÑÑÐ¿Ñ H2/H3, подвеÑÑÑки, абзаÑÑ, подпиÑи к изобÑажениÑм (partials: footnote-editor, tiptap-dialogs, discours-form, open-post, column, tooltip)</li> <li data-num="42"><span class="changelog-tag changelog-tag--REFACTOR" data-tag-alias="REFACTOR">REFACTOR</span> Разделение кода коллабоÑаÑивного ÑедакÑоÑа (collab-init, collab-autosave, comments, preview, publish, sidebar, toolbar, versioning) â пÑоÑе поддеÑжка и ÑеÑÑиÑование</li> <li data-num="43"><span class="changelog-tag changelog-tag--REFACTOR" data-tag-alias="REFACTOR">REFACTOR</span> РаÑÑиÑÐµÐ½Ð¸Ñ TipTap: Ð¾Ð±Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ discours-image, footnote-tooltip, heading-with-id, html-cleaner, link-bubble-menu, link-inline-editor, rich-caption-editor, rich-footnote-editor, social-embed, toc-block, toc-generator, video-insert-dialog, discours-keyboard, keyboard-shortcuts-help</li> <li data-num="44"><span class="changelog-tag changelog-tag--REFACTOR" data-tag-alias="REFACTOR">REFACTOR</span> tiptapEditorDirective, editorHeader, captionEditorService, footnoteService, versioningService â ÑоглаÑование Ñ Ð½Ð¾Ð²Ð¾Ð¹ ÑÑÑÑкÑÑÑой и конÑÑанÑами</li> <li data-num="45">
1[CONFIG] РоÑÑÑ, ÑÐ°Ð±Ð»Ð¾Ð½Ñ ÑÑÑÐ°Ð½Ð¸Ñ ÑедакÑиÑÐ¾Ð²Ð°Ð½Ð¸Ñ Ð¸ авÑоÑа, header â пÑавки под коллабоÑаÑивнÑй Ñежим и TipTap</li> </ul> </div> </details> <details class="changelog-section"> <summary class="changelog-summary"><span class="changelog-meta"><span class="changelog-meta__version">v9.1.0</span><span class="changelog-meta__date">09-02-2026</span></span><h2 id="v910-09-02-2026---оглавление-ÑпÑавка-по-гоÑÑÑим-клавиÑам-новÑе-ÑоÑÑкаÑÑ">Ðглавление, ÑпÑавка по гоÑÑÑим клавиÑам, новÑе ÑоÑÑкаÑÑ</h2></summary> <div class="changelog-section__body"> <ul> <li data-num="27"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> ÐÐ°Ð½ÐµÐ»Ñ Â«Ðглавление» (TOC) â навигаÑÐ¸Ñ Ð¿Ð¾ заголовкам H2/H3 Ñлева Ð¾Ñ ÑедакÑоÑа Ñ Ð¿Ð¾Ð´ÑвеÑкой ÑекÑÑего Ñаздела и пÑогÑеÑÑ-баÑом ÑÑениÑ; Ð¿Ð¾Ð¼Ð¾Ð³Ð°ÐµÑ Ð°Ð²ÑоÑам оÑиенÑиÑоваÑÑÑÑ Ð² длиннÑÑ
ÑекÑÑаÑ
и бÑÑÑÑо пеÑеÑ
одиÑÑ Ð¼ÐµÐ¶Ð´Ñ Ñазделами</li> <li data-num="28"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> Ðнопка «?» Ñо ÑпÑавкой по гоÑÑÑим клавиÑам (попап) â вÑе ÑоÑÑкаÑÑ ÑгÑÑппиÑÐ¾Ð²Ð°Ð½Ñ Ð¿Ð¾ каÑегоÑиÑм; ÑÐ½Ð¸Ð¶Ð°ÐµÑ Ð¿Ð¾Ñог вÑ
ода Ð´Ð»Ñ Ð½Ð¾Ð²ÑÑ
авÑоÑов</li> <li data-num="29"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> ÐÑлÑÐ°Ñ ÑоÑка-индикаÑÐ¾Ñ Ð½Ð° кнопке «?» пÑи пеÑвом визиÑе â пÑÐ¾Ð¿Ð°Ð´Ð°ÐµÑ Ð¿Ð¾Ñле оÑкÑÑÑÐ¸Ñ ÑпÑавки</li> <li data-num="30"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> Ctrl/Cmd + / â показаÑÑ/ÑкÑÑÑÑ ÑпÑÐ°Ð²ÐºÑ Ð¿Ð¾ гоÑÑÑим клавиÑам</li> <li data-num="31"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> Ctrl/Cmd + Alt + / â оÑкÑÑÑÑ/закÑÑÑÑ Ð¿Ð°Ð½ÐµÐ»Ñ ÐºÐ¾Ð¼Ð¼ÐµÐ½ÑаÑиев и пÑавок</li> <li data-num="32"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> Ctrl/Cmd + Alt + P â пеÑеклÑÑение в Ñежим пÑедпÑоÑмоÑÑа</li> <li data-num="33"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> Ctrl/Cmd + Alt + E â возвÑÐ°Ñ Ð² Ñежим ÑедакÑиÑованиÑ</li> <li data-num="34"><span class="changelog-tag changelog-tag--UX" data-tag-alias="UX">UX</span> Legacy-кнопки «ÐопÑавиÑÑ ÑипогÑаÑикÑ» и «ÐоÑиÑÑиÑÑ ÐºÐ¾Ð´Â» ÑкÑÑÑÑ Ð² TipTap-Ñежиме â инÑеÑÑÐµÐ¹Ñ ÑÑал ÑиÑе</li> <li data-num="35"><span class="changelog-tag changelog-tag--UX" data-tag-alias="UX">UX</span> TOC-Ð¿Ð°Ð½ÐµÐ»Ñ ÑкÑÑваеÑÑÑ Ð½Ð° мобилÑнÑÑ
ÑкÑанаÑ
(< 768px)</li> <li data-num="36"><span class="changelog-tag changelog-tag--REFACTOR" data-tag-alias="REFACTOR">REFACTOR</span> ÐовÑе custom events (toggleSidebar, togglePreview, setEditingMode, toggleShortcutsHelp) в tiptapEditorDirective Ð´Ð»Ñ ÑвÑзи TipTap-ÑоÑÑкаÑов Ñ Angular-конÑÑоллеÑами</li> </ul> </div> </details> <details class="changelog-section"> <summary class="changelog-summary"><span class="changelog-meta"><span class="changelog-meta__version">v9.0.1</span><span class="changelog-meta__date">08-02-2026</span></span><h2 id="v901-08-02-2026---staging-ÑÑеда-и-кнопка-ÑоÑ
ÑанениÑ">Staging-ÑÑеда и кнопка ÑоÑ
ÑанениÑ</h2></summary> <div class="changelog-section__body"> <ul> <li data-num="15"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> Ðнопка «СоÑ
ÑаниÑÑ» в editorHeader â ÑоÑ
ÑанÑÐµÑ ÑеÑновик и ÑоздаÑÑ Ð²ÐµÑÑÐ¸Ñ Ð² иÑÑоÑии</li> <li data-num="16"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> Ctrl+S / Cmd+S â ÑоÑ
Ñанение ÑеÑновика и Ñоздание веÑÑии по гоÑÑÑей клавиÑе</li> <li data-num="17"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> ÐизÑалÑÐ½Ð°Ñ Ð¾Ð±ÑаÑÐ½Ð°Ñ ÑвÑзÑ: анимаÑÐ¸Ñ Ð³Ð°Ð»Ð¾Ñки на кнопке поÑле ÑÑпеÑного ÑоÑ
ÑанениÑ</li> <li data-num="18"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> ÐндикаÑÐ¾Ñ Â«Ð¡Ð¾Ñ
Ñанено N мин назад» ÑÑдом Ñ ÐºÐ½Ð¾Ð¿ÐºÐ¾Ð¹ ÑоÑ
ÑанениÑ</li> <li data-num="19"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> Cloudflare Tunnel staging: try.discours.io пÑокÑиÑÑÐµÑ localhost ÑеÑез ÑÑннелÑ</li> <li data-num="20"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> ÐаÑиÑа Ð¾Ñ Ð´Ð²Ð¾Ð¹Ð½Ð¾Ð³Ð¾ клика пÑи ÑоÑ
Ñанении веÑÑии</li> <li data-num="21"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> ÐоÑÑекÑнÑй вÑвод оÑибок ÑоÑ
ÑÐ°Ð½ÐµÐ½Ð¸Ñ (err.message вмеÑÑо [object Object])</li> <li data-num="22"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> transition: all â конкÑеÑнÑе ÑвойÑÑва (пÑоизводиÑелÑноÑÑÑ)</li> <li data-num="23"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> ÐÐ¾Ð±Ð°Ð²Ð»ÐµÐ½Ñ aria-label, aria-busy, focus-visible Ð´Ð»Ñ Ð´Ð¾ÑÑÑпноÑÑи</li> <li data-num="24"><span class="changelog-tag changelog-tag--REFACTOR" data-tag-alias="REFACTOR">REFACTOR</span> isLocal â usesProxy â ÑеманÑиÑеÑки коÑÑекÑное Ð¸Ð¼Ñ Ð¿ÐµÑеменной</li> <li data-num="25">[CONFIG] API_SERVER в development/development_local пеÑеведÑн на оÑноÑиÑелÑнÑй /api/v2</li> <li data-num="26">[CONFIG] webpack allowedHosts: добавлен try.discours.io</li> </ul> </div> </details> <details class="changelog-section"> <summary class="changelog-summary"><span class="changelog-meta"><span class="changelog-meta__version">v9.0.0</span><span class="changelog-meta__date">07-02-2026</span></span><h2 id="v900-07-02-2026---новÑй-ÑедакÑоÑ-Ñ-коллабоÑаÑией">ÐовÑй ÑедакÑÐ¾Ñ Ñ ÐºÐ¾Ð»Ð»Ð°Ð±Ð¾ÑаÑией</h2></summary> <div class="changelog-section__body"> <ul> <li data-num="1"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> TipTap Editor - мигÑаÑÐ¸Ñ Ñ TextAngular на ÑовÑеменнÑй ÑедакÑÐ¾Ñ TipTap</li> <li data-num="2"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> ÐÑеÑеÑÑ ÑедакÑоÑа: full, simplified, album, comments Ð´Ð»Ñ ÑазнÑÑ
конÑекÑÑов</li> <li data-num="3"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> СиÑÑема веÑÑиониÑÐ¾Ð²Ð°Ð½Ð¸Ñ Ð´Ð¾ÐºÑменÑов (versioningService)</li> <li data-num="4"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> Feature flags ÑеÑÐ²Ð¸Ñ Ð´Ð»Ñ ÑпÑÐ°Ð²Ð»ÐµÐ½Ð¸Ñ ÑÑнкÑиÑми</li> <li data-num="5"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> Social embed ÑаÑÑиÑение Ñ Ð¿Ð¾Ð´Ð´ÐµÑжкой YouTube, Vimeo, Twitter, Telegram, VK и дÑ.</li> <li data-num="6"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> Video insert dialog Ð´Ð»Ñ Ð²ÑÑавки видео по URL</li> <li data-num="7"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> tiptapSimpleEditorDirective Ð´Ð»Ñ ÐºÐ¾Ð¼Ð¼ÐµÐ½ÑаÑиев и лиÑнÑÑ
ÑообÑений</li> <li data-num="8"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> Expo preview конÑÑÐ¾Ð»Ð»ÐµÑ Ð´Ð»Ñ Ð¿ÑедпÑоÑмоÑÑа ÑкÑпо-маÑеÑиалов</li> <li data-num="9"><span class="changelog-tag changelog-tag--NEW" data-tag-alias="NEW">NEW</span> ÐодмножеÑÑво FontAwesome иконок (fa-brands, fa-solid)</li> <li data-num="10"><span class="changelog-tag changelog-tag--UX" data-tag-alias="UX">UX</span> УлÑÑÑеннÑй ÑÑÐ»Ð±Ð°Ñ ÑедакÑоÑа Ñ Ð³ÑÑппиÑовкой кнопок</li> <li data-num="11"><span class="changelog-tag changelog-tag--UX" data-tag-alias="UX">UX</span> СÑили Ð´Ð»Ñ Ð´Ð¸Ð°Ð»Ð¾Ð³Ð¾Ð² TipTap, иÑÑоÑии веÑÑий</li> <li data-num="12"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> УлÑÑÑÐµÐ½Ð¸Ñ bubble menu Ð´Ð»Ñ ÑÑÑлок и комменÑаÑиев</li> <li data-num="13"><span class="changelog-tag changelog-tag--FIX" data-tag-alias="FIX">FIX</span> ÐÑпÑÐ°Ð²Ð»ÐµÐ½Ð¸Ñ ÐºÐ»Ð°Ð²Ð¸Ð°ÑÑÑнÑÑ
ÑокÑаÑений в ÑедакÑоÑе</li> <li data-num="14"><span class="changelog-tag changelog-tag--REFACTOR" data-tag-alias="REFACTOR">REFACTOR</span> РедакÑÐ¾Ñ Ð»Ð¸ÑеÑаÑÑÑÑ Ð¿ÐµÑеведÑн на TipTap</li> </ul> </div> </details> </div> <div class="tw:gutter-half tw:w-full tw:md:w-3/12 tw:md:mt-content-top" ng-non-bindable> <nav class="changelog-toc"> <div class="changelog-toc__title">ÐеÑÑии</div> <ul class="changelog-toc__list"> <li><a href="#v9177-28-09-2026--полиÑика-конÑиденÑиалÑноÑÑи-ÑвоÑ-ÑÑÑаниÑа-и-понÑÑнÑй-Ñаздел-о-вÑ
оде-ÑеÑез-дÑÑгие-ÑеÑвиÑÑ"><span class="changelog-toc__version">v9.177</span><span class="changelog-toc__date">28-09-2026</span><span class="changelog-toc__topic" title="ÐолиÑика конÑиденÑиалÑноÑÑи: ÑÐ²Ð¾Ñ ÑÑÑаниÑа и понÑÑнÑй Ñаздел о вÑ
оде ÑеÑез дÑÑгие ÑеÑвиÑÑ">ÐолиÑика конÑиденÑиалÑноÑÑи: ÑÐ²Ð¾Ñ ÑÑÑаниÑа и понÑÑнÑй Ñаздел о вÑ
оде ÑеÑез дÑÑгие ÑеÑвиÑÑ</span></a></li> <li><a href="#v9176-28-09-2026--подпиÑÑ-авÑоÑа-без-имени-адÑеÑ-его-ÑÑÑаниÑÑ"><span class="changelog-toc__version">v9.176</span><span class="changelog-toc__date">28-09-2026</span><span class="changelog-toc__topic" title="ÐодпиÑÑ Ð°Ð²ÑоÑа без имени: адÑÐµÑ ÐµÐ³Ð¾ ÑÑÑаниÑÑ">ÐодпиÑÑ Ð°Ð²ÑоÑа без имени: адÑÐµÑ ÐµÐ³Ð¾ ÑÑÑаниÑÑ</span></a></li> <li><a href="#v9175-27-09-2026--пÑавки-ÑеÑензенÑа-оÑÑаÑÑÑÑ-в-ÑедакÑоÑе-поÑле-пÑбликаÑии"><span class="changelog-toc__version">v9.175</span><span class="changelog-toc__date">27-09-2026</span><span class="changelog-toc__topic" title="ÐÑавки ÑеÑензенÑа оÑÑаÑÑÑÑ Ð² ÑедакÑоÑе поÑле пÑбликаÑии">ÐÑавки ÑеÑензенÑа оÑÑаÑÑÑÑ Ð² ÑедакÑоÑе поÑле пÑбликаÑии<
1/span></a></li> <li><a href="#v9174-26-09-2026--пÑавки-ÑеÑензенÑа-новÑй-абзаÑ-и-иÑÑоÑиÑ-веÑÑий"><span class="changelog-toc__version">v9.174</span><span class="changelog-toc__date">26-09-2026</span><span class="changelog-toc__topic" title="ÐÑавки ÑеÑензенÑа: новÑй Ð°Ð±Ð·Ð°Ñ Ð¸ иÑÑоÑÐ¸Ñ Ð²ÐµÑÑий">ÐÑавки ÑеÑензенÑа: новÑй Ð°Ð±Ð·Ð°Ñ Ð¸ иÑÑоÑÐ¸Ñ Ð²ÐµÑÑий</span></a></li> <li><a href="#v9173-14-09-2026--ÑÑÑаниÑа-подÑвеÑждениÑ-поÑÑÑ-пеÑеÑÑала-говоÑиÑÑ-одно-и-Ñо-же-на-вÑе-ÑлÑÑаи"><span class="changelog-toc__version">v9.173</span><span class="changelog-toc__date">14-09-2026</span><span class="changelog-toc__topic" title="СÑÑаниÑа подÑвеÑÐ¶Ð´ÐµÐ½Ð¸Ñ Ð¿Ð¾ÑÑÑ Ð¿ÐµÑеÑÑала говоÑиÑÑ Ð¾Ð´Ð½Ð¾ и Ñо же на вÑе ÑлÑÑаи">СÑÑаниÑа подÑвеÑÐ¶Ð´ÐµÐ½Ð¸Ñ Ð¿Ð¾ÑÑÑ Ð¿ÐµÑеÑÑала говоÑиÑÑ Ð¾Ð´Ð½Ð¾ и Ñо же на вÑе ÑлÑÑаи</span></a></li> <li><a href="#v9172-11-09-2026--иконки-пÑопавÑие-из-набоÑа-веÑнÑлиÑÑ-на-кнопки"><span class="changelog-toc__version">v9.172</span><span class="changelog-toc__date">11-09-2026</span><span class="changelog-toc__topic" title="Ðконки, пÑопавÑие из набоÑа, веÑнÑлиÑÑ Ð½Ð° кнопки">Ðконки, пÑопавÑие из набоÑа, веÑнÑлиÑÑ Ð½Ð° кнопки</span></a></li> <li><a href="#v9171-06-09-2026--оÑвеÑÑ-ÑайÑа-неÑÑÑ-полиÑикÑ-иÑполÑзованиÑ-а-llmstxt-ведÑÑ-агенÑов-к-ÑекÑÑÑ"><span class="changelog-toc__version">v9.171</span><span class="changelog-toc__date">06-09-2026</span><span class="changelog-toc__topic" title="ÐÑвеÑÑ ÑайÑа неÑÑÑ Ð¿Ð¾Ð»Ð¸ÑÐ¸ÐºÑ Ð¸ÑполÑзованиÑ, а llms.txt ведÑÑ Ð°Ð³ÐµÐ½Ñов к ÑекÑÑÑ">ÐÑвеÑÑ ÑайÑа неÑÑÑ Ð¿Ð¾Ð»Ð¸ÑÐ¸ÐºÑ Ð¸ÑполÑзованиÑ, а llms.txt ведÑÑ Ð°Ð³ÐµÐ½Ñов к ÑекÑÑÑ</span></a></li> <li><a href="#v9170-05-09-2026--веб-веÑÑиÑ-пиÑÑма-оÑкÑÑваеÑÑÑ-по-лÑбой-из-ÑвоиÑ
-ÑÑÑлок"><span class="changelog-toc__version">v9.170</span><span class="changelog-toc__date">05-09-2026</span><span class="changelog-toc__topic" title="Ðеб-веÑÑÐ¸Ñ Ð¿Ð¸ÑÑма оÑкÑÑваеÑÑÑ Ð¿Ð¾ лÑбой из ÑвоиÑ
ÑÑÑлок">Ðеб-веÑÑÐ¸Ñ Ð¿Ð¸ÑÑма оÑкÑÑваеÑÑÑ Ð¿Ð¾ лÑбой из ÑвоиÑ
ÑÑÑлок</span></a></li> <li><a href="#v9169-04-09-2026--маÑеÑиал-из-ÑведомлениÑ-оÑкÑÑваеÑÑÑ-Ñ-пеÑвого-Ñаза"><span class="changelog-toc__version">v9.169</span><span class="changelog-toc__date">04-09-2026</span><span class="changelog-toc__topic" title="ÐаÑеÑиал из ÑÐ²ÐµÐ´Ð¾Ð¼Ð»ÐµÐ½Ð¸Ñ Ð¾ÑкÑÑваеÑÑÑ Ñ Ð¿ÐµÑвого Ñаза">ÐаÑеÑиал из ÑÐ²ÐµÐ´Ð¾Ð¼Ð»ÐµÐ½Ð¸Ñ Ð¾ÑкÑÑваеÑÑÑ Ñ Ð¿ÐµÑвого Ñаза</span></a></li> <li><a href="#v9168-03-09-2026--пÑедложение-войÑи-болÑÑе-не-иÑÑезаеÑ-Ñамо"><span class="changelog-toc__version">v9.168</span><span class="changelog-toc__date">03-09-2026</span><span class="changelog-toc__topic" title="ÐÑедложение войÑи болÑÑе не иÑÑÐµÐ·Ð°ÐµÑ Ñамо">ÐÑедложение войÑи болÑÑе не иÑÑÐµÐ·Ð°ÐµÑ Ñамо</span></a></li> <li><a href="#v9167-03-09-2026--название-в-Ñведомлении-оÑкÑÑваеÑ-Ñовно-Ñо-же-ÑÑо-и-вÑÑ-ÑÑÑока"><span class="changelog-toc__version">v9.167</span><span class="changelog-toc__date">03-09-2026</span><span class="changelog-toc__topic" title="Ðазвание в Ñведомлении оÑкÑÑÐ²Ð°ÐµÑ Ñовно Ñо же, ÑÑо и вÑÑ ÑÑÑока">Ðазвание в Ñведомлении оÑкÑÑÐ²Ð°ÐµÑ Ñовно Ñо же, ÑÑо и вÑÑ ÑÑÑока</span></a></li> <li><a href="#v9166-03-09-2026--название-маÑеÑиала-в-ÑведомлениÑÑ
-ведÑÑ-кÑда-надо"><span class="changelog-toc__version">v9.166</span><span class="changelog-toc__date">03-09-2026</span><span class="changelog-toc__topic" title="Ðазвание маÑеÑиала в ÑведомлениÑÑ
ведÑÑ ÐºÑда надо">Ðазвание маÑеÑиала в ÑведомлениÑÑ
ведÑÑ ÐºÑда надо</span></a></li> <li><a href="#v9165-03-09-2026--ÑедакÑоÑ-пеÑеÑÑал-пÑÑаÑÑ-иÑÑÑкÑÑÑ-ÑеÑÑиÑ-Ñ-закÑÑÑÑм-доÑÑÑпом"><span class="changelog-toc__version">v9.165</span><span class="changelog-toc__date">03-09-2026</span><span class="changelog-toc__topic" title="РедакÑÐ¾Ñ Ð¿ÐµÑеÑÑал пÑÑаÑÑ Ð¸ÑÑÑкÑÑÑ ÑеÑÑÐ¸Ñ Ñ Ð·Ð°ÐºÑÑÑÑм доÑÑÑпом">РедакÑÐ¾Ñ Ð¿ÐµÑеÑÑал пÑÑаÑÑ Ð¸ÑÑÑкÑÑÑ ÑеÑÑÐ¸Ñ Ñ Ð·Ð°ÐºÑÑÑÑм доÑÑÑпом</span></a></li> <li><a href="#v9164-27-08-2026--комменÑаÑии-и-ленÑа-маÑеÑиалов-болÑÑе-не-иÑÑезаÑÑ"><span class="changelog-toc__version">v9.164</span><span class="changelog-toc__date">27-08-2026</span><span class="changelog-toc__topic" title="ÐомменÑаÑии и ленÑа маÑеÑиалов болÑÑе не иÑÑезаÑÑ">ÐомменÑаÑии и ленÑа маÑеÑиалов болÑÑе не иÑÑезаÑÑ</span></a></li> <li><a href="#v9163-26-08-2026--ÑÑÑаниÑа-авÑоÑа-и-видео-показÑваем-Ñовно-Ñо-ÑÑо-еÑÑÑ"><span class="changelog-toc__version">v9.163</span><span class="changelog-toc__date">26-08-2026</span><span class="changelog-toc__topic" title="СÑÑаниÑа авÑоÑа и видео: показÑваем Ñовно Ñо, ÑÑо еÑÑÑ">СÑÑаниÑа авÑоÑа и видео: показÑваем Ñовно Ñо, ÑÑо еÑÑÑ</span></a></li> <li><a href="#v9162-25-08-2026--обÑÑждениÑ-пÑавок-в-ÑедакÑоÑе-не-запиÑаÑÑÑÑ-намеÑÑво"><span class="changelog-toc__version">v9.162</span><span class="changelog-toc__date">25-08-2026</span><span class="changelog-toc__topic" title="ÐбÑÑÐ¶Ð´ÐµÐ½Ð¸Ñ Ð¿Ñавок в ÑедакÑоÑе не запиÑаÑÑÑÑ Ð½Ð°Ð¼ÐµÑÑво">ÐбÑÑÐ¶Ð´ÐµÐ½Ð¸Ñ Ð¿Ñавок в ÑедакÑоÑе не запиÑаÑÑÑÑ Ð½Ð°Ð¼ÐµÑÑво</span></a></li> <li><a href="#v9161-22-08-2026--мÑзÑка-ÑаÑовÑе-запиÑи-ÑоÑмаÑÑ-дикÑоÑона-и-понÑÑнÑе-оÑказÑ"><span class="changelog-toc__version">v9.161</span><span class="changelog-toc__date">22-08-2026</span><span class="changelog-toc__topic" title="ÐÑзÑка: ÑаÑовÑе запиÑи, ÑоÑмаÑÑ Ð´Ð¸ÐºÑоÑона и понÑÑнÑе оÑказÑ">ÐÑзÑка: ÑаÑовÑе запиÑи, ÑоÑмаÑÑ Ð´Ð¸ÐºÑоÑона и понÑÑнÑе оÑказÑ</span></a></li> <li><a href="#v9160-20-08-2026--ÑÑÑлка-из-пиÑÑма-поддеÑжки-оÑкÑÑваеÑ-Ñам-ÑазговоÑ"><span class="changelog-toc__version">v9.160</span><span class="changelog-toc__date">20-08-2026</span><span class="changelog-toc__topic" title="СÑÑлка из пиÑÑма поддеÑжки оÑкÑÑÐ²Ð°ÐµÑ Ñам ÑазговоÑ">СÑÑлка из пиÑÑма поддеÑжки оÑкÑÑÐ²Ð°ÐµÑ Ñам ÑазговоÑ</span></a></li> <li><a href="#v9159-19-08-2026--поÑÑал-доÑÑÑпа-ÑеÑновики-и-ÑкоÑоÑÑÑ-повÑоÑнÑÑ
-заÑ
одов"><span class="changelog-toc__version">v9.159</span><span class="changelog-toc__date">19-08-2026</span><span class="changelog-toc__topic" title="ÐоÑÑал доÑÑÑпа, ÑеÑновики и ÑкоÑоÑÑÑ Ð¿Ð¾Ð²ÑоÑнÑÑ
заÑ
одов">ÐоÑÑал доÑÑÑпа, ÑеÑновики и ÑкоÑоÑÑÑ Ð¿Ð¾Ð²ÑоÑнÑÑ
заÑ
одов</span></a></li> <li><a href="#v91581-18-08-2026--ÑеÑновики-мÑзÑка-и-понÑÑнÑе-оÑказÑ-ÑедакÑоÑа"><span class="changelog-toc__version">v9.158.1</span><span class="changelog-toc__date">18-08-2026</span><span class="changelog-toc__topic" title="ЧеÑновики, мÑзÑка и понÑÑнÑе оÑÐºÐ°Ð·Ñ ÑедакÑоÑа">ЧеÑновики, мÑзÑка и понÑÑнÑе оÑÐºÐ°Ð·Ñ ÑедакÑоÑа</span></a></li> <li><a href="#v9152-18-08-2026--жÑÑнал-подпиÑан-в-поиÑке-Ñвоим-именем"><span class="changelog-toc__version">v9.152</span><span class="changelog-toc__date">18-08-2026</span><span class="changelog-toc__topic" title="ÐÑÑнал подпиÑан в поиÑке Ñвоим именем">ÐÑÑнал подпиÑан в поиÑке Ñвоим именем</span></a></li> <li>
1<a href="#v9158-18-08-2026--измеÑениÑ-ÑкоÑоÑÑи-ÑÑали-пÑигоднÑ-длÑ-ÑабоÑÑ"><span class="changelog-toc__version">v9.158</span><span class="changelog-toc__date">18-08-2026</span><span class="changelog-toc__topic" title="ÐзмеÑÐµÐ½Ð¸Ñ ÑкоÑоÑÑи ÑÑали пÑÐ¸Ð³Ð¾Ð´Ð½Ñ Ð´Ð»Ñ ÑабоÑÑ">ÐзмеÑÐµÐ½Ð¸Ñ ÑкоÑоÑÑи ÑÑали пÑÐ¸Ð³Ð¾Ð´Ð½Ñ Ð´Ð»Ñ ÑабоÑÑ</span></a></li> <li><a href="#v9157-18-08-2026--жÑÑнал-подпиÑан-в-поиÑке-Ñвоим-именем"><span class="changelog-toc__version">v9.157</span><span class="changelog-toc__date">18-08-2026</span><span class="changelog-toc__topic" title="ÐÑÑнал подпиÑан в поиÑке Ñвоим именем">ÐÑÑнал подпиÑан в поиÑке Ñвоим именем</span></a></li> <li><a href="#v9156-15-08-2026--ÑÑÑаниÑÑ-жÑÑнала-Ñнова-оÑкÑÑваÑÑÑÑ-из-кÑÑа"><span class="changelog-toc__version">v9.156</span><span class="changelog-toc__date">15-08-2026</span><span class="changelog-toc__topic" title="СÑÑаниÑÑ Ð¶ÑÑнала Ñнова оÑкÑÑваÑÑÑÑ Ð¸Ð· кÑÑа">СÑÑаниÑÑ Ð¶ÑÑнала Ñнова оÑкÑÑваÑÑÑÑ Ð¸Ð· кÑÑа</span></a></li> <li><a href="#v9155-13-08-2026--маÑеÑиал-не-подменÑеÑÑÑ-ÑеÑновиком-каÑÑоÑки-без-обложки-ожили"><span class="changelog-toc__version">v9.155</span><span class="changelog-toc__date">13-08-2026</span><span class="changelog-toc__topic" title="ÐаÑеÑиал не подменÑеÑÑÑ ÑеÑновиком, каÑÑоÑки без обложки ожили">ÐаÑеÑиал не подменÑеÑÑÑ ÑеÑновиком, каÑÑоÑки без обложки ожили</span></a></li> <li><a href="#v9154-09-08-2026--ленÑÑ-и-обложки-пеÑеÑÑали-ÑÑнÑÑÑ-лиÑние-мегабайÑÑ"><span class="changelog-toc__version">v9.154</span><span class="changelog-toc__date">09-08-2026</span><span class="changelog-toc__topic" title="ÐенÑÑ Ð¸ обложки пеÑеÑÑали ÑÑнÑÑÑ Ð»Ð¸Ñние мегабайÑÑ">ÐенÑÑ Ð¸ обложки пеÑеÑÑали ÑÑнÑÑÑ Ð»Ð¸Ñние мегабайÑÑ</span></a></li> <li><a href="#v9153-07-08-2026--анимиÑованнÑе-обложки-оÑкÑÑваÑÑÑÑ-пÑеделÑ-загÑÑзки-понÑÑнÑ-заÑанее"><span class="changelog-toc__version">v9.153</span><span class="changelog-toc__date">07-08-2026</span><span class="changelog-toc__topic" title="ÐнимиÑованнÑе обложки оÑкÑÑваÑÑÑÑ, пÑÐµÐ´ÐµÐ»Ñ Ð·Ð°Ð³ÑÑзки понÑÑÐ½Ñ Ð·Ð°Ñанее">ÐнимиÑованнÑе обложки оÑкÑÑваÑÑÑÑ, пÑÐµÐ´ÐµÐ»Ñ Ð·Ð°Ð³ÑÑзки понÑÑÐ½Ñ Ð·Ð°Ñанее</span></a></li> <li><a href="#v9152-05-08-2026--наÑÑÑойка-«ÑменÑÑиÑÑ-движение»-наконеÑ-ÑабоÑаеÑ"><span class="changelog-toc__version">v9.152</span><span class="changelog-toc__date">05-08-2026</span><span class="changelog-toc__topic" title="ÐаÑÑÑойка «ÑменÑÑиÑÑ Ð´Ð²Ð¸Ð¶ÐµÐ½Ð¸ÐµÂ» Ð½Ð°ÐºÐ¾Ð½ÐµÑ ÑабоÑаеÑ">ÐаÑÑÑойка «ÑменÑÑиÑÑ Ð´Ð²Ð¸Ð¶ÐµÐ½Ð¸ÐµÂ» Ð½Ð°ÐºÐ¾Ð½ÐµÑ ÑабоÑаеÑ</span></a></li> <li><a href="#v9151-26-07-2026--английÑкаÑ-веÑÑиÑ-опиÑаниÑ-длÑ-поиÑка-ÑипогÑаÑика-и-поÑиненнÑе-ÑклонениÑ"><span class="changelog-toc__version">v9.151</span><span class="changelog-toc__date">26-07-2026</span><span class="changelog-toc__topic" title="ÐнглийÑÐºÐ°Ñ Ð²ÐµÑÑиÑ: опиÑÐ°Ð½Ð¸Ñ Ð´Ð»Ñ Ð¿Ð¾Ð¸Ñка, ÑипогÑаÑика и поÑиненнÑе ÑклонениÑ">ÐнглийÑÐºÐ°Ñ Ð²ÐµÑÑиÑ: опиÑÐ°Ð½Ð¸Ñ Ð´Ð»Ñ Ð¿Ð¾Ð¸Ñка, ÑипогÑаÑика и поÑиненнÑе ÑклонениÑ</span></a></li> <li><a href="#v9150-14-07-2026--ÑкоÑоÑÑÑ-жÑÑнал-оÑкÑÑваеÑÑÑ-бÑÑÑÑее-и-ÑаÑÑ
одÑеÑ-менÑÑе-ÑÑаÑика"><span class="changelog-toc__version">v9.150</span><span class="changelog-toc__date">14-07-2026</span><span class="changelog-toc__topic" title="СкоÑоÑÑÑ: жÑÑнал оÑкÑÑваеÑÑÑ Ð±ÑÑÑÑее и ÑаÑÑ
одÑÐµÑ Ð¼ÐµÐ½ÑÑе ÑÑаÑика">СкоÑоÑÑÑ: жÑÑнал оÑкÑÑваеÑÑÑ Ð±ÑÑÑÑее и ÑаÑÑ
одÑÐµÑ Ð¼ÐµÐ½ÑÑе ÑÑаÑика</span></a></li> <li><a href="#v9149-11-07-2026--ÑовмеÑÑнÑй-ÑедакÑоÑ-Ñ-пÑавок-поÑвилиÑÑ-авÑоÑÑ-ÑилÑÑÑÑ-ÑÑали-компакÑнее"><span class="changelog-toc__version">v9.149</span><span class="changelog-toc__date">11-07-2026</span><span class="changelog-toc__topic" title="СовмеÑÑнÑй ÑедакÑоÑ: Ñ Ð¿Ñавок поÑвилиÑÑ Ð°Ð²ÑоÑÑ, ÑилÑÑÑÑ ÑÑали компакÑнее">СовмеÑÑнÑй ÑедакÑоÑ: Ñ Ð¿Ñавок поÑвилиÑÑ Ð°Ð²ÑоÑÑ, ÑилÑÑÑÑ ÑÑали компакÑнее</span></a></li> <li><a href="#v9148-07-07-2026--ÑÑÑкие-каÑÑинки-на-лÑбÑÑ
-ÑкÑанаÑ
-надÑжнаÑ-доÑÑавка-медиа-и-анонимнаÑ-поддеÑжка"><span class="changelog-toc__version">v9.148</span><span class="changelog-toc__date">07-07-2026</span><span class="changelog-toc__topic" title="ЧÑÑкие каÑÑинки на лÑбÑÑ
ÑкÑанаÑ
, надÑÐ¶Ð½Ð°Ñ Ð´Ð¾ÑÑавка медиа и Ð°Ð½Ð¾Ð½Ð¸Ð¼Ð½Ð°Ñ Ð¿Ð¾Ð´Ð´ÐµÑжка">ЧÑÑкие каÑÑинки на лÑбÑÑ
ÑкÑанаÑ
, надÑÐ¶Ð½Ð°Ñ Ð´Ð¾ÑÑавка медиа и Ð°Ð½Ð¾Ð½Ð¸Ð¼Ð½Ð°Ñ Ð¿Ð¾Ð´Ð´ÐµÑжка</span></a></li> <li><a href="#v9147-26-06-2026--каÑÑÑ-ÑмÑÑлов-ÑовмеÑÑное-ÑедакÑиÑование-в-ÑеалÑном-вÑемени-и-полнÑй-английÑкий-инÑеÑÑейÑ"><span class="changelog-toc__version">v9.147</span><span class="changelog-toc__date">26-06-2026</span><span class="changelog-toc__topic" title="ÐаÑÑÑ ÑмÑÑлов: ÑовмеÑÑное ÑедакÑиÑование в ÑеалÑном вÑемени. РполнÑй английÑкий инÑеÑÑейÑ">ÐаÑÑÑ ÑмÑÑлов: ÑовмеÑÑное ÑедакÑиÑование в ÑеалÑном вÑемени. РполнÑй английÑкий инÑеÑÑейÑ</span></a></li> <li><a href="#v9146-04-06-2026--обновлÑннаÑ-поддеÑжка-ин
1ÑÑÑÑменÑÑ-ÑÑаÑей-в-ÑкÑпо-ÑедакÑоÑаÑ
-и-дÑÑжелÑбнÑе-ÑкÑанÑ-Ñбоев"><span class="changelog-toc__version">v9.146</span><span class="changelog-toc__date">04-06-2026</span><span class="changelog-toc__topic" title="ÐбновлÑÐ½Ð½Ð°Ñ Ð¿Ð¾Ð´Ð´ÐµÑжка, инÑÑÑÑменÑÑ ÑÑаÑей в ÑкÑпо-ÑедакÑоÑаÑ
и дÑÑжелÑбнÑе ÑкÑÐ°Ð½Ñ Ñбоев">ÐбновлÑÐ½Ð½Ð°Ñ Ð¿Ð¾Ð´Ð´ÐµÑжка, инÑÑÑÑменÑÑ ÑÑаÑей в ÑкÑпо-ÑедакÑоÑаÑ
и дÑÑжелÑбнÑе ÑкÑÐ°Ð½Ñ Ñбоев</span></a></li> <li><a href="#v9145-17-05-2026--диÑкÑÑÑ-на-английÑком-полноÑÑÑÑ-пеÑеведенÑ-вÑе-ÑекÑÑÑ-инÑеÑÑейÑа"><span class="changelog-toc__version">v9.145</span><span class="changelog-toc__date">17-05-2026</span><span class="changelog-toc__topic" title="ÐиÑкÑÑÑ Ð½Ð° английÑком: полноÑÑÑÑ Ð¿ÐµÑÐµÐ²ÐµÐ´ÐµÐ½Ñ Ð²Ñе ÑекÑÑÑ Ð¸Ð½ÑеÑÑейÑа">ÐиÑкÑÑÑ Ð½Ð° английÑком: полноÑÑÑÑ Ð¿ÐµÑÐµÐ²ÐµÐ´ÐµÐ½Ñ Ð²Ñе ÑекÑÑÑ Ð¸Ð½ÑеÑÑейÑа</span></a></li> <li><a href="#v9144-16-05-2026--обложки-дÑÑаÑ-мобилÑнÑй-инÑеÑÑейÑ-плоÑнее-каÑÑа-ÑайÑа-до-кÑаÑ-жÑÑнала"><span class="changelog-toc__version">v9.144</span><span class="changelog-toc__date">16-05-2026</span><span class="changelog-toc__topic" title="Ðбложки дÑÑаÑ, мобилÑнÑй инÑеÑÑÐµÐ¹Ñ Ð¿Ð»Ð¾Ñнее, каÑÑа ÑайÑа до кÑÐ°Ñ Ð¶ÑÑнала">Ðбложки дÑÑаÑ, мобилÑнÑй инÑеÑÑÐµÐ¹Ñ Ð¿Ð»Ð¾Ñнее, каÑÑа ÑайÑа до кÑÐ°Ñ Ð¶ÑÑнала</span></a></li> <li><a href="#v9143-02-05-2026--маниÑеÑÑ-ÑÑÑаниÑа-голоÑ-диÑкÑÑÑа-пÑоÑив-ÑензÑÑÑ"><span class="changelog-toc__version">v9.143</span><span class="changelog-toc__date">02-05-2026</span><span class="changelog-toc__topic" title="ÐаниÑеÑÑ-ÑÑÑаниÑа: Ð³Ð¾Ð»Ð¾Ñ ÐиÑкÑÑÑа пÑоÑив ÑензÑÑÑ">ÐаниÑеÑÑ-ÑÑÑаниÑа: Ð³Ð¾Ð»Ð¾Ñ ÐиÑкÑÑÑа пÑоÑив ÑензÑÑÑ</span></a></li> <li><a href="#v9142-29-04-2026--ÑÑÑлки-коÑоÑÑе-не-«пÑоÑÑÑ
аÑÑ»-новÑе-видео-и-болÑÑой-seo-апдейÑ"><span class="changelog-toc__version">v9.142</span><span class="changelog-toc__date">29-04-2026</span><span class="changelog-toc__topic" title="СÑÑлки, коÑоÑÑе не «пÑоÑÑÑ
аÑÑ», новÑе видео и болÑÑой SEO-апдейÑ">СÑÑлки, коÑоÑÑе не «пÑоÑÑÑ
аÑÑ», новÑе видео и болÑÑой SEO-апдейÑ</span></a></li> <li><a href="#v9141-27-04-2026--пеÑваÑ-пÑбликаÑиÑ-вÑÑ-пÑоиÑÑ
одиÑ-Ñамо"><span class="changelog-toc__version">v9.141</span><span class="changelog-toc__date">27-04-2026</span><span class="changelog-toc__topic" title="ÐеÑÐ²Ð°Ñ Ð¿ÑбликаÑиÑ: вÑÑ Ð¿ÑоиÑÑ
Ð¾Ð´Ð¸Ñ Ñамо">ÐеÑÐ²Ð°Ñ Ð¿ÑбликаÑиÑ: вÑÑ Ð¿ÑоиÑÑ
Ð¾Ð´Ð¸Ñ Ñамо</span></a></li> <li><a href="#v9140-25-04-2026--невидимое-ÑÑиление-ÑÑндаменÑ-в-поиÑке-и-ÑÑÑойÑивоÑÑÑ-к-ÑбоÑм"><span class="changelog-toc__version">v9.140</span><span class="changelog-toc__date">25-04-2026</span><span class="changelog-toc__topic" title="Ðевидимое ÑÑиление: ÑÑÐ½Ð´Ð°Ð¼ÐµÐ½Ñ Ð² поиÑке и ÑÑÑойÑивоÑÑÑ Ðº ÑбоÑм">Ðевидимое ÑÑиление: ÑÑÐ½Ð´Ð°Ð¼ÐµÐ½Ñ Ð² поиÑке и ÑÑÑойÑивоÑÑÑ Ðº ÑбоÑм</span></a></li> <li><a href="#v9139-23-04-2026--ÑензÑÑнÑй-ÑиÑ-ÑоÑнее-ÑолÑко-гоÑÑдаÑÑÑвеннÑе-ведомÑÑва"><span class="changelog-toc__version">v9.139</span><span class="changelog-toc__date">23-04-2026</span><span class="changelog-toc__topic" title="ЦензÑÑнÑй ÑÐ¸Ñ ÑоÑнее: ÑолÑко гоÑÑдаÑÑÑвеннÑе ведомÑÑва">ЦензÑÑнÑй ÑÐ¸Ñ ÑоÑнее: ÑолÑко гоÑÑдаÑÑÑвеннÑе ведомÑÑва</span></a></li> <li><a href="#v9138-22-04-2026--ÑвÑзка-Ñ-telegram-в-один-Ñап-и-ÑÑплÑй-ÑедакÑоÑ"><span class="changelog-toc__version">v9.138</span><span class="changelog-toc__date">22-04-2026</span><span class="changelog-toc__topic" title="СвÑзка Ñ Telegram в один Ñап и ÑÑплÑй ÑедакÑоÑ">СвÑзка Ñ Telegram в один Ñап и ÑÑплÑй ÑедакÑоÑ</span></a></li> <li><a href="#v9137-19-04-2026--донаÑÑ-без-загадок-код-без-eol"><span class="changelog-toc__version">v9.137</span><span class="changelog-toc__date">19-04-2026</span><span class="changelog-toc__topic" title="ÐонаÑÑ Ð±ÐµÐ· загадок, код без EOL">ÐонаÑÑ Ð±ÐµÐ· загадок, код без EOL</span></a></li> <li><a href="#v9136-17-04-2026--ÑлайдÑоÑ-в-ÑедакÑоÑе-подпиÑи-не-ÑеÑÑÑÑÑÑ-и-одна--на-вÑеÑ
"><span class="changelog-toc__version">v9.136</span><span class="changelog-toc__date">17-04-2026</span><span class="changelog-toc__topic" title="СлайдÑÐ¾Ñ Ð² ÑедакÑоÑе: подпиÑи не ÑеÑÑÑÑÑÑ Ð¸ одна â на вÑеÑ
">СлайдÑÐ¾Ñ Ð² ÑедакÑоÑе: подпиÑи не ÑеÑÑÑÑÑÑ Ð¸ одна â на вÑеÑ
</span></a></li> <li><a href="#v9135-17-04-2026--поÑÑа-диÑкÑÑÑа-на-бÑоне-авÑооÑиÑÑка-ÑиÑÑование-заÑиÑа-оÑ-подделок"><span class="changelog-toc__version">v9.135</span><span class="changelog-toc__date">17-04-2026</span><span class="changelog-toc__topic" title="ÐоÑÑа ÐиÑкÑÑÑа на бÑоне: авÑооÑиÑÑка, ÑиÑÑование, заÑиÑа Ð¾Ñ Ð¿Ð¾Ð´Ð´ÐµÐ»Ð¾Ðº">ÐоÑÑа ÐиÑкÑÑÑа на бÑоне: авÑооÑиÑÑка, ÑиÑÑование, заÑиÑа Ð¾Ñ Ð¿Ð¾Ð´Ð´ÐµÐ»Ð¾Ðº</span></a></li> <li><a href="#v9134-16-04-2026--оÑкÑÑÑÑй-код-длÑ-ÑоÑÑаÑÑиÑ-гайд-ÑаблонÑ-маниÑеÑÑ-ÑазÑабоÑки"><span class="changelog-toc__version">
1v9.134</span><span class="changelog-toc__date">16-04-2026</span><span class="changelog-toc__topic" title="ÐÑкÑÑÑÑй код Ð´Ð»Ñ ÑоÑÑаÑÑиÑ: гайд, ÑаблонÑ, маниÑеÑÑ ÑазÑабоÑки">ÐÑкÑÑÑÑй код Ð´Ð»Ñ ÑоÑÑаÑÑиÑ: гайд, ÑаблонÑ, маниÑеÑÑ ÑазÑабоÑки</span></a></li> <li><a href="#v9133-16-04-2026--пеÑеезд-на-github-бÑÑÑÑее-надÑжнее-Ñдобнее-длÑ-ÑоÑÑаÑÑиÑ"><span class="changelog-toc__version">v9.133</span><span class="changelog-toc__date">16-04-2026</span><span class="changelog-toc__topic" title="ÐеÑеезд на GitHub: бÑÑÑÑее, надÑжнее, Ñдобнее Ð´Ð»Ñ ÑоÑÑаÑÑиÑ">ÐеÑеезд на GitHub: бÑÑÑÑее, надÑжнее, Ñдобнее Ð´Ð»Ñ ÑоÑÑаÑÑиÑ</span></a></li> <li><a href="#v9132-15-04-2026--ÑензÑÑнÑй-ÑиÑ-ÑайÑ-невидим-длÑ-гоÑÑензоÑов"><span class="changelog-toc__version">v9.132</span><span class="changelog-toc__date">15-04-2026</span><span class="changelog-toc__topic" title="ЦензÑÑнÑй ÑиÑ: ÑÐ°Ð¹Ñ Ð½ÐµÐ²Ð¸Ð´Ð¸Ð¼ Ð´Ð»Ñ Ð³Ð¾ÑÑензоÑов">ЦензÑÑнÑй ÑиÑ: ÑÐ°Ð¹Ñ Ð½ÐµÐ²Ð¸Ð´Ð¸Ð¼ Ð´Ð»Ñ Ð³Ð¾ÑÑензоÑов</span></a></li> <li><a href="#v9131-14-04-2026--бÑонÑ-длÑ-плаÑÑоÑмÑ-заÑиÑа-оÑ-аÑак-боÑов-и-блокиÑовок"><span class="changelog-toc__version">v9.131</span><span class="changelog-toc__date">14-04-2026</span><span class="changelog-toc__topic" title="ÐÑÐ¾Ð½Ñ Ð´Ð»Ñ Ð¿Ð»Ð°ÑÑоÑмÑ: заÑиÑа Ð¾Ñ Ð°Ñак, боÑов и блокиÑовок">ÐÑÐ¾Ð½Ñ Ð´Ð»Ñ Ð¿Ð»Ð°ÑÑоÑмÑ: заÑиÑа Ð¾Ñ Ð°Ñак, боÑов и блокиÑовок</span></a></li> <li><a href="#v9130-14-04-2026--новаÑ-«ÑмнаÑ-двеÑÑ»-длÑ-обÑ
ода-блокиÑовок-и-обновление-ÑÑаÑого-зеÑкала"><span class="changelog-toc__version">v9.130</span><span class="changelog-toc__date">14-04-2026</span><span class="changelog-toc__topic" title="ÐÐ¾Ð²Ð°Ñ Â«ÑÐ¼Ð½Ð°Ñ Ð´Ð²ÐµÑÑ» Ð´Ð»Ñ Ð¾Ð±Ñ
ода блокиÑовок и обновление ÑÑаÑого зеÑкала">ÐÐ¾Ð²Ð°Ñ Â«ÑÐ¼Ð½Ð°Ñ Ð´Ð²ÐµÑÑ» Ð´Ð»Ñ Ð¾Ð±Ñ
ода блокиÑовок и обновление ÑÑаÑого зеÑкала</span></a></li> <li><a href="#v9129-14-04-2026--английÑкий-инÑеÑÑейÑ-заглÑÑка-Ñ-Ñ
аÑакÑеÑом-ÑедакÑоÑ-без-гоÑизонÑалÑного-ÑкÑолла"><span class="changelog-toc__version">v9.129</span><span class="changelog-toc__date">14-04-2026</span><span class="changelog-toc__topic" title="ÐнглийÑкий инÑеÑÑейÑ, заглÑÑка Ñ Ñ
аÑакÑеÑом, ÑедакÑÐ¾Ñ Ð±ÐµÐ· гоÑизонÑалÑного ÑкÑолла">ÐнглийÑкий инÑеÑÑейÑ, заглÑÑка Ñ Ñ
аÑакÑеÑом, ÑедакÑÐ¾Ñ Ð±ÐµÐ· гоÑизонÑалÑного ÑкÑолла</span></a></li> <li><a href="#v9128-05-04-2026--зеÑкала-ÑабоÑаÑÑ-ÑообÑениÑ-Ñдобнее-Ñеги-Ñ-rss"><span class="changelog-toc__version">v9.128</span><span class="changelog-toc__date">05-04-2026</span><span class="changelog-toc__topic" title="ÐеÑкала ÑабоÑаÑÑ, ÑообÑÐµÐ½Ð¸Ñ Ñдобнее, Ñеги Ñ RSS">ÐеÑкала ÑабоÑаÑÑ, ÑообÑÐµÐ½Ð¸Ñ Ñдобнее, Ñеги Ñ RSS</span></a></li> <li><a href="#v9127-05-04-2026--ÑведомлениÑ-ÑиÑе-компакÑнее-живее"><span class="changelog-toc__version">v9.127</span><span class="changelog-toc__date">05-04-2026</span><span class="changelog-toc__topic" title="УведомлениÑ: ÑиÑе, компакÑнее, живее">УведомлениÑ: ÑиÑе, компакÑнее, живее</span></a></li> <li><a href="#v9126-04-04-2026--ÑообÑениÑ-Ñдобное-Ñоздание-гÑÑпповÑÑ
-ÑаÑов"><span class="changelog-toc__version">v9.126</span><span class="changelog-toc__date">04-04-2026</span><span class="changelog-toc__topic" title="СообÑениÑ: Ñдобное Ñоздание гÑÑпповÑÑ
ÑаÑов">СообÑениÑ: Ñдобное Ñоздание гÑÑпповÑÑ
ÑаÑов</span></a></li> <li><a href="#v91250-03-04-2026--ÑобÑÑвеннÑе-ÑаÑÑÑлки-и-поÑÑоваÑ-инÑÑаÑÑÑÑкÑÑÑа"><span class="changelog-toc__version">v9.125.0</span><span class="changelog-toc__date">03-04-2026</span><span class="changelog-toc__topic" title="СобÑÑвеннÑе ÑаÑÑÑлки и поÑÑÐ¾Ð²Ð°Ñ Ð¸Ð½ÑÑаÑÑÑÑкÑÑÑа">СобÑÑвеннÑе ÑаÑÑÑлки и поÑÑÐ¾Ð²Ð°Ñ Ð¸Ð½ÑÑаÑÑÑÑкÑÑÑа</span></a></li> <li><a href="#v91240-01-04-2026--discours-connect-импоÑÑ-из-google-docs-и-множеÑÑво-дÑÑгиÑ
-ÑлÑÑÑений"><span class="changelog-toc__version">v9.124.0</span><span class="changelog-toc__date">01-04-2026</span><span class="changelog-toc__topic" title="Discours Connect, импоÑÑ Ð¸Ð· Google Docs и множеÑÑво дÑÑгиÑ
ÑлÑÑÑений">Discours Connect, импоÑÑ Ð¸Ð· Google Docs и множеÑÑво дÑÑгиÑ
ÑлÑÑÑений</span></a></li> <li><a href="#v91230-25-03-2026--ÑпÑинÑ-по-ÑикÑам-ÑÑкоÑение-загÑÑзки-изобÑажений-ÑÑнÑе-оÑибки-и-ÑлÑÑÑение-ux"><span class="changelog-toc__version">v9.123.0</span><span class="changelog-toc__date">25-03-2026</span><span class="changelog-toc__topic" title="СпÑÐ¸Ð½Ñ Ð¿Ð¾ ÑикÑам: ÑÑкоÑение загÑÑзки изобÑажений, ÑÑнÑе оÑибки и ÑлÑÑÑение UX">СпÑÐ¸Ð½Ñ Ð¿Ð¾ ÑикÑам: ÑÑкоÑение загÑÑзки изобÑажений, ÑÑнÑе оÑибки и ÑлÑÑÑение UX</span></a></li> <li><a href="#v91220-24-03-2026--кÑаÑивÑе-обложки-Ñ-видео-и-запÑÑк-плейÑов-Ñ-пеÑвого-клика"><span class="changelog-toc__version">v9.122.0</span><span class="changelog-toc__date">24-03-2026</span><span class="changelog-toc__topic" title="ÐÑаÑивÑе обложки Ñ Ð²Ð¸Ð´ÐµÐ¾ и запÑÑк плейÑов Ñ Ð¿ÐµÑвого клика">ÐÑаÑивÑе обложки Ñ Ð²Ð¸Ð´ÐµÐ¾ и запÑÑк плейÑов Ñ Ð¿ÐµÑвого клика</span></a></li> <li>
1<a href="#v91210-24-03-2026--lighthouse-аÑдиÑ-бÑÑÑÑее-доÑÑÑпнее-надÑжнее"><span class="changelog-toc__version">v9.121.0</span><span class="changelog-toc__date">24-03-2026</span><span class="changelog-toc__topic" title="Lighthouse аÑдиÑ: бÑÑÑÑее, доÑÑÑпнее, надÑжнее">Lighthouse аÑдиÑ: бÑÑÑÑее, доÑÑÑпнее, надÑжнее</span></a></li> <li><a href="#v91200-24-03-2026--иÑоги-болÑÑого-пеÑеÑ
ода"><span class="changelog-toc__version">v9.120.0</span><span class="changelog-toc__date">24-03-2026</span><span class="changelog-toc__topic" title="ÐÑоги болÑÑого пеÑеÑ
ода">ÐÑоги болÑÑого пеÑеÑ
ода</span></a></li> <li><a href="#v91190-24-03-2026--подпиÑки-вÑазнобой-донаÑÑ-Ñ-клавиаÑÑÑÑ-и-ÑиÑина-вмеÑÑо-меÑÑаниÑ"><span class="changelog-toc__version">v9.119.0</span><span class="changelog-toc__date">24-03-2026</span><span class="changelog-toc__topic" title="ÐодпиÑки вÑазнобой, донаÑÑ Ñ ÐºÐ»Ð°Ð²Ð¸Ð°ÑÑÑÑ Ð¸ ÑиÑина вмеÑÑо меÑÑаниÑ">ÐодпиÑки вÑазнобой, донаÑÑ Ñ ÐºÐ»Ð°Ð²Ð¸Ð°ÑÑÑÑ Ð¸ ÑиÑина вмеÑÑо меÑÑаниÑ</span></a></li> <li><a href="#v91180-23-03-2026--баннеÑÑ-веÑнÑлиÑÑ-sticky-sidebar-жив-анимаÑиÑ-пÑи-ÑкÑолле-и-ÑиÑÑÑй-vanilla-js"><span class="changelog-toc__version">v9.118.0</span><span class="changelog-toc__date">23-03-2026</span><span class="changelog-toc__topic" title="ÐаннеÑÑ Ð²ÐµÑнÑлиÑÑ: sticky sidebar жив, анимаÑÐ¸Ñ Ð¿Ñи ÑкÑолле и ÑиÑÑÑй vanilla JS">ÐаннеÑÑ Ð²ÐµÑнÑлиÑÑ: sticky sidebar жив, анимаÑÐ¸Ñ Ð¿Ñи ÑкÑолле и ÑиÑÑÑй vanilla JS</span></a></li> <li><a href="#v91170-23-03-2026--мгновеннÑе-пеÑеÑ
одÑ-маÑовое-ÑÑекло-и-поÑледний-jquery-плаÑÑоÑма-дÑÑиÑ-Ñвободнее"><span class="changelog-toc__version">v9.117.0</span><span class="changelog-toc__date">23-03-2026</span><span class="changelog-toc__topic" title="ÐгновеннÑе пеÑеÑ
одÑ, маÑовое ÑÑекло и поÑледний jQuery: плаÑÑоÑма дÑÑÐ¸Ñ Ñвободнее">ÐгновеннÑе пеÑеÑ
одÑ, маÑовое ÑÑекло и поÑледний jQuery: плаÑÑоÑма дÑÑÐ¸Ñ Ñвободнее</span></a></li> <li><a href="#v91160-23-03-2026--бÑÑÑÑее-доÑÑÑпнее-легÑе-2000-ÑÑÑок-svg-â-18-иконок-jquery-â-бÑаÑзеÑ-каждаÑ-кнопка--Ñ-клавиаÑÑÑÑ"><span class="changelog-toc__version">v9.116.0</span><span class="changelog-toc__date">23-03-2026</span><span class="changelog-toc__topic" title="ÐÑÑÑÑее, доÑÑÑпнее, легÑе: 2000 ÑÑÑок SVG â 18 иконок, jQuery â бÑаÑзеÑ, ÐºÐ°Ð¶Ð´Ð°Ñ ÐºÐ½Ð¾Ð¿ÐºÐ° â Ñ ÐºÐ»Ð°Ð²Ð¸Ð°ÑÑÑÑ">ÐÑÑÑÑее, доÑÑÑпнее, легÑе: 2000 ÑÑÑок SVG â 18 иконок, jQuery â бÑаÑзеÑ, ÐºÐ°Ð¶Ð´Ð°Ñ ÐºÐ½Ð¾Ð¿ÐºÐ° â Ñ ÐºÐ»Ð°Ð²Ð¸Ð°ÑÑÑÑ</span></a></li> <li><a href="#v91150-23-03-2026--единÑй-ÑзÑк-дизайна-ÑокенÑ-вмеÑÑо-магиÑеÑкиÑ
-ÑиÑел-клавиаÑÑÑа-вмеÑÑо-мÑÑи"><span class="changelog-toc__version">v9.115.0</span><span class="changelog-toc__date">23-03-2026</span><span class="changelog-toc__topic" title="ÐдинÑй ÑзÑк дизайна: ÑÐ¾ÐºÐµÐ½Ñ Ð²Ð¼ÐµÑÑо магиÑеÑкиÑ
ÑиÑел, клавиаÑÑÑа вмеÑÑо мÑÑи">ÐдинÑй ÑзÑк дизайна: ÑÐ¾ÐºÐµÐ½Ñ Ð²Ð¼ÐµÑÑо магиÑеÑкиÑ
ÑиÑел, клавиаÑÑÑа вмеÑÑо мÑÑи</span></a></li> <li><a href="#v91140-22-03-2026--оÑ-каждого-пикÑелÑ--полÑза-оÑ-каждого-байÑа--ÑкоÑоÑÑÑ"><span class="changelog-toc__version">v9.114.0</span><span class="changelog-toc__date">22-03-2026</span><span class="changelog-toc__topic" title="ÐÑ ÐºÐ°Ð¶Ð´Ð¾Ð³Ð¾ пикÑÐµÐ»Ñ â полÑза, Ð¾Ñ ÐºÐ°Ð¶Ð´Ð¾Ð³Ð¾ байÑа â ÑкоÑоÑÑÑ">ÐÑ ÐºÐ°Ð¶Ð´Ð¾Ð³Ð¾ пикÑÐµÐ»Ñ â полÑза, Ð¾Ñ ÐºÐ°Ð¶Ð´Ð¾Ð³Ð¾ байÑа â ÑкоÑоÑÑÑ</span></a></li> <li><a href="#v91130-22-03-2026--вÑ
од-без-неÑвов-валидаÑиÑ-по-делÑ-модалка-без-пÑокÑÑÑки-и-Ñквозной-аÑдиÑ-доÑÑÑпноÑÑи"><span class="changelog-toc__version">v9.113.0</span><span class="changelog-toc__date">22-03-2026</span><span class="changelog-toc__topic" title="ÐÑ
од без неÑвов: валидаÑÐ¸Ñ Ð¿Ð¾ делÑ, модалка без пÑокÑÑÑки и Ñквозной аÑÐ´Ð¸Ñ Ð´Ð¾ÑÑÑпноÑÑи">ÐÑ
од без неÑвов: валидаÑÐ¸Ñ Ð¿Ð¾ делÑ, модалка без пÑокÑÑÑки и Ñквозной аÑÐ´Ð¸Ñ Ð´Ð¾ÑÑÑпноÑÑи</span></a></li> <li><a href="#v91120-22-03-2026--bootstrap-пÑоÑай-ÑобÑÑвеннаÑ-дизайн-ÑиÑÑема-вмеÑÑо-ÑÑеймвоÑка-2015-года"><span class="changelog-toc__version">v9.112.0</span><span class="changelog-toc__date">22-03-2026</span><span class="changelog-toc__topic" title="Bootstrap, пÑоÑай: ÑобÑÑÐ²ÐµÐ½Ð½Ð°Ñ Ð´Ð¸Ð·Ð°Ð¹Ð½-ÑиÑÑема вмеÑÑо ÑÑеймвоÑка 2015 года">Bootstrap, пÑоÑай: ÑобÑÑÐ²ÐµÐ½Ð½Ð°Ñ Ð´Ð¸Ð·Ð°Ð¹Ð½-ÑиÑÑема вмеÑÑо ÑÑеймвоÑка 2015 года</span></a></li> <li><a href="#v91110-21-03-2026--ÑвÑзÑ-не-ÑвÑÑÑÑ-ÑмнÑй-reconnect-индикаÑоÑ-ÑоединениÑ-и-аÑдиÑ-доÑÑÑпноÑÑи"><span class="changelog-toc__version">v9.111.0</span><span class="changelog-toc__date">21-03-2026</span><span class="changelog-toc__topic" title="СвÑÐ·Ñ Ð½Ðµ ÑвÑÑÑÑ: ÑмнÑй reconnect, индикаÑÐ¾Ñ ÑÐ¾ÐµÐ´Ð¸Ð½ÐµÐ½Ð¸Ñ Ð¸ аÑÐ´Ð¸Ñ Ð´Ð¾ÑÑÑпноÑÑи">СвÑÐ·Ñ Ð½Ðµ ÑвÑÑÑÑ: ÑмнÑй reconnect, индикаÑÐ¾Ñ ÑÐ¾ÐµÐ´Ð¸Ð½ÐµÐ½Ð¸Ñ Ð¸ аÑÐ´Ð¸Ñ Ð´Ð¾ÑÑÑпноÑÑи</span></a></li> <li><a href="#v91100-20-03-2026--звÑки-Ñведомлений-бейджи-и-ÑеÑновики-коÑоÑÑе-никогда-не-поÑеÑÑÑÑ-ваÑи-ÑекÑÑÑ"><span class="changelog-toc__version">v9.110.0</span><span class="changelog-toc__date">20-03-2026</span><span class="changelog-toc__topic" title="ÐвÑки Ñведомлений, бейджи и ÑеÑновики, коÑоÑÑе никогда не поÑеÑÑÑÑ Ð²Ð°Ñи ÑекÑÑÑ">ÐвÑки Ñведомлений, бейджи и ÑеÑновики, коÑоÑÑе никогда не поÑеÑÑÑÑ Ð²Ð°Ñи ÑекÑÑÑ</span></a></li> <li><a href="#v91090-20-03-2026--ÑÑÑаж-вÑÑÑÑки-playwright-ÑледиÑ-ÑÑобÑ-ниÑего-не-поеÑ
ало"><span class="changelog-toc__version">v9.109.0</span><span class="changelog-toc__date">20-03-2026</span><span class="changelog-toc__topic" title="СÑÑаж вÑÑÑÑки: Playwright ÑледиÑ, ÑÑÐ¾Ð±Ñ Ð½Ð¸Ñего не поеÑ
ало">СÑÑаж вÑÑÑÑки: Playwright ÑледиÑ, ÑÑÐ¾Ð±Ñ Ð½Ð¸Ñего не поеÑ
ало</span></a></li> <li><a href="#v91080-20-03-2026--каÑÑинки-веÑнÑлиÑÑ-ÑкÑÑÑеннÑй-ÑемонÑ-thumbor"><span class="changelog-toc__version">v9.108.0</span><span class="changelog-toc__date">20-03-2026</span><span class="changelog-toc__topic" title="ÐаÑÑинки веÑнÑлиÑÑ: ÑкÑÑÑеннÑй ÑÐµÐ¼Ð¾Ð½Ñ Thumbor">ÐаÑÑинки веÑнÑлиÑÑ: ÑкÑÑÑеннÑй ÑÐµÐ¼Ð¾Ð½Ñ Thumbor</span></a></li> <li><a href="#v91071-20-03-2026--живÑе-ÑведомлениÑ-ddp-подпиÑки-мгновеннÑй-оÑклик-и-real-time-ÑведомлениÑ"><span class="changelog-toc__version">v9.107.1</span><span class="changelog-toc__date">20-03-2026</span><span class="changelog-toc__topic" title="ÐивÑе ÑведомлениÑ: DDP-подпиÑки, мгновеннÑй оÑклик и real-time ÑведомлениÑ">ÐивÑе ÑведомлениÑ: DDP-подпиÑки, мгновеннÑй оÑклик и real-time ÑведомлениÑ</span></a></li> <li><a href="#v91070-20-03-2026--websocket-без-компÑомиÑÑов-наÑÑоÑÑий-real-time-вмеÑÑо-ÑиÑ
ого-fallbackа"><span class="changelog-toc__version">v9.107.0</span><span class="changelog-toc__date">20-03-2026</span><span class="changelog-toc__topic" title="WebSocket без компÑомиÑÑов: наÑÑоÑÑий real-time вмеÑÑо ÑиÑ
ого fallback'а">WebSocket без компÑомиÑÑов: наÑÑоÑÑий real-time вмеÑÑо ÑиÑ
ого fallback'а</span></a></li> <li><a href="#v91060-20-03-2026--ÑемаÑки-Ñ-обÑаÑной-ÑвÑзÑÑ-оÑвеÑÑ-авÑоÑов-ÑÑаÑÑÑÑ-и-ÑмнаÑ-ÑилÑÑÑаÑиÑ-Ñведомлений"><span class="changelog-toc__version">v9.106.0</span><span class="changelog-toc__date">20-03-2026</span><span class="changelog-toc__topic" title="РемаÑки Ñ Ð¾Ð±ÑаÑной ÑвÑзÑÑ: оÑвеÑÑ Ð°Ð²ÑоÑов, ÑÑаÑÑÑÑ Ð¸ ÑÐ¼Ð½Ð°Ñ ÑилÑÑÑаÑÐ¸Ñ Ñведомлений">РемаÑки Ñ Ð¾Ð±ÑаÑной ÑвÑзÑÑ: оÑвеÑÑ Ð°Ð²ÑоÑов, ÑÑаÑÑÑÑ Ð¸ ÑÐ¼Ð½Ð°Ñ ÑилÑÑÑаÑÐ¸Ñ Ñведомлений</span></a></li> <li><a href="#v91050-20-03-2026--ÑеÑновиками-можно-делиÑÑÑÑ-Ñ-пеÑвÑÑ
-Ñлов--Ñ-оÑкÑÑÑиÑ-ÑедакÑоÑа"><span class="changelog-toc__version">v9.105.0</span><span class="changelog-toc__date">20-03-2026</span><span class="changelog-toc__topic" title="ЧеÑновиками можно делиÑÑÑÑ Ñ Ð¿ÐµÑвÑÑ
Ñлов â Ñ Ð¾ÑкÑÑÑÐ¸Ñ ÑедакÑоÑа">ЧеÑновиками можно делиÑÑÑÑ Ñ Ð¿ÐµÑвÑÑ
Ñлов â Ñ Ð¾ÑкÑÑÑÐ¸Ñ ÑедакÑоÑа</span></a></li> <li><a href="#v91040-20-03-2026--пÑоÑиÑано-или-неÑ-ÑпÑавление-ÑÑаÑÑÑом-Ñведомлений"><span class="changelog-toc__version">v9.104.0</span><span class="changelog-toc__date">20-03-2026</span><span class="changelog-toc__topic" title="ÐÑоÑиÑано. Ðли неÑ: ÑпÑавление ÑÑаÑÑÑом Ñведомлений">ÐÑоÑиÑано. Ðли неÑ: ÑпÑавление ÑÑаÑÑÑом Ñведомлений</span></a></li> <li><a href="#v91030-20-03-2026--ÑоÑмÑ-вÑ
ода-надÑжнÑе-ÑведомлениÑ-и-мгновеннÑе-ÑеÑновики"><span class="changelog-toc__version">v9.103.0</span><span class="changelog-toc__date">20-03-2026</span><span class="changelog-toc__topic" title="ФоÑÐ¼Ñ Ð²Ñ
ода, надÑжнÑе ÑÐ²ÐµÐ´Ð¾Ð¼Ð»ÐµÐ½Ð¸Ñ Ð¸ мгновеннÑе ÑеÑновики">ФоÑÐ¼Ñ Ð²Ñ
ода, надÑжнÑе ÑÐ²ÐµÐ´Ð¾Ð¼Ð»ÐµÐ½Ð¸Ñ Ð¸ мгновеннÑе ÑеÑновики</span></a></li> <li><a href="#v91020-20-03-2026--ÑенÑген-длÑ-плаÑÑоÑмÑ-мониÑоÑинг-workerа-подкаÑÑÑ-в-поиÑке-лÑгкий-bootstrap-и-авÑодеплой"><span class="changelog-toc__version">v9.102.0</span><span class="changelog-toc__date">20-03-2026</span><span class="changelog-toc__topic" title="РенÑген Ð´Ð»Ñ Ð¿Ð»Ð°ÑÑоÑмÑ: мониÑоÑинг Worker'а, подкаÑÑÑ Ð² поиÑке, лÑгкий Bootstrap и авÑодеплой">РенÑген Ð´Ð»Ñ Ð¿Ð»Ð°ÑÑоÑмÑ: мониÑоÑинг Worker'а, подкаÑÑÑ Ð² поиÑке, лÑгкий Bootstrap и авÑодеплой</span></a></li> <li><a href="#v91010-19-03-2026--ÑиналÑнÑй-ÑÑÑиÑ
-анимаÑии-ÑакÑилÑноÑÑÑ-и-ÑлиÑовка-пеÑед-вÑÑ
одом"><span class="changelog-toc__version">v9.101.0</span><span class="changelog-toc__date">19-03-2026</span><span class="changelog-toc__topic" title="ФиналÑнÑй ÑÑÑиÑ
: анимаÑии, ÑакÑилÑноÑÑÑ Ð¸ ÑлиÑовка пеÑед вÑÑ
одом">ФиналÑнÑй ÑÑÑиÑ
: анимаÑии, ÑакÑилÑноÑÑÑ Ð¸ ÑлиÑовка пеÑед вÑÑ
одом</span></a></li> <li><a href="#v91000-19-03-2026--ÑведомлениÑ-о-пÑавкаÑ
-пÑоÑÑение-ÑообÑение-sitemaps-rss-ленÑÑ-и-единÑе-дизайн-ÑокенÑ"><span class="changelog-toc__version">v9.100.0</span><span class="changelog-toc__date">19-03-2026</span><span class="changelog-toc__topic" title="Ð£Ð²ÐµÐ´Ð¾Ð¼Ð»ÐµÐ½Ð¸Ñ Ð¾ пÑавкаÑ
, пÑоÑÑение ÑообÑение, sitemaps, rss-ленÑÑ Ð¸ единÑе дизайн-ÑокенÑ">Ð£Ð²ÐµÐ´Ð¾Ð¼Ð»ÐµÐ½Ð¸Ñ Ð¾ пÑавкаÑ
, пÑоÑÑение ÑообÑение, sitemaps, rss-ленÑÑ Ð¸ единÑе дизайн-ÑокенÑ</span></a></li> <li><a href="#v9990-19-03-2026--поиÑковаÑ-опÑимизаÑиÑ-ÑÑндаменÑалÑнаÑ-ÑевизиÑ-seo-ÑиÑÑемÑ"><span class="changelog-toc__version">v9.99.0</span><span class="changelog-toc__date">19-03-2026</span><span class="changelog-toc__topic" title="ÐоиÑÐºÐ¾Ð²Ð°Ñ Ð¾Ð¿ÑимизаÑиÑ: ÑÑндаменÑалÑÐ½Ð°Ñ ÑÐµÐ²Ð¸Ð·Ð¸Ñ SEO-ÑиÑÑемÑ">ÐоиÑÐºÐ¾Ð²Ð°Ñ Ð¾Ð¿ÑимизаÑиÑ: ÑÑндаменÑалÑÐ½Ð°Ñ ÑÐµÐ²Ð¸Ð·Ð¸Ñ SEO-ÑиÑÑемÑ</span></a></li> <li><a href="#v9980-18-03-2026--ÑведомлениÑ-живÑе-аваÑаÑки-вÑемÑ-и-Ñ
ÑонологиÑ"><span class="changelog-toc__version">v9.98.0</span><span class="changelog-toc__date">18-03-2026</span><span class="changelog-toc__topic" title="УведомлениÑ: живÑе аваÑаÑки, вÑÐµÐ¼Ñ Ð¸ Ñ
ÑонологиÑ">УведомлениÑ: живÑе аваÑаÑки, вÑÐµÐ¼Ñ Ð¸ Ñ
ÑонологиÑ</span></a></li> <li><a href="#v9970-18-03-2026--ÑÑÑаниÑа-ÑемÑ-ÑилÑÑÑÑ-аваÑаÑки-и-кнопка-«напиÑаÑÑ»"><span class="changelog-toc__version">v9.97.0</span><span class="changelog-toc__date">18-03-2026</span><span class="changelog-toc__topic" title="СÑÑаниÑа ÑемÑ: ÑилÑÑÑÑ, аваÑаÑки и кнопка «ÐапиÑаÑÑ»">СÑÑаниÑа ÑемÑ: ÑилÑÑÑÑ, аваÑаÑки и кнопка «ÐапиÑаÑÑ»</span></a></li> <li><a href="#v9960-18-03-2026--ÑемÑ-ÑилÑÑÑÑ-плавно-обÑезка-без-ÑÑеÑек-ÑиÑÑÑй-пÑод"><span class="changelog-toc__version">v9.96.0</span><span class="changelog-toc__date">18-03-2026</span><span class="changelog-toc__topic" title="ТемÑ: ÑилÑÑÑÑ Ð¿Ð»Ð°Ð²Ð½Ð¾, обÑезка без ÑÑеÑек, ÑиÑÑÑй пÑод">ТемÑ: ÑилÑÑÑÑ Ð¿Ð»Ð°Ð²Ð½Ð¾, обÑезка без ÑÑеÑек, ÑиÑÑÑй пÑод</span></a></li> <li>
1<a href="#v9950-18-03-2026--ÑедакÑоÑ-молниÑ-ÑмнаÑ-ÑоÑма-кÑепÑе-заÑиÑа"><span class="changelog-toc__version">v9.95.0</span><span class="changelog-toc__date">18-03-2026</span><span class="changelog-toc__topic" title="РедакÑоÑ-молниÑ, ÑÐ¼Ð½Ð°Ñ ÑоÑма, кÑепÑе заÑиÑа">РедакÑоÑ-молниÑ, ÑÐ¼Ð½Ð°Ñ ÑоÑма, кÑепÑе заÑиÑа</span></a></li> <li><a href="#v9940-18-03-2026--надÑжноÑÑÑ-безопаÑноÑÑÑ-доÑÑÑпноÑÑÑ"><span class="changelog-toc__version">v9.94.0</span><span class="changelog-toc__date">18-03-2026</span><span class="changelog-toc__topic" title="ÐадÑжноÑÑÑ, безопаÑноÑÑÑ, доÑÑÑпноÑÑÑ">ÐадÑжноÑÑÑ, безопаÑноÑÑÑ, доÑÑÑпноÑÑÑ</span></a></li> <li><a href="#v9930-18-03-2026--Ñ
лебнÑе-кÑоÑки-в-поиÑке-и-полиÑовка-ÑедакÑоÑа"><span class="changelog-toc__version">v9.93.0</span><span class="changelog-toc__date">18-03-2026</span><span class="changelog-toc__topic" title="ХлебнÑе кÑоÑки в поиÑке и полиÑовка ÑедакÑоÑа">ХлебнÑе кÑоÑки в поиÑке и полиÑовка ÑедакÑоÑа</span></a></li> <li><a href="#v9920-18-03-2026--ÑмбедÑ-конеÑ-ÑеÑого-пÑÑмоÑголÑника-lite-youtube-и-полиÑовка"><span class="changelog-toc__version">v9.92.0</span><span class="changelog-toc__date">18-03-2026</span><span class="changelog-toc__topic" title="ÐмбедÑ: ÐºÐ¾Ð½ÐµÑ ÑеÑого пÑÑмоÑголÑника, lite-YouTube и полиÑовка">ÐмбедÑ: ÐºÐ¾Ð½ÐµÑ ÑеÑого пÑÑмоÑголÑника, lite-YouTube и полиÑовка</span></a></li> <li><a href="#v9910-17-03-2026--ÑедакÑоÑ-квизÑ-новÑе-позиÑии-каÑÑинок-ÑÑÑелки-в-поиÑке"><span class="changelog-toc__version">v9.91.0</span><span class="changelog-toc__date">17-03-2026</span><span class="changelog-toc__topic" title="РедакÑоÑ: квизÑ, новÑе позиÑии каÑÑинок, ÑÑÑелки в поиÑке">РедакÑоÑ: квизÑ, новÑе позиÑии каÑÑинок, ÑÑÑелки в поиÑке</span></a></li> <li><a href="#v9900-17-03-2026--оÑлайн-без-паники-кÑаÑиваÑ-заглÑÑка-ÑмнÑй-ÑеконнекÑ-ÑиÑ
ие-обновлениÑ"><span class="changelog-toc__version">v9.90.0</span><span class="changelog-toc__date">17-03-2026</span><span class="changelog-toc__topic" title="ÐÑлайн без паники: кÑаÑÐ¸Ð²Ð°Ñ Ð·Ð°Ð³Ð»ÑÑка, ÑмнÑй ÑеконнекÑ, ÑиÑ
ие обновлениÑ">ÐÑлайн без паники: кÑаÑÐ¸Ð²Ð°Ñ Ð·Ð°Ð³Ð»ÑÑка, ÑмнÑй ÑеконнекÑ, ÑиÑ
ие обновлениÑ</span></a></li> <li><a href="#v9890-17-03-2026--tailwind-css-ÑÑндаменÑ-дизайн-ÑиÑÑемÑ"><span class="changelog-toc__version">v9.89.0</span><span class="changelog-toc__date">17-03-2026</span><span class="changelog-toc__topic" title="Tailwind CSS: ÑÑÐ½Ð´Ð°Ð¼ÐµÐ½Ñ Ð´Ð¸Ð·Ð°Ð¹Ð½-ÑиÑÑемÑ">Tailwind CSS: ÑÑÐ½Ð´Ð°Ð¼ÐµÐ½Ñ Ð´Ð¸Ð·Ð°Ð¹Ð½-ÑиÑÑемÑ</span></a></li> <li><a href="#v9880-17-03-2026--seo-гигиена-ÑиÑе-индекÑ-бÑÑÑÑее-поиÑк-менÑÑе-мÑÑоÑа"><span class="changelog-toc__version">v9.88.0</span><span class="changelog-toc__date">17-03-2026</span><span class="changelog-toc__topic" title="SEO-гигиена: ÑиÑе индекÑ, бÑÑÑÑее поиÑк, менÑÑе мÑÑоÑа">SEO-гигиена: ÑиÑе индекÑ, бÑÑÑÑее поиÑк, менÑÑе мÑÑоÑа</span></a></li> <li><a href="#v9870-17-03-2026--Ñежим-пÑавок-обновление-«бÑло-â-ÑÑало»"><span class="changelog-toc__version">v9.87.0</span><span class="changelog-toc__date">17-03-2026</span><span class="changelog-toc__topic" title="Режим пÑавок: обновление «бÑло â ÑÑало»">Режим пÑавок: обновление «бÑло â ÑÑало»</span></a></li> <li><a href="#v9860-17-03-2026--генеÑалÑнаÑ-ÑбоÑка-3-379-ÑÑаÑей-пÑиведенÑ-в-поÑÑдок"><span class="changelog-toc__version">v9.86.0</span><span class="changelog-toc__date">17-03-2026</span><span class="changelog-toc__topic" title="ÐенеÑалÑÐ½Ð°Ñ ÑбоÑка: 3 379 ÑÑаÑей пÑÐ¸Ð²ÐµÐ´ÐµÐ½Ñ Ð² поÑÑдок">ÐенеÑалÑÐ½Ð°Ñ ÑбоÑка: 3 379 ÑÑаÑей пÑÐ¸Ð²ÐµÐ´ÐµÐ½Ñ Ð² поÑÑдок</span></a></li> <li><a href="#v9850-17-03-2026--оÑлайн-ÑÑÑойÑивоÑÑÑ-и-ÑÑкоÑение-загÑÑзки"><span class="changelog-toc__version">v9.85.0</span><span class="changelog-toc__date">17-03-2026</span><span class="changelog-toc__topic" title="ÐÑлайн-ÑÑÑойÑивоÑÑÑ Ð¸ ÑÑкоÑение загÑÑзки">ÐÑлайн-ÑÑÑойÑивоÑÑÑ Ð¸ ÑÑкоÑение загÑÑзки</span></a></li> <li><a href="#v9840-17-03-2026--кадÑиÑование-изобÑажений-пÑÑмо-в-ÑедакÑоÑе"><span class="changelog-toc__version">v9.84.0</span><span class="changelog-toc__date">17-03-2026</span><span class="changelog-toc__topic" title="ÐадÑиÑование изобÑажений пÑÑмо в ÑедакÑоÑе">ÐадÑиÑование изобÑажений пÑÑмо в ÑедакÑоÑе</span></a></li> <li><a href="#v9830-16-03-2026--pdf-книги-внÑÑÑи-ÑÑаÑей"><span class="changelog-toc__version">v9.83.0</span><span class="changelog-toc__date">16-03-2026</span><span class="changelog-toc__topic" title="PDF-книги внÑÑÑи ÑÑаÑей">PDF-книги внÑÑÑи ÑÑаÑей</span></a></li> <li><a href="#v9820-16-03-2026--маÑÑовÑкий-маÑÑ-320-Ñайлов-ÑеÑакÑоÑинга"><span class="changelog-toc__version">v9.82.0</span><span class="changelog-toc__date">16-03-2026</span><span class="changelog-toc__topic" title="ÐаÑÑовÑкий маÑÑ: 320 Ñайлов ÑеÑакÑоÑинга">ÐаÑÑовÑкий маÑÑ: 320 Ñайлов ÑеÑакÑоÑинга</span></a></li> <li><a href="#v9810-16-03-2026--scribd-bandcamp-и-ÑиÑина-в-конÑоли"><span class="changelog-toc__version">v9.81.0</span><span class="changelog-toc__date">16-03-2026</span><span class="changelog-toc__topic" title="Scribd, Bandcamp и ÑиÑина в конÑоли">Scribd, Bandcamp и ÑиÑина в конÑоли</span></a></li> <li><a href="#v9800-16-03-2026--под-капоÑом-плаÑÑоÑма-ÑÑиÑÑÑ-жиÑÑ-без-Ñамок"><span class="changelog-toc__version">v9.80.0</span><span class="changelog-toc__date">16-03-2026</span><span class="changelog-toc__topic" title="Ðод капоÑом: плаÑÑоÑма ÑÑиÑÑÑ Ð¶Ð¸ÑÑ Ð±ÐµÐ· Ñамок">Ðод капоÑом: плаÑÑоÑма ÑÑиÑÑÑ Ð¶Ð¸ÑÑ Ð±ÐµÐ· Ñамок</span></a></li> <li><a href="#v9790-16-03-2026--ÑоÑмаÑиÑование-в-ÑемаÑкаÑ
"><span class="changelog-toc__version">v9.79.0</span><span class="changelog-toc__date">16-03-2026</span><span class="changelog-toc__topic" title="ФоÑмаÑиÑование в ÑемаÑкаÑ
">ФоÑмаÑиÑование в ÑемаÑкаÑ
</span></a></li> <li><a href="#v9780-15-03-2026--генеÑалÑнаÑ-ÑбоÑка-ÑÑаÑÑе-ÑÑаÑÑи-обÑеÑаÑÑ-новÑÑ-ÑазмеÑкÑ"><span class="changelog-toc__version">v9.78.0</span><span class="changelog-toc__date">15-03-2026</span><span class="changelog-toc__topic" title="ÐенеÑалÑÐ½Ð°Ñ ÑбоÑка: ÑÑаÑÑе ÑÑаÑÑи обÑеÑаÑÑ Ð½Ð¾Ð²ÑÑ ÑазмеÑкÑ">ÐенеÑалÑÐ½Ð°Ñ ÑбоÑка: ÑÑаÑÑе ÑÑаÑÑи обÑеÑаÑÑ Ð½Ð¾Ð²ÑÑ ÑазмеÑкÑ</span></a></li> <li><a href="#v9770-15-03-2026--без-вÑпÑÑек-ÑÑаÑÑи-оÑкÑÑваÑÑÑÑ-как-книга"><span class="changelog-toc__version">v9.77.0</span><span class="changelog-toc__date">15-03-2026</span><span class="changelog-toc__topic" title="Ðез вÑпÑÑек: ÑÑаÑÑи оÑкÑÑваÑÑÑÑ ÐºÐ°Ðº книга">Ðез вÑпÑÑек: ÑÑаÑÑи оÑкÑÑваÑÑÑÑ ÐºÐ°Ðº книга</span></a></li> <li><a href="#v9760-15-03-2026--embed-them-all-вÑÑавлÑйÑе-ÑÑо-Ñгодно-оÑкÑда-Ñгодно"><span class="changelog-toc__version">v9.76.0</span><span class="changelog-toc__date">15-03-2026</span><span class="changelog-toc__topic" title="Embed Them All: вÑÑавлÑйÑе ÑÑо Ñгодно, оÑкÑда Ñгодно">Embed Them All: вÑÑавлÑйÑе ÑÑо Ñгодно, оÑкÑда Ñгодно</span></a></li> <li><a href="#v9750-15-03-2026--ÑелизнÑй-hardening-каÑÑоÑки-авÑоÑизаÑиÑ-и-мелоÑи-коÑоÑÑе-ÑеÑаÑÑ"><span class="changelog-toc__version">v9.75.0</span><span class="changelog-toc__date">15-03-2026</span><span class="changelog-toc__topic" title="РелизнÑй hardening: каÑÑоÑки, авÑоÑизаÑÐ¸Ñ Ð¸ мелоÑи, коÑоÑÑе ÑеÑаÑÑ">РелизнÑй hardening: каÑÑоÑки, авÑоÑизаÑÐ¸Ñ Ð¸ мелоÑи, коÑоÑÑе ÑеÑаÑÑ</span></a></li> <li><a href="#v9740-15-03-2026--код-коÑоÑÑй-не-меÑаеÑ-ÑиÑаÑÑ"><span class="changelog-toc__version">v9.74.0</span><span class="changelog-toc__date">15-03-2026</span><span class="changelog-toc__topic" title="Ðод, коÑоÑÑй не меÑÐ°ÐµÑ ÑиÑаÑÑ">Ðод, коÑоÑÑй не меÑÐ°ÐµÑ ÑиÑаÑÑ</span></a></li> <li><a href="#v9730-14-03-2026--бÑÑÑÑее-надÑжнее-доÑÑÑпнее"><span class="changelog-toc__version">v9.73.0</span><span class="changelog-toc__date">14-03-2026</span>
1<span class="changelog-toc__topic" title="ÐÑÑÑÑее, надÑжнее, доÑÑÑпнее">ÐÑÑÑÑее, надÑжнее, доÑÑÑпнее</span></a></li> <li><a href="#v9720-14-03-2026--пÑизÑаки-Ñведомлений-изгнанÑ-и-обезвÑеженÑ"><span class="changelog-toc__version">v9.72.0</span><span class="changelog-toc__date">14-03-2026</span><span class="changelog-toc__topic" title="ÐÑизÑаки Ñведомлений: Ð¸Ð·Ð³Ð½Ð°Ð½Ñ Ð¸ обезвÑеженÑ">ÐÑизÑаки Ñведомлений: Ð¸Ð·Ð³Ð½Ð°Ð½Ñ Ð¸ обезвÑеженÑ</span></a></li> <li><a href="#v9710-14-03-2026--под-капоÑом-плаÑÑоÑма-ÑÑиÑÑÑ-жиÑÑ-без-ÑÑеймвоÑка"><span class="changelog-toc__version">v9.71.0</span><span class="changelog-toc__date">14-03-2026</span><span class="changelog-toc__topic" title="Ðод капоÑом: плаÑÑоÑма ÑÑиÑÑÑ Ð¶Ð¸ÑÑ Ð±ÐµÐ· ÑÑеймвоÑка">Ðод капоÑом: плаÑÑоÑма ÑÑиÑÑÑ Ð¶Ð¸ÑÑ Ð±ÐµÐ· ÑÑеймвоÑка</span></a></li> <li><a href="#v9700-14-03-2026--ÑведомлениÑ-ниÑего-не-ÑеÑÑеÑÑÑ-вÑÑ-наÑ
одиÑÑÑ"><span class="changelog-toc__version">v9.70.0</span><span class="changelog-toc__date">14-03-2026</span><span class="changelog-toc__topic" title="УведомлениÑ: ниÑего не ÑеÑÑеÑÑÑ, вÑÑ Ð½Ð°Ñ
одиÑÑÑ">УведомлениÑ: ниÑего не ÑеÑÑеÑÑÑ, вÑÑ Ð½Ð°Ñ
одиÑÑÑ</span></a></li> <li><a href="#v9690-13-03-2026--ÑиÑе-едеÑÑ-далÑÑе-бÑдеÑÑ-оÑ
оÑа-на-пÑизÑаков-sentry"><span class="changelog-toc__version">v9.69.0</span><span class="changelog-toc__date">13-03-2026</span><span class="changelog-toc__topic" title="ТиÑе едеÑÑ, далÑÑе бÑдеÑÑ: оÑ
оÑа на пÑизÑаков Sentry">ТиÑе едеÑÑ, далÑÑе бÑдеÑÑ: оÑ
оÑа на пÑизÑаков Sentry</span></a></li> <li><a href="#v9680-13-03-2026--импоÑÑÑкÑпоÑÑ-пиÑиÑе-где-Ñдобно-пÑбликÑйÑе-на-диÑкÑÑÑе"><span class="changelog-toc__version">v9.68.0</span><span class="changelog-toc__date">13-03-2026</span><span class="changelog-toc__topic" title="ÐмпоÑÑ/ÑкÑпоÑÑ: пиÑиÑе где Ñдобно, пÑбликÑйÑе на ÐиÑкÑÑÑе">ÐмпоÑÑ/ÑкÑпоÑÑ: пиÑиÑе где Ñдобно, пÑбликÑйÑе на ÐиÑкÑÑÑе</span></a></li> <li><a href="#v9670-13-03-2026--поиÑк-авÑоÑов-наÑ
одиÑ-вÑеÑ
-а-не-ÑолÑко-пеÑвÑÑ
-пÑÑÑдеÑÑÑ"><span class="changelog-toc__version">v9.67.0</span><span class="changelog-toc__date">13-03-2026</span><span class="changelog-toc__topic" title="ÐоиÑк авÑоÑов: наÑ
Ð¾Ð´Ð¸Ñ Ð²ÑеÑ
, а не ÑолÑко пеÑвÑÑ
пÑÑÑдеÑÑÑ">ÐоиÑк авÑоÑов: наÑ
Ð¾Ð´Ð¸Ñ Ð²ÑеÑ
, а не ÑолÑко пеÑвÑÑ
пÑÑÑдеÑÑÑ</span></a></li> <li><a href="#v9660-13-03-2026--Ñмодзи-в-ÑообÑениÑÑ
-одна-кнопка--64-ÑмоÑии"><span class="changelog-toc__version">v9.66.0</span><span class="changelog-toc__date">13-03-2026</span><span class="changelog-toc__topic" title="Ðмодзи в ÑообÑениÑÑ
: одна кнопка â 64 ÑмоÑии">Ðмодзи в ÑообÑениÑÑ
: одна кнопка â 64 ÑмоÑии</span></a></li> <li><a href="#v9650-13-03-2026--ctrlh-найÑи-и-замениÑÑ-пÑÑмо-в-ÑедакÑоÑе"><span class="changelog-toc__version">v9.65.0</span><span class="changelog-toc__date">13-03-2026</span><span class="changelog-toc__topic" title="Ctrl+H: найÑи и замениÑÑ Ð¿ÑÑмо в ÑедакÑоÑе">Ctrl+H: найÑи и замениÑÑ Ð¿ÑÑмо в ÑедакÑоÑе</span></a></li> <li><a href="#v9640-12-03-2026--один-retry-на-вÑеÑ
-оÑибки-болÑÑе-не-ÑеÑÑÑÑÑÑ-в-пеÑеводе"><span class="changelog-toc__version">v9.64.0</span><span class="changelog-toc__date">12-03-2026</span><span class="changelog-toc__topic" title="Ðдин retry на вÑеÑ
: оÑибки болÑÑе не ÑеÑÑÑÑÑÑ Ð² пеÑеводе">Ðдин retry на вÑеÑ
: оÑибки болÑÑе не ÑеÑÑÑÑÑÑ Ð² пеÑеводе</span></a></li> <li><a href="#v9630-12-03-2026--минÑÑ-90-кб-ui-bootstrap-на-покой"><span class="changelog-toc__version">v9.63.0</span><span class="changelog-toc__date">12-03-2026</span><span class="changelog-toc__topic" title="ÐинÑÑ 90 ÐÐ: ui-bootstrap на покой">ÐинÑÑ 90 ÐÐ: ui-bootstrap на покой</span></a></li> <li><a href="#v9620-12-03-2026--ctrls-длÑ-ÑеÑновиков-поиÑк-в-«ÑиÑайÑе-Ñакже»-и-доведÑннÑе-до-блеÑка-гÑÑпповÑе-ÑаÑÑ"><span class="changelog-toc__version">v9.62.0</span><span class="changelog-toc__date">12-03-2026</span><span class="changelog-toc__topic" title="Ctrl+S Ð´Ð»Ñ ÑеÑновиков, поиÑк в «ЧиÑайÑе Ñакже» и доведÑннÑе до блеÑка гÑÑпповÑе ÑаÑÑ">Ctrl+S Ð´Ð»Ñ ÑеÑновиков, поиÑк в «ЧиÑайÑе Ñакже» и доведÑннÑе до блеÑка гÑÑпповÑе ÑаÑÑ</span></a></li> <li><a href="#v9610-12-03-2026--csp-мониÑоÑинг-глÑбокий-focus-management-и-заÑиÑа-оÑ-гонок-в-ÑообÑениÑÑ
"><span class="changelog-toc__version">v9.61.0</span><span class="changelog-toc__date">12-03-2026</span><span class="changelog-toc__topic" title="CSP-мониÑоÑинг, глÑбокий focus management и заÑиÑа Ð¾Ñ Ð³Ð¾Ð½Ð¾Ðº в ÑообÑениÑÑ
">CSP-мониÑоÑинг, глÑбокий focus management и заÑиÑа Ð¾Ñ Ð³Ð¾Ð½Ð¾Ðº в ÑообÑениÑÑ
</span></a></li> <li><a href="#v9600-12-03-2026--авÑоÑоÑ
Ñанение-в-иÑкÑÑÑÑве-ÑмнÑе-оÑибки-и-ловÑÑки-ÑокÑÑа"><span class="changelog-toc__version">v9.60.0</span><span class="changelog-toc__date">12-03-2026</span><span class="changelog-toc__topic" title="ÐвÑоÑоÑ
Ñанение в ÐÑкÑÑÑÑве, ÑмнÑе оÑибки и ловÑÑки ÑокÑÑа">ÐвÑоÑоÑ
Ñанение в ÐÑкÑÑÑÑве, ÑмнÑе оÑибки и ловÑÑки ÑокÑÑа</sp
1an></a></li> <li><a href="#v9590-12-03-2026--гÑÑпповÑе-ÑаÑÑ-доведенÑ-до-Ñма-аваÑаÑÑ-наÑÑÑойки-надÑжноÑÑÑ"><span class="changelog-toc__version">v9.59.0</span><span class="changelog-toc__date">12-03-2026</span><span class="changelog-toc__topic" title="ÐÑÑпповÑе ÑаÑÑ Ð´Ð¾Ð²ÐµÐ´ÐµÐ½Ñ Ð´Ð¾ Ñма: аваÑаÑÑ, наÑÑÑойки, надÑжноÑÑÑ">ÐÑÑпповÑе ÑаÑÑ Ð´Ð¾Ð²ÐµÐ´ÐµÐ½Ñ Ð´Ð¾ Ñма: аваÑаÑÑ, наÑÑÑойки, надÑжноÑÑÑ</span></a></li> <li><a href="#v9580-12-03-2026--ÑаÑÑÑлки-нового-ÑÑовнÑ-ÑмнаÑ-доÑÑавка-ÑоÑнаÑ-аналиÑика-заÑиÑа-оÑ-Ñбоев"><span class="changelog-toc__version">v9.58.0</span><span class="changelog-toc__date">12-03-2026</span><span class="changelog-toc__topic" title="РаÑÑÑлки нового ÑÑовнÑ: ÑÐ¼Ð½Ð°Ñ Ð´Ð¾ÑÑавка, ÑоÑÐ½Ð°Ñ Ð°Ð½Ð°Ð»Ð¸Ñика, заÑиÑа Ð¾Ñ Ñбоев">РаÑÑÑлки нового ÑÑовнÑ: ÑÐ¼Ð½Ð°Ñ Ð´Ð¾ÑÑавка, ÑоÑÐ½Ð°Ñ Ð°Ð½Ð°Ð»Ð¸Ñика, заÑиÑа Ð¾Ñ Ñбоев</span></a></li> <li><a href="#v9570-11-03-2026--база-ÑеÑвиÑа-ÑаÑÑÑлки-гоÑова-пеÑÑонализаÑиÑ-ÑпÑавление-подпиÑками-ÑÑекинг"><span class="changelog-toc__version">v9.57.0</span><span class="changelog-toc__date">11-03-2026</span><span class="changelog-toc__topic" title="Ðаза ÑеÑвиÑа ÑаÑÑÑлки гоÑова: пеÑÑонализаÑиÑ, ÑпÑавление подпиÑками, ÑÑекинг">Ðаза ÑеÑвиÑа ÑаÑÑÑлки гоÑова: пеÑÑонализаÑиÑ, ÑпÑавление подпиÑками, ÑÑекинг</span></a></li> <li><a href="#v9560-11-03-2026--обновление-ÑиÑÑемÑ-подпиÑок-мгновеннÑй-оÑклик-ÑоÑнÑе-ÑÑеÑÑики-и-дÑÑгие-ÑикÑÑ"><span class="changelog-toc__version">v9.56.0</span><span class="changelog-toc__date">11-03-2026</span><span class="changelog-toc__topic" title="Ðбновление ÑиÑÑÐµÐ¼Ñ Ð¿Ð¾Ð´Ð¿Ð¸Ñок: мгновеннÑй оÑклик, ÑоÑнÑе ÑÑеÑÑики и дÑÑгие ÑикÑÑ">Ðбновление ÑиÑÑÐµÐ¼Ñ Ð¿Ð¾Ð´Ð¿Ð¸Ñок: мгновеннÑй оÑклик, ÑоÑнÑе ÑÑеÑÑики и дÑÑгие ÑикÑÑ</span></a></li> <li><a href="#v9550-11-03-2026--гÑÑпповÑе-ÑаÑÑ-ÑиÑаÑÑ-ÑпÑавление-ÑÑаÑÑниками"><span class="changelog-toc__version">v9.55.0</span><span class="changelog-toc__date">11-03-2026</span><span class="changelog-toc__topic" title="ÐÑÑпповÑе ÑаÑÑ, ÑиÑаÑÑ, ÑпÑавление ÑÑаÑÑниками">ÐÑÑпповÑе ÑаÑÑ, ÑиÑаÑÑ, ÑпÑавление ÑÑаÑÑниками</span></a></li> <li><a href="#v9540-11-03-2026--пÑоÑай-bower-вÑÑ-на-npm-модалка-веÑнÑлаÑÑ-наÑÑÑойки-под-заÑиÑой"><span class="changelog-toc__version">v9.54.0</span><span class="changelog-toc__date">11-03-2026</span><span class="changelog-toc__topic" title="ÐÑоÑай, Bower: вÑÑ Ð½Ð° npm, модалка веÑнÑлаÑÑ, наÑÑÑойки под заÑиÑой">ÐÑоÑай, Bower: вÑÑ Ð½Ð° npm, модалка веÑнÑлаÑÑ, наÑÑÑойки под заÑиÑой</span></a></li> <li><a href="#v9530-11-03-2026--каÑÑинки-вÑегда-ÑеÑез-https-storybook-на-диеÑе-деплой-одной-командой"><span class="changelog-toc__version">v9.53.0</span><span class="changelog-toc__date">11-03-2026</span><span class="changelog-toc__topic" title="ÐаÑÑинки вÑегда ÑеÑез HTTPS, Storybook на диеÑе, деплой одной командой">ÐаÑÑинки вÑегда ÑеÑез HTTPS, Storybook на диеÑе, деплой одной командой</span></a></li> <li><a href="#v9520-11-03-2026--окно-вÑ
ода-леÑаеÑ-storybook-ÑаÑÑвÑл-админка-не-ÑеÑÑеÑ-пÑавки"><span class="changelog-toc__version">v9.52.0</span><span class="changelog-toc__date">11-03-2026</span><span class="changelog-toc__topic" title="Ðкно вÑ
ода леÑаеÑ, Storybook ÑаÑÑвÑл, админка не ÑеÑÑÐµÑ Ð¿Ñавки">Ðкно вÑ
ода леÑаеÑ, Storybook ÑаÑÑвÑл, админка не ÑеÑÑÐµÑ Ð¿Ñавки</span></a></li> <li><a href="#v9510-11-03-2026--мгновеннÑе-пеÑеÑ
одÑ-и-комменÑаÑии-без-гонок"><span class="changelog-toc__version">v9.51.0</span><span class="changelog-toc__date">11-03-2026</span><span class="changelog-toc__topic" title="ÐгновеннÑе пеÑеÑ
Ð¾Ð´Ñ Ð¸ комменÑаÑии без гонок">ÐгновеннÑе пеÑеÑ
Ð¾Ð´Ñ Ð¸ комменÑаÑии без гонок</span></a></li> <li><a href="#v9500-11-03-2026--пÑоÑай-restangular-плаÑÑоÑма-ÑбÑоÑила-баллаÑÑ"><span class="changelog-toc__version">v9.50.0</span><span class="changelog-toc__date">11-03-2026</span><span class="changelog-toc__topic" title="ÐÑоÑай, Restangular: плаÑÑоÑма ÑбÑоÑила баÐ
1»Ð»Ð°ÑÑ">ÐÑоÑай, Restangular: плаÑÑоÑма ÑбÑоÑила баллаÑÑ</span></a></li> <li><a href="#v9490-11-03-2026--ÑиналÑнаÑ-полиÑовка-пеÑед-болÑÑим-Ñелизом"><span class="changelog-toc__version">v9.49.0</span><span class="changelog-toc__date">11-03-2026</span><span class="changelog-toc__topic" title="ФиналÑÐ½Ð°Ñ Ð¿Ð¾Ð»Ð¸Ñовка пеÑед болÑÑим Ñелизом">ФиналÑÐ½Ð°Ñ Ð¿Ð¾Ð»Ð¸Ñовка пеÑед болÑÑим Ñелизом</span></a></li> <li><a href="#v9480-11-03-2026--ÑÑоÑож-на-ваÑ
Ñе-мониÑоÑинг-линÑинг-поÑÑдок"><span class="changelog-toc__version">v9.48.0</span><span class="changelog-toc__date">11-03-2026</span><span class="changelog-toc__topic" title="СÑоÑож на ваÑ
Ñе: мониÑоÑинг, линÑинг, поÑÑдок">СÑоÑож на ваÑ
Ñе: мониÑоÑинг, линÑинг, поÑÑдок</span></a></li> <li><a href="#v9470-11-03-2026--пÑиглаÑениÑ-Ñ-заÑиÑой-и-ÑÑоком-годноÑÑи"><span class="changelog-toc__version">v9.47.0</span><span class="changelog-toc__date">11-03-2026</span><span class="changelog-toc__topic" title="ÐÑиглаÑÐµÐ½Ð¸Ñ Ñ Ð·Ð°ÑиÑой и ÑÑоком годноÑÑи">ÐÑиглаÑÐµÐ½Ð¸Ñ Ñ Ð·Ð°ÑиÑой и ÑÑоком годноÑÑи</span></a></li> <li><a href="#v9460-11-03-2026--живÑе-комменÑаÑии-и-лÑгкий-ÑедакÑоÑ"><span class="changelog-toc__version">v9.46.0</span><span class="changelog-toc__date">11-03-2026</span><span class="changelog-toc__topic" title="ÐивÑе комменÑаÑии и лÑгкий ÑедакÑоÑ">ÐивÑе комменÑаÑии и лÑгкий ÑедакÑоÑ</span></a></li> <li><a href="#v9450-11-03-2026--легÑе-на-ÑÑаÑÑе-Ñмнее-на-кÑаÑ"><span class="changelog-toc__version">v9.45.0</span><span class="changelog-toc__date">11-03-2026</span><span class="changelog-toc__topic" title="ÐегÑе на ÑÑаÑÑе, Ñмнее на кÑаÑ">ÐегÑе на ÑÑаÑÑе, Ñмнее на кÑаÑ</span></a></li> <li><a href="#v9440-11-03-2026--пÑоÑай-restangular-ÑÑндаменÑ-ÑÑал-легÑе-и-бÑÑÑÑее"><span class="changelog-toc__version">v9.44.0</span><span class="changelog-toc__date">11-03-2026</span><span class="changelog-toc__topic" title="ÐÑоÑай, Restangular: ÑÑÐ½Ð´Ð°Ð¼ÐµÐ½Ñ ÑÑал легÑе и бÑÑÑÑее">ÐÑоÑай, Restangular: ÑÑÐ½Ð´Ð°Ð¼ÐµÐ½Ñ ÑÑал легÑе и бÑÑÑÑее</span></a></li> <li><a href="#v9430-11-03-2026--storybook-пеÑоÑниÑа-и-поÑÑдок"><span class="changelog-toc__version">v9.43.0</span><span class="changelog-toc__date">11-03-2026</span><span class="changelog-toc__topic" title="Storybook: пеÑоÑниÑа и поÑÑдок">Storybook: пеÑоÑниÑа и поÑÑдок</span></a></li> <li><a href="#v9420-10-03-2026--бÑÑÑÑее-Ñдобнее-оÑзÑвÑивее"><span class="changelog-toc__version">v9.42.0</span><span class="changelog-toc__date">10-03-2026</span><span class="changelog-toc__topic" title="ÐÑÑÑÑее, Ñдобнее, оÑзÑвÑивее">ÐÑÑÑÑее, Ñдобнее, оÑзÑвÑивее</span></a></li> <li><a href="#v9410-10-03-2026--комплекÑнÑй-аÑдиÑ-безопаÑноÑÑи"><span class="changelog-toc__version">v9.41.0</span><span class="changelog-toc__date">10-03-2026</span><span class="changelog-toc__topic" title="ÐомплекÑнÑй аÑÐ´Ð¸Ñ Ð±ÐµÐ·Ð¾Ð¿Ð°ÑноÑÑи">ÐомплекÑнÑй аÑÐ´Ð¸Ñ Ð±ÐµÐ·Ð¾Ð¿Ð°ÑноÑÑи</span></a></li> <li><a href="#v9400-09-03-2026--ÑаÑпознание-ÑÑÑлок-ÑиÑ
ий-Ñежим-ÑÑавнение-веÑÑий-storybook-и-ÑиÑÑема-ÑаÑÑÑлок"><span class="changelog-toc__version">v9.40.0</span><span class="changelog-toc__date">09-03-2026</span><span class="changelog-toc__topic" title="РаÑпознание ÑÑÑлок, ÑиÑ
ий Ñежим, ÑÑавнение веÑÑий, storybook и ÑиÑÑема ÑаÑÑÑлок">РаÑпознание ÑÑÑлок, ÑиÑ
ий Ñежим, ÑÑавнение веÑÑий, storybook и ÑиÑÑема ÑаÑÑÑлок</span></a></li> <li><a href="#v9390-08-03-2026--ubuntu-18-â-20-â-22-â-24-надÑжнее-и-бÑÑÑÑее"><span class="changelog-toc__version">v9.39.0</span><span class="changelog-toc__date">08-03-2026</span><span class="changelog-toc__topic" title="Ubuntu 18 â 20 â 22 â 24: надÑжнее и бÑÑÑÑее">Ubuntu 18 â 20 â 22 â 24: надÑжнее и бÑÑÑÑее</span></a></li> <li><a href="#v9380-08-03-2026--опÑимизаÑиÑ-загÑÑзки-каÑÑинок-авÑоÑизаÑии-и-загÑÑзки-главной"><span class="changelog-toc__version">v9.38.0</span><span class="changelog-toc__date">08-03-2026</span><span class="changelog-toc__topic" title="ÐпÑимизаÑÐ¸Ñ Ð·Ð°Ð³ÑÑзки каÑÑинок, авÑоÑизаÑии и загÑÑзки главной">ÐпÑимизаÑÐ¸Ñ Ð·Ð°Ð³ÑÑзки каÑÑинок, авÑоÑизаÑии и загÑÑзки главной</span></a></li> <li><a href="#v9370-07-03-2026--meteor-34-ÑеÑоÑма-ÑеÑ
ниÑеÑкого-ÑÑндаменÑа-бÑкенда"><span class="changelog-toc__version">v9.37.0</span><span class="changelog-toc__date">07-03-2026</span><span class="changelog-toc__topic" title="Meteor 3.4: ÑеÑоÑма ÑеÑ
1
ниÑеÑкого ÑÑндаменÑа бÑкенда">Meteor 3.4: ÑеÑоÑма ÑеÑ
ниÑеÑкого ÑÑндаменÑа бÑкенда</span></a></li> <li><a href="#v9360-06-03-2026--даÑбоÑд-ÑедакÑии-ÑиÑ
ие-ÑведомлениÑ-и-ÑоÑнÑй-ÑедакÑоÑ"><span class="changelog-toc__version">v9.36.0</span><span class="changelog-toc__date">06-03-2026</span><span class="changelog-toc__topic" title="ÐаÑбоÑд ÑедакÑии, ÑиÑ
ие ÑÐ²ÐµÐ´Ð¾Ð¼Ð»ÐµÐ½Ð¸Ñ Ð¸ ÑоÑнÑй ÑедакÑоÑ">ÐаÑбоÑд ÑедакÑии, ÑиÑ
ие ÑÐ²ÐµÐ´Ð¾Ð¼Ð»ÐµÐ½Ð¸Ñ Ð¸ ÑоÑнÑй ÑедакÑоÑ</span></a></li> <li><a href="#v9350-06-03-2026--диÑкÑÑÑ-ÑепеÑÑ-в-tor"><span class="changelog-toc__version">v9.35.0</span><span class="changelog-toc__date">06-03-2026</span><span class="changelog-toc__topic" title="ÐиÑкÑÑÑ ÑепеÑÑ Ð² Tor">ÐиÑкÑÑÑ ÑепеÑÑ Ð² Tor</span></a></li> <li><a href="#v9340-06-03-2026--«ÑиÑайÑе-Ñакже»-одной-кнопкой-Ñапка-без-глиÑÑей"><span class="changelog-toc__version">v9.34.0</span><span class="changelog-toc__date">06-03-2026</span><span class="changelog-toc__topic" title="«ЧиÑайÑе Ñакже» одной кнопкой, Ñапка без глиÑÑей">«ЧиÑайÑе Ñакже» одной кнопкой, Ñапка без глиÑÑей</span></a></li> <li><a href="#v9330-05-03-2026--живÑе-обÑÑждениÑ-мгновеннÑй-ÑбÑоÑ-пÑевÑÑ-и-надÑжнаÑ-поÑÑа"><span class="changelog-toc__version">v9.33.0</span><span class="changelog-toc__date">05-03-2026</span><span class="changelog-toc__topic" title="ÐивÑе обÑÑждениÑ, мгновеннÑй ÑбÑÐ¾Ñ Ð¿ÑевÑÑ Ð¸ надÑÐ¶Ð½Ð°Ñ Ð¿Ð¾ÑÑа">ÐивÑе обÑÑждениÑ, мгновеннÑй ÑбÑÐ¾Ñ Ð¿ÑевÑÑ Ð¸ надÑÐ¶Ð½Ð°Ñ Ð¿Ð¾ÑÑа</span></a></li> <li><a href="#v9320-05-03-2026--ÑведомлениÑ-ведÑÑ-пÑÑмо-к-оÑвеÑÑ-менÑ-на-вÑеÑ
-ÑкÑанаÑ
"><span class="changelog-toc__version">v9.32.0</span><span class="changelog-toc__date">05-03-2026</span><span class="changelog-toc__topic" title="Ð£Ð²ÐµÐ´Ð¾Ð¼Ð»ÐµÐ½Ð¸Ñ Ð²ÐµÐ´ÑÑ Ð¿ÑÑмо к оÑвеÑÑ, Ð¼ÐµÐ½Ñ Ð½Ð° вÑеÑ
ÑкÑанаÑ
">Ð£Ð²ÐµÐ´Ð¾Ð¼Ð»ÐµÐ½Ð¸Ñ Ð²ÐµÐ´ÑÑ Ð¿ÑÑмо к оÑвеÑÑ, Ð¼ÐµÐ½Ñ Ð½Ð° вÑеÑ
ÑкÑанаÑ
</span></a></li> <li><a href="#v9310-04-03-2026--ÑеÑвеÑ-ÑÑал-надÑжнее-и-безопаÑнее"><span class="changelog-toc__version">v9.31.0</span><span class="changelog-toc__date">04-03-2026</span><span class="changelog-toc__topic" title="СеÑÐ²ÐµÑ ÑÑал надÑжнее и безопаÑнее">СеÑÐ²ÐµÑ ÑÑал надÑжнее и безопаÑнее</span></a></li> <li><a href="#v9300-03-03-2026--плаÑÑоÑма-обновлена-Ñо-ÑÑека-2016-на-2024-бÑÑÑÑее-надежнее-ÑовÑеменнее"><span class="changelog-toc__version">v9.30.0</span><span class="changelog-toc__date">03-03-2026</span><span class="changelog-toc__topic" title="ÐлаÑÑоÑма обновлена Ñо ÑÑека 2016 на 2024: бÑÑÑÑее, надежнее, ÑовÑеменнее">ÐлаÑÑоÑма обновлена Ñо ÑÑека 2016 на 2024: бÑÑÑÑее, надежнее, ÑовÑеменнее</span></a></li> <li><a href="#v9230-03-03-2026--пÑавилÑнÑе-пÑевÑÑ-в-ÑоÑÑеÑÑÑ
-авÑоÑÑ-в-поиÑке-ÑÑаÑÑе-ÑÑÑлки-ÑабоÑаÑÑ"><span class="changelog-toc__version">v9.23.0</span><span class="changelog-toc__date">03-03-2026</span><span class="changelog-toc__topic" title="ÐÑавилÑнÑе пÑевÑÑ Ð² ÑоÑÑеÑÑÑ
, авÑоÑÑ Ð² поиÑке, ÑÑаÑÑе ÑÑÑлки ÑабоÑаÑÑ">ÐÑавилÑнÑе пÑевÑÑ Ð² ÑоÑÑеÑÑÑ
, авÑоÑÑ Ð² поиÑке, ÑÑаÑÑе ÑÑÑлки ÑабоÑаÑÑ</span></a></li> <li><a href="#v9222-02-03-2026--повÑоÑ-ÑоÑ
ÑанениÑ-загÑÑзка-ÑеÑез-зеÑкало-бÑÑÑÑее-везде"><span class="changelog-toc__version">v9.22.2</span><span class="changelog-toc__date">02-03-2026</span><span class="changelog-toc__topic" title="ÐовÑÐ¾Ñ ÑоÑ
ÑанениÑ, загÑÑзка ÑеÑез зеÑкало, бÑÑÑÑее везде">ÐовÑÐ¾Ñ ÑоÑ
ÑанениÑ, загÑÑзка ÑеÑез зеÑкало, бÑÑÑÑее везде</span></a></li> <li><a href="#v9221-02-03-2026--мгновеннаÑ-повÑоÑнаÑ-загÑÑзка-ÑкелеÑонÑ-и-мобилÑнаÑ-клавиаÑÑÑа"><span class="changelog-toc__version">v9.22.1</span><span class="changelog-toc__date">02-03-2026</span><span class="changelog-toc__topic" title="ÐÐ³Ð½Ð¾Ð²ÐµÐ½Ð½Ð°Ñ Ð¿Ð¾Ð²ÑоÑÐ½Ð°Ñ Ð·Ð°Ð³ÑÑзка, ÑкелеÑÐ¾Ð½Ñ Ð¸ мобилÑÐ½Ð°Ñ ÐºÐ»Ð°Ð²Ð¸Ð°ÑÑÑа">ÐÐ³Ð½Ð¾Ð²ÐµÐ½Ð½Ð°Ñ Ð¿Ð¾Ð²ÑоÑÐ½Ð°Ñ Ð·Ð°Ð³ÑÑзка, ÑкелеÑÐ¾Ð½Ñ Ð¸ мобилÑÐ½Ð°Ñ ÐºÐ»Ð°Ð²Ð¸Ð°ÑÑÑа</span></a></li> <li><a href="#v9220-01-03-2026--комменÑаÑии-на-полÑÑ
-ÑоÑмаÑиÑование-в-обÑÑждениÑÑ
-ÑпоминаниÑ-Ñ-именами-и-многое-дÑÑгое"><span class="changelog-toc__version">v9.22.0</span><span class="changelog-toc__date">01-03-2026</span><span class="changelog-toc__topic" title="ÐомменÑаÑии на полÑÑ
, ÑоÑмаÑиÑование в обÑÑждениÑÑ
, @ÑÐ¿Ð¾Ð¼Ð¸Ð½Ð°Ð½Ð¸Ñ Ñ Ð¸Ð¼ÐµÐ½Ð°Ð¼Ð¸ и многое дÑÑгое">ÐомменÑаÑии на полÑÑ
, ÑоÑмаÑиÑование в обÑÑждениÑÑ
, @ÑÐ¿Ð¾Ð¼Ð¸Ð½Ð°Ð½Ð¸Ñ Ñ Ð¸Ð¼ÐµÐ½Ð°Ð¼Ð¸ и многое дÑÑгое</span></a></li> <li><a href="#v9210-27-02-2026--ÑмнÑе-кнопки-ÑедакÑоÑа-ÑиÑÑÑе-ÑообÑениÑ-и-мгновеннÑе-иÑпÑавлениÑ"><span class="changelog-toc__version">v9.21.0</span><span class="changelog-toc__date">27-02-2026</span><span class="changelog-toc__topic" title="УмнÑе кнопки ÑедакÑоÑа, ÑиÑÑÑе ÑообÑÐµÐ½Ð¸Ñ Ð¸ мгновеннÑе иÑпÑавлениÑ">УмнÑе кнопки ÑедакÑоÑа, ÑиÑÑÑе ÑообÑÐµÐ½Ð¸Ñ Ð¸ мгновеннÑе иÑпÑавлениÑ</span></a></li> <li><a href="#v9200-26-02-2026--мгновеннаÑ-загÑÑзка-ÑедакÑоÑа-пÑавилÑнÑе-ÑÑÑлки-и-пÑовеÑка-гÑаммаÑики"><span class="changelog-toc__version">v9.20.0</span><span class="changelog-toc__date">26-02-2026</span><span class="changelog-toc__topic" title="ÐÐ³Ð½Ð¾Ð²ÐµÐ½Ð½Ð°Ñ Ð·Ð°Ð³ÑÑзка ÑедакÑоÑа, пÑавилÑнÑе ÑÑÑлки и пÑовеÑка гÑаммаÑики">ÐÐ³Ð½Ð¾Ð²ÐµÐ½Ð½Ð°Ñ Ð·Ð°Ð³ÑÑзка ÑедакÑоÑа, пÑавилÑнÑе ÑÑÑлки и пÑовеÑка гÑаммаÑики</span></a></li> <li><a href="#v9190-25-02-2026--ÑоавÑоÑÑÑво-опÑимизиÑованнÑе-ÑÑиÑÑÑ-и-hardened-security"><span class="changelog-toc__version">v9.19.0</span><span class="changelog-toc__date">25-02-2026</span><span class="changelog-toc__topic" title="СоавÑоÑÑÑво, опÑимизиÑованнÑе ÑÑиÑÑÑ Ð¸ hardened security">СоавÑоÑÑÑво, опÑимизиÑованнÑе ÑÑиÑÑÑ Ð¸ hardened security</span></a></li> <li><a href="#v9180-24-02-2026--баннеÑÑ-ÑоÑÑаÑÑиÑ-в-ленÑаÑ
-и-languagetool-на-ÑÑеÑоидаÑ
"><span class="changelog-toc__version">v9.18.0</span><span class="changelog-toc__date">24-02-2026</span><span class="changelog-toc__topic" title="ÐаннеÑÑ ÑоÑÑаÑÑÐ¸Ñ Ð² ленÑаÑ
и LanguageTool на ÑÑеÑоидаÑ
">ÐаннеÑÑ ÑоÑÑаÑÑÐ¸Ñ Ð² ленÑаÑ
и LanguageTool на ÑÑеÑоидаÑ
</span></a></li> <li><a href="#v9170-23-02-2026--бейджи-непÑоÑиÑанного-в-ленÑе-лиÑеÑаÑÑÑа-без-обÑÑÑок-и-Ñ
иÑÑÑгиÑеÑкаÑ-ÑÑабилÑноÑÑÑ"><span class="changelog-toc__version">v9.17.0</span><span class="changelog-toc__date">23-02-2026</span><span class="changelog-toc__topic" title="Ðейджи непÑоÑиÑанного в ленÑе, лиÑеÑаÑÑÑа без обÑÑÑок и Ñ
иÑÑÑгиÑеÑÐºÐ°Ñ ÑÑабилÑноÑÑÑ">Ðейджи непÑоÑиÑанного в ленÑе, лиÑеÑаÑÑÑа без обÑÑÑок и Ñ
иÑÑÑгиÑеÑÐºÐ°Ñ ÑÑабилÑноÑÑÑ</span></a></li> <li><a href="#v9160-23-02-2026--запÑоÑÑ-на-ÑоавÑоÑÑÑво-Ñмн
1Ñе-ÑноÑки-и-моÑнÑе-инÑÑÑÑменÑÑ-ÑедакÑоÑа"><span class="changelog-toc__version">v9.16.0</span><span class="changelog-toc__date">23-02-2026</span><span class="changelog-toc__topic" title="ÐапÑоÑÑ Ð½Ð° ÑоавÑоÑÑÑво, ÑмнÑе ÑноÑки и моÑнÑе инÑÑÑÑменÑÑ ÑедакÑоÑа">ÐапÑоÑÑ Ð½Ð° ÑоавÑоÑÑÑво, ÑмнÑе ÑноÑки и моÑнÑе инÑÑÑÑменÑÑ ÑедакÑоÑа</span></a></li> <li><a href="#v9150-22-02-2026--мгновеннаÑ-акÑÑализаÑиÑ-Ñолей-пÑи-оÑкÑÑÑии-плаÑÑоÑмÑ"><span class="changelog-toc__version">v9.15.0</span><span class="changelog-toc__date">22-02-2026</span><span class="changelog-toc__topic" title="ÐÐ³Ð½Ð¾Ð²ÐµÐ½Ð½Ð°Ñ Ð°ÐºÑÑализаÑÐ¸Ñ Ñолей пÑи оÑкÑÑÑии плаÑÑоÑмÑ">ÐÐ³Ð½Ð¾Ð²ÐµÐ½Ð½Ð°Ñ Ð°ÐºÑÑализаÑÐ¸Ñ Ñолей пÑи оÑкÑÑÑии плаÑÑоÑмÑ</span></a></li> <li><a href="#v9140-22-02-2026--коллабоÑаÑии-в-один-клик-и-seo-без-компÑомиÑÑов"><span class="changelog-toc__version">v9.14.0</span><span class="changelog-toc__date">22-02-2026</span><span class="changelog-toc__topic" title="ÐоллабоÑаÑии в один клик и SEO без компÑомиÑÑов">ÐоллабоÑаÑии в один клик и SEO без компÑомиÑÑов</span></a></li> <li><a href="#v9130-21-02-2026--ÑпоминаниÑ-ÑквознаÑ-ÑиÑÑема-оÑ-ÑедакÑоÑа-до-Ñведомлений"><span class="changelog-toc__version">v9.13.0</span><span class="changelog-toc__date">21-02-2026</span><span class="changelog-toc__topic" title="@ÑпоминаниÑ: ÑÐºÐ²Ð¾Ð·Ð½Ð°Ñ ÑиÑÑема Ð¾Ñ ÑедакÑоÑа до Ñведомлений">@ÑпоминаниÑ: ÑÐºÐ²Ð¾Ð·Ð½Ð°Ñ ÑиÑÑема Ð¾Ñ ÑедакÑоÑа до Ñведомлений</span></a></li> <li><a href="#v9121-20-02-2026--безопаÑноÑÑÑ-пÑоизводиÑелÑноÑÑÑ-и-ÑÑабилÑноÑÑÑ-pre-release-polish"><span class="changelog-toc__version">v9.12.1</span><span class="changelog-toc__date">20-02-2026</span><span class="changelog-toc__topic" title="ÐезопаÑноÑÑÑ, пÑоизводиÑелÑноÑÑÑ Ð¸ ÑÑабилÑноÑÑÑ: pre-release polish">ÐезопаÑноÑÑÑ, пÑоизводиÑелÑноÑÑÑ Ð¸ ÑÑабилÑноÑÑÑ: pre-release polish</span></a></li> <li><a href="#v9120-19-02-2026--ÑведомлениÑ-коллабоÑаÑии-ноÑнаÑ-Ñема-ÑедакÑоÑа"><span class="changelog-toc__version">v9.12.0</span><span class="changelog-toc__date">19-02-2026</span><span class="changelog-toc__topic" title="УведомлениÑ, коллабоÑаÑии, ноÑÐ½Ð°Ñ Ñема ÑедакÑоÑа">УведомлениÑ, коллабоÑаÑии, ноÑÐ½Ð°Ñ Ñема ÑедакÑоÑа</span></a></li> <li><a href="#v9113-19-02-2026--загÑÑзка-обложек-дÑблиÑование-ÑекÑÑа-конÑликÑÑ-веÑÑиÑ"><span class="changelog-toc__version">v9.11.3</span><span class="changelog-toc__date">19-02-2026</span><span class="changelog-toc__topic" title="ÐагÑÑзка обложек, дÑблиÑование ÑекÑÑа, конÑликÑÑ Ð²ÐµÑÑиÑ">ÐагÑÑзка обложек, дÑблиÑование ÑекÑÑа, конÑликÑÑ Ð²ÐµÑÑиÑ</span></a></li> <li><a href="#v9112-18-02-2026--changelog-полиÑовка-оÑибок-видео-и-email"><span class="changelog-toc__version">v9.11.2</span><span class="changelog-toc__date">18-02-2026</span><span class="changelog-toc__topic" title="Changelog, полиÑовка оÑибок, видео и email">Changelog, полиÑовка оÑибок, видео и email</span></a></li> <li><a href="#v9111-17-02-2026--надÑжноÑÑÑ-безопаÑноÑÑÑ-и-доÑÑÑпноÑÑÑ-post-review-polish"><span class="changelog-toc__version">v9.11.1</span><span class="changelog-toc__date">17-02-2026</span><span class="changelog-toc__topic" title="ÐадÑжноÑÑÑ, безопаÑноÑÑÑ Ð¸ доÑÑÑпноÑÑÑ: post-review polish">ÐадÑжноÑÑÑ, безопаÑноÑÑÑ Ð¸ доÑÑÑпноÑÑÑ: post-review polish</span></a></li> <li><a href="#v9110-16-02-2026--каÑегоÑии-обÑаÑной-ÑвÑзи-ÑемаÑки-в-ÑедакÑоÑе-подпиÑки-на-Ñеги"><span class="changelog-toc__version">v9.11.0</span><span class="changelog-toc__date">16-02-2026</span><span class="changelog-toc__topic" title="ÐаÑегоÑии обÑаÑной ÑвÑзи, ÑемаÑки в ÑедакÑоÑе, подпиÑки на Ñеги">ÐаÑегоÑии обÑаÑной ÑвÑзи, ÑемаÑки в ÑедакÑоÑе, подпиÑки на Ñеги</span></a></li> <li><a href="#v9100-15-02-2026--пÑбликаÑиÑ-без-неÑвов-валидаÑиÑ-подÑвеÑждение-и-Ñмн
1Ñе-оÑибки"><span class="changelog-toc__version">v9.10.0</span><span class="changelog-toc__date">15-02-2026</span><span class="changelog-toc__topic" title="ÐÑбликаÑÐ¸Ñ Ð±ÐµÐ· неÑвов: валидаÑиÑ, подÑвеÑждение и ÑмнÑе оÑибки">ÐÑбликаÑÐ¸Ñ Ð±ÐµÐ· неÑвов: валидаÑиÑ, подÑвеÑждение и ÑмнÑе оÑибки</span></a></li> <li><a href="#v990-14-02-2026--ÑеÑновики-без-гÑаниÑ-ÑовмеÑÑное-ÑедакÑиÑование-обÑий-доÑÑÑп-по-ÑÑÑлке-и-безопаÑноÑÑÑ-нового-поколениÑ"><span class="changelog-toc__version">v9.9.0</span><span class="changelog-toc__date">14-02-2026</span><span class="changelog-toc__topic" title="ЧеÑновики без гÑаниÑ: ÑовмеÑÑное ÑедакÑиÑование, обÑий доÑÑÑп по ÑÑÑлке и безопаÑноÑÑÑ Ð½Ð¾Ð²Ð¾Ð³Ð¾ поколениÑ">ЧеÑновики без гÑаниÑ: ÑовмеÑÑное ÑедакÑиÑование, обÑий доÑÑÑп по ÑÑÑлке и безопаÑноÑÑÑ Ð½Ð¾Ð²Ð¾Ð³Ð¾ поколениÑ</span></a></li> <li><a href="#v980-13-02-2026---ÑведомлениÑ-меÑÑÑ-ÑеÑновики-наÑвÑ-и-заÑиÑа-без-компÑомиÑÑов"><span class="changelog-toc__version">v9.8.0</span><span class="changelog-toc__date">13-02-2026</span><span class="changelog-toc__topic" title="Ð£Ð²ÐµÐ´Ð¾Ð¼Ð»ÐµÐ½Ð¸Ñ Ð¼ÐµÑÑÑ, ÑеÑновики наÑÐ²Ñ Ð¸ заÑиÑа без компÑомиÑÑов">Ð£Ð²ÐµÐ´Ð¾Ð¼Ð»ÐµÐ½Ð¸Ñ Ð¼ÐµÑÑÑ, ÑеÑновики наÑÐ²Ñ Ð¸ заÑиÑа без компÑомиÑÑов</span></a></li> <li><a href="#v970-12-02-2026---пÑавки-живÑÑ-веÑно-suggestion-persistence-пеÑеоÑмÑÑленнÑе-комменÑаÑии-и-пеÑаÑÑ"><span class="changelog-toc__version">v9.7.0</span><span class="changelog-toc__date">12-02-2026</span><span class="changelog-toc__topic" title="ÐÑавки живÑÑ Ð²ÐµÑно: suggestion-persistence, пеÑеоÑмÑÑленнÑе комменÑаÑии и пеÑаÑÑ">ÐÑавки живÑÑ Ð²ÐµÑно: suggestion-persistence, пеÑеоÑмÑÑленнÑе комменÑаÑии и пеÑаÑÑ</span></a></li> <li><a href="#v960-12-02-2026---галеÑеÑ-ÑпойлеÑÑ-oauth-ÑеÑновики-и-обновлÑннÑй-вÑ
од"><span class="changelog-toc__version">v9.6.0</span><span class="changelog-toc__date">12-02-2026</span><span class="changelog-toc__topic" title="ÐалеÑеÑ, ÑпойлеÑÑ, OAuth, ÑеÑновики и обновлÑннÑй вÑ
од">ÐалеÑеÑ, ÑпойлеÑÑ, OAuth, ÑеÑновики и обновлÑннÑй вÑ
од</span></a></li> <li><a href="#v950-11-02-2026---молниеноÑнаÑ-загÑÑзка-lazy-split-Ñаблонов-ÑкелеÑонÑ-prefetch-и-плавнÑе-пеÑеÑ
одÑ"><span class="changelog-toc__version">v9.5.0</span><span class="changelog-toc__date">11-02-2026</span><span class="changelog-toc__topic" title="ÐолниеноÑÐ½Ð°Ñ Ð·Ð°Ð³ÑÑзка: lazy-split Ñаблонов, ÑкелеÑонÑ, prefetch и плавнÑе пеÑеÑ
одÑ">ÐолниеноÑÐ½Ð°Ñ Ð·Ð°Ð³ÑÑзка: lazy-split Ñаблонов, ÑкелеÑонÑ, prefetch и плавнÑе пеÑеÑ
одÑ</span></a></li> <li><a href="#v940-10-02-2026---html-ÑедакÑоÑ-Ñ-codemirror-Ñема-monokai-Ñмное-ÑоÑмаÑиÑование-и-гоÑÑÑие-клавиÑи"><span class="changelog-toc__version">v9.4.0</span><span class="changelog-toc__date">10-02-2026</span><span class="changelog-toc__topic" title="HTML-ÑедакÑÐ¾Ñ Ñ CodeMirror: Ñема Monokai, Ñмное ÑоÑмаÑиÑование и гоÑÑÑие клавиÑи">HTML-ÑедакÑÐ¾Ñ Ñ CodeMirror: Ñема Monokai, Ñмное ÑоÑмаÑиÑование и гоÑÑÑие клавиÑи</span></a></li> <li><a href="#v930-10-02-2026---embeddings--suggestion-mode-полнаÑ-поддеÑжка-ÑÑилей-медиа-и-блоÑного-ÑоÑмаÑиÑованиÑ"><span class="changelog-toc__version">v9.3.0</span><span class="changelog-toc__date">10-02-2026</span><span class="changelog-toc__topic" title="Embeddings &amp; Suggestion Mode: Ð¿Ð¾Ð»Ð½Ð°Ñ Ð¿Ð¾Ð´Ð´ÐµÑжка ÑÑилей, медиа и блоÑного ÑоÑмаÑиÑованиÑ">Embeddings &amp; Suggestion Mode: Ð¿Ð¾Ð»Ð½Ð°Ñ Ð¿Ð¾Ð´Ð´ÐµÑжка ÑÑилей, медиа и блоÑного ÑоÑмаÑиÑованиÑ</span></a></li> <li><a href="#v920-10-02-2026---коллабоÑаÑивнÑй-ÑедакÑоÑ-полнÑй-комплекÑ-ÑÑилей-Ñазделение-кода--новÑе-наÑÑÑойки-пÑоÑилÑ"><span class="changelog-toc__version">v9.2.0</span><span class="changelog-toc__date">10-02-2026</span><span class="changelog-toc__topic" title="ÐоллабоÑаÑивнÑй ÑедакÑоÑ: полнÑй ÐºÐ¾Ð¼Ð¿Ð»ÐµÐºÑ ÑÑилей, Ñазделение кода + новÑе наÑÑÑойки пÑоÑилÑ">ÐоллабоÑаÑивнÑй ÑедакÑоÑ: полнÑй ÐºÐ¾Ð¼Ð¿Ð»ÐµÐºÑ ÑÑилей, Ñазделение кода + новÑе наÑÑÑойки пÑоÑилÑ</span></a></li> <li><a href="#v910-09-02-2026---оглавление-ÑпÑавка-по-гоÑÑÑим-клавиÑам-новÑе-ÑоÑÑкаÑÑ"><span class="changelog-toc__version">v9.1.0</span><span class="changelog-toc__date">09-02-2026</span><span class="changelog-toc__topic" title="Ðглавление, ÑпÑавка по гоÑÑÑим клавиÑам, новÑе ÑоÑÑкаÑÑ">Ðглавление, ÑпÑавка по гоÑÑÑим клавиÑам, новÑе ÑоÑÑкаÑÑ</span></a></li> <li><a href="#v901-08-02-2026---staging-ÑÑеда-и-кнопка-ÑоÑ
ÑанениÑ"><span class="changelog-toc__version">v9.0.1</span><span class="changelog-toc__date">08-02-2026</span><span class="changelog-toc__topic" title="Staging-ÑÑеда и кнопка ÑоÑ
ÑанениÑ">Staging-ÑÑеда и кнопка ÑоÑ
ÑанениÑ</span></a></li> <li><a href="#v900-07-02-2026---новÑй-ÑедакÑоÑ-Ñ-коллабоÑаÑией"><span class="changelog-toc__version">v9.0.0</span><span class="changelog-toc__date">07-02-2026</span><span class="changelog-toc__topic" title="ÐовÑй ÑедакÑÐ¾Ñ Ñ ÐºÐ¾Ð»Ð»Ð°Ð±Ð¾ÑаÑией">ÐовÑй ÑедакÑÐ¾Ñ Ñ ÐºÐ¾Ð»Ð»Ð°Ð±Ð¾ÑаÑией</span></a></li> </ul> </nav> </div> </div> </div>'),e.put("/pages/about/community-rules.html",'<update-meta class="black-link" title="{{ \'ÐÑавила диÑкÑÑÑий в оÑкÑÑÑой ÑедакÑии\' | t }}" ></update-meta> <update-meta class="black-link" name="description" content="{{ \'Ðа ÑÑо можно заÑлÑжиÑÑ Ð´ÑÑÐºÑ Ð² каÑме и как полÑÑиÑÑ Ð»ÑÑи благодаÑноÑÑи за вклад в диÑкÑÑÑии в ÑообÑеÑÑваÑ
ÑамиздаÑа\' | t }}" ></update-meta> <update-meta class="black-link" name="keywords" content="{{ \'Discours.io, ÑообÑеÑÑва, ÑенноÑÑи, пÑавила ÑедакÑии, многоголоÑие, Ñозидание\' | t }}" ></update-meta> <update-meta class="black-link" property="og:title" content="{{ \'ÐÑавила диÑкÑÑÑий в оÑкÑÑÑой ÑедакÑии\' | t }}" ></update-meta> <update-meta class="black-link" property="og:description" content="{{ \'Ðа ÑÑо можно заÑлÑжиÑÑ Ð´ÑÑÐºÑ Ð² каÑме и как полÑÑиÑÑ Ð»ÑÑи благодаÑноÑÑи за вклад в диÑкÑÑÑии в ÑообÑеÑÑваÑ
ÑамиздаÑа\' | t }}" ></update-meta> <update-meta property="og:image" content="/images/discussion-rules.jpg"></update-meta>
1 <update-meta property="og:image:width" content="1200"></update-meta> <update-meta property="og:image:height" content="750"></update-meta> <div class="ds-container open-post about-post tw:mt-5"> <div class="tw:row-flex" id="basics"> <div class="tw:gutter-half tw:w-full tw:sm:w-9/12 tw:md:w-2/12"> <h1 class="h2 black-bg-heading black-bg-heading-margin"> <span class="wrapped">{{ \'ÐÑавила ÑообÑеÑÑв ÑамиздаÑа в ÑоÑÑеÑÑÑ
\' | t }}</span> </h1> </div> <div class="tw:gutter-half tw:w-full tw:md:w-7/12 post-body tw:md:mt-content-top"> <p><span>{{ \'ÐÑкÑÑÑÐ°Ñ ÑедакÑÐ¸Ñ ÑÑÑеÑÑвÑÐµÑ Ð±Ð»Ð°Ð³Ð¾Ð´Ð°ÑÑ Ð´ÑÑÐ¶Ð½Ð¾Ð¼Ñ ÑообÑеÑÑÐ²Ñ Ð°Ð²ÑоÑов и ÑиÑаÑелей â вдÑмÑивÑÑ
и ÑознаÑелÑнÑÑ
лÑдей, пÑивеÑженнÑÑ
ÑенноÑÑÑм гÑманизма, демокÑаÑии и пÑав Ñеловека. ÐÑ Ð¾ÑÐµÐ½Ñ Ñеним аÑмоÑÑеÑÑ Ð¾ÑмÑÑленного обÑениÑ, коÑоÑÐ°Ñ Ð·Ð´ÐµÑÑ ÑложилаÑÑ. ЧÑÐ¾Ð±Ñ ÑоÑ
ÑаниÑÑ ÐµÐµ Ñакой же ÑÑÑной и ÑвоÑÑеÑкой, Ð¼Ñ ÑоÑÑавили пÑавила обÑÐµÐ½Ð¸Ñ Ð² ÑообÑеÑÑве, ÑÑководÑÑвÑÑÑÑ ÐºÐ¾ÑоÑÑми каждÑй мог Ð±Ñ ÑоÑÑаÑÑвоваÑÑ Ð² плодоÑвоÑнÑÑ
диÑкÑÑÑиÑÑ
, не Ð·Ð°Ð´ÐµÐ²Ð°Ñ Ð´ÑÑгиÑ
. ÐлÑÑевой пÑинÑип ÑÑиÑ
пÑавил пÑеделÑно пÑоÑÑ â ÑважайÑе ближниÑ
, поÑÑаÑайÑеÑÑ Ð½Ðµ наÑÑÑаÑÑ Ð·Ð°ÐºÐ¾Ð½Ñ Ð Ð¾ÑÑийÑкой ФедеÑаÑии без кÑайней на Ñо необÑ
одимоÑÑи и помниÑе, ÑÑо в диÑкÑÑÑиÑÑ
ÑÑÑкиÑ
и здÑавомÑÑлÑÑиÑ
лÑдей ÑождаеÑÑÑ Ð¸ÑÑина.\' | t }}</span></p> <h2 class="not-left tw:mb-6"> <span>{{ \'Ðа ÑÑо можно полÑÑиÑÑ Ð´ÑÑÐºÑ Ð² каÑме и вÑигÑаÑÑ Ð±Ð°Ð½ в ÑообÑеÑÑве\' | t }}</span> </h2> <ol> <li> <p><span>{{ \'ÐÑкоÑблениÑ, лиÑнÑе нападки, ÑÑÐ°Ð²Ð»Ñ Ð¸ ÑгÑозÑ. РлÑбом виде. ÐонкÑеÑного Ñеловека или ÑоÑиалÑной гÑÑÐ¿Ð¿Ñ â не ÑÑÑÑ. ÐгÑеÑÑиÑ, пеÑеÑ
од на лиÑноÑÑи и ÑокÑиÑноÑÑÑ ÐµÐ´Ð²Ð° ли ÑпоÑобÑÑвÑÑÑ Ð¿Ð»Ð¾Ð´Ð¾ÑвоÑÐ½Ð¾Ð¼Ñ Ð¾Ð±ÑениÑ.\' | t }}</span></p> </li> <li> <p><span>{{ \'Шовинизм, ÑаÑизм, ÑекÑизм, гомоÑобиÑ, пÑопаганда ненавиÑÑи, педоÑилии, ÑÑиÑида, ÑаÑпÑоÑÑÑанение деÑÑкой поÑногÑаÑии и дÑÑгого ÑеловеконенавиÑÑниÑеÑкого конÑенÑа.\' | t }}</span></p> </li> <li> <p><span>{{ \'Спам, Ñеклама, ÑейкнÑÑз, ÑÑÑлки на пÑопагандиÑÑÑкие СÐÐ, вбÑоÑÑ Ð´ÐµÐ·Ð¸Ð½ÑоÑмаÑии, ÑпеÑиалÑно ÑводÑÑий Ð¾Ñ ÑÐµÐ¼Ñ ÑлÑд, пÑовокаÑии, Ñазжигание конÑликÑов, намеÑеннÑй ÑÑÑв диÑкÑÑÑий.\' | t }}</span></p> </li> <li> <p><span>{{ \'ÐеаÑгÑменÑиÑÐ¾Ð²Ð°Ð½Ð½Ð°Ñ ÐºÑиÑика и комменÑаÑии вÑоде «оÑÑÑой», «заÑем Ñ ÑÑо Ñвидел/а», «не ÑиÑал, но оÑÑждаÑ», «либеÑаÑ
Ñ Ð¿Ð¾Ñвало», «лол», «ÑкаÑилиÑÑ», «пеÑвÑй наÑ
» и ÑÐ¾Ð¼Ñ Ð¿Ð¾Ð´Ð¾Ð±Ð½Ñе. ÐдноÑложнÑе Ñеплики не подÑазÑмеваÑÑ Ð²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ÑÑÑ Ð¾Ð±Ð¾Ð³Ð°ÑаÑÑего диалога, не пÑодÑкÑÐ¸Ð²Ð½Ñ Ð¸ никак не помогаÑÑ Ð°Ð²ÑоÑам делаÑÑ Ð¼Ð°ÑеÑÐ¸Ð°Ð»Ñ Ð»ÑÑÑе, а ÑиÑаÑелÑм â ÑазобÑаÑÑÑÑ.\' | t }}</span></p> </li> </ol> <h2 class="not-left tw:mb-6"> <span>{{ \'Ðа ÑÑо можно полÑÑиÑÑ Ð»ÑÑи добÑа и благодаÑноÑÑи в ÑообÑеÑÑве\' | t }}</span> </h2> <ol> <li> <p><span><span class="lead">{{ \'ÐежливоÑÑÑ Ð¸ конÑÑÑÑкÑивноÑÑÑ.\' | t }}</span> {{ \'ÐÑ Ð²ÑÑÑÑпаем за конÑÑÑÑкÑивнÑй диалог, аÑгÑменÑиÑованнÑе комменÑаÑии и добÑожелаÑелÑное оÑноÑение дÑÑг к дÑÑгÑ. ÐадавайÑе ÑодеÑжаÑелÑнÑе вопÑоÑÑ, пиÑиÑе ÑазвеÑнÑÑÑе комменÑаÑии, подкÑеплÑйÑе иÑ
аÑгÑменÑами, ÑÑÐ¾Ð±Ñ Ð´Ð¸Ð°Ð»Ð¾Ð³ бÑл полезен вÑем ÑÑаÑÑникам, Ð¿Ð¾Ð¼Ð¾Ð³Ð°Ñ Ð³Ð»Ñбже понÑÑÑ ÑÐµÐ¼Ñ Ð¸ ÑазобÑаÑÑÑÑ Ð² вопÑоÑе. Ð, пожалÑйÑÑа, ÑважайÑе ÑобеÑедника, даже еÑли он вам лиÑно не импониÑÑеÑ: ÑолÑко Ñак полÑÑаÑÑÑÑ Ð¿ÑодÑкÑивнÑе диÑкÑÑÑии.\' | t }}</span></p> </li> <li> <p><span><span class="lead">{{ \'Ðбмен знаниÑми и иÑÑоÑиÑми.\' | t }}</span> {{ \'ÐÑмÑÑленнÑе вÑÑказÑÐ²Ð°Ð½Ð¸Ñ Ð¿Ð¾ Ñеме поÑÑа, оÑигиналÑнÑе ÑаÑÑÑждениÑ, ÑаÑÑÐºÐ°Ð·Ñ Ð¾ лиÑном опÑÑе и пÑоекÑаÑ
, обмен пÑоÑеÑÑионалÑной ÑкÑпеÑÑизой, наблÑÐ´ÐµÐ½Ð¸Ñ Ð¸ ÑеалÑнÑе иÑÑоÑии из жизни â Ñем болÑÑе Ð¼Ñ Ð´ÐµÐ»Ð¸Ð¼ÑÑ Ð´ÑÑг Ñ Ð´ÑÑгом знаниÑми, Ñем инÑеÑеÑнее и плодоÑвоÑнее ÑÑановиÑÑÑ Ð½Ð°Ñе обÑение. ÐомниÑе, ÑÑо каждÑй вдÑмÑивÑй оÑÐ²ÐµÑ Ð¿Ð¾Ð²ÑÑÐ°ÐµÑ ÐºÐ°ÑеÑÑво диÑкÑÑÑий в ÑообÑеÑÑве и Ð´ÐµÐ»Ð°ÐµÑ ÑÑение ÑамиздаÑа еÑÑ Ð¸Ð½ÑеÑеÑнее.\' | t }}</span></p> </li> <li> <p><span><span class="lead">{{ \'ЧÑвÑÑво ÑмоÑа и добÑодÑÑие.\' | t }}</span> {{ \'ÐÑÑÑоÑмие и дÑÑжелÑбие не ÑолÑко напÑавлÑÑÑ Ð´Ð¸ÑкÑÑÑии в пÑодÑкÑивное ÑÑÑло, но и ÑлÑÑÑаÑÑ Ð½Ð°ÑÑÑоение.\' | t }} </span><span>{{ \'Ðе вÑедиÑе негаÑивом, коÑоÑого в инÑеÑнеÑе и без Ð½Ð°Ñ Ñ
ваÑаеÑ, и не ÑÑавиÑе на коÑÐ½Ñ ÐºÐ»Ð°ÑÑнÑе иниÑиаÑÐ¸Ð²Ñ â вÑÑ Ð²ÐµÐ»Ð¸ÐºÐ¾Ðµ наÑинаеÑÑÑ Ñ Ð¼Ð°Ð»Ð¾Ð³Ð¾. ÐÑ Ð·Ð° поддеÑживаÑÑÑÑ Ð¸ вдоÑ
новлÑÑÑÑÑ Ð°ÑмоÑÑеÑÑ Ð² ÑообÑеÑÑве. ÐадеемÑÑ, Ð²Ñ Ñоже.\' | t }}</span></p> </li> <li> <p><span><span class="lead">{{ \'ÐлагодаÑноÑÑÑ Ð¸ поддеÑжка.\' | t }}</span> {{ \'ÐÑли пÑбликаÑÐ¸Ñ Ð²Ð°Ð¼ заÑла, не ÑÑеÑнÑйÑеÑÑ ÑÑавиÑÑ Ð»Ð°Ð¹ÐºÐ¸, делиÑÑÑÑ Ð¿Ð¾Ð½ÑавивÑимиÑÑ Ð¼Ð°ÑеÑиалами, благодаÑиÑÑ Ð°Ð²ÑоÑов, ÑиÑаÑелей, Ñ
Ñдожников и ÑедакÑоÑов в комменÑаÑиÑÑ
. ЦениÑе и поддеÑживайÑе клаÑÑнÑе пÑоекÑÑ, ÑилÑнÑе ÑекÑÑÑ, новое иÑкÑÑÑÑво, оÑмÑÑленнÑе комменÑаÑии и вклад дÑÑгиÑ
в ÑÐ°Ð¼Ð¸Ð·Ð´Ð°Ñ â ÑоÑÑÑдниÑеÑÑво Ð´ÐµÐ»Ð°ÐµÑ Ð½Ð°Ñ ÑилÑнее и ÑÑÐ¸Ð»Ð¸Ð²Ð°ÐµÑ Ð·Ð²ÑÑание идей и ÑмÑÑлов, коÑоÑÑе помогаÑÑ Ð»ÑÑÑе понимаÑÑ Ð¼Ð¸Ñ.\' | t }}</span></p> </li> </ol> </div> </div> </div>'),e.put("/pages/about/constitution.html",'<update-meta title="{{ \'ÐонÑÑиÑÑÑиÑ\' | t }}"></update-meta> <update-meta name="description" content="{{ \'ÐонÑÑиÑÑÑÐ¸Ñ ÐиÑкÑÑÑа: пÑава и ÑÐ²Ð¾Ð±Ð¾Ð´Ñ Ñеловека и жÑÑналиÑÑа.\' | t }}" ></update-meta> <update-meta name="keywords" content="{{ \'Discours.io, конÑÑиÑÑÑиÑ, пÑавила\' | t }}"></update-meta> <update-meta property="og:title" content="{{ \'ÐонÑÑиÑÑÑиÑ\' | t }}"></update-meta> <update-meta property="og:description" content="{{ \'ÐонÑÑиÑÑÑÐ¸Ñ ÐиÑкÑÑÑа: пÑава и ÑÐ²Ð¾Ð±Ð¾Ð´Ñ Ñеловека и жÑÑналиÑÑа.\' | t }}" ></update-meta> <update-meta property="og:image" content="/images/constitution.jpg"></update-meta>
1 <update-meta property="og:image:width" content="1200"></update-meta> <update-meta property="og:image:height" content="470"></update-meta> <div class="tw:overflow-hidden constitution-wrapper"> <div class="ds-container"> <div class="tw:row-flex"> <div class="constitution-sidebar tw:gutter-half tw:w-full"> <h1 class="h2 black-bg-heading constitution-header black-bg-heading-margin"> <span>{{ \'ÐонÑÑиÑÑÑиÑ\' | t }}</span> </h1> </div> <div class="tw:gutter-half tw:w-full tw:md:w-10/12"> <div class="constitution"> <div class="col first"> <p><span class="number">1</span>{{ \'ÐÑ Ð¾Ð±ÑединилиÑÑ, ÑÑÐ¾Ð±Ñ Ð²Ð¼ÐµÑÑе ÑоздаваÑÑ Ð¾Ð±Ñий инÑеÑнеÑ-жÑÑнал, ÑодеÑжание коÑоÑого завиÑÐ¸Ñ Ð¾Ñ ÐºÐ°Ð¶Ð´Ð¾Ð³Ð¾.\' | t }}</p> </div> <div class="col bottom second"> <p><span class="number">2</span>{{ \'ÐÑе авÑоÑÑ ÑавнÑ, и никÑо не Ñавнее дÑÑгиÑ
.\' | t }}</p> </div> <div class="col bottom third"> <p><span class="number">3</span>{{ \'ÐаждÑй Ð¸Ð¼ÐµÐµÑ Ð¿Ñаво на мнение, пÑаво вÑÑказаÑÑÑÑ Ð¸ бÑÑÑ ÑÑлÑÑаннÑм.\' | t }}</p> </div> <div class="col bottom continue-right fourth"> <p><span class="number">4</span>{{ \'ÐаждÑй, оÑÑÑÐ°Ð¸Ð²Ð°Ñ Ñвое мнение, обÑзан его аÑгÑменÑиÑоваÑÑ.\' | t }}</p> </div> </div> <div class="constitution"> <div class="col continue-left fifth"> <p><span class="number">5</span>{{ \'ÐаждÑй пиÑÐµÑ Ð¾ Ñом, о Ñем Ñ
оÑÐµÑ Ð¿Ð¸ÑаÑÑ, и никÑо не обÑзан пиÑаÑÑ Ð¾ Ñом, о ÑÑм не Ñ
оÑеÑ.\' | t }}</p> </div> <div class="col bottom sixth"> <p><span class="number">6</span>{{ \'ÐаждÑй Ð¼Ð¾Ð¶ÐµÑ Ð¿Ð¾Ð¼Ð¾ÑÑ Ð´ÑÑÐ³Ð¾Ð¼Ñ ÑделаÑÑ ÐµÐ³Ð¾ маÑеÑиал лÑÑÑе.\' | t }}</p> </div> <div class="col seventh"> <p><span class="number">7</span>{{ \'ÐаждÑй Ð¸Ð¼ÐµÐµÑ Ð¿Ñаво бÑÑÑ Ð½ÐµÐ¿Ð¾Ñ
ожим на дÑÑгиÑ
.\' | t }}</p> </div> <div class="col eighth"> <p><span class="number">8</span>{{ \'ÐаждÑй Ð¸Ð¼ÐµÐµÑ Ð¿Ñаво лÑбиÑÑ ÑвоиÑ
дÑÑзей, но лÑбиÑÑ Ð¸ÑÑÐ¸Ð½Ñ Ð¾Ð±Ñзан болÑÑе.\' | t }}</p> </div> </div> </div> </div> </div> </div>'),e.put("/pages/about/contacts.html",'<update-meta title="{{ \'ÐонÑакÑÑ\' | t }}"></update-meta> <update-meta name="description" content="{{ \'Ðак ÑвÑзаÑÑÑÑ Ñ ÑедакÑией оÑкÑÑÑого жÑÑнала\' | t }}" ></update-meta> <update-meta name="keywords" content="{{ \'Discours.io, конÑакÑÑ, как добÑаÑÑÑÑ?\' | t }}" ></update-meta> <update-meta property="og:title" content="{{ \'ÐонÑакÑÑ\' | t }}"></update-meta> <update-meta property="og:description" content="{{ \'Ðак ÑвÑзаÑÑÑÑ Ñ ÑедакÑией оÑкÑÑÑого жÑÑнала\' | t }}" ></update-meta> <div class="ds-container"> <div class="tw:row-flex"> <div class="tw:gutter-half tw:w-full tw:sm:w-7/12 tw:sm:ml-offset-2"> <div class="tw:row-flex"> <div class="tw:gutter-half tw:w-full tw:md:w-6/12"> <p> {{ \'ÐÑ Ð¼Ð¾Ð¶ÐµÑе навеÑÑиÑÑ Ð½Ð°Ñ Ð² ÐÑкÑÑÑой ÑедакÑии ÐиÑкÑÑÑа:\' | t }} <em>{{ \'ÐоÑква, ÐоÑаповÑкий пеÑеÑлок, 8/12, ÑÑÑ. 2\' | t }}</em> </p> <p ng-bind-html="(\'СÑаÑÑи и иÑкÑÑÑÑво Ð´Ð»Ñ Ð¿ÑбликаÑии пÑиÑÑлайÑе ÑеÑез ÑоÑÐ¼Ñ Ð¸Ð»Ð¸ по адÑеÑÑ <a class=\\\'black-link\\\' href=\\\'mailto:[email protected]\\\'>[email protected]</a>\' | t) | trustedHtml" ></p> <div class="right tw:relative"> <div class="help-text left"> {{ \'СледиÑе за обновлениÑми ÐиÑкÑÑÑа в ÑоÑиалÑнÑÑ
ÑеÑÑÑ
\' | t }} </div> <div class="social-buttons"> <a data-crawlable-off href="https://vk.com/discoursio" target="_blank" rel="noopener noreferrer" aria-label="VK" data-tooltip="{{ \'VK ÐиÑкÑÑÑа\' | t }}" ><i class="fab fa-vk"></i ></a> <a data-crawlable-off href="https://facebook.com/discoursio" target="_blank" rel="noopener noreferrer" aria-label="Facebook" data-tooltip="{{ \'ÐÐ°Ñ Facebook\' | t }}" ><i class="fab fa-facebook-f"></i ></a> <a data-crawlable-off href="https://instagram.com/discours.io" target="_blank" rel="noopener noreferrer" aria-label="Instagram" data-tooltip="{{ \'ÐÐ°Ñ Instagram\' | t }}" ><i class="fab fa-instagram" style="font-weight: 900"></i ></a> <a data-crawlable-off href="https://youtube.com/@discoursio" target="_blank" rel="noopener noreferrer" aria-label="{{ \'Ðанал Discours на YouTube\' | t }}" data-tooltip="{{ \'YouTube ÐиÑкÑÑÑа\' | t }}" ><i class="fab fa-youtube"></i ></a> <a data-crawlable-off href="https://t.me/discoursio" target="_blank" rel="noopener noreferrer" aria-label="Telegram" data-tooltip="{{ \'ÐÐ°Ñ Telegram\' | t }}" ><i class="fab fa-telegram-plane"></i ></a> <a href="/#subscribe" view-modal="#subscribe-modal" aria-label="{{ \'ÐодпиÑаÑÑÑÑ Ð¿Ð¾ email\' | t }}" data-tooltip="{{ \'РаÑÑÑлка ÐиÑкÑÑÑа\' | t }}" ><i class="fas fa-envelope"></i ></a> </div> </div> </div> <div class="tw:gutter-half tw:w-full tw:md:w-6/12"> <yandex-map class="ymaps-container" center="[55.760246, 37.641351]" zoom="15"> <ymap-marker coordinates="[55.760246, 37.641351]"></ymap-marker> </yandex-map> </div> </div> </div> </div> </div>'),e.put("/pages/about/dogma.html",'<update-meta class="black-link" title="{{ \'Ðогма оÑкÑÑÑой ÑедакÑии\' | t }}"></update-meta> <update-meta class="black-link" name="description" content="{{ \'ÐÑоÑеÑÑионалÑнÑе и ÑÑиÑеÑкие пÑинÑÐ¸Ð¿Ñ Ð¾ÑкÑÑÑой ÑедакÑии ÐиÑкÑÑÑа: Ñвобода Ñлова, ÑакÑÑ, незавиÑимоÑÑÑ Ð¸ оÑвеÑÑÑвенноÑÑÑ Ð¿ÐµÑед ÑиÑаÑелÑми\' | t }}" ></update-meta> <update-meta class="black-link" name="keywords" content="{{ \'Discours.io, догма оÑкÑÑÑой ÑедакÑии, ÑедакÑионнÑе пÑинÑипÑ, ÑÑиÑеÑкий кодекÑ, жÑÑналиÑÑÑкие ÑÑандаÑÑÑ\' | t }}" ></update-meta> <update-meta class="black-link" property="og:title" content="{{ \'Ðогма оÑкÑÑÑой ÑедакÑии\' | t }}" ></update-meta> <update-meta class="black-link" property="og:description" content="{{ \'ÐÑоÑеÑÑионалÑнÑе и ÑÑиÑеÑкие пÑинÑÐ¸Ð¿Ñ Ð¾ÑкÑÑÑой ÑедакÑии ÐиÑкÑÑÑа\' | t }}" ></update-meta> <update-meta property="og:image" content="/images/dogma.jpg"></update-meta>
1 <update-meta property="og:image:width" content="1200"></update-meta> <update-meta property="og:image:height" content="821"></update-meta> <div class="ds-container open-post about-post tw:mt-5"> <div class="tw:row-flex"> <div class="tw:gutter-half tw:w-full tw:sm:w-9/12 tw:md:w-2/12"> <h1 class="h2 black-bg-heading black-bg-heading-margin"> <span class="wrapped">{{ \'Ðогма оÑкÑÑÑой ÑедакÑии\' | t }}</span> </h1> </div> <div class="tw:gutter-half tw:w-full tw:md:w-7/12 post-body tw:md:mt-content-top"> <p> {{ \'ÐиÑкÑÑÑ â\' | t }} <a href="/manifest" target="_self">{{ \'оÑкÑÑÑÑй жÑÑнал\' | t }}</a> {{ \'Ñ Ð³Ð¾ÑизонÑалÑной ÑедакÑией. У Ð½Ð°Ñ Ð½ÐµÑ Ñ
озÑев, главÑеда и ÑайнÑÑ
акÑионеÑов, Ð¼Ñ Ð½Ðµ ÑледÑем ÑказаниÑм ÑензоÑов: ÑÑдÑÐ±Ñ ÐºÐ°Ð¶Ð´Ð¾Ð³Ð¾ маÑеÑиала авÑоÑÑ ÑообÑеÑÑва ÑеÑаÑÑ Ð¿ÑÑмÑм голоÑованием. СообÑеÑÑво\' | t }} <a href="/authors" target="_self">{{ \'обÑединÑеÑ\' | t }}</a> {{ \'ÑоÑни лÑдей ÑамÑÑ
ÑазнÑÑ
взглÑдов и пÑоÑеÑÑий â ÑÑенÑÑ
и ÑабоÑиÑ
, Ñ
Ñдожников и пÑогÑаммиÑÑов, вÑаÑей и жÑÑналиÑÑов из деÑÑÑков гоÑодов и ÑÑÑан. ÐÑ ÑаÑÑо бÑваем не ÑоглаÑÐ½Ñ Ð´ÑÑг Ñ Ð´ÑÑгом, но в ÑабоÑе над жÑÑналом ÑледÑем обÑим пÑоÑеÑÑионалÑнÑм пÑинÑипам. ÐÑа догма â Ñо, ÑÑо каждÑй из Ð½Ð°Ñ Ð¾Ð±ÐµÑÐ°ÐµÑ Ñебе, и Ñо, ÑÑо Ð¼Ñ Ð¾Ð±ÐµÑаем каждомÑ, кÑо Ð½Ð°Ñ ÑиÑаеÑ.\' | t }} </p> <ol style="padding-inline-start: 15px"> <li> <p><span class="lead">{{ \'СлÑжим обÑеÑÑÐ²ÐµÐ½Ð½Ð¾Ð¼Ñ Ð±Ð»Ð°Ð³Ñ.\' | t }}</span> {{ \'ÐÐ°Ñ Ð¾Ð±ÑединÑÑÑ Ð¿ÑинÑÐ¸Ð¿Ñ ÑÐ²Ð¾Ð±Ð¾Ð´Ñ Ñлова, ÑеловеÑеÑкого доÑÑоинÑÑва и пÑоÑеÑÑионалÑной незавиÑимоÑÑи. ÐÑÑналиÑÑика â обÑеÑÑвенное дело. ÐÑ Ð·Ð°Ð´Ð°Ñа â не обÑлÑживаÑÑ Ð¸Ð½ÑеÑеÑÑ Ð³Ð¾ÑÑдаÑÑÑв, олигаÑÑ
ов и коÑпоÑаÑий, а иÑÑледоваÑÑ Ð¸ надежно докÑменÑиÑоваÑÑ Ð¿ÑоиÑÑ
одÑÑее, назÑваÑÑ Ð²ÐµÑи Ñвоими именами, заÑиÑаÑÑ ÑеловеÑеÑкое доÑÑоинÑÑво, помогаÑÑ Ð»ÑдÑм ÑлÑÑаÑÑ Ð´ÑÑг дÑÑга и лÑÑÑе понимаÑÑ Ð¼Ð¸Ñ.\' | t }}</p> </li> <li> <p><span class="lead">{{ \'РабоÑаем Ð´Ð»Ñ ÑиÑаÑелей â и вмеÑÑе Ñ Ð½Ð¸Ð¼Ð¸.\' | t }}</span> {{ \'ÐÑ ÑÑÑдимÑÑ Ð´Ð»Ñ Ð»Ñдей, коÑоÑÑе Ð½Ð°Ñ ÑиÑаÑÑ, и дейÑÑвÑем ÑолÑко в иÑ
инÑеÑеÑаÑ
. ÐÑ Ñважаем ÑиÑаÑелей, Ñеним вÑÐµÐ¼Ñ Ð¸ внимание дÑÑг дÑÑга, не деÑжим дÑÑгиÑ
за наивнÑÑ
и не ÑпÑоÑаем Ñложное до ÑдобнÑÑ
ÑÑ
ем. ЧиÑаÑÐµÐ»Ñ Ð¾ÑкÑÑÑого жÑÑнала â не поÑÑебиÑÐµÐ»Ñ Ð³Ð¾ÑовÑÑ
мнений, а ÑавнÑй ÑÑаÑÑник ÑазговоÑа: каждÑй Ð¼Ð¾Ð¶ÐµÑ Ð´Ð¾Ð¿Ð¾Ð»Ð½ÑÑÑ Ð¼Ð°ÑеÑÐ¸Ð°Ð»Ñ Ð·Ð½Ð°Ð½Ð¸Ñми и опÑÑом, пÑовеÑÑÑÑ ÑакÑÑ, вноÑиÑÑ Ð²Ð¾Ð·ÑÐ°Ð¶ÐµÐ½Ð¸Ñ Ð¸ ÑÑоÑнениÑ.\' | t }}</p> </li> <li> <p><span class="lead">{{ \'Ðа пеÑвое меÑÑо ÑÑавим ÑакÑÑ.\' | t }}</span> {{ \'ÐÐ¾Ð½Ð¸Ð¼Ð°Ñ Ð¾ÑвеÑÑÑвенноÑÑÑ Ð¿ÐµÑед аÑдиÑоÑией, Ð¼Ñ Ð²ÑбиÑаем надежнÑе иÑÑоÑники и компеÑенÑнÑÑ
ÑкÑпеÑÑов, иÑем незавиÑимÑе подÑвеÑÐ¶Ð´ÐµÐ½Ð¸Ñ ÑвидеÑелÑÑÑв, ÑобиÑаем деÑали, конÑекÑÑ Ð¸ живÑе голоÑа, ÑÑÐ¾Ð±Ñ ÐºÐ°Ð¶Ð´Ñй мог ÑделаÑÑ Ñвои вÑводÑ. ÐÑе ÑÑвеÑждениÑ, коÑоÑÑе Ð¼Ñ Ð´ÐµÐ»Ð°ÐµÐ¼, подÑвеÑждаÑÑÑÑ ÑакÑами, докÑменÑами, мнениÑми ÑкÑпеÑÑов и ÑÑÑлками Ð
1½Ð° пеÑвоиÑÑоÑники â Ñак, ÑÑÐ¾Ð±Ñ ÑиÑаÑели могли пÑовеÑиÑÑ Ñами.\' | t }}</p> </li> <li> <p><span class="lead">{{ \'Ðе боимÑÑ Ð·Ð°Ð¿ÑеÑнÑÑ
Ñем.\' | t }}</span> {{ \'У Ð½Ð°Ñ Ð½ÐµÑ ÑензÑÑÑ, идеологиÑеÑкиÑ
Ñамок и Ñем, о коÑоÑÑÑ
«ÑейÑÐ°Ñ Ð½Ðµ вÑемÑ». ÐÑ Ð½Ðµ пÑÑÑем неÑдобнÑе ÑакÑÑ, ÑаÑÑказÑваем пÑавдÑ, даже когда она гоÑÑка, и говоÑим о Ñом, ÑÑо важно, даже еÑли об ÑÑом пÑинÑÑо молÑаÑÑ. Свобода Ñлова не оÑменÑÐµÑ Ð¿ÑовеÑки ÑакÑов, ÑÐ²Ð°Ð¶ÐµÐ½Ð¸Ñ Ðº лÑдÑм и оÑвеÑÑÑвенноÑÑи за поÑледÑÑвиÑ.\' | t }}</p> </li> <li> <p><span class="lead">{{ \'Ðе гонимÑÑ Ð·Ð° повеÑÑкой.\' | t }}</span> {{ \'ÐвÑоÑÑ ÑамиздаÑа не пеÑепиÑÑваÑÑ Ð½Ð¾Ð²Ð¾ÑÑи, не заманиваÑÑ ÐºÐ»Ð¸ÐºÐ±ÐµÐ¹Ñом, не ÑоÑгÑÑÑ ÑÑевогой и ÑенÑаÑиÑми. ÐÑ Ð²ÑбиÑаем ÑемÑ, коÑоÑÑм в новоÑÑной гонке доÑÑаеÑÑÑ Ð½ÐµÐ·Ð°ÑлÑженно мало вниманиÑ. Ðам инÑеÑеÑнее ÑмоÑÑеÑÑ Ð³Ð»Ñбже ÑиÑминÑÑнÑÑ
ÑакÑов: иÑÑледоваÑÑ ÑеалÑноÑÑÑ, ÑазбиÑаÑÑÑÑ Ð² деÑалÑÑ
, анализиÑоваÑÑ Ð¿ÑиÑÐ¸Ð½Ñ Ð¸ поÑледÑÑвиÑ, иÑкаÑÑ Ð²ÑÑ
Ð¾Ð´Ñ Ð¸ ÑеÑениÑ, показÑваÑÑ, ÑÑо можно делаÑÑ Ñже ÑейÑаÑ, и ÑоздаваÑÑ Ð¼Ð°ÑеÑиалÑ, коÑоÑÑе не поÑеÑÑÑÑ ÑмÑÑла завÑÑа.\' | t }}</p> </li> <li> <p><span class="lead">{{ \'Ðаем возможноÑÑÑ Ð²ÑÑказаÑÑÑÑ Ð²Ñем.\' | t }}</span> {{ \'ÐÑ Ð²ÑÑлÑÑиваем вÑе заинÑеÑеÑованнÑе ÑÑоÑонÑ, но не пÑиÑоединÑемÑÑ Ð½Ð¸ к ÑÑÐµÐ¼Ñ Ð»Ð°Ð³ÐµÑÑ. ÐаждÑй, кого каÑаеÑÑÑ Ð¿ÑбликаÑиÑ, впÑаве оÑвеÑиÑÑ Ð¸ бÑÑÑ ÑÑлÑÑаннÑм. РлÑбÑм влаÑÑÑм, паÑÑиÑм, лÑдÑм, компаниÑм â и к ÑобÑÑвеннÑм ÑбеждениÑм â Ð¼Ñ Ð¾ÑноÑимÑÑ Ñ Ð¾Ð´Ð¸Ð½Ð°ÐºÐ¾Ð²Ñм ÑÑезвÑм ÑкепÑиÑизмом.\' | t }}</p> </li> <li> <p><span class="lead">{{ \'ÐÑгÑменÑÑ Ð²Ð°Ð¶Ð½ÐµÐµ ÑÑаÑÑÑа.\' | t }}</span> {{ \'ÐзвеÑÑноÑÑÑ, должноÑÑи и Ñегалии Ð
1½Ðµ даÑÑ Ð¿Ñивилегий â дебÑÑнÑй ÑекÑÑ Ð¼Ñ Ð¾Ñениваем Ñак же внимаÑелÑно, как ÑÑаÑÑÑ Ð¸Ð·Ð²ÐµÑÑного авÑоÑа. ÐаждÑй Ð¸Ð¼ÐµÐµÑ Ð¿Ñаво пÑедлагаÑÑ, возÑажаÑÑ Ð¸ аÑгÑменÑиÑоваÑÑ ÑÐ²Ð¾Ñ Ð¿Ð¾Ð·Ð¸ÑиÑ. ÐÑе ÑеÑÐµÐ½Ð¸Ñ Ð² оÑкÑÑÑом жÑÑнале ÑождаÑÑÑÑ Ð¸Ð· обÑÑждений, в коÑоÑÑÑ
взвеÑиваÑÑÑÑ Ð°ÑгÑменÑÑ, а не ÑÑаÑÑÑÑ Ð¸ ÑимпаÑии.\' | t }}</p> </li> <li> <p><span class="lead">{{ \'ÐÑинÑип «не навÑеди».\' | t }}</span> {{ \'ÐÑ Ð·Ð°ÑиÑаем безопаÑноÑÑÑ, беÑежем ÑаÑÑнÑÑ Ð¶Ð¸Ð·Ð½Ñ Ð¸ доÑÑоинÑÑво авÑоÑов, геÑоев, иÑÑоÑников и ÑобеÑедников. Человек, довеÑивÑий нам ÑÐ²Ð¾Ñ Ð¸ÑÑоÑиÑ, â не ÑÑÑÑÑ Ð´Ð»Ñ ÑекÑÑа. ÐÑ Ð½Ðµ иÑкажаем Ñлова, ÑоблÑдаем договоÑенноÑÑи, Ñ
Ñаним анонимноÑÑÑ Ð¸ никогда не иÑполÑзÑем довеÑие во вÑед лÑдÑм.\' | t }}</p> </li> <li> <p> <span class="lead">{{ \'ÐÑегда иÑпÑавлÑем оÑибки.\' | t }}</span> {{ \'ÐикÑо не безгÑеÑен, иногда и Ð¼Ñ Ð¾ÑибаемÑÑ. ÐÑвеÑÑÑвенноÑÑÑ Ð² Ñом, ÑÑо пÑизнаваÑÑ Ð¸ иÑпÑавлÑÑÑ Ð¾Ñибки. ÐамеÑили оÑÐ¸Ð±ÐºÑ â оÑпÑавÑÑе\' | t }} <a href="/guide#editing" target="_self">{{ \'ÑемаÑкÑ\' | t }}</a> {{ \'авÑоÑÑ Ð¸Ð»Ð¸ напиÑиÑе на\' | t }} <a href="mailto:[email protected]" rel="noopener noreferrer" target="_blank">[email protected]</a>{{ \': Ð¼Ñ Ð±Ð»Ð°Ð³Ð¾Ð´Ð°ÑÐ½Ñ ÐºÐ°Ð¶Ð´Ð¾Ð¼Ñ, кÑо Ð¿Ð¾Ð¼Ð¾Ð³Ð°ÐµÑ Ð¶ÑÑÐ½Ð°Ð»Ñ Ð±ÑÑÑ ÑоÑнее.\' | t }} </p> </li> <li> <p><span class="lead">{{ \'Ðелаем жÑÑнал вмеÑÑе.\' | t }}</span> {{ \'ÐаждÑй маÑеÑиал жÑÑнала пÑоÑ
Ð¾Ð´Ð¸Ñ ÑеÑез оÑкÑÑÑÑÑ ÑедакÑÐ¸Ñ â обÑÑждение, голоÑование и взаимнÑÑ Ð¿ÑовеÑкÑ. ÐаждÑй Ð¼Ð¾Ð¶ÐµÑ Ð¿Ð¾Ð¼Ð¾ÑÑ Ð´ÑÑÐ³Ð¾Ð¼Ñ ÑделаÑÑ ÑекÑÑ ÑоÑнее, ÑÑнее и ÑилÑнее, а авÑÐ¾Ñ Ð¼Ð¾Ð¶ÐµÑ Ð½Ðµ пÑинимаÑÑ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ, коÑоÑÑе делаÑÑ Ð¼Ð°ÑеÑиал Ñ
Ñже. ФиналÑÐ½Ð°Ñ Ð¿ÑбликаÑÐ¸Ñ â обÑÐ°Ñ ÑабоÑа и обÑÐ°Ñ Ð¾ÑвеÑÑÑвенноÑÑÑ.\' | t }}</p> </li> </ol> <div class="tw:mt-section"> <p>{{ \'Ðак и вÑÑ Ð² оÑкÑÑÑой ÑедакÑии, ÑÑа догма не вÑÑеÑена в камне: Ð¼Ñ Ð¾Ð±ÑÑждаем ÐµÑ Ð¸ Ñазвиваем вмеÑÑе. Ðока ÑÑи пÑинÑÐ¸Ð¿Ñ Ð² Ñиле, ÑÑо Ð½Ð°Ñ Ð¾Ð±ÐµÑ, коÑоÑÑй Ð¼Ñ Ð´ÐµÑжим, каждÑй Ð´ÐµÐ½Ñ ÑÑаÑаÑÑÑ Ð´ÐµÐ»Ð°ÑÑ Ð¾Ð±Ñий жÑÑнал лÑÑÑе.\' | t }}</p> <p> {{ \'Ðогма â ÑаÑÑÑ Ð¾Ð±Ñего Ñвода ÑамиздаÑа: в\' | t }} <a href="/manifest" target="_self">{{ \'маниÑеÑÑе\' | t }}</a> {{ \'â заÑем ÑÑÑеÑÑвÑÐµÑ ÐиÑкÑÑÑ, в\' | t }} <a href="/constitution" target="_self">{{ \'конÑÑиÑÑÑии\' | t }}</a> {{ \'â пÑава каждого авÑоÑа, в\' | t }} <a href="/guide" target="_self">{{ \'гайде\' | t }}</a> {{ \'â как ÑÑÑÑоена оÑкÑÑÑÐ°Ñ ÑедакÑиÑ, в\' | t }} <a href="/principles" target="_self">{{ \'пÑинÑипаÑ
ÑообÑеÑÑва\' | t }}</a> {{ \'â как Ð¼Ñ ÑоÑÑÑдниÑаем дÑÑг Ñ Ð´ÑÑгом.\' | t }} </p> <p> {{ \'ÐÑли Ð²Ñ Ð·Ð°Ð¼ÐµÑили оÑÑÑÑп Ð¾Ñ ÑÑиÑ
пÑинÑипов â напиÑиÑе на\' | t }} <a href="mailto:[email protected]" rel="noopener noreferrer" target="_blank">[email protected]</a>{{ \'. ÐÑ Ð¾ÑвеÑаем на каждое пиÑÑмо. РеÑли вам еÑÑÑ ÑÑо ÑказаÑÑ â\' | t }} <a href="/#post" view-modal="#become-author-modal">{{ \'пÑиÑоединÑйÑеÑÑ\' | t }}</a>{{ \': гоÑизонÑалÑÐ½Ð°Ñ ÑедакÑÐ¸Ñ Ð¾ÑкÑÑÑа Ð´Ð»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð³Ð¾.\' | t }} </p> </div> </div> </div> </div>'),e.put("/pages/about/guide.html","<update-meta title=\"{{ 'Ðак ÑÑÑÑоен ÐиÑкÑÑÑ' | t }}\"></update-meta> <update-meta name=\"description\" content=\"{{ 'ÐоÑизонÑалÑÐ½Ð°Ñ ÑедакÑиÑ: как ÑабоÑÐ°ÐµÑ Ð¾ÑкÑÑÑÑй жÑÑнал' | t }}\" ></update-meta> <update-meta name=\"keywords\" content=\"{{ 'Discours.io, пÑавила, terms of use' | t }}\"></update-meta> <update-meta property=\"og:title\" content=\"{{ 'Ðак ÑÑÑÑоен ÐиÑкÑÑÑ' | t }}\"></update-meta> <update-meta property=\"og:description\" content=\"{{ 'ÐоÑизонÑалÑÐ½Ð°Ñ ÑедакÑиÑ: как ÑабоÑÐ°ÐµÑ Ð¾ÑкÑÑÑÑй жÑÑнал' | t }}\" ></update-meta> <update-meta property=\"og:image\" content=\"/images/guide.jpg\"></update-meta>
1 <update-meta property=\"og:image:width\" content=\"1200\"></update-meta> <update-meta property=\"og:image:height\" content=\"941\"></update-meta> <div class=\"ds-container open-post tw:mt-5\"> <div class=\"tw:row-flex\"> <div class=\"tw:gutter-half tw:w-full tw:sm:w-7/12\"> <h1 class=\"h3 black-bg-heading black-bg-heading-margin\"> <span>{{ 'Ðак ÑÑÑÑоен ÐиÑкÑÑÑ' | t }}</span> </h1> </div> <div class=\"tw:gutter-half tw:w-full tw:sm:w-7/12 tw:sm:ml-offset-2 post-body tw:mt-section\"> <p ng-bind-html=\"('ÐиÑкÑÑÑ â незавиÑимÑй жÑÑнал о кÑлÑÑÑÑе, наÑке, иÑкÑÑÑÑве и обÑеÑÑве Ñ&nbsp;<a href=\\'/manifest\\'>оÑкÑÑÑой ÑедакÑией</a>. У&nbsp;Ð½Ð°Ñ Ð½ÐµÑ Ð³Ð»Ð°Ð²Ð½Ð¾Ð³Ð¾ ÑедакÑоÑа, инвеÑÑоÑа и&nbsp;вообÑе никого, кÑо Ð±Ñ Ð¿Ñинимал единолиÑнÑе ÑеÑениÑ. ÐмеÑÑо ÑÑадиÑионнÑÑ
иеÑаÑÑ
ий ÐиÑкÑÑÑ Ð¾Ñнован на пÑинÑипаÑ
пÑÑмой демокÑаÑии: в наÑем гоÑизонÑалÑном ÑообÑеÑÑве вÑе ÑедакÑионнÑе вопÑоÑÑ ÑеÑаÑÑÑÑ Ð¾ÑкÑÑÑÑм&nbsp;голоÑованием авÑоÑов&nbsp;жÑÑнала. ÐоÑ&nbsp;как ÑÑо&nbsp;ÑабоÑаеÑ.' | t) | trustedHtml\" ></p> <h3 class=\"tw:mt-6 tw:mb-4\"> <strong>{{ 'Ðак ÑÑÑÑоен ÑÐ°Ð¹Ñ ÐиÑкÑÑÑа' | t }}</strong> </h3> <p>{{ 'ÐиÑкÑÑÑ ÑоÑÑÐ¾Ð¸Ñ Ð¸Ð· ÑеÑÑÑеÑ
оÑновнÑÑ
Ñазделов:' | t }}</p> <ul> <li> <p> <a href=\"/articles/all\">{{ 'СÑаÑÑи' | t }}</a> — {{ 'здеÑÑ Ð¿ÑбликÑÑÑÑÑ Ð¸ÑÑледованиÑ, обзоÑÑ, ÑÑÑе, инÑеÑвÑÑ, ÑепоÑÑажи, аналиÑика и дÑÑгие маÑеÑÐ¸Ð°Ð»Ñ Ð¾ кÑлÑÑÑÑе, наÑке, иÑкÑÑÑÑве и обÑеÑÑве.' | t }} </p> </li> <li> <p> <a href=\"/expo/image\">{{ 'ÐÑкÑÑÑÑво' | t }}</a> — {{ 'здеÑÑ Ð¿ÑедÑÑÐ°Ð²Ð»ÐµÐ½Ñ Ñ
ÑдожеÑÑвеннÑе пÑоизведениÑ: лиÑеÑаÑÑÑа, живопиÑÑ, мÑзÑка, ÑоÑогÑаÑии, видео. ÐÑÐ¾Ñ Ñаздел Ð¿Ð¾Ð¼Ð¾Ð³Ð°ÐµÑ Ð¿ÑозвÑÑаÑÑ Ð½Ð¾Ð²Ð¾Ð¼Ñ Ð¸ÑкÑÑÑÑвÑ, коÑоÑое ÑоздаÑÑ ÑоÑÑийÑкие Ñ
Ñдожники, пиÑаÑели, ÑежиÑÑÑÑÑ Ð¸ мÑзÑканÑÑ.' | t }} </p> </li> <li> <p> <a href=\"/events\">{{ 'СобÑÑиÑ' | t }}</a> — <span ng-bind-html=\"('в ÑÑом Ñазделе пÑбликÑÑÑÑÑ ÑамÑе важнÑе, по Ð¼Ð½ÐµÐ½Ð¸Ñ ÑедакÑии, кÑлÑÑÑÑнÑе ÑобÑÑÐ¸Ñ Ð Ð¾ÑÑии â вÑÑÑавки, лекÑии, конÑеÑÑÑ, кинопоказÑ, ÑеÑÑивали, Ñ
ÑдожеÑÑвеннÑе и полиÑиÑеÑкие акÑии. ÐапиÑиÑе нам на <a href=\\'mailto:[email protected]\\'>поÑÑÑ</a>, еÑли Ð²Ñ Ñ
оÑиÑе ÑазмеÑÑиÑÑ Ð¾Ð±ÑÑвление. ÐÑ Ð´ÐµÐ»Ð°ÐµÐ¼ ÑÑо на безвозмездной оÑнове.' | t) | trustedHtml\" ></span> </p> </li> <li> <p> <a href=\"/feed?editorial\" ng-if=\"$ctrl.isStaff\">{{ 'РедакÑиÑ' | t }}</a ><a ng-if=\"!$ctrl.isStaff\" href=\"/#post\" view-modal=\"#become-author-modal\" >{{ 'РедакÑиÑ' | t }}</a > — {{ 'ÑÑо внÑÑÑенний Ñаздел, где поÑвлÑÑÑÑÑ Ð½Ð¾Ð²Ñе маÑеÑиалÑ, коÑоÑÑе пÑиÑÑлаÑÑ Ð² ÑедакÑиÑ. ÐдеÑÑ Ð°Ð²ÑоÑÑ Ð¾Ð±ÑÑждаÑÑ, ÑедакÑиÑÑÑÑ Ð¸ оÑениваÑÑ Ð¿ÑбликаÑии, опÑеделÑÑ Ñаким обÑазом ÑодеÑжание жÑÑнала.' | t }} </p> </li> </ul> <p ng-bind-html=\"('ÐаÑеÑÐ¸Ð°Ð»Ñ Ð²&nbsp;ÐиÑкÑÑÑе обÑединÑÑÑÑÑ Ð¿Ð¾&nbsp;<b>Ñемам</b> â&nbsp;клÑÑевÑм Ñловам, коÑоÑÑе ÑаÑполагаÑÑÑÑ Ð²&nbsp;конÑе маÑеÑиалов и&nbsp;ÑвÑзÑваÑÑ Ð¼Ð°ÑеÑÐ¸Ð°Ð»Ñ Ð¿Ð¾&nbsp;жанÑам (напÑимеÑ, <a href=\\'https://discours.io/tags/interview\\'>инÑеÑвÑÑ</a>, <a href=\\'https://discours.io/tags/reportage\\'>ÑепоÑÑажи</a>, <a href=\\'https://discours.io/tags/essay\\'>ÑÑÑе</a>, <a href=\\'https://discours.io/tags/likbez\\'>ликбезÑ</a>), по&nbsp;ÑемаÑике (<a href=\\'https://discours.io/tags/cinema\\'>кино</a>, <a href=\\'https://discours.io/tags/philosophy\\'>ÑилоÑоÑиÑ</a>, <a href=\\'https://discours.io/tags/history\\'>иÑÑоÑиÑ</a>, <a href=\\'https://discours.io/tags/absurdism\\'>абÑÑÑдизм</a>, <a href=\\'https://discours.io/tags/sex\\'>ÑекÑ</a> и Ñ.д.) или в&nbsp;ÑеÑии (как «<a href=\\'https://discours.io/tags/zakony-mira\\'>ÐÐ°ÐºÐ¾Ð½Ñ Ð¼Ð¸Ñа</a>» или «<a href=\\'https://discours.io/tags/za-liniey-mannergeyma\\'>Ðа&nbsp;линией ÐаннеÑгейма</a>»). Ð¢ÐµÐ¼Ñ Ð¾Ð±ÑединÑÑÑ ÑоÑни пÑбликаÑий, помогаÑÑ Ð¾ÑиенÑиÑоваÑÑÑÑ Ð²&nbsp;жÑÑнале и&nbsp;ÑледиÑÑ Ð·Ð°&nbsp;инÑеÑеÑнÑми маÑеÑиалами.' | t) | trustedHtml\" ></p> <section ng-if=\"$ctrl.isStaff\"> <p ng-bind-html=\"('Ð¡Ð°Ð¼Ð°Ñ Ð²Ð°Ð¶Ð½Ð°Ñ ÐºÐ½Ð¾Ð¿ÐºÐ° в ÐиÑкÑÑÑе â «<a href=\\'/#post\\' view-modal=\\'#become-author-modal\\'>пÑедложиÑÑ Ð¿ÑбликаÑиÑ</a>». Ðажав на неÑ, Ð²Ñ ÑможеÑе поделиÑÑÑÑ Ñвоей ÑабоÑой. ÐÑÑаÑи, Ð²Ð¾Ñ Ð½ÐµÑколÑко полезнÑÑ
<a href=\\'/articles/theory/how-to-write-a-good-article\\'>ÑовеÑов</a> о Ñом, как ÑделаÑÑ Ñвой ÑекÑÑ Ð»ÑÑÑе.' | t) | trustedHtml\" ></p> </section> <section ng-if=\"$ctrl.isStaff\"> <p ng-bind-html=\"('У каждого авÑоÑа еÑÑÑ <a href=\\'/profile\\'>пÑоÑилÑ</a>. Рнем оÑобÑажаÑÑÑÑ Ð²Ð°Ñи ÑабоÑÑ Ð¸ инÑоÑмаÑиÑ, коÑоÑÑÑ Ð²Ñ Ð¾ Ñебе ÑкажеÑе. ÐаполниÑÑ Ð¿ÑоÑÐ¸Ð»Ñ (ÑаÑÑказаÑÑ Ð¾ Ñебе, поÑÑавиÑÑ Ð¿Ð¾ÑÑÑеÑ, ÑказаÑÑ ÑÑÑлки на Ñвои аккаÑнÑÑ Ð² ÑоÑÑеÑÑÑ
и Ñ.д.) можно в <a href=\\'/edit/profile\\'>наÑÑÑойкаÑ
</a>.' | t) | trustedHtml\" ></p> <p> {{ 'РпÑоÑиле каждого авÑоÑа еÑÑÑ' | t }} <b>{{ 'Ñеноме' | t }}</b> â {{ 'ÑÑо показаÑÐµÐ»Ñ Ð·Ð°ÑлÑг авÑоÑа пеÑед ÑеловеÑеÑÑвом и его вклада в ÐиÑкÑÑÑ. Реноме оÑÑÐ°Ð¶Ð°ÐµÑ Ð¾ÑноÑение ÑÑаÑÑников ÑообÑеÑÑва к деÑÑелÑноÑÑи авÑоÑа и ÑлÑÐ¶Ð¸Ñ ÑÑедÑÑвом ÑамоÑпÑавлениÑ. ÐÑли Ð²Ñ ÑениÑе ÑÑаÑÑие дÑÑгого авÑоÑа, ÑÑиÑаеÑе, ÑÑо он Ð´ÐµÐ»Ð°ÐµÑ Ð¶ÑÑнал лÑÑÑе, и Ñ
оÑиÑе ÑказаÑÑ ÐµÐ¼Ñ Â«ÑпаÑибо», поблагодаÑиÑÑ ÐµÐ³Ð¾ можно, повÑÑив его Ñеноме. Ðл
1Ñ ÑÑого нÑжно нажаÑÑ Ð½Ð° плÑÑ Ð² его пÑоÑиле. РнаобоÑÐ¾Ñ â еÑли авÑÐ¾Ñ Ð¿Ð¾ÑÑÑÐ¿Ð°ÐµÑ Ð¿Ð»Ð¾Ñ
о, его Ñеноме ÑиÑкÑÐµÑ Ð¾ÐºÐ°Ð·Ð°ÑÑÑÑ Ð² глÑбоком минÑÑе и ÑеÑением ÑообÑеÑÑва он Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ð¸ÑклÑÑен из ÑедакÑии. ÐпÑоÑем, пока ÑакиÑ
ÑлÑÑаев не бÑло.' | t }} </p> </section> <section ng-if=\"!$ctrl.isStaff\"> <h3 class=\"tw:mt-section tw:mb-4\"> <strong>{{ 'Ðак ÑÑаÑÑ Ð°Ð²ÑоÑом жÑÑнала' | t }}</strong> </h3> <p ng-bind-html=\"('ÐиÑкÑÑÑ Ð¾Ð±ÑединÑÐµÑ Ð¶ÑÑналиÑÑов, акÑивиÑÑов, мÑзÑканÑов, Ñ
Ñдожников, ÑоÑогÑаÑов, ÑежиÑÑеÑов, ÑилоÑоÑов, ÑÑенÑÑ
и дÑÑгиÑ
замеÑаÑелÑнÑÑ
лÑдей. ÐаждÑй Ð¼Ð¾Ð¶ÐµÑ <a href=\\'/#post\\' view-modal=\\'#become-author-modal\\'>пÑиÑлаÑÑ</a> Ñвой маÑеÑиал в жÑÑнал. ФоÑÐ¼Ð°Ñ Ð¸ ÑемаÑика не имеÑÑ Ð·Ð½Ð°ÑениÑ, единÑÑвенное, ÑÑо важно â <a href=\\'/articles/theory/how-to-write-a-good-article\\'>Ñ
оÑоÑий</a> ли маÑеÑиал. ÐÑли ÑообÑеÑÑво поддеÑÐ¶Ð¸Ñ Ð²Ð°ÑÑ Ð¿ÑбликаÑиÑ, она вÑÐ¹Ð´ÐµÑ Ð² жÑÑнале и ÑÑÐ°Ð½ÐµÑ Ð´Ð¾ÑÑÑпна ÑÑÑÑÑам наÑиÑ
ÑиÑаÑелей.' | t) | trustedHtml\" ></p> </section> <h3 id=\"voting\" class=\"tw:mt-section tw:mb-4\"> <strong>{{ 'Ðак пÑоÑ
Ð¾Ð´Ð¸Ñ Ð³Ð¾Ð»Ð¾Ñование' | t }}</strong> </h3> <p> {{ 'ÐÑе пÑиÑÑлаемÑе в ÐиÑкÑÑÑ Ð¼Ð°ÑеÑÐ¸Ð°Ð»Ñ Ð¿Ð¾Ð¿Ð°Ð´Ð°ÑÑ Ð²' | t }} <b>{{ '\"РедакÑиÑ\"' | t }}</b>. {{ 'ÐÑо внÑÑÑенний Ñаздел ÑайÑа, где ÑÑаÑÑники ÑообÑеÑÑва ÑеÑаÑÑ, ÑÑо бÑÐ´ÐµÑ Ð¾Ð¿Ñбликовано в ÐиÑкÑÑÑе. Ðак ÑолÑко ÑабоÑа полÑÑÐ°ÐµÑ Ð¾Ð´Ð¾Ð±Ñение как минимÑм пÑÑеÑÑÑ
авÑоÑов оÑкÑÑÑой ÑедакÑии, она немедленно пÑбликÑеÑÑÑ Ð² жÑÑнале. ÐÑли же маÑеÑиал набиÑÐ°ÐµÑ Ð±Ð¾Ð»ÐµÐµ 20% голоÑов «пÑоÑив», он не вÑÑ
Ð¾Ð´Ð¸Ñ Ð¸ Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ð¾ÑпÑавлен на доÑабоÑкÑ. ÐеÑÑкиÑ
ÑÑоков ÑаÑÑмоÑÑÐµÐ½Ð¸Ñ Ð¼Ð°ÑеÑиалов Ñ Ð½Ð°Ñ Ð½ÐµÑ, иногда ÑÑо Ð·Ð°Ð½Ð¸Ð¼Ð°ÐµÑ ÑаÑ, иногда меÑÑÑ, обÑÑно â неÑколÑко дней.' | t }} </p> <section ng-if=\"!$ctrl.isStaff\"> <p> {{ 'Ðак ÑолÑко ÑообÑеÑÑво поддеÑÐ¶Ð¸Ñ Ð¿ÑбликаÑиÑ, Ð²Ñ Ð¿Ð¾Ð»ÑÑиÑе пÑиглаÑение в инÑеÑнеÑ-ÑедакÑÐ¸Ñ Ð¸ ÑможеÑе голоÑоваÑÑ Ð·Ð° новÑе маÑеÑиалÑ.' | t }} </p> </section> <h3 id=\"editing\" class=\"tw:mt-section tw:mb-4\"> <strong>{{ 'Ðак Ð¼Ñ Ð´ÐµÐ»Ð°ÐµÐ¼ ÑекÑÑÑ Ð´ÑÑг дÑÑга лÑÑÑе' | t }}</strong> </h3> <p> {{ 'ÐиÑкÑÑÑ â жÑÑнал Ñ ÑовмеÑÑнÑм ÑедакÑиÑованием. СовеÑÑенÑÑвоваÑÑ ÑекÑÑÑ Ð½Ð°Ð¼ помогаеÑ' | t }} <b>{{ 'ÑиÑÑема ÑемаÑок' | t }}</b>. {{ 'ÐÑ Ð¼Ð¾Ð¶ÐµÑе вÑделиÑÑ ÑаÑÑÑ ÑекÑÑа в лÑбой ÑÑаÑÑе и оÑÑавиÑÑ Ðº ней замеÑание, вопÑÐ¾Ñ Ð¸Ð»Ð¸ пÑедложение â авÑÐ¾Ñ ÑекÑÑа полÑÑÐ¸Ñ ÑÐ¾Ð²ÐµÑ Ð½Ð° поÑÑÑ Ð¸ ÑÐ¼Ð¾Ð¶ÐµÑ ÐµÐ³Ð¾ ÑÑеÑÑÑ. Так Ð¼Ñ ÑÑÑÑанÑем опеÑаÑки, неÑоÑноÑÑи и ÑовеÑÑем дÑÑг дÑÑгÑ, как ÑделаÑÑ ÑекÑÑÑ ÐºÐ°ÑеÑÑвеннее и инÑеÑеÑнее.' | t }} </p> <p> {{ 'СÑеди ÑÑаÑÑников ÑообÑеÑÑва еÑÑÑ Ð¿ÑоÑеÑÑионалÑнÑе ÑедакÑоÑÑ, коÑоÑÑе помогаÑÑ Ð°Ð²ÑоÑам делаÑÑ ÑекÑÑÑ Ð»ÑÑÑе. ÐÑли ваÑÐµÐ¼Ñ Ð¼Ð°ÑеÑÐ¸Ð°Ð»Ñ Ð¿Ð¾ÑÑебÑеÑÑÑ Ð´Ð¾ÑабоÑка, они помогÑÑ Ð¾ÑÑедакÑиÑоваÑÑ ÑекÑÑ, подобÑаÑÑ Ð¸Ð»Ð»ÑÑÑÑаÑии, пÑидÑмаÑÑ Ð·Ð°Ð³Ð¾Ð»Ð¾Ð²Ð¾Ðº и кÑаÑиво ÑвеÑÑÑаÑÑ Ð¿ÑбликаÑиÑ.' | t }} {{ 'ÐÑли Ð²Ñ Ñ
оÑиÑе обÑÑдиÑÑ ÑекÑÑ, пÑежде Ñем загÑÑзиÑÑ Ð¼Ð°ÑеÑиал в инÑеÑнеÑ-ÑедакÑÐ¸Ñ â ÑазмеÑÑиÑе его в google-докÑменÑе, оÑкÑойÑе доÑÑÑп к ÑедакÑиÑÐ¾Ð²Ð°Ð½Ð¸Ñ Ð¿Ð¾ ÑÑÑлке и напиÑиÑе нам на' | t }} <a href=\"mailto:[email protected]\">[email protected]</a>. </p> <p> {{ 'ÐÑли Ñ Ð²Ð°Ñ Ð²Ð¾Ð·Ð½Ð¸ÐºÐ°ÑÑ ÑÑÑдноÑÑи Ñ Ñем, ÑÑÐ¾Ð±Ñ Ð¿Ð¾Ð´Ð¾Ð±ÑаÑÑ Ðº ÑÐ²Ð¾ÐµÐ¼Ñ Ð¼Ð°ÑеÑÐ¸Ð°Ð»Ñ Ð¸Ð»Ð»ÑÑÑÑаÑии, Ñоже пиÑиÑе на' | t }} <a href=\"mailto:[email protected]\">{{ 'поÑÑÑ' | t }}</a> â {{ 'наÑи коллеги-Ñ
Ñдожники могÑÑ Ð²Ð°Ð¼ помоÑÑ.' | t }} <a name=\"together\" ng-if=\"!$ctrl.isStaff\"></a> </p> <section ng-if=\"$ctrl.isStaff\">
1 <h3 id=\"begood\" class=\"tw:mt-section tw:mb-4\"> <strong>{{ 'Ðак Ñ Ð½Ð°Ñ Ð¿ÑинÑÑо ÑÐµÐ±Ñ Ð²ÐµÑÑи' | t }}</strong> </h3> <p> {{ 'ЧиÑайÑе, оÑенивайÑе, комменÑиÑÑйÑе ÑÑаÑÑи дÑÑгиÑ
авÑоÑов, делиÑеÑÑ Ð¸Ð½ÑеÑеÑнÑми пÑбликаÑиÑми в ÑоÑÑеÑÑÑ
, пÑбликÑйÑе Ñвои ÑÑаÑÑи и Ñ
ÑдожеÑÑвеннÑе ÑабоÑÑ. ÐомниÑе, ÑÑо ÐиÑкÑÑÑ â ÑÑо Ð²Ð°Ñ Ð¶ÑÑнал, и именно вÑ, голоÑÑÑ Ð·Ð° пÑбликаÑии, ÑеÑаеÑе каким он бÑдеÑ. ÐÑли Ð²Ñ ÑÑиÑаеÑе, ÑÑо ÑабоÑа доÑÑойна пÑбликаÑии в жÑÑнале, ÑÑавÑÑе плÑÑ, а еÑли дÑмаеÑе, ÑÑо лÑÑÑе Ð±Ñ ÐµÑ Ð½Ðµ бÑло, вÑÑÑиÑе минÑÑ. ÐожалÑйÑÑа, ÑÑководÑÑвÑйÑеÑÑ Ð»Ð¸ÑÑ ÐºÐ°ÑеÑÑвом маÑеÑиала пÑи его оÑенке. Ðе ÑÑавÑÑе маÑеÑÐ¸Ð°Ð»Ñ Ð¿Ð»ÑÑ/минÑÑ ÑолÑко поÑомÑ, ÑÑо вам нÑавиÑÑÑ/не нÑавиÑÑÑ ÐµÐ³Ð¾ авÑоÑ. УважайÑе ÑобеÑедника, даже еÑли он вам лиÑно не импониÑÑеÑ: ÑолÑко Ñак полÑÑаÑÑÑÑ ÐºÐ¾Ð½ÑÑÑÑкÑивнÑе диÑкÑÑÑии. РпоÑледнее: поÑÑаÑайÑеÑÑ Ð½Ðµ наÑÑÑаÑÑ Ð·Ð°ÐºÐ¾Ð½Ñ Ð Ð¾ÑÑийÑкой ФедеÑаÑии без кÑайней на Ñо необÑ
одимоÑÑи.' | t }} <a name=\"together\" ng-if=\"$ctrl.isStaff\"></a> </p> </section> <h3 class=\"tw:mt-section tw:mb-4\"> <strong>{{ 'ЧÑо ÑообÑеÑÑво Ð´Ð°ÐµÑ Ð°Ð²ÑоÑам' | t }}</strong> </h3> <ul> <li> <p> <strong>{{ 'ÐÑаво опÑеделÑÑÑ, каким бÑÐ´ÐµÑ Ð¶ÑÑнал' | t }}</strong>. {{ 'ÐиÑкÑÑÑ â ÑÑо обÑеÑÑÐ²ÐµÐ½Ð½Ð°Ñ Ð¸Ð½ÑÑиÑÑÑиÑ, ÑÐ¾Ð·Ð´Ð°Ð½Ð½Ð°Ñ Ð»ÑдÑми и Ñади лÑдей, ÑÑнкÑиониÑÑÑÑÐ°Ñ Ð½Ð° ÑÑловиÑÑ
пÑÑмой демокÑаÑии. ÐвÑоÑÑ Ð¿ÑбликÑÑÑ ÑÑаÑÑи и Ñ
ÑдожеÑÑвеннÑе пÑоекÑÑ, ÑÑаÑÑвÑÑÑ Ð² обÑÑждениÑÑ
, голоÑÑÑÑ Ð·Ð° ÑабоÑÑ ÐºÐ¾Ð»Ð»ÐµÐ³ и Ñаким обÑазом вноÑÑÑ Ñвой вклад в ÑазвиÑие пÑоекÑа, опÑеделÑÑ ÑодеÑжание и напÑавление жÑÑнала.' | t }} </p> </li> <li> <p> <strong>{{ 'ÐозможноÑÑÑ Ð¾Ð±ÑаÑиÑÑÑÑ Ðº ÑиÑокой аÑдиÑоÑии' | t }}</strong>. {{ 'ÐиÑкÑÑÑ ÑиÑаÑÑ Ð´ÐµÑÑÑки ÑÑÑÑÑ Ð»Ñдей, и Ñ ÐºÐ°Ð¶Ð´Ñм днем иÑ
ÑÑановиÑÑÑ Ð±Ð¾Ð»ÑÑе.' | t }} </p> </li> <li> <p> <strong>{{ 'ÐоддеÑжка ÑедакÑии' | t }}</strong>. {{ 'ÐиÑкÑÑÑ Ð¿ÑедоÑÑавлÑÐµÑ Ð°Ð²ÑоÑам аккÑедиÑаÑÐ¸Ñ Ð½Ð° меÑопÑиÑÑиÑ, Ð±Ð°Ð·Ñ ÐºÐ¾Ð½ÑакÑов, ÑÑидиÑеÑкÑÑ Ð¿Ð¾Ð´Ð´ÐµÑжкÑ, ознакомление Ñ ÐºÐ½Ð¸Ð¶Ð½Ñми, кино- и мÑзÑкалÑнÑми новинками до иÑ
вÑÑ
ода в ÑвеÑ. ÐÑли ÑÑо-Ñо из ÑÑого вам понадобиÑÑÑ, пиÑиÑе на поÑÑÑ' | t }} <a href=\"mailto:[email protected]\">[email protected]</a> â {{ 'поможем.' | t }} </p> <section ng-if=\"$ctrl.editorialLinks.booksList\"> <p> {{ 'ÐÑÑаÑи, Ð²Ð¾Ñ Ð¾Ð±Ð½Ð¾Ð²Ð»ÑÑÑийÑÑ' | t }} <a ng-href=\"{{ $ctrl.editorialLinks.booksList }}\" rel=\"noopener noreferrer\" >{{ 'ÑпиÑок книжнÑÑ
новинок' | t }}</a >, {{ 'коÑоÑÑе можно взÑÑÑ Ð´Ð»Ñ Ð¾Ð±Ð·Ð¾Ñа, конÑпекÑа, ÑеÑензии или пÑбликаÑии понÑавивÑегоÑÑ ÑÑагменÑа.' | t }} </p> </section> </li> <li> <p> <strong>{{ 'ÐÑеÑÑ-каÑÑÑ Ð´Ð»Ñ ÐºÐ¾ÑÑеÑпонденÑов' | t }}</strong>. {{ 'ТÑи опÑбликованнÑе ÑÑаÑÑи позволÑÑÑ Ð°Ð²ÑоÑам ÐиÑкÑÑÑа полÑÑиÑÑ Ð¾ÑиÑиалÑнÑе ÑдоÑÑовеÑÐµÐ½Ð¸Ñ Ð¶ÑÑналиÑÑов (пÑеÑÑ-каÑÑÑ) на ÑледÑÑÑий год. ÐÑеÑÑ-каÑÑÑ ÑдоÑÑовеÑÑÑÑ, ÑÑо Ð²Ñ Ð¶ÑÑналиÑÑ Ð¸ можеÑе полÑзоваÑÑÑÑ Ð²Ñеми Ñеми пÑавами, коÑоÑÑе гаÑанÑиÑÑÐµÑ Ðакон о СÐÐ. ÐÑоме Ñого, многие кÑлÑÑÑÑнÑе инÑÑиÑÑÑии (мÑзеи, галеÑеи и дÑ.) пÑедоÑÑавлÑÑÑ Ð¶ÑÑналиÑÑам пÑаво Ñвободного вÑ
ода.' | t }} </p> </li> <li> <p> <strong>{{ 'ÐомоÑÑ ÑоÑен ÑпеÑиалиÑÑов в ÑазнÑÑ
облаÑÑÑÑ
' | t }}</strong>. {{ 'РоÑнове ÐиÑкÑÑÑа Ð»ÐµÐ¶Ð¸Ñ Ð¸Ð´ÐµÑ ÑовмеÑÑного ÑедакÑиÑованиÑ. УÑаÑÑники ÑедакÑионного ÑообÑеÑÑва â неÑколÑко ÑоÑен жÑÑналиÑÑов, иÑÑледоваÑелей, Ñ
Ñдожников, лиÑеÑаÑоÑов из ÑазнÑÑ
ÑÑÑан â изÑÑаÑÑ Ð¼Ð°ÑеÑÐ¸Ð°Ð»Ñ Ð´ÑÑг дÑÑга до пÑбликаÑии и помогаÑÑ ÑделаÑÑ Ð¸Ñ
каÑеÑÑвеннее и инÑеÑеÑнее. Так, в ÑедакÑии неÑедко ÑкладÑваÑÑÑÑ ÑвоÑÑеÑкие ÑоÑзÑ: напÑимеÑ, авÑоÑов ÑекÑÑов и Ñ
Ñдожников, ÑоздаÑÑиÑ
Ð´Ð»Ñ Ð½Ð¸Ñ
иллÑÑÑÑаÑии.' | t }} </p> </li> <li> <p> <strong>{{ 'ÐÑоÑÑÑанÑÑво обÑÐµÐ½Ð¸Ñ Ð¿Ð¾Ð»Ð½Ð¾Ðµ вÑдаÑÑиÑ
ÑÑ Ð»Ñдей' | t }}</strong>. {{ 'ÐиÑкÑÑÑ â болÑÑое живое ÑообÑеÑÑво инÑеллекÑÑалов, ÑазбÑоÑаннÑÑ
по вÑÐµÐ¼Ñ Ð·ÐµÐ¼Ð½Ð¾Ð¼Ñ ÑаÑÑ. ÐÑÑÑпив в ÑедакÑиÑ, Ð²Ñ ÑможеÑе познакомиÑÑÑÑ Ñо множеÑÑвом инÑеÑеÑнÑÑ
лÑдей, коÑоÑÑе опÑеделÑÑÑ Ð¿Ð¾Ð²ÐµÑÑÐºÑ Ð·Ð°Ð²ÑÑаÑнего днÑ, вдоÑ
новлÑÑÑ Ð¾ÐºÑÑжаÑÑиÑ
, ÑоздаÑÑ Ð½Ð¾Ð²Ð¾Ðµ и изÑÑаÑÑ ÑÑаÑое, иÑÑÑ Ð·Ð½Ð°Ð½Ð¸Ñ Ð¸ гоÑÐ¾Ð²Ñ Ð¸Ð¼Ð¸ делиÑÑÑÑ, ÑÑÐ¾Ð±Ñ Ð¼ÐµÐ½ÑÑÑ Ð¼Ð¸Ñ Ð² ÑооÑвеÑÑÑвии Ñо Ñвоими идеалами.' | t }} </p> </li> </ul>
1 <h3 class=\"tw:mt-section tw:mb-4\"> <strong>{{ 'Ðак бÑÑÑ Ð² кÑÑÑе' | t }}</strong> </h3> <p ng-bind-html=\"('Ðа Ñвежими пÑбликаÑиÑми ÐиÑкÑÑÑа можно ÑледиÑÑ Ð½Ðµ ÑолÑко на ÑайÑе, но и на ÑÑÑаниÑаÑ
в <a href=\\'https://facebook.com/discoursio/\\' target=\\'_blank\\' rel=\\'noopener noreferrer\\'>ФейÑбÑке</a>, <a href=\\'https://vk.com/discoursio\\' target=\\'_blank\\' rel=\\'noopener noreferrer\\'>ÐÐонÑакÑе</a> и <a href=\\'https://t.me/discoursio\\' target=\\'_blank\\' rel=\\'noopener noreferrer\\'>ТелегÑаме</a>. РеÑÑ Ñаз в меÑÑÑ Ð¼Ñ Ð¾ÑпÑавлÑем <a href=\\'/#subscribe\\' view-modal=\\'#subscribe-modal\\'>поÑÑовÑÑ ÑаÑÑÑлкÑ</a> Ñ Ð´Ð°Ð¹Ð´Ð¶ÐµÑÑом лÑÑÑиÑ
маÑеÑиалов.' | t) | trustedHtml\" ></p> <p ng-if=\"$ctrl.editorialLinks.telegramChat\"> {{ 'ÐпеÑаÑивнÑÑ ÑвÑÐ·Ñ Ñ ÐºÐ¾Ð»Ð»ÐµÐ³Ð°Ð¼Ð¸ по гоÑизонÑалÑной ÑедакÑии Ð¼Ñ Ð¿Ð¾Ð´Ð´ÐµÑживаем в' | t }} <a ng-href=\"{{ $ctrl.editorialLinks.telegramChat }}\" rel=\"noopener noreferrer\" >{{ 'Telegram-ÑаÑе' | t }}</a >. {{ 'Там Ð¼Ñ ÑазÑабаÑÑваем ÑÐµÐ¼Ñ Ð½Ð¾Ð²ÑÑ
пÑбликаÑий, обÑÑждаем маÑеÑиалÑ, коÑоÑÑе пÑиÑÑлаÑÑ Ð² ÑедакÑиÑ, ÑовеÑÑемÑÑ Ð¸ дÑмаем о Ñом, как ÑделаÑÑ Ð¶ÑÑнал еÑÑ Ð»ÑÑÑе. ÐÑиÑоединÑйÑеÑÑ!' | t }} </p> <p ng-bind-html=\"('ÐÑли Ð²Ñ Ñ
оÑиÑе ÑоÑÑÑдниÑаÑÑ, ÑÑо-Ñо обÑÑдиÑÑ Ð¸Ð»Ð¸ пÑедложиÑÑ â пожалÑйÑÑа, пиÑиÑе на <a href=\\'mailto:[email protected]\\'>[email protected]</a>. ÐÑ Ð¾Ð±ÑзаÑелÑно оÑвеÑим.' | t) | trustedHtml\" ></p> </div> </div> </div>"),e.put("/pages/about/help-us.html",'<update-meta title="{{ \'ÐоддеÑжаÑÑ ÐиÑкÑÑÑ\' | t }}"></update-meta> <update-meta name="description" content="{{ \'ÐнеÑиÑе вклад в ÑамиздаÑ. ÐоддеÑжиÑе ÐиÑкÑÑÑ â незавиÑимое некоммеÑÑеÑкое издание, коÑоÑое ÑабоÑÐ°ÐµÑ ÑолÑко Ð´Ð»Ñ Ð²Ð°Ñ Ð¸ ÑÑÑеÑÑвÑÐµÑ Ð½Ð° наÑи пожеÑÑвованиÑ. ÐÑ â опоÑа оÑкÑÑÑой ÑедакÑии\' | t }}" ></update-meta> <update-meta name="keywords" content="{{ \'Discours.io, помоÑÑ, благоÑвоÑиÑелÑноÑÑÑ\' | t }}" ></update-meta> <update-meta property="og:title" content="{{ \'ÐнеÑиÑе вклад в ÑамиздаÑ\' | t }}"></update-meta> <update-meta property="og:description" content="{{ \'ÐоддеÑжиÑе ÐиÑкÑÑÑ â незавиÑимое некоммеÑÑеÑкое издание Ñ Ð¾ÑкÑÑÑой ÑедакÑией, коÑоÑое ÑеÑÑно ÑаÑÑказÑÐ²Ð°ÐµÑ Ð¿ÑавдÑ, ÑабоÑÐ°ÐµÑ ÑолÑко Ð´Ð»Ñ Ð²Ð°Ñ Ð¸ ÑÑÑеÑÑвÑÐµÑ Ð½Ð° наÑи пожеÑÑвованиÑ\' | t }}" ></update-meta> <update-meta property="og:image" content="/images/donate/donate-discours-big.jpg"></update-meta> <div class="help-us-page-wrapper"> <div class="ds-container"> <div class="tw:row-flex"> <div class="help-us-content-col tw:gutter-half tw:w-full tw:md:w-6/12 tw:md:ml-offset-2"> <div class="help-us"> <div class="help-us__wrapper"> <div class="help-us__body"> <h1 class="help-us__title"> <b>{{ \'ÐнеÑиÑе вклад в ÑамиздаÑ\' | t }}</b> </h1> <h2 class="help-us__subtitle"> {{ \'ÐоддеÑжиÑе незавиÑимÑÑ ÐºÑлÑÑÑÑÑ Ð¸ гÑажданÑкÑÑ Ð¶ÑÑналиÑÑикÑ\' | t }} </h2> <div class="help-us__content"> <div class="help-us__image"> <picture> <source srcset=" /images/donate/donate-by-danya.jpg, /images/donate/donate-by-danya.jpg 2x " media="(min-width: 992px)" /> <img srcset="/images/donate/donate-by-danya-mobile.jpg" alt="{{ \'Свобода Ñлова\' | t }}" loading="lazy" /> </picture> </div> <div class="help-us__text"> {{ \'ÐиÑкÑÑÑ â оÑкÑÑÑÐ°Ñ Ð¼ÐµÐ´Ð¸Ð°Ð¿Ð»Ð°ÑÑоÑма Ñ Ð³Ð¾ÑизонÑалÑной ÑедакÑией, коÑоÑÐ°Ñ Ð²ÑÑÑÑÐ¿Ð°ÐµÑ ÑÑибÑной Ð´Ð»Ñ Ð½ÐµÐ·Ð°Ð²Ð¸Ñимой жÑÑналиÑÑики и Ñвободной мÑÑли, ежедневно Ð¿Ð¾Ð¼Ð¾Ð³Ð°Ñ Ð»
1ÑдÑм ÑаÑÑказÑваÑÑ Ð·Ð½Ð°ÑимÑе иÑÑоÑии Ñак, ÑÑÐ¾Ð±Ñ Ð¾Ð½Ð¸ бÑли ÑÑлÑÑанÑ. Ð ÑпоÑ
Ñ Ð±ÐµÑпÑеÑеденÑного Ð´Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Ð½Ð° незавиÑимÑе медиа и ÑÐ²Ð¾Ð±Ð¾Ð´Ñ Ñлова Ð¼Ñ Ð¿ÑоÑивоÑÑоим наÑÑÑпаÑÑÐµÐ¼Ñ Ð½ÐµÐ²ÐµÐ¶ÐµÑÑÐ²Ñ Ð¸ пÑопаганде, Ð´ÐµÐ»Ð°Ñ Ð²ÑÑ Ð²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾Ðµ, ÑÑÐ¾Ð±Ñ Ð¿ÑодолжаÑÑ Ð³Ð¾Ð²Ð¾ÑиÑÑ Ð¿ÑÐ°Ð²Ð´Ñ Ð¸ ÑеÑÑно пиÑаÑÑ Ð¾ важном.\' | t }} </div> <div class="help-us__quote"> <b> {{ \'ÐÑ Ð²ÐµÑим, ÑÑо Ñ Ð¿Ð¾Ð¼Ð¾ÑÑÑ Ñлова, идей и знаний можно измениÑÑ Ð½Ðµ ÑолÑко ÑазговоÑÑ Ð²Ð¾ÐºÑÑг, но вмеÑÑе Ñ Ð½Ð¸Ð¼Ð¸ и миÑ\' | t }} </b> </div> <div class="help-us__text" ng-bind-html="(\'Ð¡Ð¾Ð·Ð´Ð°Ð²Ð°Ñ Ð¿ÑоÑÑÑанÑÑво, оÑнованное на <a href=\\\'https://discours.io/manifest\\\' target=\\\'_blank\\\' rel=\\\'noopener noreferrer\\\'>пÑинÑипаÑ
</a> коллекÑивной жÑÑналиÑÑики, ÑÐ²Ð¾Ð±Ð¾Ð´Ñ Ñлова и пÑÑмой демокÑаÑии, ÐиÑкÑÑÑ ÑаÑпÑоÑÑÑанÑÐµÑ Ð·Ð½Ð°Ð½Ð¸Ñ Ð¸ кÑиÑиÑеÑкое мÑÑление, ÑаÑÑказÑÐ²Ð°ÐµÑ Ð¾ лÑдÑÑ
и идеÑÑ
, менÑÑÑиÑ
миÑ, ÑÑÐ¸Ð»Ð¸Ð²Ð°ÐµÑ Ð³Ð¾Ð»Ð¾Ñа ÑеÑ
, кÑо не пÑедÑÑавлен в ÑÑадиÑионнÑÑ
медиа, и пÑÑмо говоÑÐ¸Ñ Ð¾ Ñом, о Ñем дÑÑгие молÑаÑ.\' | t) | trustedHtml" ></div> <div class="help-us__text"> {{ \'ÐиÑкÑÑÑ â некоммеÑÑеÑкое издание и ÑÑÑеÑÑвÑÐµÑ Ð»Ð¸ÑÑ Ð±Ð»Ð°Ð³Ð¾Ð´Ð°ÑÑ Ð¿Ð¾Ð¶ÐµÑÑвованиÑм, опиÑаÑÑÑ Ð¸ÑклÑÑиÑелÑно на ваÑÑ Ð¿Ð¾Ð´Ð´ÐµÑжкÑ. ÐÑ ÑабоÑаем ÑолÑко Ð´Ð»Ñ Ð²Ð°Ñ Ð¸ Ñ Ð²Ð°Ñей помоÑÑÑ.\' | t }} </div> <div class="help-us__quote"> <b>{{ \'ÐомогиÑе ÐиÑкÑÑÑÑ Ð²ÑжиÑÑ â ÑÑанÑÑе меÑенаÑом ÑамиздаÑа.\' | t }}</b> </div> <div class="help-us__text"> {{ \'ÐÑ Ð¿Ð¾Ð¼Ð¾Ð¶ÐµÑе пÑозвÑÑаÑÑ Ð·Ð½Ð°ÑимÑм иÑÑоÑиÑм, коÑоÑÑе не вÑÑли Ð±Ñ Ð±ÐµÐ· ваÑей помоÑи, внеÑÑÑе неоÑенимÑй вклад в ÑазвиÑие незавиÑимой кÑлÑÑÑÑÑ Ð¸ оÑкÑоеÑе Ñебе и миллионам дÑÑгиÑ
лÑдей доÑÑÑп к неподÑензÑÑÐ½Ð¾Ð¼Ñ Ð¸ÑкÑÑÑÑÐ²Ñ Ð¸ Ñвободной гÑажданÑкой жÑÑналиÑÑике.\' | t }} </div> </div> <hr class="help-us__hr" /> <h1 class="help-us__title" id="purpose"> <b>{{ \'ÐаÑа поддеÑжка Ð¿Ð¾Ð¼Ð¾Ð¶ÐµÑ ÑамиздаÑÑ\' | t }}</b> </h1> <div class="help-us__content"> <details class="help-us__spoiler help-us__spoiler--1"> <summary> {{ \'ÐÑÑаваÑÑÑÑ Ð¾Ð¿Ð»Ð¾Ñом гÑманизма и гÑажданÑкой жÑÑналиÑÑики\' | t }} </summary> <p> {{ \'Ð¡Ð°Ð¼Ð¸Ð·Ð´Ð°Ñ ÐµÐ¶ÐµÐ´Ð½ÐµÐ²Ð½Ð¾ Ð¿Ð¾Ð¼Ð¾Ð³Ð°ÐµÑ Ð»ÑдÑм ÑаÑÑказÑваÑÑ Ð¿Ð¾ÑÑÑÑаÑÑие иÑÑоÑии, делиÑÑÑÑ Ð¾Ð¿ÑÑом, знаниÑми, ÑазбиÑаÑÑÑÑ Ð² ÑложнÑÑ
наÑÑнÑÑ
ÑеноменаÑ
и ÑоздаваÑÑ Ð¼ÑлÑÑимедийнÑе лонгÑÐ¸Ð´Ñ Ð½Ð° важнÑе Ð´Ð»Ñ Ð¿Ð¾Ð½Ð¸Ð¼Ð°Ð½Ð¸Ñ Ð¼Ð¸Ñа ÑемÑ. ÐлагодаÑÑ Ð²Ð°Ð¼ жÑÑнал и далÑÑе ÑÐ¼Ð¾Ð¶ÐµÑ Ð¿ÑбликоваÑÑ ÑÑаÑелÑно пÑоÑабоÑаннÑе ÑÑаÑÑи, поддеÑживаÑÑ Ð½ÐµÐ·Ð°Ð²Ð¸ÑимÑÑ
авÑоÑов и ÑÑиливаÑÑ Ð°Ð»ÑÑеÑнаÑивнÑе голоÑа.\' | t }} </p> </details> <details class="help-us__spoiler help-us__spoiler--2"> <summary>{{ \'СоздаваÑÑ Ð½Ð¾Ð²Ñе ÑникалÑнÑе пÑбликаÑии\' | t }}</summary> <p ng-bind-html="(\'ÐаÑа помоÑÑ Ð¿Ð¾Ð·Ð²Ð¾Ð»Ð¸Ñ Ð¿ÑбликоваÑÑ Ð½Ð°ÑÑно-попÑлÑÑнÑе <a href=\\\'https://discours.io/articles/theory\\\' target=\\\'_blank\\\' rel=\\\'noopener noreferrer\\\'>иÑÑледованиÑ</a>, пеÑÐµÐ²Ð¾Ð´Ñ Ð²Ð°Ð¶Ð½ÑÑ
заÑÑбежнÑÑ
ÑÑаÑей, Ð»Ð¸ÐºÐ±ÐµÐ·Ñ Ð¿Ð¾ пÑиÑ
ологии, ÑилоÑоÑии и анÑÑопологии, иÑÑоÑиÑеÑкие <a href=\\\'https://discours.io/articles/culture\\\' target=\\\'_blank\\\' rel=\\\'noopener noreferrer\\\'>гидÑ</a> о ÑеноменаÑ
кÑлÑÑÑÑÑ, ÑепоÑÑажи, жÑÑналиÑÑÑкие ÑаÑÑледованиÑ, <a href=\\\'https://discours.io/tags/interview\\\' target=\\\'_blank\\\' rel=\\\'noopener noreferrer\\\'>инÑеÑвÑÑ</a> Ñ ÑÑенÑми, деÑÑелÑми иÑкÑÑÑÑва и акÑивиÑÑами, аналиÑиÑеÑкие <a href=\\\'https://discours.io/articles/social\\\' target=\\\'_blank\\\' rel=\\\'noopener noreferrer\\\'>ÑиÑеÑÑ</a> об изменениÑÑ
в обÑеÑÑве, пеÑедовой <a href=\\\'https://discours.io/articles/chapter
1s\\\' target=\\\'_blank\\\' rel=\\\'noopener noreferrer\\\'>нон-ÑикÑен</a>, оÑÑÑоÑоÑиалÑнÑÑ <a href=\\\'https://discours.io/expo/image\\\' target=\\\'_blank\\\' rel=\\\'noopener noreferrer\\\'>гÑаÑикÑ</a>, незавиÑимÑÑ <a href=\\\'https://discours.io/expo/music\\\' target=\\\'_blank\\\' rel=\\\'noopener noreferrer\\\'>мÑзÑкÑ</a> и новаÑоÑÑкÑÑ ÑовÑеменнÑÑ <a href=\\\'https://discours.io/expo/literature\\\' target=\\\'_blank\\\' rel=\\\'noopener noreferrer\\\'>лиÑеÑаÑÑÑÑ</a>.\' | t) | trustedHtml" ></p> </details> <details class="help-us__spoiler help-us__spoiler--3"> <summary>{{ \'ÐапÑÑкаÑÑ Ð¼Ð°ÑÑÑабнÑе пÑоÑвеÑиÑелÑÑкие ÑпеÑпÑоекÑÑ\' | t }}</summary> <p> {{ \'ÐлагодаÑÑ Ð²Ð°Ð¼ ÐиÑкÑÑÑ ÑÐ¼Ð¾Ð¶ÐµÑ ÑоздаваÑÑ Ð´Ð¾ÐºÑменÑалÑнÑе ÑилÑмÑ-ÑаÑÑÐ»ÐµÐ´Ð¾Ð²Ð°Ð½Ð¸Ñ Ð¾ ÑоÑиалÑнÑÑ
пÑоблемаÑ
, ÑоÑопÑоекÑÑ Ð¸Ð· ÑоÑÑийÑкой глÑбинки и ÑенÑÑов миÑовой ÑмигÑаÑии, подкаÑÑÑ Ñ Ð²ÑдаÑÑимиÑÑ ÑÑенÑми, мÑзÑканÑами и аÑÑиÑÑами, пеÑаÑнÑе алÑманаÑ
и Ñ Ð¸Ð·Ð±ÑаннÑми маÑеÑиалами ÑамиздаÑа и обÑазоваÑелÑнÑе медиакÑÑÑÑ, ÑазвиваÑÑие оÑвеÑÑÑвеннÑÑ Ð¶ÑÑналиÑÑÐ¸ÐºÑ Ð² РоÑÑии.\' | t }} </p> </details> <details class="help-us__spoiler help-us__spoiler--4"> <summary>{{ \'РазвиваÑÑ ÑвободнÑÑ Ð¼ÐµÐ´Ð¸Ð°Ð¿Ð»Ð°ÑÑоÑмÑ\' | t }}</summary> <p> {{ \'С ваÑей поддеÑжкой Ð¼Ñ Ð¿Ñодолжим ÑазÑабаÑÑваÑÑ Ð¼ÑлÑÑимедийнÑе инÑÑÑÑменÑÑ Ð´Ð»Ñ ÑоÑÑÑдниÑеÑÑва, коÑоÑÑе позволÑÑ Ð°Ð²ÑоÑам и ÑиÑаÑелÑм взаимодейÑÑвоваÑÑ Ð½Ð°Ð¿ÑÑмÑÑ Ð¸ ÑÑаÑÑвоваÑÑ Ð² Ñоздании коллекÑивной жÑÑналиÑÑики â делиÑÑÑÑ Ð·Ð½Ð°Ð½Ð¸Ñми и ÑкÑпеÑÑизой, пÑоводиÑÑ ÑовмеÑÑнÑÑ ÑедакÑÑÑÑ Ð¸ пÑблиÑнÑй ÑакÑÑек, ÑÑаÑÑвоваÑÑ Ð² оÑкÑÑÑÑÑ
диÑкÑÑÑиÑÑ
, вмеÑÑе ÑоздаваÑÑ Ð½Ð¾Ð²Ñе пÑбликаÑии и ÑоÑмиÑоваÑÑ Ð¶Ð¸Ð²ÑÑ Ð¿Ð¾Ð²ÐµÑÑÐºÑ Ð¸Ð·Ð´Ð°Ð½Ð¸Ñ.\' | t }} </p> </details> <details class="help-us__spoiler help-us__spoiler--5"> <summary>{{ \'ÐÑоÑивоÑÑоÑÑÑ Ð½ÐµÐ·Ð½Ð°Ð½Ð¸Ñ, мÑакобеÑÐ¸Ñ Ð¸ пÑопаганде\' | t }}</summary> <p> {{ \'СамиздаÑ, неÑмоÑÑÑ Ð½Ð¸ на ÑÑо, пÑÐ¾Ð´Ð¾Ð»Ð¶Ð¸Ñ Ð±Ð¾ÑоÑÑÑÑ Ð·Ð° ÑÐ²Ð¾Ð±Ð¾Ð´Ñ Ñлова, ÑоÑ
ÑанÑÑÑ Ð²ÑÑокие ÑÑандаÑÑÑ Ð¿ÑоÑеÑÑионалÑнÑÑ
медиа и доÑÑÑпноÑÑÑ Ð¸Ð½ÑоÑмаÑии Ð´Ð»Ñ Ð²ÑеÑ
. У Ð½Ð°Ñ Ð³ÑомаднÑе Ð¿Ð»Ð°Ð½Ñ â поддеÑживаÑÑ Ð½ÐµÐ·Ð°Ð²Ð¸ÑимÑÑ
авÑоÑов и ÑÑенÑÑ
, ÑазвиваÑÑ Ð¿Ð»Ð°ÑÑоÑÐ¼Ñ ÐºÐ¾Ð»Ð»Ð°Ð±Ð¾ÑаÑивной жÑÑналиÑÑики, ÑаÑÑказÑваÑÑ ÐµÑе болÑÑе иÑÑоÑий, коÑоÑÑе помогаÑÑ Ð¿Ð¾Ð½Ð¸Ð¼Ð°ÑÑ Ð¼Ð¸Ñ. Ðо без Ð²Ð°Ñ Ð½Ð¸Ñего не полÑÑиÑÑÑ.\' | t }} </p> </details> </div> <hr class="help-us__hr" /> <h1 class="help-us__title" id="specials"> <b>{{ \'ЧÑо Ð¼Ñ Ð´ÐµÐ»Ð°ÐµÐ¼ Ñ Ð²Ð°Ñей помоÑÑÑ\' | t }}</b> </h1> <h2 class="help-us__faq-subtitle"> {{ \'СпеÑпÑоекÑÑ ÑамиздаÑа, ÑозданнÑе благодаÑÑ Ð¿Ð¾Ð´Ð´ÐµÑжке ÑиÑаÑелей\' | t }} </h2> <div class="help-us__content"> <div class="help-us__best-articles"> <donate-best-article ng-repeat="article in $ctrl.bestArticles | limitTo:$ctrl.visibleProjectsCount track by (article._id || $index)" article-data="article" ></donate-best-article> </div> <button type="button" class="help-us__show-more-btn" ng-click="$ctrl.loadMoreProjects()" ng-if="$ctrl.visibleProjectsCount < $ctrl.bestArticles.length" > {{ \'ÐоказаÑÑ ÐµÑÑ\' | t }} </button> </div> </div> </div> </div> </div> </div> </div> <div class="help-us__faq"> <div class="ds-container"> <div class="tw:row-flex"> <div class="help-us-content-col tw:gutter-half tw:w-full tw:md:w-6/12 tw:md:ml-offset-2"> <h1 class="help-us__title" id="faq"> <b>{{ \'ЧаÑÑÑе вопÑоÑÑ\' | t }}</b> </h1> <h2 class="help-us__faq-subtitle">{{ \'Ðак и заÑем поддеÑживаÑÑ ÑамиздаÑ\' | t }}</h2> <div class="help-us__content"> <donation-faq></donation-faq> </div> </div> </div> </div> </div>
1 <div class="help-us__aside-donate" ng-if="!$ctrl.isMobile"> <div class="help-us__donate-wrapper"> <div class="help-us__donate-form" ng-class="{\'is-moving\': $root.stickyMenuStyle }"> <donate-form id="donate-form"></donate-form> </div> </div> </div> </div> <div class="ds-container"> <div class="tw:row-flex"> <div class="help-us-content-col tw:gutter-half tw:w-full tw:md:w-6/12 tw:md:ml-offset-2"> <div class="help-us"> <div class="help-us__wrapper"> <div class="help-us__body"> <div class="help-us__thanks"> <div class="help-us__flying-image help-us__flying-image--right"> <img src="/images/donate/planning.png" alt="{{ \'ÐланеÑка\' | t }}" loading="lazy" /> </div> <h2 class="help-us__title costyl-from-kostya"> <b >{{ \'СпаÑибо, ÑÑо Ð²Ñ Ñ Ð½Ð°Ð¼Ð¸. Ðез Ð²Ð°Ñ Ð¼Ñ Ð½Ðµ ÑпÑавимÑÑ, вмеÑÑе â Ñможем измениÑÑ Ð¼Ð¸Ñ.\' | t }}</b > </h2> </div> </div> </div> </div> </div> </div> </div> <div class="mobile-donate-control" ng-if="$ctrl.isTabletOrSmaller"> <button type="button" ng-click="$ctrl.openMobileDonate()">{{ \'ÐоддеÑжаÑÑ ÑамиздаÑ\' | t }}</button> </div> <div class="mobile-donate-block" ng-if="$ctrl.isMobileDonateOpen"> <button type="button" class="mobile-donate-close close tw:cursor-pointer" ng-click="$ctrl.closeMobileDonate()" aria-label="{{ \'ÐакÑÑÑÑ\' | t }}" > <i class="fas fa-times"></i> </button> <donate-form id="donate-form"></donate-form> </div>'),e.put("/pages/about/manifest.html","<update-meta title=\"{{ 'ÐаниÑеÑÑ ÐиÑкÑÑÑа' | t }}\"></update-meta> <update-meta name=\"description\" content=\"{{ 'ÐаниÑеÑÑ ÑамиздаÑа: пÑинÑÐ¸Ð¿Ñ Ð¸ миÑÑÐ¸Ñ Ð¾ÑкÑÑÑого жÑÑнала Ñ Ð³Ð¾ÑизонÑалÑной ÑедакÑией' | t }}\" ></update-meta> <update-meta name=\"keywords\" content=\"{{ 'Discours.io, жÑÑнал, о пÑоекÑе, маниÑеÑÑ, ÑÑо ÑÑо?' | t }}\" ></update-meta> <update-meta property=\"og:title\" content=\"{{ 'ÐаниÑеÑÑ ÐиÑкÑÑÑа' | t }}\"></update-meta> <update-meta property=\"og:description\" content=\"{{ 'ÐаниÑеÑÑ ÑамиздаÑа: пÑинÑÐ¸Ð¿Ñ Ð¸ миÑÑÐ¸Ñ Ð¾ÑкÑÑÑого жÑÑнала Ñ Ð³Ð¾ÑизонÑалÑной ÑедакÑией' | t }}\" ></update-meta> <update-meta property=\"og:image\" content=\"/images/participation.png\"></update-meta> <update-meta property=\"og:image:width\" content=\"1200\"></update-meta> <update-meta property=\"og:image:height\" content=\"630\"></update-meta> <div class=\"ds-container open-post tw:mt-5\"> <div class=\"tw:row-flex\"> <div class=\"tw:gutter-half tw:w-full tw:sm:w-9/12 tw:md:w-2/12\"> <h1 class=\"h2 black-bg-heading black-bg-heading-margin\"> <span>{{ 'ÐаниÑеÑÑ' | t }}</span> </h1> </div> <div class=\"tw:gutter-half tw:w-full tw:md:w-7/12 post-body tw:md:mt-content-top\"> <p> {{ 'ÐиÑкÑÑÑ â незавиÑимÑй Ñ
ÑдожеÑÑвенно-аналиÑиÑеÑкий жÑÑнал Ñ Ð³Ð¾ÑизонÑалÑной ÑедакÑией, оÑнованнÑй на пÑинÑипаÑ
ÑÐ²Ð¾Ð±Ð¾Ð´Ñ Ñлова, пÑÑмой демокÑаÑии и ÑовмеÑÑного ÑедакÑиÑованиÑ. ÐиÑкÑÑÑ ÑоздаеÑÑÑ Ð¾ÑкÑÑÑÑм медиаÑообÑеÑÑвом ÑÑенÑÑ
, жÑÑналиÑÑов, мÑзÑканÑов, пиÑаÑелей, пÑедпÑинимаÑелей, ÑилоÑоÑов, инженеÑов, Ñ
Ñдожников и ÑпеÑиалиÑÑов Ñо вÑего миÑа, обÑединивÑиÑ
ÑÑ, ÑÑÐ¾Ð±Ñ Ð²Ð¼ÐµÑÑе делаÑÑ Ð¾Ð±Ñий жÑÑнал и обÑÑÑнÑÑÑ Ñ ÑазнÑÑ
ÑоÑек зÑÐµÐ½Ð¸Ñ Ð¼Ð¾Ð·Ð°Ð¸ÑнÑÑ ÐºÐ°ÑÑÐ¸Ð½Ñ ÑовÑеменноÑÑи.' | t }} </p> <p> {{ 'ÐÑ Ð¿Ð¸Ñем о кÑлÑÑÑÑе, наÑке и обÑеÑÑве, ÑаÑÑказÑваем о новÑÑ
идеÑÑ
и ÑовÑеменном иÑкÑÑÑÑве, пÑбликÑем ÑÑаÑÑи, иÑÑледованиÑ, ÑепоÑÑажи, инÑеÑвÑÑ Ð»Ñдей, ÑÑÑ Ð¿ÑÑмÑÑ ÑеÑÑ ÑÑÐ¾Ð¸Ñ ÑÑлÑÑаÑÑ, и ÑабоÑÑ Ñ
Ñдожников из ÑазнÑÑ
ÑÑÑан â Ð¾Ñ ÑилÑмов и мÑзÑки до живопиÑи и ÑоÑогÑаÑии. ÐÐ¾Ð¼Ð¾Ð³Ð°Ñ Ð´ÑÑг дÑÑÐ³Ñ Ð´ÐµÐ»Ð°ÑÑ Ð¿ÑбликаÑии каÑеÑÑвеннее и обÑим голоÑованием вÑбиÑÐ°Ñ Ð»ÑÑÑие маÑеÑÐ¸Ð°Ð»Ñ Ð´Ð»Ñ Ð¶ÑÑнала, Ð¼Ñ Ñоздаем новÑÑ Ð³Ð¾ÑизонÑалÑнÑÑ Ð¶ÑÑналиÑÑикÑ, ÑÑÐ¾Ð±Ñ ÑеÑÑно ÑаÑÑказÑваÑÑ Ð¾ важном и инÑеÑеÑном.' | t }} </p> <p> {{ 'РедакÑÐ¸Ñ ÐиÑкÑÑÑа оÑкÑÑÑа Ð´Ð»Ñ Ð²ÑеÑ
: Ñ Ð½Ð°Ñ Ð½ÐµÑ ÑензÑÑÑ, запÑеÑнÑÑ
Ñем и идеологиÑеÑкиÑ
Ñамок.' | t }} <a href=\"/#post\" view-modal=\"#become-author-modal\">{{ 'ÐаждÑй Ð¼Ð¾Ð¶ÐµÑ Ð¿ÑедложиÑÑ Ð¼Ð°ÑеÑиал' | t }}</a> {{ 'в жÑÑнал и пÑиÑоединиÑÑÑÑ Ðº гоÑизонÑалÑной ÑедакÑии. ÐÑедоÑÑавлÑÑ ÑÑибÑÐ½Ñ Ð´Ð»Ñ Ð½ÐµÐ·Ð°Ð²Ð¸Ñимой жÑÑналиÑÑики и Ñ
ÑдожеÑÑвеннÑÑ
пÑоекÑов, Ð¼Ñ Ð¿Ð¾Ð¼Ð¾Ð³Ð°ÐµÐ¼ лÑдÑм ÑаÑÑказÑваÑÑ Ñвои иÑÑоÑии Ñак, ÑÑÐ¾Ð±Ñ Ð¾Ð
1½Ð¸ бÑли ÑÑлÑÑанÑ. ÐÑ ÑбежденÑ: Ñем болÑÑе голоÑов бÑÐ´ÐµÑ Ð·Ð²ÑÑаÑÑ Ð½Ð° ÐиÑкÑÑÑе, Ñем гÑомÑе в полиÑонии мнений бÑÐ´ÐµÑ ÑлÑÑна иÑÑина.' | t }} </p> </div> </div> <div id=\"participation\" class=\"tw:mb-10 tw:-mt-section\"></div> <div class=\"tw:row-flex\"> <div class=\"tw:gutter-half tw:w-full tw:sm:w-9/12 tw:md:w-2/12\"> <h2 class=\"h2 black-bg-heading black-bg-heading-margin\"> <span class=\"wrapped\">{{ 'Ðак ÑÑаÑÑвоваÑÑ Ð² ÑамиздаÑе' | t }}</span> </h2> </div> <div class=\"tw:gutter-half tw:w-full tw:md:w-7/12 post-body tw:md:mt-content-top\"> <p ng-bind-html=\"('ÐиÑкÑÑÑ <a href=\\'guide\\' rel=\\'noopener noreferrer\\' target=\\'_blank\\'>ÑоздаеÑÑÑ Ð¾ÑкÑÑÑÑм ÑообÑеÑÑвом</a> ÑнÑÑзиаÑÑов новой незавиÑимой жÑÑналиÑÑики. СоÑÑÑдниÑаÑÑ Ñ Ð¶ÑÑналом, помогаÑÑ ÑамиздаÑÑ Ð¸ ÑÑаÑÑвоваÑÑ Ð² ÑабоÑе оÑкÑÑÑой ÑедакÑии можно ÑамÑми ÑазнÑми ÑпоÑобами:' | t) | trustedHtml\" ></p> <h3 class=\"not-left\"><b>{{ 'ÐÑбликоваÑÑ Ð¼Ð°ÑеÑиалÑ' | t }}</b></h3> <p> {{ 'ÐÑли вам еÑÑÑ Ñем поделиÑÑÑÑ Ñ ÑиÑаÑелÑми,' | t }} <a href=\"/#post\" view-modal=\"#become-author-modal\">{{ 'пÑиÑÑлайÑе в ÑедакÑÐ¸Ñ Ñвои ÑабоÑÑ' | t }}</a> {{ 'â ÑÑаÑÑи, Ñ
ÑдожеÑÑвеннÑе пÑоизведениÑ, иÑÑледованиÑ.' | t }} <a href=\"guide#together\" rel=\"noopener noreferrer\" target=\"_blank\">{{ 'Ð¡Ð°Ð¼Ð¸Ð·Ð´Ð°Ñ Ð¿Ð¾Ð´Ð´ÐµÑÐ¶Ð¸Ð²Ð°ÐµÑ Ð½ÐµÐ·Ð°Ð²Ð¸ÑимÑÑ
авÑоÑов' | t }}</a>{{ ', пÑбликÑÑÑиÑ
ÑÑ Ð½Ð° обÑеÑÑвеннÑÑ
наÑалаÑ
, пÑÐµÐ´Ð»Ð°Ð³Ð°Ñ Ð¿Ð¾Ð¼Ð¾ÑÑ Ð³Ð¾ÑизонÑалÑной ÑедакÑии, ÑÑÐµÐ´Ñ Ð¸Ð½ÑеллекÑÑалÑного ÑоÑÑÑдниÑеÑÑва, внимание и оÑклик ÑамÑÑ
лÑÑÑиÑ
ÑиÑаÑелей по вÑÐµÐ¼Ñ Ð¼Ð¸ÑÑ, а Ñакже пÑаво ÑÑаÑÑвоваÑÑ Ð² коллекÑивном ÑедакÑиÑовании маÑеÑиалов и голоÑоваÑÑ Ð·Ð° пÑбликаÑии, опÑеделÑÑ Ñаким обÑазом ÑодеÑжание оÑкÑÑÑого жÑÑнала.' | t }} </p> <h3 class=\"not-left\"><b>{{ 'ÐоддеÑживаÑÑ Ð¿ÑоекÑ' | t }}</b></h3> <p ng-bind-html=\"('ÐиÑкÑÑÑ ÑÑÑеÑÑвÑÐµÑ ÑолÑко благодаÑÑ Ð¿Ð¾Ð¶ÐµÑÑвованиÑм ÑиÑаÑелей. ÐÑ Ð½Ð°Ñа единÑÑÐ²ÐµÐ½Ð½Ð°Ñ Ð¾Ð¿Ð¾Ñа. ÐÑли вам нÑавиÑÑÑ Ð¿ÑоекÑ, <a href=\\'/help\\' rel=\\'noopener noreferrer\\' target=\\'_blank\\'>поддеÑжиÑе ÑÐ°Ð¼Ð¸Ð·Ð´Ð°Ñ Ð¸ ÑабоÑÑ Ð¿Ð»Ð°ÑÑоÑмÑ</a> Ð´Ð»Ñ Ð½ÐµÐ·Ð°Ð²Ð¸Ñимой жÑÑналиÑÑики. ÐожеÑÑÐ²Ð¾Ð²Ð°Ð½Ð¸Ñ Ð¿Ð¾Ð¹Ð´ÑÑ Ð½Ð° ÑазвиÑие ÑайÑа, вÑпÑÑк новÑÑ
маÑеÑиалов, оплаÑÑ ÑеÑвеÑов, ÑÑÑда пÑогÑаммиÑÑов, дизайнеÑов и ÑедакÑоÑов, ежедневно помогаÑÑиÑ
лÑдÑм Ñо вÑего миÑа ÑаÑÑказÑваÑÑ Ð¸Ð½ÑеÑеÑнÑе и важнÑе иÑÑоÑии.' | t) | trustedHtml\" ></p> <h3 class=\"not-left\"><b>{{ 'СоÑÑÑдниÑаÑÑ Ñ Ð¶ÑÑналом' | t }}</b></h3> <p ng-bind-html=\"('ÐÑли Ð²Ñ Ñ
оÑиÑе помогаÑÑ Ð¶ÑÑÐ½Ð°Ð»Ñ Ñ ÑедакÑÑÑой, коÑÑекÑÑÑой, иллÑÑÑÑаÑиÑми, пеÑеводами, веÑÑÑкой, подкаÑÑами, меÑопÑиÑÑиÑми, ÑандÑайзингом или как-Ñо еÑÑ â <a href=\\'https://forms.gle/GJ3Muqf1UjeCzyDXA\\' rel=\\'noopener noreferrer\\' target=\\'_blank\\'>пÑиÑоединÑйÑеÑÑ Ðº оÑкÑÑÑой ÑедакÑии</a>. ÐÑ Ð²Ñегда ÑÐ°Ð´Ñ ÐµÐ´Ð¸Ð½Ð¾Ð¼ÑÑленникам и поможем найÑи полезное Ð´Ð»Ñ ÑамиздаÑа дело по дÑÑе.' | t) | trustedHtml\" ></p> <p ng-bind-html=\"('ÐÑли Ð²Ñ ÑазÑабоÑÑик и Ñ
оÑиÑе помогаÑÑ Ñ ÑазвиÑием ÑайÑа ÐиÑкÑÑÑа, <a href=\\'mailto:[email protected]\\' rel=\\'noopener noreferrer\\' target=\\'_blank\\'>пÑиÑоединÑйÑеÑÑ Ðº IT-команде</a> ÑамиздаÑа. ÐÑкÑÑÑÑй код плаÑÑоÑÐ¼Ñ Ð´Ð»Ñ Ð½ÐµÐ·Ð°Ð²Ð¸Ñимой жÑÑналиÑÑики, а Ñакже вÑеÑ
наÑиÑ
ÑпеÑпÑоекÑов и медиаинÑÑÑÑменÑов наÑ
одиÑÑÑ Ð² <a href=\\'https://github.com/Discours\\' rel=\\'noopener noreferrer\\' target=\\'_blank\\'>Ñвободном доÑÑÑпе на GitHub</a>.' | t) | trustedHtml\" ></p> <p ng-bind-html=\"('ÐÑли Ð²Ñ Ð¿ÑедÑÑавлÑеÑе некоммеÑÑеÑкÑÑ Ð¾ÑганизаÑÐ¸Ñ Ð¸ Ñ
оÑиÑе ÑделаÑÑ Ñ Ð½Ð°Ð¼Ð¸ ÑовмеÑÑнÑй пÑоекÑ, полÑÑиÑÑ Ð¸Ð½ÑоÑмаÑионнÑÑ Ð¿Ð¾Ð´Ð´ÐµÑÐ¶ÐºÑ Ð¸Ð»Ð¸ пÑедложиÑÑ Ð´ÑÑгÑÑ ÑоÑÐ¼Ñ ÑоÑÑÑдниÑеÑÑва, пиÑиÑе на <a href=\\'mailto:[email protected]\\' rel=\\'noopener noreferrer\\' target=\\'_blank\\'>[email protected]</a>.' | t) | trustedHtml\" ></p> <h3 class=\"not-left\"><b>{{ 'Ðак еÑе можно помоÑÑ' | t }}</b></h3> <p> <span ng-bind-html=\"('СовеÑÑйÑе ÐиÑкÑÑÑ Ð´ÑÑзÑÑм и знакомÑм. ÐбÑÑждайÑе и ÑаÑпÑоÑÑÑанÑйÑе наÑи пÑбликаÑии â вÑе маÑеÑÐ¸Ð°Ð»Ñ Ð¾ÑкÑÑÑой ÑедакÑии можно ÑиÑаÑÑ Ð¸ пеÑепеÑаÑÑваÑÑ Ð±ÐµÑплаÑно. ÐодпиÑиÑеÑÑ Ð½Ð° ÑÐ°Ð¼Ð¸Ð·Ð´Ð°Ñ <a href=\\'https://vk.com/discoursio\\' rel=\\'noopener noreferrer\\' target=\\'_blank\\'>ÐÐонÑакÑе</a>, в <a href=\\'https://facebook.com/discoursio\\' rel=\\'noopener noreferrer\\' target=\\'_blank\\'>ФейÑбÑке</a> и в <a href=\\'https://t.me/discoursio\\' rel=\\'noopener noreferrer\\' target=\\'_blank\\'>ТелегÑаме</a>, а Ñакже на' | t) | trustedHtml\"></span> <a href=\"/#subscribe\" view-modal=\"#subscribe-modal\">{{ 'ÑаÑÑÑÐ»ÐºÑ Ð»ÑÑÑиÑ
маÑеÑиалов' | t }}</a><span ng-bind-html=\"(', ÑÑÐ¾Ð±Ñ Ð½Ðµ пÑопÑÑÑиÑÑ Ð½Ð¸Ñего инÑеÑеÑного. <a href=\\'https://forms.gle/9UnHBAz9Q3tjH5dAA\\' rel=\\'noopener noreferrer\\' target=\\'_blank\\'>РаÑÑказÑвайÑе о впеÑаÑлениÑÑ
</a> Ð¾Ñ Ð¼Ð°ÑеÑиалов оÑкÑÑÑой ÑедакÑии,' | t) | trustedHtml\"></span> <a href=\"/#idea\" view-modal=\"#send-idea-modal\" ng-click=\"closePartners($event)\">{{ 'делиÑеÑÑ Ð¸Ð´ÐµÑми' | t }}</a><span ng-bind-html=\"(', инÑеÑеÑнÑми Ñемами, о Ð
1ºÐ¾ÑоÑÑÑ
Ñ
оÑели Ð±Ñ ÑзнаÑÑ Ð±Ð¾Ð»ÑÑе, и иÑÑоÑиÑми, коÑоÑÑе нÑжно ÑаÑÑказаÑÑ.' | t) | trustedHtml\"></span> </p> </div> </div> <div id=\"connection\" class=\"tw:mb-10 tw:-mt-section\"></div> <div class=\"tw:row-flex\"> <div class=\"tw:gutter-half tw:w-full tw:sm:w-9/12 tw:md:w-2/12\"> <h2 class=\"h2 black-bg-heading black-bg-heading-margin\"> <span class=\"wrapped\">{{ 'ÐÑдем на ÑвÑзи' | t }}</span> </h2> </div> <div class=\"tw:gutter-half tw:w-full tw:md:w-7/12 post-body tw:md:mt-content-top\"> <p> {{ 'ÐÑли Ð²Ñ Ñ
оÑиÑе пÑедложиÑÑ Ð¼Ð°ÑеÑиал, ÑоÑÑÑдниÑаÑÑ, ÑаÑÑказаÑÑ Ð¾ пÑоблеме, коÑоÑÑÑ Ð½Ñжно оÑвеÑиÑÑ, ÑообÑиÑÑ Ð¾Ð± оÑибке или баге, ÑÑо-Ñо обÑÑдиÑÑ, ÑÑоÑниÑÑ Ð¸Ð»Ð¸ поÑовеÑоваÑÑ, пожалÑйÑÑа,' | t }} <a href=\"/#idea\" view-modal=\"#send-idea-modal\" ng-click=\"closePartners($event)\">{{ 'напиÑиÑе нам здеÑÑ' | t }}</a> {{ 'или на поÑÑÑ' | t }} <a href=\"mailto:[email protected]\" rel=\"noopener noreferrer\" target=\"_blank\">[email protected]</a>. {{ 'ÐÑ Ð¾Ð±ÑзаÑелÑно оÑвеÑим и поÑÑаÑаемÑÑ ÑеализоваÑÑ Ð²Ñе Ñ
оÑоÑие задÑмки.' | t }} </p> </div> </div> </div>"),e.put("/pages/about/principles.html",'<update-meta class="black-link" title="{{ \'ÐÑинÑÐ¸Ð¿Ñ ÑообÑеÑÑва оÑкÑÑÑой ÑедакÑии\' | t }}" ></update-meta> <update-meta class="black-link" name="description" content="{{ \'ЦенноÑÑи ÑообÑеÑÑва и пÑавила взаимодейÑÑÐ²Ð¸Ñ Ð³Ð¾ÑизонÑалÑной ÑедакÑии\' | t }}" ></update-meta> <update-meta class="black-link" name="keywords" content="{{ \'Discours.io, ÑообÑеÑÑва, ÑенноÑÑи, пÑавила ÑедакÑии, многоголоÑие, Ñозидание\' | t }}" ></update-meta> <update-meta class="black-link" property="og:title" content="{{ \'ÐÑинÑÐ¸Ð¿Ñ ÑообÑеÑÑва оÑкÑÑÑой ÑедакÑии\' | t }}" ></update-meta> <update-meta class="black-link" property="og:description" content="{{ \'ЦенноÑÑи ÑообÑеÑÑва и пÑавила взаимодейÑÑÐ²Ð¸Ñ Ð³Ð¾ÑизонÑалÑной ÑедакÑии\' | t }}" ></update-meta> <update-meta property="og:image" content="/images/principles.jpg"></update-meta> <update-meta property="og:image:width" content="1200"></update-meta> <update-meta property="og:image:height" content="675"></update-meta> <div class="ds-container open-post about-post tw:mt-5"> <div class="tw:row-flex" id="basics"> <div class="tw:gutter-half tw:w-full tw:sm:w-9/12 tw:md:w-2/12"> <h1 class="h2 black-bg-heading black-bg-heading-margin"> <span class="wrapped">{{ \'ÐÑинÑÐ¸Ð¿Ñ ÑообÑеÑÑва\' | t }}</span> </h1> </div> <div class="tw:gutter-half tw:w-full tw:md:w-7/12 post-body tw:md:mt-content-top"> <ol style="padding-inline-start: 15px"> <li> <p> <span class="lead">{{ \'ÐоÑизонÑалÑноÑÑÑ.\' | t }}</span> {{ \'ÐÑ Ð²Ñе ÑазнÑе, и ÑÑо клаÑÑно. ÐеÑÑикалей в миÑе доÑÑаÑоÑно, Ð¼Ñ â гоÑизонÑалÑное ÑообÑеÑÑво и Ñеним наÑи ÑазлиÑиÑ, поÑÐ¾Ð¼Ñ ÑÑо знаем â в ниÑ
наÑа Ñила. ÐлагодаÑÑ ÑазнообÑÐ°Ð·Ð¸Ñ ÑоÑен голоÑов, ÑÑиливаÑÑиÑ
дÑÑг дÑÑга, в ÑообÑеÑÑве ÑкладÑваеÑÑÑ Ð½ÐµÐ¿Ð¾Ð²ÑоÑÐ¸Ð¼Ð°Ñ ÑинеÑгиÑ, коÑоÑÐ°Ñ Ð¿Ð¾Ð¼Ð¾Ð³Ð°ÐµÑ Ð²Ð¼ÐµÑÑе доÑÑигаÑÑ Ð±Ð¾Ð»ÑÑего.\' | t }} </p> </li> <li> <p> <span class="lead">{{ \'ÐногоголоÑие.\' | t }}</span> {{ \'ÐÑ Ñеним ÑÐ²Ð¾Ð±Ð¾Ð´Ñ Ñлова и аÑгÑменÑиÑованнÑе мнениÑ. ÐÑедоÑÑавлÑÑ ÑÑибÑÐ½Ñ ÐºÐ°Ð¶Ð´Ð¾Ð¼Ñ, ÐºÐ¾Ð¼Ñ ÐµÑÑÑ ÑÑо ÑказаÑÑ, ÑÐ°Ð¼Ð¸Ð·Ð´Ð°Ñ Ð¾ÑÑÐ°Ð¶Ð°ÐµÑ Ð¿Ð¾Ð»Ð¸ÑÐ¾Ð½Ð¸Ñ Ð¿Ð¾Ð·Ð¸Ñий, знаний и опÑÑа, коÑоÑÑе оÑкÑÑваÑÑ Ð±Ð¾Ð»ÐµÐµ полнÑÑ ÐºÐ°ÑÑÐ¸Ð½Ñ ÑеалÑноÑÑи.\' | t }} </p> </li> <li> <p> <span class="lead">{{ \'ÐзаимопомоÑÑ.\' | t }}</span> {{ \'ÐÑ Ð¿Ð¾Ð¼Ð¾Ð³Ð°ÐµÐ¼ дÑÑг дÑÑгÑ, поÑÐ¾Ð¼Ñ ÑÑо Ñ
оÑим, ÑÑÐ¾Ð±Ñ Ð² миÑе бÑло еÑе болÑÑе Ñ
оÑоÑего. ÐбÑÑÐ¶Ð´Ð°Ñ ÑÑо-Ñо, Ð¼Ñ Ð²Ñегда инÑеÑеÑÑемÑÑ, Ñем можем помоÑÑ. Ð ÑамиздаÑе можно найÑи ÑпеÑиалиÑÑов пÑакÑиÑеÑки в лÑбÑÑ
ÑÑеÑаÑ
и полÑÑиÑÑ Ð¿Ð¾Ð´Ð´ÐµÑÐ¶ÐºÑ Ð¾Ñ ÑоÑен лÑдей. ÐлагодаÑÑ ÐºÐ¾Ð»Ð»ÐµÐºÑивной ÑкÑпеÑÑизе глобаÐ
1»Ñного ÑообÑеÑÑва в ÑамиздаÑе вÑÑ
одÑÑ ÐºÑÑÑейÑие пÑбликаÑии, коÑоÑÑми можно веÑно гоÑдиÑÑÑÑ.\' | t }} </p> </li> <li> <p> <span class="lead">{{ \'ÐзаимоÑважение.\' | t }}</span> {{ \'ÐÑ Ñеним, иÑкÑенне Ñважаем дÑÑг дÑÑга и вмеÑÑо боÑÑевиков вÑаждебноÑÑи кÑлÑÑивиÑÑем ÑвеÑÑ Ð´Ð¾Ð±Ñа, миÑа, Ð·Ð½Ð°Ð½Ð¸Ñ Ð¸ ÑмоÑа. Ðам некогда доказÑваÑÑ Ð´ÑÑг дÑÑгÑ, кÑо кÑÑÑе. ÐоÑаздо пÑиÑÑнее ÑоÑÑÑдниÑаÑÑ, помогаÑÑ Ð¸ ÑоздаваÑÑ ÑÑо-Ñо важное, инÑеÑеÑное и полезное.\' | t }} </p> </li> <li> <i></i> <p> <span class="lead">{{ \'Созидание.\' | t }}</span> {{ \'ÐÑ Ñоздаем, поÑÐ¾Ð¼Ñ ÑÑо лÑбим ÑоздаваÑÑ. ÐÑ Ð¾ÑкÑÑÑо делимÑÑ Ð¾Ð¿ÑÑом, даÑим идеи, обмениваемÑÑ Ð¼Ð½ÐµÐ½Ð¸Ñми и благодаÑим за кÑиÑикÑ, иÑполÑзÑÑ ÐµÐµ Ð´Ð»Ñ ÑовеÑÑенÑÑÐ²Ð¾Ð²Ð°Ð½Ð¸Ñ Ð¼Ð°ÑÑеÑÑÑва и ÑамоÑазвиÑиÑ. ÐÑ Ð·Ð½Ð°ÐµÐ¼, ÑÑо Ð¼Ð¸Ñ Ð½Ðµ идеалÑное меÑÑо, и делаем вÑÑ Ð²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾Ðµ, ÑÑÐ¾Ð±Ñ Ð¾Ð½ ÑÑал лÑÑÑе.\' | t }} </p> </li> </ol> </div> </div> <div class="tw:row-flex" id="communication"> <div class="tw:gutter-half tw:w-full tw:sm:w-9/12 tw:md:w-2/12"> <h2 class="h2 black-bg-heading black-bg-heading-margin"> <span class="wrapped">{{ \'Ðак здеÑÑ Ð¿ÑинÑÑо ÑÐµÐ±Ñ Ð²ÐµÑÑи\' | t }}</span> </h2> </div> <div class="tw:gutter-half tw:w-full tw:md:w-7/12 post-body tw:md:mt-content-top"> <p> {{ \'ÐÑкÑÑÑÐ°Ñ ÑедакÑÐ¸Ñ Ð¾Ð±ÑединÑÐµÑ ÑоÑни поÑÑÑÑаÑÑиÑ
лÑдей Ñо вÑего миÑа, коÑоÑÑе делаÑÑ ÐºÑÑÑейÑие веÑи. ÐÑо пÑоÑÑÑанÑÑво, где довеÑÑÑÑ, вдоÑ
новлÑÑÑ, иÑÑледÑÑÑ Ð¸ ÑоздаÑÑ Ð½Ð¾Ð²Ð¾Ðµ вмеÑÑе. ÐоÑколÑÐºÑ Ð²Ñе в ÑообÑеÑÑве оÑÐµÐ½Ñ ÑазнÑе, как-Ñо Ð¼Ñ ÑобÑалиÑÑ Ð¸ ÑеÑили заÑикÑиÑоваÑÑ Ð±Ð°Ð·Ð¾Ð²Ñе ÑенноÑÑи оÑкÑÑÑой ÑедакÑии, а заодно пÑидÑмали ÑнивеÑÑалÑнÑе пÑавила взаимодейÑÑвиÑ, ÑÑÐ¾Ð±Ñ Ð¾Ð±Ñение бÑло не ÑолÑко плодоÑвоÑнÑм, но и пÑиÑÑнÑм Ð´Ð»Ñ Ð²ÑеÑ
ÑÑаÑÑников ÑообÑеÑÑва.\' | t }} </p> <ol style="padding-inline-start: 15px"> <li> <p> <span class="lead">{{ \'ÐейÑÑвÑем, помогаем и делимÑÑ.\' | t }}</span> {{ \'Ð ÑедакÑии Ð¼Ñ Ñоздаем Ñами и помогаем дÑÑгим ÑоздаваÑÑ Ñвои пÑоекÑÑ â ÑовеÑами, делом, ÑÑаÑÑием, вовлеÑенноÑÑÑÑ. ÐÑ Ð¾ÑкÑÑÑо делимÑÑ Ð¾Ð¿ÑÑом, мнениÑми и идеÑми, поÑÐ¾Ð¼Ñ ÑÑо Ñеним ÑÐ¸Ð»Ñ ÑоÑÑÑдниÑеÑÑва и знаем, ÑÑо идеи ÑеализÑÑÑÑÑ ÑкоÑее, лÑÑÑе и веÑелее, еÑли над ними ÑÑÑдиÑÑÑÑ ÑообÑа.\' | t }} </p> </li> <li> <p> <span class="lead">{{ \'ÐÑиÑикÑем и ÑеагиÑÑем конÑÑÑÑкÑивно.\' | t }}</span> {{ \'ÐÑ Ð¸ÑÑ
одим из Ñого, ÑÑо каждÑй в ÑообÑеÑÑве Ð¸Ð¼ÐµÐµÑ Ð´Ð¾Ð±ÑÑе намеÑениÑ, и пÑидеÑживаемÑÑ Ð¿ÑинÑипов добÑожелаÑелÑной кÑиÑики, ÑÑаÑаÑÑÑ Ð´ÐµÐ»Ð¸ÑÑÑÑ Ð´ÑÑг Ñ Ð´ÑÑгом ÑовеÑами и обÑаÑÑÑÑ Ñак, ÑÑÐ¾Ð±Ñ ÑÑо бÑло полезно Ð´Ð»Ñ ÑазвиÑÐ¸Ñ Ð²Ñего ÑообÑеÑÑва. УбедиÑелÑÐ½Ð°Ñ Ð°ÑгÑменÑаÑÐ¸Ñ Ð¿Ð¾Ð¼Ð¾Ð³Ð°ÐµÑ Ð¸ адÑеÑаÑÑ, и вÑем ÑÑаÑÑникам ÑообÑеÑÑва доÑконалÑно изÑÑиÑÑ ÑÐµÐ¼Ñ Ð¸ глÑбже ÑазобÑаÑÑÑÑ Ð² пÑоблеме.\' | t }} </p> </li> <li> <p> <span class="lead">{{ \'ÐбÑаемÑÑ Ð´ÑÑжелÑбно и Ñ Ñважением.\' | t }}</span> {{ \'Ðодлинное ÑоÑÑÑдниÑеÑÑво и оÑмÑÑленнÑе диÑкÑÑÑии Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ñ Ð±ÐµÐ· вежливоÑÑи и взаимоÑважениÑ. ÐомниÑе, по ÑÑ ÑÑоÑÐ¾Ð½Ñ Ð¼Ð¾Ð½Ð¸ÑоÑа наÑ
одÑÑÑÑ ÑеалÑнÑе лÑди, а лÑбÑе ÑÑÑдноÑÑи ÑкоÑее ÑеÑаÑÑÑÑ Ð½Ðµ агÑеÑÑией, но диалогом. Ðе ÑÑÐ¾Ð¸Ñ ÐºÑиÑаÑÑ (даже капÑлоком), пеÑеÑ
одиÑÑ Ð½Ð° лиÑноÑÑи (ÑÑо пÑизнак ÑокÑиÑноÑÑи) и бÑоÑаÑÑÑÑ Ð³ÑÑбоÑÑÑми â Ñак Ð²Ñ ÑиÑкÑеÑе не ÑолÑко ÑаÑÑеÑÑÑÑ Ð´Ð¾Ð²ÐµÑие окÑÑжаÑÑиÑ
, но и оÑÑаÑÑÑÑ Ð½ÐµÐ¿Ð¾Ð½ÑÑÑм.\' | t }} </p> </li> <li> <p> <span class="lead">{{ \'ÐлагодаÑим за помоÑÑ.\' | t }}</span> {{ \'ÐлагодаÑиÑе коллег даже за ÑамÑе, казалоÑÑ Ð±Ñ, пÑоÑÑÑе веÑи. «СпаÑибо» не зÑÑ Ð½Ð°Ð·ÑваÑÑ Ð²Ð¾Ð»ÑебнÑм Ñловом â на иÑкÑенней благодаÑноÑÑи деÑжиÑÑÑ Ð»Ñбое подлинное ÑоÑÑÑдниÑеÑÑво. ÐоддеÑжка воодÑÑевлÑÐµÑ Ð½Ð° новÑе подвиги и напоминаеÑ, ÑÑо Ð¼Ð¸Ñ Ð´ÐµÐ»Ð°ÑÑ Ð¿ÑекÑаÑнÑм не маÑинÑ, а живÑе лÑди.\' | t }} </p> </li> <li> <p> <span class="lead">{{ \'Ðаем еÑе один ÑанÑ.\' | t }}</span> {{ \'ÐÑе ÑовеÑÑаÑÑ Ð¾Ñибки, и за один пÑоÑÑÑпок не ÑÑÐ¾Ð¸Ñ Ð²ÑÑеÑкиваÑÑ Ð»Ñдей из жизни. ÐÑибки нÑжнÑ, ÑÑÐ¾Ð±Ñ Ð½Ð° ниÑ
ÑÑиÑÑÑÑ Ð¸ делаÑÑ Ð²ÑводÑ. Ðднако еÑли многокÑаÑно и ÑиÑÑемаÑиÑеÑки наÑÑÑаÑÑ Ð¿Ñавила ÑообÑеÑÑва, навеÑнÑка можно заÑлÑжиÑÑ Ð¼Ð¸Ð½ÑÑÑ Ð² каÑÐ¼Ñ Ð¾Ñ Ð´ÑÑгиÑ
ÑÑаÑÑников и поÑеÑÑÑÑ Ð´Ð¾ÑÑÑп к ÑообÑеÑÑвÑ.\' | t }} </p> </li> <li> <p> <span class="lead">{{ \'ÐмеÑÑе Ñоздаем идеалÑнÑÑ ÑÑÐµÐ´Ñ Ð¾Ð±ÑениÑ.\' | t }}</span> {{ \'ÐÑкÑÑÑÐ°Ñ ÑедакÑÐ¸Ñ â ÑÑо ÑÑопиÑеÑкое пÑоÑÑÑанÑÑво обогаÑаÑÑей и оÑмÑÑленной коммÑникаÑии. ÐÑмоÑÑеÑа гоÑизонÑалÑного ÑообÑеÑÑва ÑкладÑваеÑÑÑ Ð¸Ð· дейÑÑвий каждого, поÑÑÐ¾Ð¼Ñ Ð¼Ñ Ð´ÐµÐ¹ÑÑвÑем Ñак, ÑÑÐ¾Ð±Ñ ÑпоÑобÑÑвоваÑÑ ÑоÑвоÑÑеÑÑвÑ, коллекÑÐ¸Ð²Ð½Ð¾Ð¼Ñ Ð¿Ð¾Ð·Ð½Ð°Ð½Ð¸Ñ Ð¸ ÑазвиÑÐ¸Ñ ÑамиздаÑа и наÑей алÑÑеÑнаÑивной инÑеллекÑÑалÑной медиаÑÑедÑ.\' | t }} </p> </li> <li> <p> <span class="lead">{{ \'Ðомним, ÑÑо вÑÑ Ð² ÑообÑеÑÑве завиÑÐ¸Ñ Ð¾Ñ Ð½Ð°Ñ.\' | t }}</span> {{ \'ÐÑли нам Ñего-Ñо не Ñ
ваÑаеÑ, Ð¼Ñ Ð½Ð°Ñинаем дейÑÑвоваÑÑ â ÑаÑÑказÑваем об идее, наÑ
одим единомÑÑленников, гоÑовим и запÑÑкаем пÑоекÑ. Так в ÑообÑеÑÑве ÑÑановиÑÑÑ Ð½Ð° Ð¾Ð´Ð½Ñ ÐºÑÑÑÑÑ Ð°ÐºÑивноÑÑÑ Ð±Ð¾Ð»ÑÑе. Так поÑвилоÑÑ Ð½Ð°Ñе ÑообÑеÑÑво. Так поÑвилÑÑ ÑÐ°Ð¼Ð¸Ð·Ð´Ð°Ñ Ð¸ вÑе пÑоекÑÑ Ð¾ÑкÑÑÑой ÑедакÑии. ЧÑÐ¾Ð±Ñ Ð² ÑообÑеÑÑве ÑлÑÑилоÑÑ ÑÑо-Ñо пÑекÑаÑное, доÑÑаÑоÑно пÑоÑÑо положиÑÑ ÑÑÐ¾Ð¼Ñ Ð½Ð°Ñало.\' | t }} </p> </li> </ol> </div> </div> </div>'),e.put("/pages/about/privacy-policy.html","<update-meta title=\"{{ 'ÐолиÑика конÑиденÑиалÑноÑÑи' | t }}\"></update-meta> <update-meta name=\"description\" content=\"{{ 'Ðакие даннÑе ÑобиÑÐ°ÐµÑ ÐиÑкÑÑÑ Ð¸ как иÑ
иÑполÑзÑеÑ' | t }}\" ></update-meta> <update-meta property=\"og:title\" content=\"{{ 'ÐолиÑика конÑиденÑиалÑноÑÑи' | t }}\"></update-meta> <update-meta property=\"og:description\" content=\"{{ 'Ðакие даннÑе ÑобиÑÐ°ÐµÑ ÐиÑкÑÑÑ Ð¸ как иÑ
иÑполÑзÑеÑ' | t }}\" ></update-meta> <div class=\"ds-container open-post\"> <div class=\"tw:row-flex\"> <div class=\"tw:gutter-half tw:w-full tw:sm:w-7/12 tw:sm:ml-offset-2 tw:mt-4\"> <h1 class=\"tw:font-bold tw:mb-section\" align=\"center\"> {{ 'ÐолиÑика конÑиденÑиалÑноÑÑи' | t }} </h1> </div> <div class=\"tw:gutter-half tw:w-full tw:sm:w-7/12 tw:sm:ml-offset-2 post-body\"> <p>{{ 'ÐдеÑÑ Ð¾Ð¿Ð¸Ñано, какие даннÑе о Ð²Ð°Ñ ÑобиÑÐ°ÐµÑ ÐиÑкÑÑÑ, заÑем они нÑÐ¶Ð½Ñ Ð¸ как иÑ
ÑдалиÑÑ.' | t }}</p> <ol style=\"list-style-type: decimal\"> <li> <p>{{ 'Ð¡Ð°Ð¹Ñ Ð¼Ð¾Ð¶ÐµÑ ÑобиÑаÑÑ Ñ Ð¿Ð¾Ð»ÑзоваÑелей ÑледÑÑÑие даннÑе:' | t }}</p> <ol style=\"list-style-type: square\"> <li> <p>{{ 'ÐаннÑе, коÑоÑÑе полÑзоваÑели ÑообÑаÑÑ Ð¾ Ñебе Ñами пÑи подаÑе заÑвки, ÑегиÑÑÑаÑии, авÑоÑизаÑии или Ð·Ð°Ð¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ Ð¿ÑоÑилÑ, в Ñом ÑиÑле ФÐРи конÑакÑнÑÑ Ð¸Ð½ÑоÑмаÑиÑ. ÐонÑиденÑиалÑнÑе даннÑе, Ñакие как иденÑиÑикаÑÐ¾Ñ Ð¸ ÑлекÑÑоннÑй адÑеÑ, иÑполÑзÑÑÑÑÑ Ð´Ð»Ñ Ð¸Ð´ÐµÐ½ÑиÑикаÑии полÑзоваÑелÑ. ÐаннÑе пÑоÑилÑ, ÑазмеÑÑннÑе пÑблиÑно по Ð¶ÐµÐ»Ð°Ð½Ð¸Ñ Ð¿Ð¾Ð»ÑзоваÑелÑ, коÑоÑое вÑÑажаеÑÑÑ ÑакÑом иÑ
пÑедоÑÑавлениÑ, иÑполÑзÑеÑÑÑ Ð´Ð»Ñ Ð´ÐµÐ¼Ð¾Ð½ÑÑÑаÑии дÑÑгим полÑзоваÑелÑм Ñой инÑоÑмаÑии о Ñебе, коÑоÑÑÑ Ð¿Ð¾Ð»ÑзоваÑÐµÐ»Ñ Ð³Ð¾Ñов пÑедоÑÑавиÑÑ.' | t }}</p> </li> <li id=\"sign-in-services\"> <p>{{ 'ÐаннÑе Ð¾Ñ ÑеÑвиÑа, ÑеÑез коÑоÑÑй Ð²Ñ Ð²Ñ
одиÑе на ÑайÑ, â Google, VK, Facebook или GitHub: имÑ, адÑÐµÑ ÑлекÑÑонной поÑÑÑ, ÑоÑо пÑоÑÐ¸Ð»Ñ Ð¸ иденÑиÑикаÑÐ¾Ñ Ð°ÐºÐºÐ°ÑнÑа. ÐÑÑгие даннÑе аккаÑнÑа ÑÐ°Ð¹Ñ Ð½Ðµ ÑоÑ
ÑанÑеÑ, а доÑÑÑпа к ваÑим пиÑÑмам, конÑакÑам и доÐ
1ºÑменÑам Ñ Ð½Ð°Ñ Ð½ÐµÑ.' | t }}</p> </li> <li> <p>{{ 'ÐаннÑе, ÑобÑаннÑе авÑомаÑиÑеÑким пÑÑÑм, Ñакие как cookie-ÑайлÑ, в Ñом ÑиÑле cookie ÑеÑвиÑа ÑÑаÑиÑÑики Google Analytics. Ðни иÑполÑзÑÑÑÑÑ Ð´Ð»Ñ Ð¿Ð¾Ð´ÑÑÑÑа поÑеÑаемоÑÑи и ÑлÑÑÑÐµÐ½Ð¸Ñ ÑабоÑÑ ÑайÑа.' | t }}</p> </li> </ol> </li> <li> <p ng-bind-html=\"('ÐаннÑе Ð¾Ñ ÑеÑвиÑа вÑ
ода нÑжнÑ, ÑÑÐ¾Ð±Ñ ÑоздаÑÑ Ð²Ð°ÑÑ ÑÑÑÑнÑÑ Ð·Ð°Ð¿Ð¸ÑÑ Ð¸ ÑзнаваÑÑ Ð²Ð°Ñ Ð¿Ñи ÑледÑÑÑиÑ
вÑ
одаÑ
. ÐÐ¼Ñ Ð¸ ÑоÑо поÑвÑÑÑÑ Ð² ваÑем пÑблиÑном пÑоÑиле â измениÑÑ Ð¸Ñ
можно в наÑÑÑойкаÑ
. ÐÑи даннÑе Ñ
ÑанÑÑÑÑ Ð²Ð¼ÐµÑÑе Ñ ÑÑÑÑной запиÑÑÑ, пока она ÑÑÑеÑÑвÑеÑ. ÐÑ Ð½Ðµ пÑодаÑм иÑ
, не пеÑедаÑм ÑÑеÑÑим лиÑам и не иÑполÑзÑем Ð´Ð»Ñ ÑекламÑ. ЧÑÐ¾Ð±Ñ ÑдалиÑÑ Ð¸Ñ
вмеÑÑе Ñ ÑÑÑÑной запиÑÑÑ, напиÑиÑе на <a href=\\'mailto:[email protected]\\'>[email protected]</a>.' | t) | trustedHtml\" ></p> </li> <li> <p>{{ 'ÐздаÑелÑÑÑво обеÑпеÑÐ¸Ð²Ð°ÐµÑ ÐºÐ¾Ð½ÑиденÑиалÑноÑÑÑ Ð¿ÐµÑÑоналÑнÑÑ
даннÑÑ
и пÑименÑÐµÑ Ð²Ñе необÑ
одимÑе оÑганизаÑионнÑе и ÑеÑ
ниÑеÑкие меÑÑ Ð¿Ð¾ иÑ
заÑиÑе.' | t }}</p> </li> <li> <p ng-bind-html=\"('Ðо Ð¶ÐµÐ»Ð°Ð½Ð¸Ñ Ð¿Ð¾Ð»ÑзоваÑÐµÐ»Ñ ÐздаÑелÑÑÑво гоÑово ÑдалиÑÑ Ð»ÑбÑÑ Ð¸Ð½ÑоÑмаÑÐ¸Ñ Ð¾ нем, ÑобÑаннÑÑ Ð°Ð²ÑомаÑиÑеÑким пÑÑем. ÐÐ»Ñ ÑÑого ÑледÑÐµÑ Ð½Ð°Ð¿Ð¸ÑаÑÑ Ð½Ð° адÑÐµÑ ÑлекÑÑонной поÑÑÑ <a href=\\'mailto:[email protected]\\'>[email protected]</a>.' | t) | trustedHtml\" ></p> </li> <li> <p>{{ 'ÐÑли в инÑоÑмаÑии, пÑедоÑÑавлÑемой ÐздаÑелÑÑÑÐ²Ñ ÐолÑзоваÑелем, ÑодеÑжаÑÑÑ Ð¿ÐµÑÑоналÑнÑе даннÑе поÑледнего, Ñо ÑакÑом иÑ
пÑедоÑÑÐ°Ð²Ð»ÐµÐ½Ð¸Ñ Ð¾Ð½ ÑоглаÑаеÑÑÑ Ð½Ð° иÑ
обÑабоÑÐºÑ Ð»ÑбÑм ÑпоÑобом, не запÑеÑеннÑм законодаÑелÑÑÑвом РФ.' | t }}</p> <p ng-bind-html=\"('ÐбÑедоÑÑÑпнÑе видео на ÑайÑе могÑÑ ÑÑанÑлиÑоваÑÑÑÑ Ñ YouTube и ÑегÑлиÑÑÑÑÑÑ <a href=\\'https://policies.google.com/privacy\\'>полиÑикой конÑиденÑиалÑноÑÑи Google</a>. ÐагÑÑзка видео на ÑÐ°Ð¹Ñ Ñакже ознаÑÐ°ÐµÑ ÑоглаÑие Ñ <a href=\\'https://www.youtube.com/t/terms\\'>УÑловиÑми иÑполÑÐ·Ð¾Ð²Ð°Ð½Ð¸Ñ YouTube</a>.' | t) | trustedHtml\" ></p> </li> <li> <p>{{ 'ÐаннÑе, коÑоÑÑе Ð¼Ñ Ð¿Ð¾Ð»ÑÑаем Ð¾Ñ Ð²Ð°Ñ, Ð¼Ñ Ð¸ÑполÑзÑем ÑолÑко в ÑооÑвеÑÑÑвии Ñ Ð¿ÑинÑипами обÑабоÑки даннÑÑ
, ÑказаннÑми в ÑÑом докÑменÑе.' | t }}</p> </li> </ol> <p ng-bind-html=\"('ÐÑÑалÑнÑе ÑÑÐ»Ð¾Ð²Ð¸Ñ ÑабоÑÑ ÑайÑа â в <a href=\\'/terms-of-use\\'>пÑавилаÑ
ÑайÑа</a>.' | t) | trustedHtml\" ></p> </div> </div> </div>"),e.put("/pages/about/terms-of-use.html","<update-meta title=\"{{ 'ÐÑавила ÑайÑа' | t }}\"></update-meta> <update-meta name=\"description\" content=\"{{ 'ÐÑавила оÑкÑÑÑого жÑÑнала' | t }}\"></update-meta> <update-meta name=\"keywords\" content=\"{{ 'Discours.io, пÑавила ÑайÑа, terms of use' | t }}\" ></update-meta> <update-meta property=\"og:title\" content=\"{{ 'ÐÑавила ÑайÑа' | t }}\"></update-meta> <update-meta property=\"og:description\" content=\"{{ 'ÐÑавила оÑкÑÑÑого жÑÑнала' | t }}\" ></update-meta> <div class=\"ds-container open-post\"> <div class=\"tw:row-flex\"> <div class=\"tw:gutter-half tw:w-full tw:sm:w-7/12 tw:sm:ml-offset-2 tw:mt-4\"> <h1 class=\"tw:font-bold tw:mb-section\" align=\"center\">{{ 'ÐÑавила ÑайÑа' | t }}</h1> </div> <div class=\"tw:gutter-half tw:w-full tw:sm:w-7/12 tw:sm:ml-offset-2 post-body\"> <p>{{ 'ÐиÑкÑÑÑ â ÑÑо ÑообÑеÑÑво ÑвоÑÑеÑкиÑ
лÑдей, обÑединеннÑÑ
идеей делаÑÑ Ð¸Ð½ÑеÑеÑнÑй жÑÑнал Ð´Ð»Ñ Ð²ÑеÑ
желаÑÑиÑ
. ÐвÑоÑÑ ÐиÑкÑÑÑа ÑообÑа поÑÑедÑÑвом пÑÑмого голоÑÐ¾Ð²Ð°Ð½Ð¸Ñ Ð¾Ð¿ÑеделÑÑÑ ÑодеÑжание жÑÑнала.' | t }}</p> <p>{{ 'ÐÐ»Ñ Ñого, ÑÑÐ¾Ð±Ñ ÐиÑкÑÑÑ ÑабоÑал без помеÑ
, ÑазÑабоÑÐ°Ð½Ñ Ð½Ð°ÑÑоÑÑие ÐÑавила.' | t }}</p> <h3 id=\"опÑеделениÑ\">{{ 'ÐпÑеделениÑ' | t }}</h3> <p><strong>{{ 'СайÑ' | t }}</strong> â {{ 'поÑÑал discours.io' | t }}</p> <p><strong>{{ 'ÐолÑзоваÑелÑ' | t }}</strong> â {{ 'лиÑо, полÑзÑÑÑееÑÑ Ð¡Ð°Ð¹Ñом, либо ÑÑидиÑеÑкое лиÑо, обладаÑÑее пÑавами на инÑеллекÑÑалÑнÑÑ ÑобÑÑвенноÑÑÑ.' | t }}</p> <p><strong>{{ 'ÐÑбликаÑÐ¸Ñ ÐºÐ¾Ð½ÑенÑа' | t }}</strong> â {{ 'ÑазмеÑение ÐолÑзоваÑелем поÑÑедÑÑвом СайÑа обÑекÑов авÑоÑÑкиÑ
пÑав и дÑÑгой инÑоÑмаÑии Ð´Ð»Ñ Ð´ÑÑгиÑ
полÑзоваÑелей.' | t }}</p> <p><strong>{{ 'ÐздаÑелÑÑÑво' | t }}</strong> â {{ 'админиÑÑÑаÑÐ¸Ñ ÑайÑа, коÑоÑÐ°Ñ Ð·Ð°Ð½Ð¸Ð¼Ð°ÐµÑÑÑ ÑеÑ
ниÑеÑкой и издаÑелÑÑкой деÑÑелÑноÑÑÑÑ Ð´Ð»Ñ Ð¾Ð±ÐµÑпеÑÐµÐ½Ð¸Ñ ÑÑнкÑиониÑÐ¾Ð²Ð°Ð½Ð¸Ñ Ð¡Ð°Ð¹Ñа и ÐлÑманаÑ
а. ÐздаÑелÑÑÑво не вмеÑиваеÑÑÑ Ð² пÑинÑÑие ÑедакÑионнÑÑ
ÑеÑений авÑоÑÑким ÑообÑеÑÑвом.' | t }}</p> <p><strong>{{ 'ÐлÑманаÑ
«ÐиÑкÑÑÑ»' | t }}</strong> {{ '(ÑвидеÑелÑÑÑво о ÑегиÑÑÑаÑии СÐÐ: ÐÐ â ФС77-63947 Ð¾Ñ 18.12.15) â пеÑаÑное пеÑиодиÑеÑкое издание, коÑоÑое вÑÑ
Ð¾Ð´Ð¸Ñ Ñаз в год и ÑоÑÑÐ¾Ð¸Ñ Ð¸Ð· лÑÑÑиÑ
пÑбликаÑий на СайÑе за ÑÑо вÑемÑ.' | t }}</p> <h3 id=\"авÑоÑÑкие-пÑава\">{{ 'ÐвÑоÑÑкие пÑава' | t }}</h3> <ol style=\"list-style-type: decimal\"> <li> <p>{{ 'ÐÑÑ Ð¸Ð½ÑоÑмаÑÐ¸Ñ Ð½Ð° ÑайÑе (вклÑÑÐ°Ñ ÑекÑÑÑ, изобÑажениÑ, видеомаÑеÑиалÑ, аÑдиозапиÑи, пÑогÑаммнÑй код, дизайн ÑайÑа и Ñ.д.) ÑвлÑеÑÑÑ Ð¾Ð±ÑекÑом инÑеллекÑÑалÑной ÑобÑÑвенноÑÑи ее пÑавообладаÑелей и оÑ
ÑанÑеÑÑÑ Ð·Ð°ÐºÐ¾Ð½Ð¾Ð´Ð°ÑелÑÑÑвом РФ.' | t }}</p> </li> <li> <p>{{ 'ÐÑбликÑÑ ÐºÐ¾Ð½ÑÐµÐ½Ñ Ð½Ð° ÑайÑе, ÐолÑзоваÑÐµÐ»Ñ Ð½Ð° безвозмездной оÑнове пÑедоÑÑавлÑÐµÑ ÐздаÑелÑÑÑÐ²Ñ Ð¿Ñаво на воÑпÑоизведение, ÑаÑпÑоÑÑÑанение, пеÑевод, ÑедакÑиÑование конÑенÑа. Ðанное пÑаво пÑедоÑÑавлÑеÑÑÑ ÐздаÑелÑÑÑÐ²Ñ Ð½Ð° веÑÑ ÑÑок дейÑÑÐ²Ð¸Ñ Ð°Ð²ÑоÑÑкиÑ
пÑав ÐолÑзоваÑелÑ.' | t }}</p> </li> <li> <p>{{ 'ÐолÑзоваÑÐµÐ»Ñ Ð¿ÑедоÑÑавлÑÐµÑ ÐздаÑелÑÑÑÐ²Ñ Ð¿Ñаво ÑедакÑиÑоваÑÑ ÐºÐ¾Ð½ÑенÑ, в Ñом ÑиÑле вноÑиÑÑ Ð² него изменениÑ, ÑокÑаÑÐµÐ½Ð¸Ñ Ð¸ дополнениÑ, ÑнабжаÑÑ ÐµÐ³Ð¾ иллÑÑÑÑаÑиÑми и поÑÑнениÑми, иÑпÑавлÑÑÑ Ð¾Ñибки и ÑÑоÑнÑÑÑ ÑакÑиÑеÑкие ÑведениÑ, пÑи ÑÑловии, ÑÑо ÑÑим не иÑкажаеÑÑÑ Ð°Ð²ÑоÑÑкий замÑÑел.' | t }}</p> </li> <li> <p ng-bind-html=\"('ÐбнаÑодование конÑенÑа оÑÑÑеÑÑвлÑеÑÑÑ ÐздаÑелÑÑÑвом в ÑооÑвеÑÑÑвии Ñ ÑÑловиÑми лиÑензии <a href=\\'https://creativecommons.org/licenses/by-nc-nd/4.0/deed.ru\\'>
1Creative Commons BY-NC-ND 4.0</a>. ÐÑе маÑеÑÐ¸Ð°Ð»Ñ ÑайÑа пÑедназнаÑÐµÐ½Ñ Ð¸ÑклÑÑиÑелÑно Ð´Ð»Ñ Ð»Ð¸Ñного некоммеÑÑеÑкого иÑполÑзованиÑ. ÐÑава на дизайн и пÑогÑаммнÑй код ÑайÑа пÑÐ¸Ð½Ð°Ð´Ð»ÐµÐ¶Ð°Ñ ÐздаÑелÑÑÑвÑ.' | t) | trustedHtml\" ></p> </li> <li> <p ng-bind-html=\"('ÐÑе аÑдиовизÑалÑнÑе пÑÐ¾Ð¸Ð·Ð²ÐµÐ´ÐµÐ½Ð¸Ñ ÑвлÑÑÑÑÑ ÑобÑÑвенноÑÑÑÑ ÑвоиÑ
авÑоÑов и пÑавообладаÑелей и иÑполÑзÑÑÑÑÑ ÑолÑко в обÑазоваÑелÑнÑÑ
и инÑоÑмаÑионнÑÑ
ÑелÑÑ
. ÐÑли Ð²Ñ ÑвлÑеÑеÑÑ ÑобÑÑвенником Ñого или иного пÑÐ¾Ð¸Ð·Ð²ÐµÐ´ÐµÐ½Ð¸Ñ Ð¸ не ÑоглаÑÐ½Ñ Ñ ÐµÐ³Ð¾ ÑазмеÑением на ÑайÑе, пожалÑйÑÑа, напиÑиÑе на <a href=\\'mailto:[email protected]\\'>[email protected]</a>.' | t) | trustedHtml\" ></p> </li> <li> <p>{{ 'ЦиÑиÑование, ÑаÑпÑоÑÑÑанение, доведение до вÑеобÑего ÑÐ²ÐµÐ´ÐµÐ½Ð¸Ñ Ð¼Ð°ÑеÑиалов СайÑа пÑивеÑÑÑвÑеÑÑÑ. ÐÑи иÑполÑзовании маÑеÑиалов ÑайÑа необÑ
одимо ÑказаÑÑ Ð¸Ð¼Ñ Ð°Ð²ÑоÑа и акÑивнÑÑ ÑÑÑÐ»ÐºÑ Ð½Ð° маÑеÑиал на СайÑе.' | t }}</p> </li> </ol> <h3 id=\"пÑавила-поведениÑ-на-ÑайÑе\">{{ 'ÐÑавила поведениÑ' | t }}</h3> <ol style=\"list-style-type: decimal\"> <li> <p>{{ 'ÐаÑ
одÑÑÑ Ð½Ð° СайÑе, ÐолÑзоваÑÐµÐ»Ñ Ð¿Ð¾Ð´ÑвеÑÐ¶Ð´Ð°ÐµÑ Ñвое ÑовеÑÑеннолеÑие, пÑавоÑпоÑобноÑÑÑ, а Ñакже ÑоглаÑие Ñ Ð½Ð°ÑÑоÑÑими ÐÑавилами и полиÑикой конÑиденÑиалÑноÑÑи и гоÑовноÑÑÑ Ð½ÐµÑÑи полнÑÑ Ð¾ÑвеÑÑÑвенноÑÑÑ Ð·Ð° иÑ
ÑоблÑдение.' | t }}</p> </li> <li> <p>{{ 'Ðа ÑайÑе запÑеÑено: а) ÐÑбликоваÑÑ ÐºÐ¾Ð½ÑенÑ, авÑоÑÑкие пÑава на коÑоÑÑй пÑÐ¸Ð½Ð°Ð´Ð»ÐµÐ¶Ð°Ñ ÑÑеÑÑим лиÑам, без ÑоглаÑÐ¸Ñ ÑÑиÑ
лиÑ. ÐÑли авÑоÑÑкие пÑава на конÑÐµÐ½Ñ Ð¿ÑÐ¸Ð½Ð°Ð´Ð»ÐµÐ¶Ð°Ñ Ð½ÐµÑколÑким лиÑам, Ñо его пÑбликаÑÐ¸Ñ Ð¿ÑÐµÐ´Ð¿Ð¾Ð»Ð°Ð³Ð°ÐµÑ ÑоглаÑие иÑ
вÑеÑ
. б) РазмеÑаÑÑ ÐºÐ¾Ð¼Ð¼ÐµÑÑеÑкÑÑ Ð¸ полиÑиÑеÑкÑÑ ÑекламÑ. в) ЦеленапÑавленно пÑепÑÑÑÑвоваÑÑ Ð½Ð¾ÑмалÑÐ½Ð¾Ð¼Ñ ÑÑнкÑиониÑÐ¾Ð²Ð°Ð½Ð¸Ñ ÑообÑеÑÑва и ÑайÑа discours.io. г) ÐÑдаваÑÑ ÑÐµÐ±Ñ Ð·Ð° дÑÑгого Ñеловека и пÑедÑÑавлÑÑÑÑÑ ÐµÐ³Ð¾ именем. д) РазмеÑаÑÑ Ð¸Ð½ÑоÑмаÑиÑ, коÑоÑÐ°Ñ Ð½Ðµ ÑооÑвеÑÑÑвÑÐµÑ ÑелÑм ÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ Ð¡Ð°Ð¹Ñа, ÑÑемлÑÐµÑ Ð¸Ð½ÑеÑеÑÑ Ð´ÑÑгиÑ
полÑзоваÑелей или ÑÑеÑÑиÑ
лиÑ, наÑÑÑÐ°ÐµÑ Ð·Ð°ÐºÐ¾Ð½Ñ Ð Ð¾ÑÑийÑкой ФедеÑаÑии.' | t }}</p> </li> <li> <p>{{ 'ÐолÑзоваÑÐµÐ»Ñ Ð½ÐµÑÐµÑ Ð²ÑÑ Ð¾ÑвеÑÑÑвенноÑÑÑ Ð·Ð° ÑодеÑжание пÑбликÑемого конÑенÑа и Ñвое взаимодейÑÑвие Ñ Ð´ÑÑгими полÑзоваÑелÑми, и обÑзÑеÑÑÑ Ð²Ð¾Ð·Ð¼ÐµÑÑиÑÑ Ð²Ñе ÑаÑÑ
Ð¾Ð´Ñ Ð² ÑлÑÑае пÑедÑÑÐ²Ð»ÐµÐ½Ð¸Ñ ÐºÐ°ÐºÐ¸Ñ
-либо пÑеÑензий ÑÑеÑÑими лиÑами. ÐздаÑелÑÑÑво не неÑÐµÑ Ð¾ÑвеÑÑÑвенноÑÑи за ÑодеÑжание пÑбликÑемой полÑзоваÑелÑми инÑоÑмаÑии, в Ñом ÑиÑле за ÑазмеÑеннÑе на ÑайÑе комменÑаÑии. ÐеÑепиÑка Ð¼ÐµÐ¶Ð´Ñ ÐолÑзоваÑелем и ÐздаÑелÑÑÑвом ÑÑиÑаеÑÑÑ ÑÑидиÑеÑки знаÑимой. ÐаÑÑоÑÑие ÐÑавила могÑÑ Ð±ÑÑÑ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ñ ÐздаÑелÑÑÑвом, Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð²ÑÑÑпаÑÑ Ð² ÑÐ¸Ð»Ñ Ñ Ð¼Ð¾Ð¼ÐµÐ½Ñа пÑбликаÑии на СайÑе.' | t }}</p> </li> <li> <p>{{ 'ÐÑли ÐолÑзоваÑÐµÐ»Ñ Ð¾Ñевидно и ÑеленапÑавленно наÑÑÑÐ°ÐµÑ Ð¿Ñавила, ÐздаÑелÑÑÑво Ð¼Ð¾Ð¶ÐµÑ Ð¿ÑинÑÑÑ Ð² оÑноÑении авÑоÑа ÑледÑÑÑие меÑÑ: вÑнеÑÑи пÑедÑпÑеждение и обÑзаÑÑ Ð°Ð²ÑоÑа ÑÑÑÑаниÑÑ Ð´Ð¾Ð¿ÑÑенное наÑÑÑение, ÑдалиÑÑ ÐºÐ¾Ð½ÑенÑ, наÑÑÑаÑÑий пÑавила, заблокиÑоваÑÑ Ð¸Ð»Ð¸ ÑдалиÑÑ Ð°ÐºÐºÐ°ÑÐ½Ñ Ð½Ð°ÑÑÑиÑелÑ.' | t }}</p> </li> </ol> <h3 id=\"privacy-policy\">{{ 'ÐолиÑика конÑиденÑиалÑноÑÑи' | t }}</h3> <p ng-bind-html=\"('Ðакие даннÑе ÑобиÑÐ°ÐµÑ Ð¡Ð°Ð¹Ñ Ð¸ как ÐздаÑелÑÑÑво иÑ
иÑполÑзÑеÑ, опиÑано в <a href=\\'/privacy-policy\\'>полиÑике конÑиденÑиалÑноÑÑи</a>.' | t) | trustedHtml\" ></p> <h3 id=\"обÑаÑнаÑ-ÑвÑзÑ\">{{ 'ÐбÑаÑÐ½Ð°Ñ ÑвÑзÑ' | t }}</h3> <p ng-bind-html=\"('ÐÑбÑе вопÑоÑÑ Ð¸ пÑÐµÐ´Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ Ð¿Ð¾ Ð¿Ð¾Ð²Ð¾Ð´Ñ ÑÑнкÑиониÑÐ¾Ð²Ð°Ð½Ð¸Ñ ÑайÑа можно напÑавиÑÑ Ð¿Ð¾ ÑлекÑÑонной поÑÑе <a href=\\'mailto:[email protected]\\'>[email protected]</a> или ÑеÑез ÑоÑÐ¼Ñ <a href=\\'/#idea\\' view-modal=\\'#send-idea-modal\\' rel=\\'noopener noreferrer\\'>«пÑедложиÑÑ Ð¸Ð´ÐµÑ»</a>.' | t) | trustedHtml\" ></p> </div> </div> </div>"),e.put("/pages/best/index.html",'<update-meta title="{{ \'ÐзбÑанное\' | t }}"></update-meta> <update-meta name="description" content="{{ \'ÐÑÑÑие пÑбликаÑии ÐиÑкÑÑÑа за ÑеÑÑÑ Ð»ÐµÑ\' | t }}" ></update-meta> <update-meta name="keywords" content="{{ \'Discours.io, жÑÑнал ÐиÑкÑÑÑ, ÐиÑкÑÑÑ, кÑлÑÑÑÑа, наÑка, иÑкÑÑÑÑво, обÑеÑÑво, незавиÑÐ¸Ð¼Ð°Ñ Ð¶ÑÑналиÑÑика, лиÑеÑаÑÑÑа, мÑзÑка, кино, видео, ÑоÑогÑаÑии\' | t }}" ></update-meta> <update-meta property="og:title" content="{{ \'ÐзбÑанное\' | t }}"></update-meta> <update-meta property="og:description" content="{{ \'ÐÑÑÑие маÑеÑÐ¸Ð°Ð»Ñ Ð¾ÑкÑÑÑой ÑедакÑии. ÐбновиÑе ÑÑÑаниÑÑ Ð¸ ÑвидиÑе новÑе избÑаннÑе пÑбликаÑии\' | t }}" ></update-meta> <div class="ds-container tw:flow-root"> <h2 class="site-nav">{{ \'ÐзбÑанное\' | t }}</h2> <p class="tag-description" ng-bind-html="\'Ðа Ð³Ð¾Ð´Ñ ÑабоÑÑ Ð²&nbsp;ÐиÑкÑÑÑе вÑÑли ÑÑÑÑÑи пÑекÑаÑнÑÑ
пÑбликаÑий. <br />
1Ðа ÑÑой ÑÑÑаниÑе поÑвлÑÑÑÑÑ ÑлÑÑайнÑе из лÑÑÑиÑ
маÑеÑиалов жÑÑнала, вÑбÑаннÑе&nbsp;ÑÑаÑÑниками оÑкÑÑÑой&nbsp;ÑедакÑии. ÐÑли Ñ&nbsp;ÑÑими маÑеÑиалами вÑ&nbsp;Ñже&nbsp;знакомÑ, пÑоÑÑо обновиÑе ÑÑÑаниÑÑ Ð¸ ÑвидиÑе новÑе избÑаннÑе пÑбликаÑии.\' | t | trustedHtml" ></p> <div class="articles-container articles-container--loaded" ng-if="!$ctrl.isMoreLoading"> <article ng-repeat="item in $ctrl.moreItems track by item._id" item="item" class="article article-grid-{{ $index + 1 }}" ng-style="{{ { order: $index } }}" ></article> <banners class="banners-more" types="[\'subscribe\', \'social\', \'supportDiscours\']" style="order: 3" ></banners> </div> <div class="main-loadmore main-loadmore--homepage" ng-if="!$ctrl.isMoreLoading"> <button type="button" class="loadmore" ng-click="$ctrl.loadMore()"> <i class="fas fa-random" style="font-size: 22px"></i> {{ \'ÐеÑемеÑаÑÑ\' | t }} </button> </div> </div> <div class="tw:text-center tw:mt-10" ng-if="$ctrl.isMoreLoading"> <i class="fas fa-sync-alt fa-spin fa-5x"></i> </div>'),e.put("/pages/events/category.html",'<ng-include src="\'/pages/other/error.html\'" ng-if="$ctrl.events && $ctrl.events.error && $ctrl.events.error.value" ng-init="$root.statusCode = $ctrl.events.error.value" ></ng-include> <div ng-hide="$ctrl.events && $ctrl.events.error && $ctrl.events.error.value"> <update-meta title="{{ ::$ctrl.title() }}"></update-meta> <update-meta name="description" content="{{ \'ÐаÑегоÑÐ¸Ñ ÑобÑÑий\' | t }} {{ ::$ctrl.title() }}." ></update-meta> <update-meta name="keywords" content="{{ \'Discours.io, ÑобÑÑиÑ, каÑегоÑиÑ\' | t }}, {{ ::$ctrl.title() }}" ></update-meta> <update-meta property="og:title" content="{{ ::$ctrl.title() }}"></update-meta> <update-meta property="og:description" content="{{ \'ÐаÑегоÑÐ¸Ñ ÑобÑÑий\' | t }} {{ ::$ctrl.title() }}." ></update-meta> <update-meta property="og:image" content="https://discours.io/images/opengraph-logo-black.png" ></update-meta> <update-meta property="og:image:alt" content="ÐаÑегоÑÐ¸Ñ ÑобÑÑий {{ ::$ctrl.title() }} â ÐиÑкÑÑÑ" ></update-meta> <div class="ds-container"> <div class="tw:row-flex"> <div class="tw:gutter-half tw:w-full tw:sm:w-3/12"> <ul class="columns-menu tw:mt-20"> <li class="header">{{ \'ТÐÐЫ ÐÐÐ ÐÐÐ ÐЯТÐÐ\' | t }}</li> <li ng-repeat="category in $ctrl.categories track by category.slug" ng-class="{ active: $ctrl.activeCategory.title == category.title }" ng-if="category.title" > <a href="/events/{{ ::category.slug }}">{{ ::(category.title | uppercase) }}</a> </li> </ul> </div> <div class="tw:gutter-half tw:w-full tw:sm:w-9/12"> <h1 class="column-heading">{{ ::$ctrl.title() }}</h1> <div> <div ng-repeat="event in $ctrl.events track by event._id"> <div class="article-horizontal" ng-class="{\'img-left\': $index % 2 == 0, \'img-right\': $index % 2 == 1 }" > <div class="date">{{ ::event.date }}</div> <div class="tw:row-flex"> <div class="tw:gutter-half tw:w-full tw:sm:w-6/12 img-col"> <a href="{{ ::event.link }}" ><img class="article-img tw:block tw:max-w-full tw:h-auto" ng-src="{{ ::(event.thumborId | imageUrl: 900) }}" alt="{{ ::event.title }}" loading="lazy" decoding="async" /></a> </div> <div class="tw:gutter-half tw:w-full tw:sm:w-6/12"> <h3 class="article-title black-bg"> <a href="{{ ::event.link }}">{{ ::event.title }}</a> </h3> <p class="description">{{ ::event.description }}</p> </div> </div> <a class="readmore" href="{{ ::event.link }}">{{ \'подÑобнее\' | t }}</a> </div> </div> </div> </div> </div> <discours-pagination items-per-page="12" total-items="{{ $ctrl.totalItems }}" current-page="{{ $ctrl.currentPage }}" ></discours-pagination> </div> </div>'),e.put("/pages/events/item.html",'<ng-include src="\'/pages/other/error.html\'" ng-if="$ctrl.item && $ctrl.item.status" ng-init="$root.statusCode = $ctrl.item.status || 404" ></ng-include> <div class="event-page ds-container tw:mt-section" ng-if="$ctrl.item && !$ctrl.item.status"> <div class="content"> <update-meta title="{{ $ctrl.item.title }}"></update-meta> <update-meta name="description" content="{{ $ctrl.item.body | stripTagsAndTruncate: 160 }}." ></update-meta> <update-meta name="keywords" content="{{ \'Discours.io, ÑобÑÑие\' | t }}, {{ $ctrl.item.title }}" ></update-meta> <update-meta property="og:title" content="{{ $ctrl.item.title }}"></update-meta> <update-meta property="og:description" content="{{ $ctrl.item.body | stripTagsAndTruncate: 160 }}" ></update-meta> <update-meta property="og:image" content="{{ $ctrl.item.thumborId | imageUrl: 400 }}" ng-if="$ctrl.item.thumborId" ></update-meta> <div class="item-info open-post event-post progress"> <div class="tw:row-flex"> <div class="ds-content-col"> <div class="tw:mb-section"> <span class="category-title" role="heading" aria-level="2"> <u>{{ $ctrl.item.category | t }}</u> </span> </div> <div class="event-place" ng-if="$ctrl.item.place"> <span class="event-place-title">{{ \'Ðде:\' | t }}</span ><span class="event-place-name" ng-bind-html="$ctrl.item.place | trustedHtml"></span> </div> <div class="event-date-time"> <span class="event-date-title">{{ \'Ðогда:\' | t }}</span ><span class="event-date tw:invisible" >{{ $ctrl.item.publishedAt | amDateFormat: \'D MMM YYYY\' }}</span ><span class="event-time">{{ $ctrl.item.date }}</span> </div> <h1 class="title"> {{ $ctrl.item.title }}<span class="title-icons" ><a class="icon-link title-icon" ng-href="https://api.discours.io/admin/resources/events/records/{{ $ctrl.item._id }}/edit" ng-if="$ctrl.isAdmin" aria-label="{{ \'РедакÑиÑоваÑÑ ÑобÑÑие\' | t }}" ><i class="fas fa-pencil-alt" aria-hidden="true"></i ><span class="custom-tooltip" aria-hidden="true" >{{ \'РедакÑиÑоваÑÑ ÑобÑÑие\' | t }}</span ></a ></span > </h1> <img class="tw:block tw:max-w-full tw:h-auto fancybox-img" fancybox-img ng-src="{{ $ctrl.item.thumborId | imageUrl: 900 }}" alt="{{ $ctrl.item.title }} / Discours.io" loading="lazy" decoding="async" width="900" height="600" /> </div> <div class="ds-content-col tw:mt-section"> <div class="post-body" ng-bind-html="$ctrl.item.body | trustedHtml" post-images="post-images" embed-resize ></div> </div> </div> <div class="tw:row-flex tw:mt-section" ng-if="$ctrl.item.tags.length"> <div class="tw:gutter-half tw:w-full tw:md:w-1/12 tw:md:ml-offset-2 tw:text-right"> <p>{{ \'ÑемÑ:\' | t }}</p> </div> <div class="tw:gutter-half tw:w-full tw:md:w-6/12"> <ul class="tags"> <li ng-repeat="tag in $ctrl.item.tags track by tag.slug"> <a href="/tags/{{ tag.slug }}">{{ tag.title }}</a> </li> </ul> </div> </div> </div> </div> </div>'),e.put("/pages/newsletter/archive.html",'<update-meta title="{{ $ctrl.campaign.subject || (\'Ðеб-веÑÑÐ¸Ñ Ð¿Ð¸ÑÑма\' | t) }}"></update-meta> <update-meta name="robots" content="noindex, nofollow"></update-meta> <update-meta name="description" content="{{ $ctrl.campaign.preheader || (\'Ðеб-веÑÑÐ¸Ñ ÑаÑÑÑлки ÐиÑкÑÑÑа.\' | t) }}" ></update-meta> <div class="ds-container newsletter-archive"> <div class="tw:row-flex"> <div class="tw:gutter-half tw:w-full tw:sm:w-10/12 tw:sm:ml-offset-1 tw:md:w-8/12 tw:md:ml-offset-2" > <div ng-if="$ctrl.mode === \'loading\'" class="newsletter-archive__loading" role="status" aria-l
1ive="polite" > {{ \'ÐагÑÑзкаâ¦\' | t }} </div> <div ng-if="$ctrl.mode === \'notfound\'" class="newsletter-archive__msg"> <h1 class="newsletter-archive__title" ng-bind-html="(\'ÐиÑÑмо не&nbsp;найдено\' | t) | trustedHtml" ></h1> <p class="newsletter-archive__lead">{{ \'Ðеб-веÑÑÐ¸Ñ ÑÑой ÑаÑÑÑлки недоÑÑÑпна.\' | t }}</p> <a href="/" class="ds-btn ds-btn-default" ng-bind-html="(\'Ðа&nbsp;главнÑÑ\' | t) | trustedHtml" ></a> </div> <div ng-if="$ctrl.mode === \'error\'" class="newsletter-archive__msg"> <h1 class="newsletter-archive__title" ng-bind-html="(\'Ðе&nbsp;ÑдалоÑÑ Ð¾ÑкÑÑÑÑ\' | t) | trustedHtml" ></h1> <p class="newsletter-archive__lead">{{ \'ÐопÑобÑйÑе обновиÑÑ ÑÑÑаниÑÑ Ð¿Ð¾Ð·Ð¶Ðµ.\' | t }}</p> <a href="/" class="ds-btn ds-btn-default" ng-bind-html="(\'Ðа&nbsp;главнÑÑ\' | t) | trustedHtml" ></a> </div> <div ng-if="$ctrl.mode === \'loaded\'" class="newsletter-archive__view"> <div class="newsletter-archive__head"> <h1 class="newsletter-archive__subject">{{ $ctrl.campaign.subject }}</h1> <p class="newsletter-archive__date" ng-if="$ctrl.campaign.lastSentAt"> {{ $ctrl.campaign.lastSentAt | date:\'d MMMM y\' }} </p> </div> <iframe class="newsletter-archive__frame" ds-srcdoc="$ctrl.html" sandbox="allow-popups allow-popups-to-escape-sandbox" title="{{ \'Ðеб-веÑÑÐ¸Ñ Ð¿Ð¸ÑÑма\' | t }}" loading="lazy" ></iframe> <footer class="newsletter-archive__foot"> <div class="newsletter-archive__cta" ng-if="$ctrl.subState !== \'done\'"> <span class="newsletter-archive__cta-label" ng-bind-html="(\'ÐодпиÑиÑеÑÑ Ð½Ð°&nbsp;ÑаÑÑÑÐ»ÐºÑ ÐиÑкÑÑÑа:\' | t) | trustedHtml" ></span> <form class="newsletter-archive__cta-form" ng-submit="$ctrl.subscribe()" data-lpignore="true" > <input type="email" required="required" autocomplete="email" inputmode="email" placeholder="{{ \'ÐÐ°Ñ e-mail\' | t }}" ng-model="$ctrl.subEmail" ng-disabled="$ctrl.subState === \'loading\'" /> <button type="submit" class="ds-btn ds-btn-primary" ng-disabled="$ctrl.subState === \'loading\'" > <span ng-if="$ctrl.subState !== \'loading\'">{{ \'ÐодпиÑаÑÑÑÑ\' | t }}</span> <span ng-if="$ctrl.subState === \'loading\'">{{ \'ÐодпиÑÑваемâ¦\' | t }}</span> </button> </form> <p class="newsletter-archive__cta-err" ng-if="$ctrl.subState === \'error\'" ng-bind-html="(\'Ðе&nbsp;ÑдалоÑÑ Ð¿Ð¾Ð´Ð¿Ð¸ÑаÑÑÑÑ, попÑобÑйÑе позже.\' | t) | trustedHtml" ></p> </div> <p class="newsletter-archive__cta-done" ng-if="$ctrl.subState === \'done\'"> {{ \'СпаÑибо! ÐÑдем пÑиÑÑлаÑÑ Ð»ÑÑÑие маÑеÑиалÑ.\' | t }} </p> <a href="/" class="ds-btn ds-btn-default" ng-bind-html="(\'Ðа&nbsp;главнÑÑ\' | t) | trustedHtml" ></a> </footer> </div> </div> </div> </div>'),e.put("/pages/newsletter/subscriptions.html",'<update-meta title="{{ \'ÐодпиÑки на ÑаÑÑÑлки\' | t }}"></update-meta> <update-meta name="robots" content="noindex, nofollow"></update-meta> <update-meta name="description" content="{{ \'УпÑавление подпиÑками на ÑаÑÑÑлки ÐиÑкÑÑÑа.\' | t }}" ></update-meta> <div class="ds-container newsletter-subs"> <div class="tw:row-flex"> <div class="tw:gutter-half tw:w-full tw:sm:w-10/12 tw:sm:ml-offset-1 tw:md:w-7/12 tw:md:ml-offset-2" > <div ng-if="$ctrl.mode === \'loading\'" class="newsletter-subs__loading" role="status" aria-live="polite" > {{ \'ÐагÑÑзкаâ¦\' | t }} </div> <div ng-if="$ctrl.mode === \'confirm\'" class="newsletter-subs__card"> <div class="newsletter-subs__icon" aria-hidden="true">â</div> <h1 class="newsletter-subs__title" ng-bind-html="(\'ÐÑпиÑаÑÑÑÑ Ð¾Ñ&nbsp;ÑаÑÑÑлки?\' | t) | trustedHtml" ></h1> <p class="newsletter-subs__lead" ng-if="$ctrl.previewAudiences().length" ng-bind-html="(\'ÐÑ Ð±Ð¾Ð»ÑÑе не&nbsp;бÑдеÑе полÑÑаÑÑ:\' | t) | trustedHtml" ></p> <ul class="newsletter-subs__list" ng-if="$ctrl.previewAudiences().length"> <li ng-repeat="a in $ctrl.previewAudiences()">{{ a.label }}</li> </ul>
1 <p class="newsletter-subs__lead" ng-if="!$ctrl.previewAudiences().length" ng-bind-html="(\'ÐÑ Ð¾ÑпиÑеÑеÑÑ Ð¾Ñ&nbsp;ÑаÑÑÑлок ÐиÑкÑÑÑа.\' | t) | trustedHtml" ></p> <p class="newsletter-subs__email" ng-if="$ctrl.preview.email"> <span ng-bind-html="(\'на&nbsp;адÑеÑ\' | t) | trustedHtml"></span> <b>{{ $ctrl.preview.email }}</b> </p> <div class="newsletter-subs__actions"> <button type="button" class="ds-btn ds-btn-primary" ng-disabled="$ctrl.submitting" ng-click="$ctrl.confirmUnsubscribe()" > <span ng-if="!$ctrl.submitting">{{ \'ÐÑпиÑаÑÑÑÑ\' | t }}</span> <span ng-if="$ctrl.submitting">{{ \'ÐÑпиÑÑваемâ¦\' | t }}</span> </button> </div> <div class="newsletter-subs__divider" ng-if="$ctrl.listOptions().length || $ctrl.umbrellaOption()" > <span class="newsletter-subs__divider-line"></span> <span ng-bind-html="(\'Ðли наÑÑÑойÑе, ÑÑо&nbsp;полÑÑаÑÑ\' | t) | trustedHtml"></span> <span class="newsletter-subs__divider-line"></span> </div> <div ng-include="\'/partials/newsletter/subscriptions-panel.html\'"></div> <div class="newsletter-subs__actions" ng-if="$ctrl.listOptions().length || $ctrl.umbrellaOption()" > <button type="button" class="ds-btn ds-btn-default" ng-disabled="$ctrl.submitting || !$ctrl.hasPrefChanges()" ng-click="$ctrl.saveByToken()" > <span ng-if="!$ctrl.submitting">{{ \'СоÑ
ÑаниÑÑ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ\' | t }}</span> <span ng-if="$ctrl.submitting">{{ \'СоÑ
ÑанÑемâ¦\' | t }}</span> </button> </div> </div> <div ng-if="$ctrl.mode === \'done\'" class="newsletter-subs__card"> <div class="newsletter-subs__check" aria-hidden="true">â</div> <div ng-if="$ctrl.result.kind === \'updated\'"> <h1 class="newsletter-subs__title">{{ \'ÐаÑÑÑойки ÑоÑ
ÑаненÑ\' | t }}</h1> <p class="newsletter-subs__lead" ng-if="$ctrl.savedSubscribedLabels().length"> {{ \'ÐÑ Ð±ÑдеÑе полÑÑаÑÑ:\' | t }} <span ng-repeat="l in $ctrl.savedSubscribedLabels()" >{{ l }}{{ $last ? \'\' : \', \' }}</span >. </p> <p class="newsletter-subs__lead" ng-if="!$ctrl.savedSubscribedLabels().length"> {{ \'ÐÑ Ð±ÑдеÑе полÑÑаÑÑ ÑолÑко ÑамÑе важнÑе пиÑÑма.\' | t }} </p> </div> <div ng-if="$ctrl.result.kind !== \'updated\'"> <h1 class="newsletter-subs__title">{{ \'ÐоÑово\' | t }}</h1> <p class="newsletter-subs__lead" ng-if="$ctrl.resultAudiences().length"> {{ \'ÐÑ Ð¾ÑпиÑÐ°Ð½Ñ Ð¾Ñ:\' | t }} <span ng-repeat="a in $ctrl.resultAudiences()" >{{ a.label }}{{ $last ? \'\' : \', \' }}</span >. </p> <p class="newsletter-subs__lead" ng-if="!$ctrl.resultAudiences().length" ng-bind-html="(\'ÐÑ Ð¾ÑпиÑÐ°Ð½Ñ Ð¾Ñ&nbsp;ÑаÑÑÑлки.\' | t) | trustedHtml" ></p> </div> <p class="newsletter-subs__email" ng-if="$ctrl.result.email"> {{ \'ÐдÑеÑ\' | t }} <b>{{ $ctrl.result.email }}</b> </p> <div class="newsletter-subs__actions"> <a href="/" class="ds-btn ds-btn-default" ng-bind-html="(\'Ðа&nbsp;главнÑÑ\' | t) | trustedHtml" ></a> </div> </div> <div ng-if="$ctrl.mode === \'error\'" class="newsletter-subs__card"> <div class="newsletter-subs__icon newsletter-subs__icon--error" aria-hidden="true">!</div> <h1 class="newsletter-subs__title" ng-bind-html="(\'Ðе&nbsp;полÑÑилоÑÑ\' | t) | trustedHtml" ></h1> <p class="newsletter-subs__lead">{{ $ctrl.errorMessage }}</p> <div class="newsletter-subs__actions" ng-if="$ctrl.token && $ctrl.retryAction"> <button type="button" class="ds-btn ds-btn-default" ng-disabled="$ctrl.submitting || !$ctrl.retryAction" ng-click="$ctrl.retryTokenAction()" > {{ \'ÐопÑобоваÑÑ Ñнова\' | t }} </button> </div> </div> <div ng-if="$ctrl.mode === \'expired\'" class="newsletter-subs__card"> <div class="newsletter-subs__icon newsletter-subs__icon--error" aria-hidden="true">!</div> <h1 class="newsletter-subs__title">{{ \'СÑÑлка ÑÑÑаÑела\' | t }}</h1> <p class="newsletter-subs__lead">{{ $ctrl.errorMessage }}</p> <div class="newsletter-subs__actions"> <a href="/" class="ds-btn ds-btn-default" ng-bind-html="(\'Ðа&nbsp;главнÑÑ\' | t) | trustedHtml" ></a> </div> </div> <div ng-if="$ctrl.mode === \'status\'" class="newsletter-subs__manage"> <h1 class="column-heading" ng-bind-html="(\'ÐодпиÑки на&nbsp;ÑаÑÑÑлки\' | t) | trustedHtml" ></h1> <p class="newsletter-subs__lead" ng-if="$ctrl.status.email"> {{ \'ÐдÑеÑ:\' | t }} <b>{{ $ctrl.status.email }}</b> </p> <div ng-include="\'/partials/newsletter/subscriptions-panel.html\'"></div> <div class="newsletter-subs__actions newsletter-subs__actions--left"> <button type="button" class="ds-btn ds-btn-primary" ng-disabled="$ctrl.saving || !$ctrl.hasPrefChanges()" ng-click="$ctrl.saveAuthorized()" >
1 <span ng-if="!$ctrl.saving">{{ \'СоÑ
ÑаниÑÑ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ\' | t }}</span> <span ng-if="$ctrl.saving">{{ \'СоÑ
ÑанÑемâ¦\' | t }}</span> </button> </div> </div> <div ng-if="$ctrl.mode === \'info\'" class="newsletter-subs__card"> <div class="newsletter-subs__icon" aria-hidden="true">â</div> <h1 class="newsletter-subs__title" ng-bind-html="(\'ÐодпиÑки на&nbsp;ÑаÑÑÑлки\' | t) | trustedHtml" ></h1> <p class="newsletter-subs__lead" ng-bind-html="(\'ÐÑо ÑÑÑаниÑа ÑпÑÐ°Ð²Ð»ÐµÐ½Ð¸Ñ ÑаÑÑÑлками ÐиÑкÑÑÑа. ЧÑÐ¾Ð±Ñ Ð¾ÑпиÑаÑÑÑÑ, пеÑейдиÑе по&nbsp;ÑÑÑлке «ÐÑпиÑаÑÑÑÑ» Ð²Ð½Ð¸Ð·Ñ Ð»Ñбого пиÑÑма ÑаÑÑÑлки.\' | t) | trustedHtml" ></p> <div class="newsletter-subs__actions"> <a href="/login" class="ds-btn ds-btn-default">{{ \'ÐойÑи\' | t }}</a> </div> </div> </div> </div> </div>'),e.put("/pages/other/404.html",'<ng-include src="\'/pages/other/error.html\'" ng-init="$root.statusCode = 404; $root.isStubPage = true" ></ng-include>'),e.put("/pages/other/api-crush.html",'<update-meta title="{{ \'ÐÑ ÑкоÑо веÑнемÑÑ\' | t }}"></update-meta> <update-meta name="description" content="{{ \'Ðеполадки â ÑÑо вÑеменно. Ð¡Ð°Ð¹Ñ ÐиÑкÑÑÑа ÑкоÑо Ñнова заÑабоÑаеÑ\' | t }}" ></update-meta> <update-meta name="keywords" content="Discours.io"></update-meta> <update-meta property="og:title" content="{{ \'ÐÑ ÑкоÑо веÑнемÑÑ\' | t }}"></update-meta> <update-meta property="og:description" content="{{ \'Ðеполадки â ÑÑо вÑеменно. Ð¡Ð°Ð¹Ñ ÐиÑкÑÑÑа ÑкоÑо Ñнова заÑабоÑаеÑ\' | t }}" ></update-meta> <div class="ds-container"> <div class="api-crush donate-result-message"> <h1 class="api-crush__title">{{ \'ÐÑ ÑкоÑо веÑнемÑÑ\' | t }}</h1> <p class="api-crush__info">{{ \'ÐÑÑзÑÑ, Ñ Ð½Ð°Ñ ÑеÑ
ниÑеÑкие неполадки. ÐеÑоÑÑно, наÑи ÑеÑвеÑа не ÑпÑавлÑÑÑÑÑ Ñ Ð½Ð°Ð³ÑÑзкой, или на Ð½Ð°Ñ Ð½Ð°Ð¿Ð°Ð» баг. ÐÑ Ñже пÑÑаемÑÑ Ð¿Ð¾Ð´Ð½ÑÑÑ ÑайÑ, но ÑÑо Ð¼Ð¾Ð¶ÐµÑ Ð·Ð°Ð½ÑÑÑ Ð½ÐµÐºÐ¾ÑоÑое вÑемÑ. Рпока Ð²Ñ Ð¼Ð¾Ð¶ÐµÑе поÑлÑÑаÑÑ Ð½Ð°Ñ\' | t }} <a href="https://world-stories.mave.digital/" target="_blank" rel="noopener noreferrer">{{ \'подкаÑÑ\' | t }}</a> {{ \'или поÑиÑаÑÑ Ð½Ð°Ñи пÑбликаÑии в\' | t }} <a href="https://t.me/discoursio" target="_blank" rel="noopener noreferrer">{{ \'ТелегÑаме\' | t }}</a>. {{ \'ÐÑли Ð²Ñ Ñ
оÑиÑе помоÑÑ, пожалÑйÑÑа, напиÑиÑе на\' | t }} <a href="mailto:[email protected]">[email protected]</a>.</p> <div class="api-crush__image"> <img src="/images/wakeup.png" title="{{ \'ÐÑ Ñже поднимаем ÑайÑ! ÐадеемÑÑ, ÐиÑкÑÑÑ ÑкоÑо заÑабоÑаеÑ\' | t }}" alt="{{ \'ÐÑ Ñже поднимаем ÑайÑ! ÐадеемÑÑ, ÐиÑкÑÑÑ ÑкоÑо заÑабоÑаеÑ\' | t }}" /> </div> </div> </div>'),e.put("/pages/other/auth-entry.html",'<div ng-if="$ctrl.inviteFlow"> <update-meta title="{{ $ctrl.title }}"></update-meta> <div class="ds-container"> <div class="tw:row-flex"> <div class="tw:gutter-half tw:w-full tw:sm:w-10/12 tw:sm:ml-offset-1 tw:md:w-8/12 tw:md:ml-offset-2" > <section class="auth-entry tw:text-center"> <h1>{{ $ctrl.heading }}</h1> <p class="auth-entry__description tw:text-lg tw:font-light">{{ $ctrl.description }}</p> <p class="tw:text-error auth-entry__error" ng-if="$ctrl.errorMessage"> {{ $ctrl.errorMessage }} </p> <p class="auth-entry__status" ng-if="$ctrl.processing"> {{ \'ÐбÑабаÑÑваем пÑиглаÑение, не закÑÑвайÑе ÑÑÑаниÑÑ.\' | t }} </p> <p class="auth-entry__action"> <a href="" class="ds-btn ds-btn-primary ds-btn-lg" ng-click="$ctrl.openPrimary($event)" ng-if="!$ctrl.processing" > {{ $ctrl.primaryLabel }} </a> <a href="" class="ds-btn ds-btn-default" ng-click="$ctrl.retryAccept($event)" ng-if="$ctrl.errorMessage && $ctrl.inviteFlow && !$ctrl.processing" > {{ \'ÐопÑобоваÑÑ ÐµÑÑ Ñаз\' | t }}
1 </a> </p> <p class="auth-entry__secondary"> <a href="" ng-click="$ctrl.openSecondary($event)">{{ $ctrl.secondaryLabel }}</a> </p> <p> <a href="" ng-click="$ctrl.goHome($event)">{{ \'ÐеÑнÑÑÑÑÑ Ð½Ð° главнÑÑ\' | t }}</a> </p> </section> </div> </div> </div> </div>'),e.put("/pages/other/blocked-in-russia.html",'<update-meta title="{{ \'ÐаблокиÑовано ÐенеÑалÑной пÑокÑÑаÑÑÑой РФ\' | t }}"></update-meta> <update-meta name="robots" content="noindex, nofollow"></update-meta> <update-meta name="description" content="{{ \'ÐÑÐ¾Ñ Ð¼Ð°ÑеÑиал запÑеÑен на ÑеÑÑиÑоÑии РоÑÑии\' | t }}" ></update-meta> <update-meta name="keywords" content="Discours.io"></update-meta> <update-meta property="og:title" content="{{ \'ÐаблокиÑовано ÐенеÑалÑной пÑокÑÑаÑÑÑой РФ\' | t }}" ></update-meta> <update-meta property="og:description" content="{{ \'ÐÑÐ¾Ñ Ð¼Ð°ÑеÑиал запÑеÑен на ÑеÑÑиÑоÑии РоÑÑии\' | t }}" ></update-meta> <div class="ds-container"> <div class="api-crush donate-result-message"> <h1 class="api-crush__title tw:mt-6">{{ \'ÐаблокиÑовано ÐенеÑалÑной пÑокÑÑаÑÑÑой РФ\' | t }}</h1> <p class="api-crush__info tw:mb-5"> {{ \'ÐÑÑзÑÑ, маÑеÑиал\' | t }} <strong>{{ $ctrl.blockedArticleData.title }}</strong> {{ \'заблокиÑован на ÑеÑÑиÑоÑии РФ на оÑновании ÑÑÐµÐ±Ð¾Ð²Ð°Ð½Ð¸Ñ ÐенеÑалÑной пÑокÑÑаÑÑÑÑ Ð Ð¤ оÑ\' | t }}<br /><strong>{{ $ctrl.blockedArticleData.detailsOfSolution }}</strong>. </p> <p class="api-crush__info"> {{ \'Ð ÑооÑвеÑÑÑвии Ñ ÑеÑением влаÑÑей доÑÑÑп к ÑÑой пÑбликаÑии Ð´Ð»Ñ ÑеÑ
, кÑо оÑкÑÑÐ²Ð°ÐµÑ Ð¸Ñ
из РоÑÑии, закÑÑÑ. РедакÑÐ¸Ñ Â«ÐиÑкÑÑÑа» не ÑоглаÑна Ñ ÑÑим ÑеÑением и обжалÑÐµÑ ÐµÐ³Ð¾ в ÑÑде.\' | t }} </p> <br /> <a href="/" class="loadmore landing loadmore--return landing"> {{ \'ÐеÑнÑÑÑÑÑ Ð½Ð° главнÑÑ\' | t }} </a> </div> </div>'),e.put("/pages/other/censored-in-russia.html",'<update-meta title="{{ \'ÐаÑензÑÑиÑовано\' | t }}"></update-meta> <update-meta name="robots" content="noindex, nofollow"></update-meta> <update-meta name="description" content="{{ \'ЦензÑÑа запÑеÑÐ°ÐµÑ Ð¿Ð¸ÑаÑÑ Ð¾Ð± ÑÑом\' | t }}" ></update-meta> <update-meta name="keywords" content="Discours.io"></update-meta> <update-meta property="og:title" content="{{ \'ÐаÑензÑÑиÑовано\' | t }}"></update-meta> <update-meta property="og:description" content="{{ \'ЦензÑÑа запÑеÑÐ°ÐµÑ Ð¿Ð¸ÑаÑÑ Ð¾Ð± ÑÑом\' | t }}" ></update-meta> <div class="ds-container"> <div class="api-crush donate-result-message"> <h1 class="api-crush__title tw:mt-6">{{ \'ÐапÑеÑено ÑензÑÑой\' | t }}</h1> <p class="api-crush__info"> {{ \'ÐÑÑзÑÑ, поÑле пÑинÑÑÐ¸Ñ Ð·Ð°ÐºÐ¾Ð½Ð° о\' | t }} <s>{{ \'запÑеÑе пÑавдÑ\' | t }}</s> {{ \'«ÑейкаÑ
» в РоÑÑии болÑÑе нелÑÐ·Ñ Ð½Ð°Ð·ÑваÑÑ\' | t }} <s>{{ \'войнÑ\' | t }}</s> {{ \'«ÑпеÑопеÑаÑиÑ» â войной. ЧÑÐ¾Ð±Ñ Ð½Ðµ подвеÑгаÑÑ Ð°Ð²ÑоÑов и Ñ
Ñдожников ÑиÑкам пÑеÑÐ»ÐµÐ´Ð¾Ð²Ð°Ð½Ð¸Ñ Ð·Ð° Ñо, ÑÑо они назÑваÑÑ Ð²ÐµÑи Ñвоими именами и не боÑÑÑÑ Ð³Ð¾Ð²Ð¾ÑиÑÑ Ð¾ Ñом, ÑÑо волнÑÐµÑ Ð»Ñдей, Ð¼Ñ Ð²ÑнÑÐ¶Ð´ÐµÐ½Ñ Ð·Ð°ÐºÑÑÑÑ Ð´Ð¾ÑÑÑп к ÑаÑÑи маÑеÑиалов ÑамиздаÑа Ð´Ð»Ñ ÑеÑ
, кÑо оÑкÑÑÐ²Ð°ÐµÑ Ð¸Ñ
из РоÑÑии. Ðз дÑÑгиÑ
ÑÑÑан, где ÑензÑÑа не Ñзаконена, вÑе наÑи пÑбликаÑии по-пÑÐµÐ¶Ð½ÐµÐ¼Ñ Ð´Ð¾ÑÑÑпнÑ.\' | t }} </p> <p class="api-crush__info tw:mt-4"> {{ \'ÐÐ»Ñ Ð¿ÑоÑмоÑÑа закÑÑÑÑÑ
маÑеÑиалов необÑзаÑелÑно пеÑеезжаÑÑ ÑизиÑеÑки, доÑÑаÑоÑно пÑоÑÑо\' | t }} <a href="https://t.me/discoursio/4959" target="_blank" rel="noopener noreferrer" >{{ \'ÑмениÑÑ\' | t }}</a > {{ \'Ñвое виÑÑÑалÑное меÑÑоположение, напÑимеÑ, Ñ Ð¿Ð¾Ð¼Ð¾ÑÑÑ VPN или дÑÑгиÑ
\' | t }} <a href="https://discours.io/articles/social/cybersecurity-tips" target="_blank" rel="noopener noreferrer" >{{ \'ÑпоÑобов обÑ
ода\' | t }}</a > {{ \'блокиÑовок.\' | t }} </p> <p class="api-crush__info tw:mt-4"> <a href="/" class="loadmore landing loadmore--return landing" ng-click="$ctrl.returnToArticle(); $event.preventDefault()" > {{ \'Я Ñже пеÑемеÑÑилÑÑ, покажиÑе ÑÑаÑÑÑ!\' | t }}
1 </a> </p> </div> </div>'),e.put("/pages/other/donate-fail.html",'<update-meta title="{{ \'ÐÑибка\' | t }}"></update-meta> <update-meta name="description" content="{{ \'ÐÑибка\' | t }}"></update-meta> <update-meta name="keywords" content="{{ \'Discours.io, благоÑвоÑиÑелÑноÑÑÑ\' | t }}"></update-meta> <update-meta property="og:title" content="{{ \'ÐÑибка\' | t }}"></update-meta> <update-meta property="og:description" content="{{ \'ÐÑибка\' | t }}"></update-meta> <div class="tw:text-center donate-result-message"> <h1> {{ \'Ð ÑожалениÑ, ÑÑо-Ñо поÑло не Ñак,\' | t }}<br /> {{ \'Ð²Ð°Ñ Ð¿ÐµÑевод не пÑоÑÑл\' | t }} </h1> <p> {{ \'Ðозможно, Ð²Ñ Ð¾ÑиблиÑÑ Ð¿Ñи вводе ÑеквизиÑов каÑÑÑ. ÐожалÑйÑÑа, попÑобÑйÑе\' | t }} <a href="/help">{{ \'еÑÑ Ñаз\' | t }}</a>. {{ \'ÐÑли Ñ ÑÑим вÑÑ Ð² поÑÑдке, напиÑиÑе нам на\' | t }} <a href="mailto:[email protected]">[email protected]</a>, {{ \'Ð¼Ñ Ð¿Ð¾ÑÑаÑаемÑÑ Ð¿Ð¾Ð¼Ð¾ÑÑ.\' | t }} </p> </div>'),e.put("/pages/other/donate-offer.html",'<update-meta title="ÐÑблиÑÐ½Ð°Ñ Ð¾ÑеÑÑа о заклÑÑении договоÑа пожеÑÑвованиÑ"></update-meta> <update-meta name="description" content="ÐÑблиÑÐ½Ð°Ñ Ð¾ÑеÑÑа о заклÑÑении договоÑа пожеÑÑвованиÑ" ></update-meta> <update-meta name="keywords" content="Discours.io, оÑеÑÑа, Ð´Ð¾Ð³Ð¾Ð²Ð¾Ñ Ð¿Ð¾Ð¶ÐµÑÑвованиÑ, donate offer" ></update-meta> <update-meta property="og:title" content="ÐÑблиÑÐ½Ð°Ñ Ð¾ÑеÑÑа о заклÑÑении договоÑа пожеÑÑвованиÑ" ></update-meta> <update-meta property="og:description" content="ÐÑблиÑÐ½Ð°Ñ Ð¾ÑеÑÑа о заклÑÑении договоÑа пожеÑÑвованиÑ" ></update-meta> <div class="ds-container open-post open-post--offer"> <div class="tw:row-flex"> <div class="tw:gutter-half tw:w-full tw:sm:w-7/12 tw:sm:ml-offset-2 tw:mt-section-lg"> <h1 class="title" style="text-align: center"> ÐÑблиÑÐ½Ð°Ñ Ð¾ÑеÑÑа о Ð·Ð°ÐºÐ»ÑÑении договоÑа пожеÑÑÐ²Ð¾Ð²Ð°Ð½Ð¸Ñ </h1> </div> <div class="tw:gutter-half tw:w-full tw:sm:w-7/12 tw:sm:ml-offset-2 post-body"> <ol> <li> <p> ÐиÑкÑÑÑ Ð¿ÑÐµÐ´Ð»Ð°Ð³Ð°ÐµÑ Ð²Ð°Ð¼ оÑÑÑеÑÑвиÑÑ Ð¿Ð¾Ð¶ÐµÑÑвование в Ð»Ñбой Ñдобной вам ÑоÑме на ÑледÑÑÑиÑ
ÑÑловиÑÑ
. </p> </li> <li> <p> ÐаÑÑоÑÑÐ°Ñ Ð¿ÑблиÑÐ½Ð°Ñ Ð¾ÑеÑÑа (далее — оÑеÑÑа) ÑвлÑеÑÑÑ Ð¿Ñедложением ÐвÑономной некоммеÑÑеÑкой оÑганизаÑии «Ð¦ÐµÐ½ÑÑ Ð¿Ð¾Ð´Ð´ÐµÑжки незавиÑимой жÑÑналиÑÑики и ÐºÑлÑÑÑÑнÑÑ
иниÑиаÑив «ÐиÑкÑÑÑ» (далее — ÐиÑкÑÑÑ) заклÑÑиÑÑ Ð´Ð¾Ð³Ð¾Ð²Ð¾Ñ Ð¿Ð¾Ð¶ÐµÑÑÐ²Ð¾Ð²Ð°Ð½Ð¸Ñ Ð½Ð° ÑÑÑавнÑе Ñели ÐиÑкÑÑÑа ѠлÑбÑм лиÑом, кÑо оÑзовеÑÑÑ Ð½Ð° Ð¾ÑеÑÑÑ (далее — ÐеÑÑвоваÑелÑ). </p> </li> <li> <p> ÐÑинÑÑием наÑÑоÑÑей оÑеÑÑÑ Ð¿ÑизнаеÑÑÑ Ð¿ÐµÑеÑиÑление ÐеÑÑвоваÑелем денежнÑÑ
ÑÑедÑÑв на ÑаÑÑеÑнÑй ÑÑÐµÑ ÐиÑкÑÑÑа. ÐÑинÑÑие оÑеÑÑÑ ÐеÑÑвоваÑелем ÑавноÑилÑно заклÑÑÐµÐ½Ð¸Ñ Ð´Ð¾Ð³Ð¾Ð²Ð¾Ñа пожеÑÑÐ²Ð¾Ð²Ð°Ð½Ð¸Ñ Ð½Ð° ÑÑловиÑÑ
, изложеннÑÑ
в Ð¾ÑеÑÑе, и Ð¾Ð·Ð½Ð°ÑаеÑ, ÑÑо ÐеÑÑвоваÑÐµÐ»Ñ Ð¾Ð·Ð½Ð°ÐºÐ¾Ð¼Ð¸Ð»ÑÑ Ñо Ð²Ñеми ÑÑловиÑми наÑÑоÑÑей оÑеÑÑÑ, ÑелÑми деÑÑелÑноÑÑи ÐиÑкÑÑÑа, оÑÐ¾Ð·Ð½Ð°ÐµÑ Ð·Ð½Ð°Ñение ÑвоиÑ
дейÑÑвий, Ð¸Ð¼ÐµÐµÑ Ð¿Ð¾Ð»Ð½Ð¾Ðµ пÑаво на Ð¸Ñ
 ÑовеÑÑение и Ð¿Ð¾Ð»Ð½Ð¾ÑÑÑÑ Ð¿ÑÐ¸Ð½Ð¸Ð¼Ð°ÐµÑ ÑÑÐ»Ð¾Ð²Ð¸Ñ Ð½Ð°ÑÑоÑÑей оÑеÑÑÑ. ÐÑÐ¸Ð½Ð¸Ð¼Ð°Ñ ÑÑÐ»Ð¾Ð²Ð¸Ñ Ð½Ð°ÑÑоÑÑей оÑеÑÑÑ, ÐеÑÑвоваÑÐµÐ»Ñ Ð¿Ð¾Ð´ÑвеÑÐ¶Ð´Ð°ÐµÑ Ð´Ð¾Ð±ÑоволÑнÑй и Ð±ÐµÐ·Ð²Ð¾Ð·Ð¼ÐµÐ·Ð´Ð½Ñй Ñ
аÑакÑÐµÑ Ð¿Ð¾Ð¶ÐµÑÑвованиÑ. </p> </li> <li> <p> ÐеÑÑом ÑазмеÑÐµÐ½Ð¸Ñ Ð¾ÑеÑÑÑ ÑвлÑеÑÑÑ Ð³Ð¾Ñод ÐоÑква, РоÑÑийÑÐºÐ°Ñ Ð¤ÐµÐ´ÐµÑаÑиÑ. Ðанное пÑедложение ÑвлÑеÑÑÑ Ð¿ÑблиÑной оÑеÑÑой в ÑооÑвеÑÑÑвии ѠположениÑми п.2 ÑÑ.437 ÐÑажданÑкого кодекÑа РФ. ÐÑеÑÑа ÑегÑлиÑÑеÑÑÑ Ð¸ ÑолкÑеÑÑÑ Ð² ÑооÑвеÑÑÑвии ѠзаконодаÑелÑÑÑвом РоÑÑийÑкой ФедеÑаÑии. ÐÑеÑÑа адÑеÑована иÑклÑÑиÑелÑно гÑажданам РоÑÑийÑкой ФедеÑаÑии. </p> </li> <li> <p> ÐÑблиÑÐ½Ð°Ñ Ð¾ÑеÑÑа вÑÑÑÐ¿Ð°ÐµÑ Ð² ÑÐ¸Ð»Ñ Ñо Ð´Ð½Ñ, ÑледÑÑÑего за Ð´Ð½ÐµÐ¼ ÑазмеÑÐµÐ½Ð¸Ñ ÐµÐµ Ð½Ð° ÑайÑе ÐиÑкÑÑÑа в ÑеÑи ÐнÑеÑÐ½ÐµÑ Ð¿Ð¾ Ð°Ð´ÑеÑÑ: <a href="https://discours.io">https://discours.io</a>, и Ð´ÐµÐ¹ÑÑвÑÐµÑ Ð±ÐµÑÑÑоÑно. ÐиÑкÑÑÑ Ð²Ð¿Ñаве оÑмениÑÑ Ð¾ÑеÑÑÑ Ð² Ð»Ñбое вÑÐµÐ¼Ñ Ð±ÐµÐ· обÑÑÑÐ½ÐµÐ½Ð¸Ñ Ð¿ÑиÑин. РнаÑÑоÑÑÑÑ Ð¾ÑеÑÑÑ Ð¼Ð¾Ð³ÑÑ Ð±ÑÑÑ Ð²Ð½ÐµÑÐµÐ½Ñ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð¸ Ð´Ð¾Ð¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ без пÑедваÑиÑелÑного ÑведомлениÑ, коÑоÑÑе вÑÑÑпаÑÑ Ð² ÑÐ¸Ð»Ñ Ñо Ð´Ð½Ñ, ÑледÑÑÑего за Ð´Ð½ÐµÐ¼ иÑ
 ÑазмеÑÐµÐ½Ð¸Ñ Ð½Ð° ÑайÑе ÐиÑкÑÑÑа. </p> </li> <li> <p> ÐазнаÑение пожеÑÑвованиÑ: ÑÑедÑÑва ÑÑиÑаÑÑÑÑ Ð¿Ð¾ÑÑÑпивÑими на Ð²ÐµÐ´ÐµÐ½Ð¸Ðµ ÑÑÑавной деÑÑелÑноÑÑи и ÑодеÑжание ÐиÑкÑÑÑа. </p> </li> <li> <p> ÐеÑÑвоваÑÐµÐ»Ñ Ð¿Ð¾ ÑÐ²Ð¾ÐµÐ¼Ñ ÑÑмоÑÑÐµÐ½Ð¸Ñ Ð²Ð¿Ñаве вÑбÑаÑÑ Ñазовое пожеÑÑвование или ежемеÑÑÑное пожеÑÑвование в ÑÑмме, опÑеделÑемой ÐеÑÑвоваÑелем ÑамоÑÑоÑÑелÑно. ÐÑи вÑбоÑе ежемеÑÑÑного пожеÑÑÐ²Ð¾Ð²Ð°Ð½Ð¸Ñ ÐеÑÑвоваÑÐµÐ»Ñ Ð´Ð°ÐµÑ Ñвое ÑоглаÑие на ÐµÐ¶ÐµÐ¼ÐµÑÑÑное ÑпиÑание Ñказанной им ÑÑÐ¼Ð¼Ñ Ñ ÐµÐ³Ð¾ ÑÑеÑа. </p> </li> <li> <p> ÐеÑÑвоваÑÐµÐ»Ñ Ð²Ð¿Ñаве в Ð»Ñбой Ð¼Ð¾Ð¼ÐµÐ½Ñ Ð¸Ð·Ð¼ÐµÐ½Ð¸ÑÑ ÑÑÐ¼Ð¼Ñ Ð¿Ð¾Ð¶ÐµÑÑвованиÑ, даÑÑ ÑпиÑÐ°Ð½Ð¸Ñ Ð¸Ð»Ð¸ оÑказаÑÑÑÑ Ð¾Ñ ÐµÐ¶ÐµÐ¼ÐµÑÑÑнÑÑ
пеÑеводов, извеÑÑив об ÑÑом ÐиÑкÑÑÑ Ð¿Ð¾ ÑлекÑÑонной поÑÑе, по Ð°Ð´ÑеÑÑ: <a href="mailto:[email protected]">[email protected]</a>. </p> </li> <li> <p> ÐаÑой пожеÑÑвованиѠи, ÑооÑвеÑÑÑвенно, даÑой пÑинÑÑÐ¸Ñ Ð¾ÑеÑÑÑ ÑÑиÑаеÑÑÑ Ð´Ð°Ñа поÑÑÑÐ¿Ð»ÐµÐ½Ð¸Ñ Ð´ÐµÐ½ÐµÐ¶Ð½ÑÑ
ÑÑедÑÑв оѠÐеÑÑвоваÑÐµÐ»Ñ Ð½Ð° ÑÑÐµÑ ÐиÑкÑÑÑа. </p> </li> <li> <p> ÐиÑкÑÑÑ Ð²Ð¿Ñаве в Ð»Ñбое вÑÐµÐ¼Ñ Ð´Ð¾ Ð¿ÐµÑедаÑи ей Ð¿Ð¾Ð¶ÐµÑÑÐ²Ð¾Ð²Ð°Ð½Ð¸Ñ Ð¸ Ð² ÑеÑение 15 Ð´Ð½ÐµÐ¹ ѠмоменÑа оÑÑÑеÑÑÐ²Ð»ÐµÐ½Ð¸Ñ Ð¿Ð¾Ð¶ÐµÑÑÐ²Ð¾Ð²Ð°Ð½Ð¸Ñ Ð¾Ñ Ð½ÐµÐ³Ð¾ оÑказаÑÑÑÑ. РÑлÑÑае оÑказа оѠпожеÑÑÐ²Ð¾Ð²Ð°Ð½Ð¸Ñ ÐиÑкÑÑÑ Ð²Ð¾Ð·Ð²ÑаÑÐ°ÐµÑ ÐеÑÑвоваÑÐµÐ»Ñ Ð´ÐµÐ½ÐµÐ¶Ð½Ñе ÑÑедÑÑва, поÑÑÑпивÑее оѠнего на ÑÑÐµÑ ÐиÑкÑÑÑа, в ÑеÑение 15 Ð´Ð½ÐµÐ¹ ѠмоменÑа пÑинÑÑÐ¸Ñ ÑеÑÐµÐ½Ð¸Ñ Ð¾Ð± Ð¾Ñказе. РÑлÑÑае невозможноÑÑи пеÑедаÑÑ Ð¿Ð¾Ð¶ÐµÑÑвование ÐеÑÑвоваÑÐµÐ»Ñ Ð¿Ð¾Ð¶ÐµÑÑвование оÑÑаеÑÑÑ Ð² ÑаÑпоÑÑжении ÐиÑкÑÑÑа. </p> </li> <li> <p> ÐеÑÑвоваÑÐµÐ»Ñ Ð²Ð¿Ñаве оÑказаÑÑÑÑ Ð¾Ñ Ñвоего пожеÑÑÐ²Ð¾Ð²Ð°Ð½Ð¸Ñ Ð² ÑеÑение 15 Ð´Ð½ÐµÐ¹ ѠмоменÑа его ÑовеÑÑениÑ, извеÑÑив об ÑÑом ÐиÑкÑÑÑ Ð¿Ð¾ ÑлекÑÑонной поÑÑе по Ð°Ð´ÑеÑÑ: <a href="mailto:[email protected]">[email protected]</a>. ÐиÑкÑÑÑ Ð¾Ð±ÑзÑеÑÑÑ Ð²Ð¾Ð·Ð²ÑаÑиÑÑ ÐеÑÑвоваÑÐµÐ»Ñ Ð¿Ð¾ÑÑÑпивÑие оѠнего денежнÑе ÑÑедÑÑва в ÑеÑение 15 Ð´Ð½ÐµÐ¹ ѠмоменÑа полÑÑÐµÐ½Ð¸Ñ Ð¸Ð·Ð²ÐµÑÐµÐ½Ð¸Ñ Ð¾Ñ ÐеÑÑвоваÑелÑ. </p> </li> <li> <p> СоглаÑаÑÑÑ Ñ Ð½Ð°ÑÑоÑÑей оÑеÑÑой, ÐеÑÑвоваÑÐµÐ»Ñ Ð´Ð°ÐµÑ ÑоглаÑие на Ð¿Ð¾Ð»ÑÑение пиÑем на ÑказаннÑй им Ð°Ð´ÑÐµÑ ÑлекÑÑонной поÑÑÑ, подÑвеÑждаÑÑиÑ
ÑовеÑÑение плаÑежа, и Ð¸Ð½ÑоÑмаÑионнÑÑ
ÑаÑÑÑлок оѠÐиÑкÑÑÑа, оѠкоÑоÑÑÑ
Ð¼Ð¾Ð¶ÐµÑ Ð¾ÑказаÑÑÑÑ Ð² Ð»Ñбой моменÑ. </p> </li> <li> <p> ÐаÑиÑа пеÑÑоналÑнÑÑ
даннÑÑ
ÐеÑÑвоваÑÐµÐ»Ñ Ð¾ÑÑÑеÑÑвлÑеÑÑÑ Ð² ÑооÑвеÑÑÑвии ѠФедеÑалÑнÑм законом № 152-ФР«Ð Ð¿ÐµÑÑоналÑнÑÑ
даннÑÑ
». ÐеÑÑвоваÑÐµÐ»Ñ Ð½Ð°ÑÑоÑÑим Ð´Ð°ÐµÑ Ñвое ÑоглаÑие на Ð¾Ð±ÑабоÑÐºÑ ÑвоиÑ
пеÑÑоналÑнÑÑ
даннÑÑ
лÑбÑми не Ð·Ð°Ð¿ÑеÑеннÑми законом ÑпоÑобами Ð´Ð»Ñ Ñелей иÑÐ¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ Ð½Ð°ÑÑоÑÑего пÑедложениÑ. </p> </li> <li> <p> ÐеÑÑвоваÑÐµÐ»Ñ Ð¿Ð¾Ð½Ð¸Ð¼Ð°ÐµÑ, ÑÑо в ÑÐ¸Ð»Ñ № 7-ФР«Ð 
1некоммеÑÑеÑкиÑ
оÑганизаÑиÑÑ
», в ÑлÑÑае полÑÑÐµÐ½Ð¸Ñ ÐиÑкÑÑÑом денежнÑÑ
ÑÑедÑÑв оѠиноÑÑÑаннÑÑ
иÑÑоÑников Ð´Ð»Ñ ÐиÑкÑÑÑа могÑÑ Ð½Ð°ÑÑÑпиÑÑ Ð½ÐµÐ±Ð»Ð°Ð³Ð¾Ð¿ÑиÑÑнÑе поÑледÑÑвиÑ. ÐаÑÑоÑÑим ÐеÑÑвоваÑÐµÐ»Ñ Ð¿Ð¾Ð´ÑвеÑждаеÑ, ÑÑо на Ð¼Ð¾Ð¼ÐµÐ½Ñ пÑинÑÑÐ¸Ñ Ð¾ÑеÑÑÑ Ð¾Ð½ ÑвлÑеÑÑÑ Ð³Ñажданином РоÑÑийÑкой ФедеÑаÑии, дейÑÑвÑÐµÑ Ð¾Ñ Ñвоего имени, за Ñвой ÑÑÐµÑ Ð¸ Ð² Ñвоем инÑеÑеÑе. РÑлÑÑае, еÑли ÐиÑкÑÑÑÑ ÑÑÐ°Ð½ÐµÑ Ð¸Ð·Ð²ÐµÑÑно, ÑÑо на Ð¼Ð¾Ð¼ÐµÐ½Ñ пÑинÑÑÐ¸Ñ Ð¾ÑеÑÑÑ ÐеÑÑвоваÑÐµÐ»Ñ Ð½Ðµ ÑвлÑлÑÑ Ð³Ñажданином РоÑÑийÑкой ФедеÑаÑии, либо дейÑÑвовал оѠимени, за ÑÑÐµÑ Ð¸Ð»Ð¸ в Ð¸Ð½ÑеÑеÑаÑ
ÑÑеÑÑиÑ
лиÑ, ÐиÑкÑÑÑ Ð¸Ð¼ÐµÐµÑ Ð¿Ñаво в Ð¾Ð´Ð½Ð¾ÑÑоÑоннем внеÑÑдебном поÑÑдке оÑказаÑÑÑÑ Ð¾Ñ Ð¸ÑÐ¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ Ð´Ð¾Ð³Ð¾Ð²Ð¾Ñа, поÑÑебоваÑÑ Ð²Ð¾Ð·Ð¼ÐµÑÐµÐ½Ð¸Ñ Ð¿ÑиÑиненнÑÑ
ÐиÑкÑÑÑÑ ÑбÑÑков и Ð²ÐµÑнÑÑÑ Ð¿Ð¾Ð»ÑÑеннÑе денежнÑе ÑÑедÑÑва ÐеÑÑвоваÑелÑ. </p> </li> <li> <p> РеквизиÑÑ ÐиÑкÑÑÑа<br /> ÐÐÐ «Ð¦ÐµÐ½ÑÑ Ð¿Ð¾Ð´Ð´ÐµÑжки незавиÑимой жÑÑналиÑÑики и ÐºÑлÑÑÑÑнÑÑ
иниÑиаÑив «ÐиÑкÑÑÑ»<br /> ÐÐÐ: 7735160099 <br /> ÐÐÐ: 773501001 <br /> ÐÐÐ: 044525999<br /> Ðаименование банка: ТоÑка ÐÐÐ Ðанка «Ð¤Ð ÐÑкÑÑÑие»<br /> РаÑÑеÑнÑй ÑÑÐµÑ ÐиÑкÑÑÑа: 40703810501500000120<br /> ÐоÑÑеÑпонденÑÑкий ÑÑÐµÑ Ð±Ð°Ð½ÐºÐ°: 30101810845250000999<br /> ÐазнаÑение плаÑежа: ÐожеÑÑвование на ÑÑÑавнÑÑ Ð´ÐµÑÑелÑноÑÑÑ ÐÐÐ «Ð¦ÐµÐ½ÑÑ Ð¿Ð¾Ð´Ð´ÐµÑжки незавиÑимой жÑÑналиÑÑики и ÐºÑлÑÑÑÑнÑÑ
иниÑиаÑив «ÐиÑкÑÑÑ» </p> </li> </ol> </div> </div> </div>'),e.put("/pages/other/donate-success.html",'<update-meta title="{{ \'СпаÑибо за поддеÑжкÑ!\' | t }}"></update-meta> <update-meta name="description" content="{{ \'ÐаÑи пожеÑÑÐ²Ð¾Ð²Ð°Ð½Ð¸Ñ Ð¿Ð¾Ð·Ð²Ð¾Ð»ÑÑÑ Ð½Ð°Ð¼ планиÑоваÑÑ ÑабоÑÑ, ÑазвиваÑÑ ÐиÑкÑÑÑ Ð¸ пÑодолжаÑÑ Ð´ÐµÐ»Ð°ÑÑ ÐºÐ°ÑеÑÑвеннÑÑ Ð½ÐµÐ·Ð°Ð²Ð¸ÑимÑÑ Ð¶ÑÑналиÑÑикÑ. ÐÑ Ð²Ð°Ñ Ð½Ðµ подведÑм\' | t }}" ></update-meta> <update-meta name="keywords" content="{{ \'Discours.io, благоÑвоÑиÑелÑноÑÑÑ\' | t }}"></update-meta> <update-meta property="og:title" content="{{ \'СпаÑибо за поддеÑжкÑ!\' | t }}"></update-meta> <update-meta property="og:description" content="{{ \'ÐаÑи пожеÑÑÐ²Ð¾Ð²Ð°Ð½Ð¸Ñ Ð¿Ð¾Ð·Ð²Ð¾Ð»ÑÑÑ Ð½Ð°Ð¼ планиÑоваÑÑ ÑабоÑÑ Ð¸ делаÑÑ ÐºÐ°ÑеÑÑвеннÑÑ Ð½ÐµÐ·Ð°Ð²Ð¸ÑимÑÑ Ð¶ÑÑналиÑÑикÑ. ÐÑ Ð²Ð°Ñ Ð½Ðµ подведÑм\' | t }}" ></update-meta> <div class="tw:text-center donate-result-message"> <h1>{{ \'ÐгÑомное ÑпаÑибо за поддеÑÐ¶ÐºÑ Ð¸ довеÑие!\' | t }}</h1> <p>{{ \'Ðам дейÑÑвиÑелÑно важен каждÑй ÑÑÐ±Ð»Ñ â ÑолÑко благодаÑÑ Ð¿Ð¾Ð¶ÐµÑÑвованиÑм Ð¼Ñ Ð¼Ð¾Ð¶ÐµÐ¼ планиÑоваÑÑ ÑабоÑÑ, ÑазвиваÑÑ ÑÐ°Ð¼Ð¸Ð·Ð´Ð°Ñ Ð¸ пÑодолжаÑÑ Ð´ÐµÐ»Ð°ÑÑ ÐºÐ°ÑеÑÑвеннÑÑ Ð½ÐµÐ·Ð°Ð²Ð¸ÑимÑÑ Ð¶ÑÑналиÑÑикÑ.\' | t }}</p> <p>{{ \'ÐÑ Ð²Ð°Ñ Ð½Ðµ подведем.\' | t }}</p> <div class="api-crush__image thankpage"> <img src="/images/joinfull.webp" alt="{{ \'СпаÑибо за поддеÑÐ¶ÐºÑ Ð¸ довеÑие! ÐÑ Ð½Ðµ подведÑм\' | t }}" loading="lazy" /> </div> </div>'),e.put("/pages/other/home-better.html","<update-meta title=\"{{ '#ÐомаÐÑÑÑе' | t }}\"></update-meta> <update-meta name=\"description\" content=\"{{ 'ÐÑиÑа вÑеменно закÑÑÑа, но заÑабоÑÐ°ÐµÑ ÑÑÐ°Ð·Ñ Ð¿Ð¾Ñле Ñпидемии' | t }}\" ></update-meta> <update-meta name=\"keywords\" content=\"Discours.io\"></update-meta> <update-meta property=\"og:title\" content=\"{{ '#ÐомаÐÑÑÑе' | t }}\"></update-meta> <update-meta property=\"og:description\" content=\"{{ 'ÐÑиÑа вÑеменно закÑÑÑа, но заÑабоÑÐ°ÐµÑ ÑÑÐ°Ð·Ñ Ð¿Ð¾Ñле Ñпидемии' | t }}\" ></update-meta> <div class=\"api-crush donate-result-message\"> <h1 class=\"api-crush__title\">{{ '#ÐомаÐÑÑÑе' | t }}</h1> <p class=\"api-crush__info home\"> {{ 'Ðа вÑÐµÐ¼Ñ Ñпидемии Ð¼Ñ Ð¾ÑклÑÑаем аÑиÑÑ ÑобÑÑий, и ÑовеÑÑем вам оÑÑаваÑÑÑÑ Ð´Ð¾Ð¼Ð°. ÐадеемÑÑ, ÑаÑпÑоÑÑÑанение COVID-19 законÑиÑÑÑ ÐºÐ°Ðº можно ÑкоÑее.' | t }} </p> <p class=\"api-crush__info home\" ng-bind-html=\"('Ðока ÑÑ
одиÑÑ Ð½Ð¸ÐºÑда не полÑÑиÑÑÑ, ÑиÑайÑе наÑи новÑе пÑбликаÑии â лонгÑид об ÑкономиÑеÑкиÑ
пÑиÑинаÑ
и <a href=\\'https://discours.io/articles/society/sotsialnoe-zarazhenie-mikrobiologicheskaya-klassovaya-voyna-v-kitae\\' target=\\'_blank\\' rel=\\'noopener noreferrer\\'>ÑоÑиалÑной пÑиÑоде пандемии</a>, ÑаÑÑÐºÐ°Ð·Ñ Ð°ÑеиÑÑов <a href=\\'https://discours.io/articles/social/nas-gotovy-dazhe-ubit-no-uk-rf-ne-daet-im-stolko-svobody-kak-zhiv-tsya-ateistam-na-severnom-kavkaze\\' target=\\'_blank\\' rel=\\'noopener noreferrer\\'>о жизни в ÑелигиознÑÑ
обÑеÑÑваÑ
</a> СевеÑного Ðавказа, <a href=\\'https://discours.io/articles/empiric/on-shvatil-mo-litso-i-udaril-golovoy-ob-stenu-monolog-muzhchiny-perezhivshego-domashnee-nasilie\\' target=\\'_blank\\' rel=\\'noopener noreferrer\\'>монолог</a> мÑжÑинÑ, пеÑеживÑего домаÑнее наÑилие, Ð¾Ð±Ð·Ð¾Ñ <a href=\\'https://discours.io/articles/chapter
1s/teleprogramma-zastoya-kak-unyloe-televidenie-80-h-predopredelilo-uspeh-simpsonov\\' target=\\'_blank\\' rel=\\'noopener noreferrer\\'>главнÑÑ
клиÑе</a> амеÑиканÑкого ÑÐµÐ»ÐµÐ²Ð¸Ð´ÐµÐ½Ð¸Ñ 80-Ñ
, воÑÐ¿Ð¾Ð¼Ð¸Ð½Ð°Ð½Ð¸Ñ Ð»Ð¸Ñного ÑекÑеÑаÑÑ Ð¡Ñалина о Ñом, как генÑек <a href=\\'https://discours.io/articles/social/kak-stalin-zahvatyval-vlast-zapreschennye-vospominaniya-sekretarya-vozhdya\\' target=\\'_blank\\' rel=\\'noopener noreferrer\\'>пÑиÑÑл к безÑазделÑной влаÑÑи</a> в ÑÑÑане. Ð Ð°Ð·Ð´ÐµÐ»Ñ <a href=\\'https://discours.io/expo/image\\' target=\\'_blank\\' rel=\\'noopener noreferrer\\'>ÐалеÑеÑ</a> и <a href=\\'https://discours.io/expo/literature\\' target=\\'_blank\\' rel=\\'noopener noreferrer\\'>ÐиÑеÑаÑÑÑа</a> Ñакже поÑÑоÑнно обновлÑÑÑÑÑ, а в <a href=\\'https://discours.io/articles/chapters\\' target=\\'_blank\\' rel=\\'noopener noreferrer\\'>ÐлаваÑ
</a> ÑегÑлÑÑно вÑÑ
одÑÑ ÐºÐ»ÑÑевÑе <a href=\\'https://discours.io/articles/chapters\\' target=\\'_blank\\' rel=\\'noopener noreferrer\\'>ÑÑагменÑÑ</a> из новÑÑ
нон-ÑикÑн книг.' | t) | trustedHtml\" ></p> <p class=\"api-crush__info home\" ng-bind-html=\"('ÐлагодаÑÑ <a href=\\'/help\\' target=\\'_blank\\' rel=\\'noopener noreferrer\\'>ваÑей поддеÑжке</a>, ÐиÑкÑÑÑ Ð¿ÑÐ¾Ð´Ð¾Ð»Ð¶Ð°ÐµÑ ÑабоÑаÑÑ Ð¸ в ÑамоизолÑÑии. ÐеÑегиÑе ÑебÑ, а Ð¼Ñ Ð¿Ð¾ÑÑаÑаемÑÑ, ÑÑÐ¾Ð±Ñ Ð¸ на каÑанÑине вам бÑло инÑеÑеÑно.' | t) | trustedHtml\" ></p> </div>"),e.put("/pages/other/in-work.html",'<update-meta title="{{ \'Ð ÑазÑабоÑке\' | t }}"></update-meta> <update-meta name="robots" content="noindex, nofollow"></update-meta> <update-meta name="description" content="{{ \'ÐÑÐ¾Ñ Ñаздел ÑайÑа наÑ
одиÑÑÑ Ð² ÑазÑабоÑке\' | t }}" ></update-meta> <div class="ds-container tw:text-center tw:pt-20 tw:pb-20"> <h1>{{ \'ÐÑиноÑим Ñвои извинениÑ.\' | t }}</h1> <h2>{{ \'ÐаннÑй Ñаздел наÑ
одиÑÑÑ Ð² ÑазÑабоÑке\' | t }}</h2> <p class="tw:mt-8"> <a class="error-home-btn" href="/">{{ \'ÐеÑнÑÑÑÑÑ Ð½Ð° главнÑÑ\' | t }}</a> </p> </div>'),e.put("/pages/other/quotes.html",'<update-meta title="{{ \'ÐÑедÑказание по ÑиÑаÑам â ÑпеÑпÑÐ¾ÐµÐºÑ Ðº ÑÐ±Ð¸Ð»ÐµÑ ÑамиздаÑа\' | t }}" ></update-meta> <update-meta name="description" content="{{ \'СлÑÑайнÑе ÑиÑаÑÑ Ð¸Ð· лÑÑÑиÑ
пÑбликаÑий ÐиÑкÑÑÑа. ÐÑкÑойÑе новÑÑ ÑиÑаÑÑ Ð¸ найдиÑе Ñвой маÑеÑиал на денÑ.\' | t }}" ></update-meta> <update-meta property="og:title" content="{{ \'ÐÑедÑказание по ÑиÑаÑам â ÑпеÑпÑÐ¾ÐµÐºÑ Ðº ÑÐ±Ð¸Ð»ÐµÑ ÑамиздаÑа\' | t }}" ></update-meta> <update-meta property="og:description" content="{{ \'СлÑÑайнÑе ÑиÑаÑÑ Ð¸Ð· лÑÑÑиÑ
пÑбликаÑий ÐиÑкÑÑÑа. ÐÑкÑойÑе новÑÑ ÑиÑаÑÑ Ð¸ найдиÑе Ñвой маÑеÑиал на денÑ.\' | t }}" ></update-meta> <update-meta property="og:image" content="https://discours.io/images/quotes.png"></update-meta> <update-meta name="twitter:card" content="summary_large_image"></update-meta> <update-meta name="twitter:image" content="https://discours.io/images/quotes.png"></update-meta> <div class="ds-container quotes-page"> <div class="tw:row-flex"> <div class="tw:gutter-half tw:w-full tw:md:w-8/12 tw:md:ml-offset-2"> <div class="quotes-header"> <h1 class="quotes-title">{{ \'ÐÑедÑказание по ÑиÑаÑам\' | t }}</h1> <p class="quotes-description"> {{ \'ÐÑкÑойÑе ÑлÑÑайнÑÑ ÑиÑаÑÑ Ð¸Ð· лÑÑÑиÑ
пÑбликаÑий ÐиÑкÑÑÑа и найдиÑе Ñвой маÑеÑиал на денÑ. ÐÐ°Ð¶Ð´Ð°Ñ ÑиÑаÑа Ð²ÐµÐ´ÐµÑ Ðº полной ÑÑаÑÑе, из коÑоÑой она взÑÑа.\' | t }} </p> </div> <div class="quote-stack"> <div class="quote-stack__card quote-stack__card--3" ng-style="{\'--rotation\': $ctrl.stackRotations[2] + \'deg\', \'--offset\': $ctrl.stackOffsets[2] + \'px\'}" ></div> <div class="quote-stack__card quote-stack__card--2" ng-style="{\'--rotation\': $ctrl.stackRotations[1] + \'deg\', \'--offset\': $ctrl.stackOffsets[1] + \'px\'}" ></div> <div class="quote-stack__card quote-stack__card--1" ng-style="{\'--rotation\': $ctrl.stackRotations[0] + \'deg\', \'--offset\': $ctrl.stackOffsets[0] + \'px\'}" ></div> <div class="quote-card" ng-class="{\'quote-card--with-image\': $ctrl.article.thumborId}" ng-click="$ctrl.goToArticle()" > <div class="quote-card__bg" ng-if="$ctrl.article.thumborId" ng-style="{\'background-image\': \'url(\' + ($ctrl.article.thumborId | imageUrl: 800:600) + \')\'}" ></div> <div ng-class="{\'quote-loading--visible\': $ctrl.loading}" class="quote-loading"> <div class="spinner"></div> <p>{{ \'ÐагÑÑзка ÑиÑаÑÑ...\' | t }}</p> </div> <div ng-show="$ctrl.error && !$ctrl.loading" class="quote-error"> <p>{{ $ctrl.error }}</p> </div> <div ng-class="{\'quote-content--loading\': $ctrl.loading}" class="quote-content" ng-if="$ctrl.currentQuote || $ctrl.hasLoadedOnce" > <div class="quote-icon">"</div> <blockquote class="quote-text" ng-bind-html="$ctrl.currentQuote | trustedHtml" ></blockquote> <div class="quote-divider"></div> <div class="quote-article-info" ng-if="$ctrl.article"> <div class="quote-article-title"> <a ng-if="$ctrl.article.link && $ctrl.article.link !== \'#\'" ng-href="{{ $ctrl.article.censoredLink || $ctrl.article.link }}" class="quote-article-link" target="_blank" rel="noopener noreferrer" ng-bind-html="$ctrl.article.title | formatTitle" > </a>
1 <span ng-if="!$ctrl.article.link || $ctrl.article.link === \'#\'" class="quote-article-link" ng-bind-html="$ctrl.article.title | formatTitle" ></span> </div> <div class="quote-article-author" ng-if="$ctrl.article.author"> <a ng-if="$ctrl.article.authorLink" ng-href="{{ $ctrl.article.authorLink }}" class="quote-author-link" target="_blank" rel="noopener noreferrer" > {{ $ctrl.article.author }} </a> <span ng-if="!$ctrl.article.authorLink" class="quote-author-name" >{{ $ctrl.article.author }}</span > </div> <div ng-if="$ctrl.article.error" class="quote-article-error"> <small class="quote-article-error-text" >{{ \'Ðе ÑдалоÑÑ Ð·Ð°Ð³ÑÑзиÑÑ Ð¿Ð¾Ð»Ð½ÑÑ Ð¸Ð½ÑоÑмаÑÐ¸Ñ Ð¾ ÑÑаÑÑе\' | t }}</small > </div> </div> </div> </div> </div> <div class="quotes-actions"> <button type="button" ng-click="$ctrl.loadRandomQuote()" class="ds-btn btn-quote btn-quote-primary" ng-disabled="$ctrl.loading" > <span>{{ \'ÐÐ¾Ð²Ð°Ñ ÑиÑаÑа\' | t }}</span> </button> <button type="button" ng-click="$ctrl.exportAsCard()" class="ds-btn btn-quote btn-quote-secondary" ng-disabled="$ctrl.isExporting || $ctrl.loading" ng-class="{\'exporting\': $ctrl.isExporting}" > <span ng-if="!$ctrl.isExporting"> <i class="fas fa-download"></i> {{ \'СоÑ
ÑаниÑÑ Ð¾ÑкÑÑÑкÑ\' | t }} </span> <span ng-if="$ctrl.isExporting"> <i class="fas fa-spinner fa-spin"></i> {{ \'СоÑ
Ñанение...\' | t }} </span> </button> </div> <div class="quote-share-section" ng-class="{\'quote-share-hidden\': !$ctrl.hasLoadedOnce}"> <div class="quote-share-label">{{ \'ÐоделиÑÑÑÑ ÑиÑаÑой:\' | t }}</div> <div class="quote-share-buttons"> <button type="button" ng-click="$ctrl.shareVK()" class="btn-share btn-share-vk" title="{{ \'ÐоделиÑÑÑÑ ÐÐонÑакÑе\' | t }}" aria-label="{{ \'ÐоделиÑÑÑÑ ÐÐонÑакÑе\' | t }}" > <i class="fab fa-vk"></i> </button> <button type="button" ng-click="$ctrl.shareTelegram()" class="btn-share btn-share-telegram" title="{{ \'ÐоделиÑÑÑÑ Ð² Telegram\' | t }}" aria-label="{{ \'ÐоделиÑÑÑÑ Ð² Telegram\' | t }}" > <i class="fab fa-telegram-plane"></i> </button> <button type="button" ng-click="$ctrl.shareFacebook()" class="btn-share btn-share-facebook" title="{{ \'ÐоделиÑÑÑÑ Ð² Facebook\' | t }}" aria-label="{{ \'ÐоделиÑÑÑÑ Ð² Facebook\' | t }}" > <i class="fab fa-facebook-f"></i> </button> <button type="button" ng-click="$ctrl.shareTwitter()" class="btn-share btn-share-twitter" title="{{ \'ÐоделиÑÑÑÑ Ð² X (Twitter)\' | t }}" aria-label="{{ \'ÐоделиÑÑÑÑ Ð² X\' | t }}" > <i class="fab fa-twitter"></i> </button> <button type="button" ng-click="$ctrl.copyQuote()" class="btn-share btn-share-copy" title="{{ \'ÐопиÑоваÑÑ ÑиÑаÑÑ\' | t }}" aria-label="{{ \'ÐопиÑоваÑÑ ÑиÑаÑÑ\' | t }}" ng-class="{\'copied\': $ctrl.copySuccess}" > <i class="fas" ng-class="$ctrl.copySuccess ?\'fa-check\' : \'fa-copy\'"></i> </button> </div> <button type="button" ng-click="$ctrl.exportAsCard()" class="ds-btn btn-quote btn-quote-secondary--mobile" ng-disabled="$ctrl.isExporting || $ctrl.loading" ng-class="{\'exporting\': $ctrl.isExporting}" > <span ng-if="!$ctrl.isExporting"> <i class="fas fa-download"></i> {{ \'СоÑ
ÑаниÑÑ Ð¾ÑкÑÑÑкÑ\' | t }} </span> <span ng-if="$ctrl.isExporting"> <i class="fas fa-spinner fa-spin"></i> {{ \'СоÑ
Ñанение...\' | t }} </span> </button> </div> </div> </div> </div>'),e.put("/pages/other/search.html",'<update-meta title="{{ \'ÐоиÑк\' | t }} {{ $ctrl.q }}"></update-meta> <update-meta name="description" content="{{ \'ÐоиÑк\' | t }} {{ $ctrl.q }}."></update-meta> <update-meta name="keywords" content="{{ \'Discours.io, поиÑк, q\' | t }}"></update-meta> <update-meta property="og:title" content="{{ $ctrl.q }}"></update-meta> <update-meta property="og:description" content="{{ \'ÐоиÑк\' | t }} {{ $ctrl.q }}."></update-meta> <div class="ds-container"> <div class="tw:row-flex"> <div class="tw:gutter-half tw:w-full tw:sm:w-9/12 tw:sm:ml-offset-2"> <h1>{{ \'поиÑк:\' | t }}</h1> <form action="{{ $ctrl.searchAction() }}" method="GET" role="search"> <div class="tw:row-flex tw:mb-section"> <div class="tw:gutter-half tw:w-full tw:sm:w-10/12"> <div class="discours-form search-form"> <div class="form-group"> <input class="ds-input" type="text" ng-model="$ctrl.q" name="q" aria-label="{{ \'ÐоиÑковÑй запÑоÑ\' | t }}" /> <p ng-if="$ctrl.suggestion"> <i >{{ \'Ðозможно, Ð²Ñ Ð¸Ð¼ÐµÐ»Ð¸ в видÑ\' | t }} <a class="black-link" href="/search?q={{ $ctrl.suggestion }}" >{{ $ctrl.suggestion }}</a >?</i > </p> </div> </div> </div> <div class="tw:gutter-half tw:w-full tw:sm:w-2/12"> <button class="paper-button" type="submit">{{ \'ÐайÑи\' | t }}</button> </div> </div> </form> <p class="tw:mt-2.5 tw:font-bold"> {{ $ctrl.itemsCount }} {{ $ctrl.itemsCount | russianNumber:\'ÑезÑлÑÑаÑ\':\'ÑезÑлÑÑаÑа\':\'ÑезÑлÑÑаÑов\' }} </p> <div class="search-item tw:gutter-half tw:w-full tw:sm:w-10/12 tw:sm:ml-offset-2" ng-repeat="item in $ctrl.authorItems track by item._id" > <a class="title" href="{{ item.path }}">{{ item.realname }}</a> </div> <div class="tw:row-flex search-item" ng-repeat="item in $ctrl.items track by item._id"> <div class="search-item__content"> <img class="search-item__icon" ng-src="{{ item.icon ? item.icon : \'/images/icons/doc.png\' }}" /> <p> <a class="title" href="{{ item.link }}">{{ item.title }}</a> </p> <a href="{{ item.authorLink }}" class="search-item__author">{{ item.author }}</a> </div> <div class="search-item__post-date"> <small>{{ item.createdAt | amDateFormat: \'DD.MM.YYYY\' }}</small> </div> </div> <discours-pagination items-per-page="10" total-items="{{ $ctrl.itemsCount }}" current-page="{{ $ctrl.currentPage }}" ></discours-pagination> </div> </div> </div>'),e.put("/pages/other/thanks.html",'<update-meta title="{{ \'ÐлагодаÑноÑÑи\' | t }}"></update-meta> <update-meta name="description" content="{{ \'СпаÑибо Ðам!\' | t }}"></update-meta> <update-meta name="keywords" content="{{ \'Discours.io, thanks, благодаÑноÑÑи, ÑпаÑибо\' | t }}" ></update-meta> <update-meta property="og:title" content="{{ \'ÐлагодаÑноÑÑи\' | t }}"></update-meta> <update-meta property="og:description" content="{{ \'ÐлагодаÑноÑÑи\' | t }}"></update-meta> <update-meta property="og:image" content="/images/thanks.jpg"></update-meta>
1 <update-meta property="og:image:width" content="1200"></update-meta> <update-meta property="og:image:height" content="750"></update-meta> <div class="ds-container open-post tw:mt-5"> <div class="tw:row-flex"> <div class="tw:gutter-half tw:w-full tw:md:w-2/12"> <h1 class="h2 black-bg-heading black-bg-heading-margin"> <span>{{ \'ÐлагодаÑноÑÑи\' | t }}</span> </h1> </div> <div class="tw:gutter-half tw:w-full tw:md:w-7/12 post-body tw:mt-20"> <h3 class="not-left"> <b>{{ \'ÐеоÑенимÑй вклад в ÐиÑкÑÑÑ Ð²Ð½ÐµÑли и вноÑÑÑ\' | t }}</b> </h3> <p> ÐÑÑем ÐадÑÑзлов, ÐаÑÐ¸Ñ ÐеÑÑмеÑÑнаÑ, ÐÐ°Ð¼Ð¸Ñ ÐикÑÑÑин, ÐлÑÑ ÐикÑоÑов, ÐлекÑÐ°Ð½Ð´Ñ ÐоÑобÑев, ÐонÑÑанÑин ÐоÑовиÑ, Ян ÐÑговÑкий, ÐлÑÐ´Ð°Ñ ÐаÑиÑÑÑлин, Ðавел ÐаÑаÑов, ÐикÑоÑÐ¸Ñ Ðендлина, СоÑÑÑ ÐеÑÑ, Ðавел Ðлазков, ÐлекÑÐ°Ð½Ð´Ñ ÐÑÑев, Ðанила ÐавÑдов, ÐонÑÑанÑин ÐÑбовик, ÐÑÑеÑлав ÐÑеменко, ÐÑиÑÑина ÐбÑагим, ÐкаÑеÑина ÐлÑина, Ðнна Ðапаева, Яна Ðлимова, ÐлекÑÐ°Ð½Ð´Ñ ÐоÑенков, ÐÑÑна ÐеÑневÑкаÑ, ÐÐ²Ð³ÐµÐ½Ð¸Ñ ÐипиÑ, ÐгоÑÑ Ðобанов, ÐнаÑÑаÑÐ¸Ñ ÐозоваÑ, ÐÑигоÑий Ðомизе, Ðвгений Ðедведев, Ðавел ÐикÑлин, Ðиколай ÐоÑаÑевÑкий, ÐндÑей ÐÑловÑкий, ÐиÑ
аил Ðанин, ÐнÑон Ðанов, Ðавел ÐеппеÑÑÑейн, ÐÑÐ±Ð¾Ð²Ñ ÐокÑовÑкаÑ, ÐнÑон Ревин, ÐлÑÑ Ð Ð¾Ð·Ð¾Ð²Ñкий, ÐÐµÐ½Ð¸Ñ Ð¡Ð²ÐµÑлиÑнÑй, Ðавел Соколов, СеÑгей СÑÑелÑников, Ðлеб СÑÑÑнников, Ðиколай ТаÑковÑкий, ÐиÑилл Филимонов, ÐлекÑей Хапов, ÐкаÑеÑина ХаÑиÑонова </p> <h3 class="not-left"><b>{{ \'ÐвÑоÑÑ\' | t }}</b></h3> <p ng-bind-html="\'ÐÑ&nbsp;безмеÑно благодаÑÐ½Ñ <a href=\\\'https://discours.io/authors\\\' target=\\\'_blank\\\' rel=\\\'noopener noreferrer\\\'>ÐºÐ°Ð¶Ð´Ð¾Ð¼Ñ Ð°Ð²ÑоÑÑ</a> за&nbsp;ÑÑаÑÑие и&nbsp;поддеÑÐ¶ÐºÑ Ð¿ÑоекÑа. СегоднÑ, когда Ð´Ð»Ñ Ð±Ð¾Ð»ÑÑинÑÑва денÑги ÑÑали ÑелÑÑ Ð¸&nbsp;оÑновнÑм иÑÑоÑником моÑиваÑии, беÑкоÑÑÑÑÐ½Ð°Ñ Ð¿Ð¾Ð¼Ð¾ÑÑ Ð¸&nbsp;оÑнованнÑй на&nbsp;ÑнÑÑзиазме ÑÑÑд беÑÑеннÑ. Ðменно вÑ&nbsp;Ñвоим ÑÑÑдом каждÑй Ð´ÐµÐ½Ñ Ð´ÐµÐ»Ð°ÐµÑе ÐиÑкÑÑÑ Ñаким, какой он&nbsp;еÑÑÑ.\' | t | trustedHtml" ></p> <h3 class="not-left"><b>{{ \'ÐллÑÑÑÑаÑоÑÑ\' | t }}</b></h3> <p> ÐлÑга ÐвеÑинова, Регина ÐкÑÑÑина, ÐйгÑÐ»Ñ ÐеÑÑ
еева, ÐкаÑеÑина ÐакÑленко, ÐнаÑÑаÑÐ¸Ñ ÐикÑлова, ÐаÑÐ¸Ñ ÐлаÑенко, ÐанеÑÑа ÐавÑилова, ÐлÑга ÐоÑÑе, ÐÑÐµÐ½Ð¸Ñ ÐоÑÑкова, Ðнгелина ÐÑебенÑкова, ÐлÑÑ Diliago, ÐнÑон Ðаголкин, СаÑа ÐеÑова, ÐлÑга ÐаÑинеÑ, ÐлаÑа ÐеÑеÑина, Тала ÐикиÑина, ÐикиÑа ÐозднÑков, ÐаÑвей Сапегин, ТаÑÑÑна СаÑонова, ÐикÑоÑÐ¸Ñ Ð¨Ð¸Ð±Ð°ÐµÐ²Ð° </p> <h3 class="not-left"><b>{{ \'ÐеÑенаÑÑ\' | t }}</b></h3> <p ng-bind-html="\'ÐиÑкÑÑÑ ÑÑÑеÑÑвÑÐµÑ Ð¸ÑклÑÑиÑелÑно на пожеÑÑÐ²Ð¾Ð²Ð°Ð½Ð¸Ñ ÑиÑаÑелей. ÐÑ&nbsp;беÑконеÑно пÑизнаÑелÑÐ½Ñ Ð²Ñем, кÑо Ð½Ð°Ñ Ð¿Ð¾Ð´Ð´ÐµÑживаеÑ. ÐаÑи пожеÑÑвованиÑ&nbsp;â ÑинанÑовÑй ÑÑÐ½Ð´Ð°Ð¼ÐµÐ½Ñ Ð¶ÑÑнала. ÐлагодаÑÑ Ð²Ð°Ð¼ мÑ&nbsp;Ñазвиваем плаÑÑоÑÐ¼Ñ ÐºÐ°ÑеÑÑвенной жÑÑналиÑÑики, коÑоÑÐ°Ñ Ð¿Ð¾Ð¼Ð¾Ð³Ð°ÐµÑ ÑамÑм ÑазнÑм авÑоÑам бÑÑÑ ÑÑлÑÑаннÑми. СÑаÑÑ Ð½Ð°Ñим меÑенаÑом и подпиÑаÑÑÑÑ Ð½Ð° ежемеÑÑÑнÑÑ Ð¿Ð¾Ð´Ð´ÐµÑÐ¶ÐºÑ Ð¿ÑоекÑа можно <a href=\\\'/help\\\' target=\\\'_self\\\'>здеÑÑ</a>.\' | t | trustedHtml" ></p> </div> </div> </div>'),e.put("/pages/other/upload-image.html",'<div class="ds-container post-form"> <div class="tw:row-flex"> <div class="title-input-row tw:gutter-half tw:sm:w-4/12 tw:sm:ml-offset-4"> <form class="discours-form" name="articleForm" ng-hide="contentItemSent"> <div class="form-group"> <button class="big-button" type="button" ngf-select="$ctrl.uploadImage($file)" ng-disabled="$ctrl.imageUploading[\'root\']" ng-hide="contentItem.thumborId" > <img src="/images/icons/attach.png" alt="{{ \'ÐÑикÑепиÑÑ\' | t }}" /><span class="fas fa-sync-alt fa-spin floating-text left" ng-show="$ctrl.imageUploading[\'root\']" ></span ><span class="floating-text">{{ \'вÑбÑаÑÑ Ð¸Ð·Ð¾Ð±Ñажение\' | t }}</span> </button> <div class="post-image-wrapper" ng-if="contentItem.thumborId"> <button type="button" class="close" ng-click="contentItem.thumborId = null;" aria-label="{{ \'УдалиÑÑ Ð¾Ð±Ð»Ð¾Ð¶ÐºÑ\' | t }}" > x </button> <img class="tw:block tw:max-w-full tw:h-auto thumbmail" ng-src="{{ contentItem.thumborId | imageUrl: 300 }}" /> <p>{{ contentItem.thumborId }}</p> </div> </div> </form> </div> </div> </div>')}catch(a){}}(0)},14248(){angular.module("discours.components").component("aboutPage",{templateUrl:"/pages/about/guide.html",controller:["$scope","apiClient","eventBus","loginService","permissionsService",function(a,t,s,n,e){function l(){var s=n.userId()||null;s!==i&&(i=s,c=!1,o=!1,g.editorialLinks=null);var l=!c&&n.isLoggedIn()&&e.canViewAllApplications();g.isStaff=l,l?o||(o=!0,t.getList("editorial/links").then(function(t){a.$$destroyed||(g.editorialLinks=t||null)}
1).catch(function(t){a.$$destroyed||(g.editorialLinks=null,t&&403===t.status&&(c=!0,g.isStaff=!1))})):g.editorialLinks=null}var g=this,o=!1,c=!1,i=null;g.$onInit=function(){g.editorialLinks=null,l();var t=function(){a.$applyAsync(l)};s.onScope(a,s.EVENTS.USER_LOGGED_IN,t),s.onScope(a,s.EVENTS.USER_STORAGE_CHANGED,t)}}]})},15371(){angular.module("discours.components").component("censoredInRussiaPage",{templateUrl:"/pages/other/censored-in-russia.html",controller:["$window",function(a){var t=this;t.$onInit=function(){t.returnToArticle=function(){var t=localStorage.getItem("currentContentLocation")||"/";"string"==typeof t&&t.startsWith("/")&&!t.startsWith("//")||(t="/"),a.location.href=t}}}]})},18919(){angular.module("discours.components").component("donateBestArticle",{bindings:{articleData:"<"},templateUrl:"/components/donateBestArticle/donateBestArticle.html",controller:[function(){return this.$onInit=()=>{},this}]})},22198(a,t,s){"use strict";function n(a,t){var s=t&&"number"==typeof t.ttl?t.ttl:3e5,n=e[a];if(n&&n.promise){if(0===s||Date.now()-n.timestamp<s)return n.promise;delete e[a]}var l=function(a,t){var s=new AbortController,n=setTimeout(function(){s.abort()},t);return fetch(a,{signal:s.signal}).then(function(a){return clearTimeout(n),a},function(s){if(clearTimeout(n),s&&"AbortError"===s.name)throw new Error("ТаймаÑÑ Ð·Ð°Ð³ÑÑзки ("+t+"мÑ): "+a);throw s})}(a,t&&t.timeout||15e3).then(function(a){if(!a.ok)throw new Error("HTTP "+a.status+" "+a.statusText);return a.json()}).catch(function(t){throw delete e[a],t});return e[a]={promise:l,timestamp:Date.now()},l}s.d(t,{h:()=>n});var e={}},23946(a,t,s){"use strict";s.r(t),s.d(t,{default:()=>o}),s(13484);var n=s(36817),e=s(67314);angular.module("discours.services").factory("quoteCardExporterService",["$log","THUMBOR_SERVER",function(a,t){function s(){return window.location.href.replace(/localhost:\d+/,"discours.io").replace(/^http:/,"https:")}function l(a){window.open(a,"share","width=635,height=436,scrollbars=no,status=no,toolbar=no,menubar=no,location=no")}function g(a){return new Promise(function(t,s){var n=document.createElement("textarea");n.value=a,n.style.cssText="position:fixed;left:-9999px;top:0",document.body.appendChild(n),n.focus(),n.select();try{document.execCommand("copy"),t()}catch(a){s(a)}document.body.removeChild(n)})}function o(a){return(0,n._e)(a).trim()}function c(a){return a?(e.PREPOSITIONS_PLAIN_RE.lastIndex=0,a.replace(e.PREPOSITIONS_PLAIN_RE,function(a,t,s){return" "+s+" "})):a||""}function i(a){if(!a||"string"!=typeof a)return a;const t=a.trim(),s=t.lastIndexOf(" ");return-1===s?t:t.substring(0,s)+" "+t.substring(s+1)}function d(a){return a._cleanText||(a._cleanText=o(a.quoteText)),a._cleanText}const r={EXPORT_SIZE:1080,EXPORT_HEIGHT:864,SCALE:2,MARGIN:50,MIN_SPINNER_TIME:400,BACKGROUND_COLOR:"#ffffff",TEXT_COLOR:"#000000",ACCENT_COLOR:"#666666",LOGO_TEXT:"ÐÐСÐУРС"},p=45;return{exportAsImage:function(s){var n=Date.now();return(window.html2canvas?Promise.resolve(window.html2canvas):new Promise(function(t,s){const n=document.createElement("script");n.src="https://cdnjs.cloudflare.com/ajax/libs/html2canvas/1.4.1/html2canvas.min.js",n.onload=function(){window.html2canvas?t(window.html2canvas):s(new Error("html2canvas not found after loading"))},n.onerror=function(){a.error("Failed to load html2canvas from CDN"),s(new Error("Failed to load html2canvas"))},document.head.appendChild(n)})).then(function(a){var n=function(a){const s=document.createElement("div");s.className="quote-export-container";const n=o(a.quoteText),e=!!a.thumborId,l=e&&(g=a.thumborId)?t+"/unsafe/1080x800/"+g:null;var g;Object.assign(s.style,{width:r.EXPORT_SIZE+"px",minHeight:r.EXPORT_HEIGHT+"px",backgroundColor:r.BACKGROUND_COLOR,fontFamily:"'Muller', 'Helvetica Neue', Arial, sans-serif",display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",padding:r.MARGIN+"px",boxSizing:"border-box",position:"fixed",left:"-9999px",top:"0",overflow:"hidden"});const d="-"+(r.MARGIN+2)+"px";if(e){const a=document.createElement("div");Object.assign(a.style,{position:"absolute",top:d,left:d,right:d,bottom:d,backgroundImage:"url("+l+")",backgroundSize:"cover",backgroundPosition:"center",zIndex:"0"}),s.appendChild(a);const t=document.createElement("div");Object.assign(t.style,{position:"absolute",top:d,left:d,right:d,bottom:d,background:"linear-gradient(180deg, rgba(0,0,0,0.65) 0%, rgba(0,0,0,0.75) 50%, rgba(0,0,0,0.82) 100%)",zIndex:"1"}),s.appendChild(t)}const h=document.createElement("div");Object.assign(h.style,{display:"flex",flexDirection:"column",alignItems:"center",textAlign:"center",maxWidth:"100%",width:"100%",flex:"1",position:"relative",zIndex:"2"});
1const u=e?"#EAE8E3":r.TEXT_COLOR,m=e?"#ffffff":r.TITLE_COLOR,v=e?"rgba(255,255,255,0.7)":r.ACCENT_COLOR,E=e?"rgba(255,255,255,0.5)":r.TEXT_COLOR,_=e?"0 2px 8px rgba(0,0,0,0.8), 0 4px 20px rgba(0,0,0,0.6)":"none",f=e?"0 1px 4px rgba(0,0,0,0.6)":"none",b=document.createElement("div");b.textContent='"',Object.assign(b.style,{fontSize:"72px",color:e?"rgba(255,255,255,0.5)":r.ACCENT_COLOR,opacity:e?"1":"0.25",lineHeight:"1",marginBottom:"16px",fontFamily:"Georgia, serif",textShadow:e?"0 2px 10px rgba(0,0,0,0.5)":"none"});const X=document.createElement("div");let F=c(n);var y;F=i(F),X.textContent=F,Object.assign(X.style,{fontSize:(y=n.length,(y<100?44:y<200?38:y<300?34:y<400?30:26)+"px"),lineHeight:"1.4",color:u,marginBottom:"30px",maxWidth:"92%",textShadow:_});const I=document.createElement("div");Object.assign(I.style,{width:"50px",height:"2px",backgroundColor:E,marginBottom:"25px"});const S=document.createElement("div");S.textContent=function(a){if(!a||"string"!=typeof a)return a||"";const t=a.trim().split(/([.:?!])\s+/),s=[];let n="";for(let a=0;a<t.length;a++){const e=t[a];"."===e||":"===e||"?"===e||"!"===e?(n+=e,n.trim()&&s.push(n.trim()),n=""):e.trim()&&(n+=e)}n.trim()&&s.push(n.trim());const e=[];for(let a=0;a<s.length;a++){const t=s[a],n=s[a+1];0===e.length?e.push(t):t.length<p&&n?e[e.length-1]+=" "+t:e.push(t)}return e.map(function(a){return i(c(a))}).join("\n")}(a.articleTitle||""),Object.assign(S.style,{fontSize:"23px",fontWeight:"600",color:m,marginBottom:"10px",maxWidth:"75%",textAlign:"center",textShadow:f,whiteSpace:"pre-line"});const w=document.createElement("div");a.author&&(w.textContent=a.author,Object.assign(w.style,{fontSize:"24px",fontFamily:"'Spectral', Georgia, serif",fontStyle:"italic",color:e?"#ccc":r.ACCENT_COLOR,marginBottom:"0",textShadow:f}));const N=document.createElement("div");N.textContent=r.LOGO_TEXT,Object.assign(N.style,{fontSize:"16px",fontWeight:"700",letterSpacing:"3px",color:v,paddingTop:"20px",textShadow:f});const W=document.createElement("div");return Object.assign(W.style,{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",flex:"1",width:"100%"}),W.appendChild(b),W.appendChild(X),W.appendChild(I),a.articleTitle&&W.appendChild(S),a.author&&W.appendChild(w),h.appendChild(W),h.appendChild(N),s.appendChild(h),s}(s);return document.body.appendChild(n),a(n,{scale:r.SCALE,backgroundColor:r.BACKGROUND_COLOR,logging:!1,useCORS:!0,allowTaint:!0,width:n.offsetWidth,height:n.offsetHeight}).then(function(a){return document.body.removeChild(n),a})}).then(function(a){var t=Date.now()-n,s=Math.max(0,r.MIN_SPINNER_TIME-t);return new Promise(function(t){setTimeout(function(){t(a)},s)})}).then(function(t){return new Promise(function(n){t.toBlob(function(t){var e=URL.createObjectURL(t),l=document.createElement("a");l.href=e,l.download="quote-"+(s.slug||Math.random().toString(36).substring(2,10))+".png",document.body.appendChild(l),l.click(),document.body.removeChild(l),URL.revokeObjectURL(e),a.debug("Quote card exported:",s.slug),n()},"image/png")})})},shareVK:function(a){const t=encodeURIComponent(s()),n=d(a);l("https://vk.com/share.php?url="+t+"&title="+encodeURIComponent("«"+n+"»")),"function"==typeof window.gtag&&window.gtag("event","Share Quote",{method:"vk"})},shareTelegram:function(a){const t=encodeURIComponent(s()),n=d(a);l("https://t.me/share/url?url="+t+"&text="+encodeURIComponent("«"+n+"»")),"function"==typeof window.gtag&&window.gtag("event","Share Quote",{method:"telegram"})},shareFacebook:function(a){const t=encodeURIComponent(s()),n=d(a);l("https://www.facebook.com/sharer/sharer.php?u="+t+""e="+encodeURIComponent("«"+n+"»")),"function"==typeof window.gtag&&window.gtag("event","Share Quote",{method:"facebook"})},shareTwitter:function(a){const t=encodeURIComponent(s()),n=function(a){if(a.length<=180)return a;let t=a.substring(0,180);const s=t.lastIndexOf(" ");return s>.7*180&&(t=t.substring(0,s)),t}(d(a));l("https://twitter.com/intent/tweet?url="+t+"&text="+encodeURIComponent("«"+n+"...»")),"function"==typeof window.gtag&&window.gtag("event","Share Quote",{method:"twitter"})},copyToClipboard:function(a){var t,n=d(a),e=a.articleLink||s(),l="«"+n+"»\n\nâ "+a.articleTitle+(a.author?"\n"+a.author:"")+"\n\n"+e;return t=navigator.clipboard&&window.isSecureContext?navigator.clipboard.writeText(l).catch(function(){return g(l)}):g(l),"function"==typeof window.gtag&&window.gtag("event","Share Quote",{method:"copy"}),t}}}]),s(24037),s(58846),s(95805);var l=s(86406),g=s(22198);angular.module("discours.components").component("quotesPage",{templateUrl:"/pages/other/quotes.html",controller:["$q","$log","$sce","$timeout","contentItemsService","quoteCardExporterService","Notification",function(a,t,s,n,e,o,c){function i(a,t){r.article=a;var n=(0,l.T)(t);r.currentQuote=s.trustAsHtml(n),r.currentQuoteRaw=t,r.loading=!1,r.hasLoadedOnce=!0}function d(){var a=null;if(r.article){var t=r.article.censoredLink||r.article.link;
1t&&"#"!==t&&(a=t.startsWith("/")?"https://discours.io"+t:t.startsWith("http")?t:"https://discours.io/"+t)}return{quoteText:r.currentQuoteRaw||"",articleTitle:r.article?r.article.title:"",author:r.article?r.article.author:"",slug:r.article?r.article.slug:"",thumborId:r.article?r.article.thumborId:null,articleLink:a}}var r=this;r.$onInit=function(){r.loading=!1,r.currentQuote=null,r.currentQuoteRaw=null,r.article=null,r.quotes=[],r.isExporting=!1,r.copySuccess=!1,r.hasLoadedOnce=!1,r.error=null,r.stackRotations=[0,0,0],r.stackOffsets=[0,0,0],r.stackRotations=[3*(Math.random()-.5),4*(Math.random()-.5),3*(Math.random()-.5)],r.stackOffsets=[4*Math.random()+2,6*Math.random()+4,8*Math.random()+6],r.loadQuotes()};var p=window.quotesHelpers||{};r.loadQuotes=function(){if("function"!=typeof p.extractQuotesArray)return t.error("quotesHelpers not loaded"),void(r.loading=!1);r.loading=!0,a.resolve((0,g.h)("/data/quotes.json")).then(function(a){var s=p.extractQuotesArray(a,function(a,s){t.warn(a,s)});if(r.quotes=s.filter(p.isValidQuoteEntry),r.quotes.length!==s.length&&t.warn("Skipped invalid quotes",{invalidCount:s.length-r.quotes.length}),0===r.quotes.length)return t.error("Quotes array is empty"),r.loading=!1,void(r.error="ЦиÑаÑÑ Ð½Ðµ найденÑ.");r.loadRandomQuote()}).catch(function(a){t.error("Failed to load quotes",a),r.loading=!1,r.error="Ðе ÑдалоÑÑ Ð·Ð°Ð³ÑÑзиÑÑ ÑиÑаÑÑ. ÐÑовеÑÑÑе конÑÐ¾Ð»Ñ Ð±ÑаÑзеÑа Ð´Ð»Ñ Ð´ÐµÑалей."})},r.loadRandomQuote=function(){var a=r.quotes;if(a&&0!==a.length){r.loading=!0;var s=Math.floor(Math.random()*a.length);a.length>1&&r.article&&a[s].slug===r.article.slug&&(s=(s+1)%a.length);var n=a[s];if(!n||!n.quote||!n.slug)return t.warn("Skipping invalid quote object",n),void(r.loading=!1);var l=n.slug,g=n.quote;e.resolveArticleReference(l).then(function(a){i(a,g)}).catch(function(a){t.error("Failed to load article",l,a),i(function(a){return{slug:a,title:"ÐаÑеÑиал: "+a,link:"#",author:"",authorLink:"",error:!0}}(l),g)})}else t.warn("No quotes available")},r.exportAsCard=function(){if(!r.isExporting&&r.currentQuoteRaw){r.isExporting=!0;var a=d();o.exportAsImage(a).then(function(){c.success("ÐÑкÑÑÑка ÑоÑ
Ñанена!")}).catch(function(a){t.error("Export failed",a),c.error("Ðе ÑдалоÑÑ ÑоÑ
ÑаниÑÑ Ð¾ÑкÑÑÑкÑ")}).finally(function(){r.isExporting=!1})}},r.shareVK=function(){o.shareVK(d())},r.shareTelegram=function(){o.shareTelegram(d())},r.shareFacebook=function(){o.shareFacebook(d())},r.shareTwitter=function(){o.shareTwitter(d())},r.goToArticle=function(){if(r.article){var a=r.article.censoredLink||r.article.link;a&&"#"!==a&&window.open(a,"_blank","noopener,noreferrer")}},r.copyQuote=function(){o.copyToClipboard(d()).then(function(){r.copySuccess=!0,c.success("ЦиÑаÑа ÑкопиÑована!"),n(function(){r.copySuccess=!1},2e3)}).catch(function(){c.error("Ðе ÑдалоÑÑ ÑкопиÑоваÑÑ")})}}]}),s(70528),s(15371),s(55216),s(46820),s(66769),s(24332),s(14248),s(93531),s(10961),s(13185),s(24757),s(18919),s(9803),s(11559);const o={modules:["discours.controllers","discours.services","discours.components","discours.templates"]}},24037(){function a(a){return!!(!Array.isArray(a)||a.failed||a.error||a.pager&&(a.pager.failed||a.pager.error))}function t(a){var t=Number(a&&a.rating);return Number.isFinite(t)?t:0}function s(a){var t=a&&(a.publishedAt||a.createdAt||a.updatedAt),s=t?new Date(t).getTime():0;return Number.isFinite(s)?s:0}function n(a){var n=new Set,e=[];return a.forEach(function(a){(a||[]).forEach(function(a){a&&a._id&&!n.has(a._id)&&(n.add(a._id),e.push(a))})}),e.sort(function(a,n){var e=t(n)-t(a);if(0!==e)return e;var l=s(n)-s(a);return 0!==l?l:String(n._id).localeCompare(String(a._id))}),e}var e=50,l=200,g=["Article","Literature"];angular.module("discours.components").component("almanacPage",{templateUrl:"/pages/about/almanac.html",controller:["$q","$log","contentItemsService","subscriptionService",function(t,s,o,c){function i(){var a=Math.min(p.totalAvailable,l);p.visibleCount=Math.min(p.visibleCount,a,p.allArticles.length),p.articles=p.allArticles.slice(0,p.visibleCount),p.hasMore=!p.loadError&&p.visibleCount<a&&(p.allArticles.length>p.visibleCount||d(!1).length>0)}function d(a){return g.filter(function(t){var s=p.typeStates[t];return a?s.needsRetry:!s.done})}function r(c,r){var u=d(r);return p.pendingVisibleCount=Math.min(c,l),0===u.length?(p.loadError=!1,p.visibleCount=p.pe
1ndingVisibleCount,p.pendingVisibleCount=0,i(),t.when()):(p.loadingMore=!0,function(t,s,l,g){return s.all(g.map(function(n){var g;try{g=t.query(function(a,t){return{noBody:"1",perPage:e,skip:t,type:a,sort:"rating"}}(n,l[n].skip))}catch(a){return s.when({error:a,failed:!0,items:[],type:n})}return s.when(g).then(function(t){return{failed:a(t),items:Array.isArray(t)?t:[],type:n}},function(a){return{error:a,failed:!0,items:[],type:n}})})).then(function(a){return{failed:a.some(function(a){return a.failed}),items:n(a.map(function(a){return a.items})),responses:a}})}(o,t,p.typeStates,u).then(function(a){if(!h){if(p.allArticles=n([p.allArticles,a.items]),function(a){a.forEach(function(a){var t,s=p.typeStates[a.type];a.failed?s.needsRetry=!0:(s.needsRetry=!1,s.total=(t=a.items)&&t.pager&&Number.isFinite(Number(t.pager.totalCount))?Number(t.pager.totalCount):Array.isArray(t)?t.length:0,s.skip+=e,s.done=s.skip>=s.total||a.items.length<e)});var t=g.reduce(function(a,t){var s=p.typeStates[t].total;return a+(Number.isFinite(s)?s:0)},0);p.totalAvailable=Math.max(t,p.allArticles.length)}(a.responses),a.failed)return p.loadError=!0,0===p.visibleCount&&(p.visibleCount=p.pendingVisibleCount),void i();p.loadError=!1,p.visibleCount=p.pendingVisibleCount,p.pendingVisibleCount=0,i()}}).catch(function(a){h||(u.forEach(function(a){p.typeStates[a].needsRetry=!0}),p.loadError=!0,i(),s.error("[almanacPage] Error loading almanac items:",a))}).finally(function(){h||(p.loadingInitial=!1,p.loadingMore=!1)}))}var p=this,h=!1;p.$onInit=function(){return p.allArticles=[],p.articles=[],p.visibleCount=0,p.pendingVisibleCount=e,p.typeStates={},g.forEach(function(a){p.typeStates[a]={done:!1,needsRetry:!1,skip:0,total:null}}),p.totalAvailable=0,p.hasMore=!1,p.loadError=!1,p.subscribeObj={},p.loadingInitial=!0,p.loadingMore=!1,p.subscribeFormSent=!1,p.subscribeFormLoading=!1,r(e,!1)},p.loadMore=function(){if(!p.loadingMore&&!p.loadError&&p.hasMore)return r(Math.min(p.visibleCount+e,p.totalAvailable,l),!1)},p.retryLoad=function(){if(!p.loadingMore&&p.loadError)return r(p.pendingVisibleCount||Math.min(Math.max(p.visibleCount,e),l),!0)},p.$onDestroy=function(){h=!0},p.subscribeForm=function(a){return a.preventDefault(),p.subscribeFormLoading=!0,c.postAlmanac(p.subscribeObj.email).then(function(){p.subscribeFormLoading=!1,p.subscribeFormSent=!0}
1).catch(function(){p.subscribeFormLoading=!1}),!1}}]})},24332(){angular.module("discours.controllers").controller("AuthEntryCtrl",["$location","$scope","$timeout","$window","apiClient","loginService","Notification",function(a,t,s,n,e,l,g){function o(a){if("string"!=typeof a||!a.trim())return null;try{const t=new URL(a,n.location.origin);return t.origin!==n.location.origin?null:t.pathname+t.search+t.hash}catch(a){return null}}function c(){return f?"/drafts?status=collaborations":"/"}function i(){return _||c()}function d(s){const n=o(s)||c();t.$applyAsync(function(){a.url(n)})}function r(){if(!f)return void d(i());if(X||h.processing||t.$$destroyed)return;X=!0,h.processing=!0,h.errorMessage="";const a=encodeURIComponent(E),s=encodeURIComponent(v);e.put("collab/document/"+a+"/invites/"+s,null,{status:"accepted"}).then(function(){g.success({message:"ÐÑиглаÑение пÑинÑÑо"}),d(i())}).catch(function(a){if(!t.$$destroyed)return 409===(a&&a.status)?(g.info({message:"ÐÑиглаÑение Ñже пÑинÑÑо"}),void d(i())):(t.$applyAsync(function(){X=!1,h.processing=!1,h.errorMessage="Ðе ÑдалоÑÑ Ð¿ÑинÑÑÑ Ð¿ÑиглаÑение авÑомаÑиÑеÑки. ÐопÑобÑйÑе еÑÑ Ñаз."}),void g.error({message:"Ðе ÑдалоÑÑ Ð¿ÑинÑÑÑ Ð¿ÑиглаÑение"}))})}function p(){h.processing||F||(F=!0,h.errorMessage="",l.openAuthModal({registerMode:u,title:f?u?"РегиÑÑÑаÑÐ¸Ñ Ð´Ð»Ñ Ð¿ÑиглаÑениÑ":"ÐÑ
од Ð´Ð»Ñ Ð¿ÑиглаÑениÑ":void 0,subtitle:f?"ÐоÑле авÑоÑизаÑии пÑиглаÑение бÑÐ´ÐµÑ Ð¿ÑинÑÑо авÑомаÑиÑеÑки.":void 0,onSuccess:function(){f?r():u&&!_||d(i())}}))}const h=this,u="/register"===a.path(),m=a.search()||{},v=function(a){const t="string"==typeof a?a.trim():"";return/^[A-Za-z0-9_-]{6,64}$/.test(t)?t:null}(m.invite),E=function(a){const t="string"==typeof a?a.trim():"";return/^content-item:[A-Za-z0-9_-]+$/.test(t)?t:null}(m.document||m.doc),_=o(m.next||m.redirect),f=!(!v||!E);let b=null,X=!1,F=!1;h.isRegisterMode=u,h.inviteFlow=f,h.processing=!1,h.errorMessage="",h.title=u?"РегиÑÑÑаÑиÑ":"ÐÑ
од",h.heading=f?u?"ÐаÑегиÑÑÑиÑÑйÑеÑÑ, ÑÑÐ¾Ð±Ñ Ð¿ÑинÑÑÑ Ð¿ÑиглаÑение":"ÐойдиÑе, ÑÑÐ¾Ð±Ñ Ð¿ÑинÑÑÑ Ð¿ÑиглаÑение":u?"СоздайÑе аккаÑÐ½Ñ Ð½Ð° ÐиÑкÑÑÑе":"ÐойдиÑе в ÐиÑкÑÑÑ",h.description=f?"ÐоÑле авÑоÑизаÑии Ð²Ñ ÑÑÐ°Ð·Ñ Ð¿Ð¾Ð¿Ð°Ð´ÑÑе к пÑиглаÑÑÐ½Ð½Ð¾Ð¼Ñ ÑеÑновикÑ.":"ÐÑкÑоеÑÑÑ ÑÑандаÑÑное окно вÑ
ода или ÑегиÑÑÑаÑии.",h.primaryLabel=u?"ÐÑкÑÑÑÑ ÑегиÑÑÑаÑиÑ":"ÐÑкÑÑÑÑ Ð²Ñ
од",h.secondaryLabel=u?"Уже еÑÑÑ Ð°ÐºÐºÐ°ÑнÑ":"СоздаÑÑ Ð°ÐºÐºÐ°ÑнÑ",h.retryAccept=function(a){a&&"function"==typeof a.preventDefault&&a.preventDefault(),r()},h.openPrimary=function(a){a&&"function"==typeof a.preventDefault&&a.preventDefault(),F=!1,p()},h.openSecondary=function(t){t&&"function"==typeof t.preventDefault&&t.preventDefault(),a.path(u?"/login":"/register"),a.search(m)},h.goHome=function(t){t&&"function"==typeof t.preventDefault&&t.preventDefault(),a.path("/"),a.search({})},l.isLoggedIn()?s(function(){f?r():d(!u||_?i():"/profile")},0):f?b=s(p,0):(F=!0,l.openAuthModal({registerMode:u,onSuccess:function(){_?a.url(_):u&&a.url("/profile")}}),a.path("/").search({}).replace()),t.$on("$destroy",function(){b&&(s.cancel(b),b=null)})}])},24757(){angular.module("discours.components").component("newsletterArchivePage",{templateUrl:"/pages/newsletter/archive.html",controller:["apiClient","$routeParams",function(a,t){var s=this;s.mode="loading",s.campaign=null,s.html="",s.$onInit=function(){var n=String(t.id||"").trim();n?a.getOne("newsletter/archive",n).then(function(a){s.campaign=a||{},s.html=s.campaign.html||"",s.mode="loaded"}).catch(function(t){a.isCanceled&&a.isCanceled(t)||(s.mode=t&&404===t.status?"notfound":"error")}):s.mode="notfound"},s.subEmail="",s.subState="",s.subscribe=function(){var t=String(s.subEmail||"").trim();t&&"loading"!==s.subState&&(s.subState="loading",a.post("email-subscriptions",{email:t}).then(function(){s.subState="done"}).catch(function(t){a.isCanceled&&a.isCanceled(t)||(s.subState="error")}))}}]}).directive("dsSrcdoc",function(){return{restrict:"A",link:function(a,t,s){a.$watch(function(){return a.$eval(s.dsSrcdoc)},function(a){null!=a&&(t[0].srcdoc=String(a))})}}})},46820(a,t,s){var n=s(56224),e=n.initFormValidation,l=n.getPasswordStrength;angular.module("discours.components").component("resetPasswordPage",{bindings:{isEnroll:"<"},templateUrl:"/pages/authors/reset-password.html",controller:["loginService","Notification","$route","$location",function(a,t,s,n){var g=this,o=s.current.params.token;g.$onInit=function(){g.submitting=!1,g.password="",g.confirmPassword="",g.passwordStrength="weak",g.passwordStrengthLabel="",g.tokenMissing=!o,g.passwordVisible={},g.togglePasswordVisibility=function(a){g.passwordVisible[a]=!g.passwordVisible[a]},e(g,{password:{type:"passwordMinLength",getValue:function(){return g.password}},confirmPassword:{type:"confirmPassword",getValue:function(){return g.confirmPassword},confirmRef:function(){return g.password}}},{onValidate:function(a){"password"===a&&g.fieldErrors.confirmPassword&&g.validateField("confirmPassword")}})},g.updatePasswordStrength=function(){var a=l(g.password);g.passwordStrength=a.strength,g.passwordStrengthLabel=a.label},g.submitDisabled=function(){return 0===g.password.length||0===g.confirmPassword.length||g.submitting||!!g.fieldErrors.password||!!g.fieldErrors.confirmPassword},g.submit=function(s){s&&s.preventDefault(),g.validateAll(["password","confirmPassword"])||(g.submitting=!0,a.resetPassword(g.password,g.confirmPassword,o).then(function(){g.submitting=!1,t.success("ТепеÑÑ Ð²Ñ Ð¼Ð¾Ð¶ÐµÑе войÑи Ñ Ð½Ð¾Ð²Ñм паÑолем"),n.path("/")}
1).catch(function(a){g.submitting=!1,t.error("string"==typeof a?a:a&&a.data&&a.data.message||a&&a.data&&a.data.error&&a.data.error.message||a&&a.message||"ÐÑоизоÑла оÑибка")}))}}]})},55216(){var a=[{id:"u3CouM7yXmqfn3b9H",detailsOfSolution:"06.04.2022 â 27-31-2022/Ðд4584-22",title:"«ÐÑÑановиÑе бойнÑ». ЧÑо говоÑÑÑ Ð¾ войне Ñ Ð£ÐºÑаиной ÑоÑÑиÑне, вÑÑедÑие на анÑивоеннÑе пÑоÑеÑÑÑ"},{id:"MBLnozMK3AdgopmuK",detailsOfSolution:"13.04.2022 â 27-31-2022/Ðд5037-22",title:"ÐÐµÐ½Ñ ÐозоÑа. ÐаÑвление оÑкÑÑÑой ÑедакÑии пÑоÑив Ð²Ð¾Ð¹Ð½Ñ Ð¼ÐµÐ¶Ð´Ñ Ð Ð¾ÑÑией и УкÑаиной"}];angular.module("discours.components").component("blockedInRussiaPage",{templateUrl:"/pages/other/blocked-in-russia.html",controller:["$location","$routeParams",function(t,s){var n=this;n.$onInit=function(){n.returnToMain=function(){t.search({}).path("/").replace()},n.blockedArticleData=a.find(function(a){return a.id===s.id})}}]})},56224(a){function t(a){var t=(a||"").trim();return t?l.test(t)?null:"ÐÑо неÑабоÑий адÑеÑ. ÐÑовеÑÑÑе, пÑавилÑно ли Ñказана поÑÑа":"ÐаполниÑе ÑÑо поле"}function s(a){return a&&a.trim()?null:"ÐведиÑе паÑолÑ"}function n(a){return!a||a.length<8?"ÐаÑÐ¾Ð»Ñ Ð½ÐµÐ½Ð°Ð´ÐµÐ¶Ð½Ñй, минимÑм 8 Ñимволов":null}function e(a,t){return a?t!==a?"ÐаÑоли не ÑовпадаÑÑ":null:"ÐаполниÑе ÑÑо поле"}var l=/^[^\s@]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]*[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]*[a-zA-Z0-9])?)*\.[a-zA-Z]{2,}$/;a.exports={MIN_PASSWORD_LENGTH:8,EMAIL_REGEX:l,validateEmail:t,validatePasswordRequired:s,validatePasswordMinLength:n,validateConfirmPassword:e,getPasswordStrength:function(a){if(!a||"string"!=typeof a||a.length>256)return{strength:"weak",label:"СлабÑй (мин. 8 Ñимволов)"};if(a.length<8)return{strength:"weak",label:"СлабÑй (мин. 8 Ñимволов)"};var t=/[a-zA-Zа-ÑÐ-ЯÑÐ]/.test(a),s=/\d/.test(a),n=/[^a-zA-Zа-ÑÐ-ЯÑÐ0-9]/.test(a);if(a.length>=16&&t)return{strength:"strong",label:"СилÑнÑй"};if(t&&(s||n))return{strength:"strong",label:"СилÑнÑй"};var e="СÑедний";return t?s||n||(e="СÑедний (добавÑÑе ÑиÑÑÑ Ð¸Ð»Ð¸ ÑпеÑÑимволÑ)"):e="СÑедний (добавÑÑе бÑквÑ)",{strength:"medium",label:e}},initFormValidation:function(a,l,g){function o(g){var o=l[g];if(!o)return"undefined"!=typeof console&&console,!1;delete a.fieldErrors[g];var i=o.getValue(),d=null;switch(o.type){case"email":d=t(i);break;case"passwordRequired":d=s(i);break;case"passwordMinLength":d=n(i);break;case"confirmPassword":d=e(i,o.confirmRef?o.confirmRef():"");break;default:"undefined"!=typeof console&&console}return d&&(a.fieldErrors[g]=d),c.onValidate&&c.onValidate(g,d),!!d}var c=g||{};a.fieldErrors={},a.fieldTouched={},a.passwordVisible={},a.togglePasswordVisibility=function(t){a.passwordVisible[t]=!a.passwordVisible[t]},a.validateField=function(a){return o(a)},a.validateAll=function(t){for(var s=!1,n=0;n<t.length;n++)a.fieldTouched[t[n]]=!0,o(t[n])&&(s=!0);return s},a.onFieldBlur=function(t){var s=l[t];s&&s.trimSetter&&s.trimSetter((s.getValue()||"").trim()),a.fieldTouched[t]&&o(t)},a.onFieldChange=function(t){(a.fieldTouched[t]||a.fieldErrors[t])&&o(t);var s=l[t];s&&s.onChangeExtra&&s.onChangeExtra()},a.resetValidation=function(t){if(t)for(var s=0;s<t.length;s++)delete a.fieldErrors[t[s]],delete a.fieldTouched[t[s]],delete a.passwordVisible[t[s]];else a.fieldErrors={},a.fieldTouched={},a.passwordVisible={}}}}},58846(){angular.module("discours.components").component("searchPage",{bindings:{searchData:"<"},templateUrl:"/pages/other/search.html",controller:["$routeParams","localeService",function(a,t){var s=this;s.searchAction=function(){return t.getLocalizedPath("/search",t.getLocale())},s.$onInit=function(){s.q=a.q,s.authorItems=[],s.items=s.searchData,s.itemsCount=s.searchData.pager&&s.searchData.pager.totalCount||0,s.suggestion=s.searchData.suggestion,s.currentPage=a.page||0}}]})},66769(){angular.module("discours.components").component("verifyEmailPage",{templateUrl:"/pages/authors/verify-email.html",controller:["loginService","Notification","$route","$location","localStorageService","$interval","eventBus",function(a,t,s,n,e,l,g){var o=this;o.state="verifying",o.email="",o.errorMessage="",o.cooldown=0;var c=null;o.$onInit=function(){a.verifyEmail(s.current.params.token).then(function(){e.set("emailVerified",!0),t.success("Email ÑÑпеÑно подÑвеÑждÑн! ТепеÑÑ Ð²Ð°Ð¼Â Ð´Ð¾ÑÑÑÐ¿Ð½Ñ Ð²Ñе ÑÑнкÑии"),n.path("/")}
1).catch(function(a){var t;o.state=a&&429===a.status?"rate_limited":(t=a&&a.reason)&&i[t]||"expired"})};var i={link_used_or_unknown:"used",link_expired:"expired",link_malformed:"malformed"};o.openLogin=function(){g.openLogin({title:"ÐойдиÑе, ÑÑÐ¾Ð±Ñ Ð¿ÑодолжиÑÑ"})},o.askNewLink=function(){o.state="expired"},o.requestNewLink=function(t){null!=t&&t.preventDefault(),o.email&&0!==o.email.trim().length?o.cooldown>0||(o.state="sending",o.errorMessage="",a.requestVerification(o.email).then(function(){o.state="sent"}).catch(function(a){o.state="expired",a&&a.remainingSeconds?(o.cooldown=a.remainingSeconds,c&&l.cancel(c),c=l(function(){o.cooldown--,o.cooldown<=0&&(l.cancel(c),c=null)},1e3),o.errorMessage="ÐодождиÑе "+a.remainingSeconds+" Ñек. пеÑед повÑоÑной оÑпÑавкой"):o.errorMessage=a&&a.message||"ÐÑоизоÑла оÑибка, попÑобÑйÑе позже"})):o.errorMessage="ÐведиÑе Ð²Ð°Ñ email"},o.$onDestroy=function(){c&&(l.cancel(c),c=null)}}]})},70528(){"use strict";angular.module("discours.components").component("changelogPage",{templateUrl:"/pages/about/changelog.html",controller:["$timeout",function(a){var t=null,s=null,n=null,e=null,l=null,g=null,o=null,c=null;this.$onInit=function(){a(function(){function a(a){if(f!==a){if(f){f.classList.remove("is-active");var t=E.get(f);t&&t.classList.remove("is-active")}if(f=a){f.classList.add("is-active");var s=E.get(f);s&&s.classList.add("is-active");var n=document.querySelector(".changelog-toc");if(n&&f.offsetParent){var e=f.offsetTop-n.offsetTop,l=n.scrollTop,g=n.clientHeight;(e<l||e>l+g-40)&&(n.scrollTop=e-g/3)}}}}function i(s,n){var e=document.getElementById(s);if(e){var l=e.closest(".changelog-section");l&&!l.open&&(l.open=!0),e.scrollIntoView({behavior:"smooth",block:"start"}),function(a){var s=document.querySelector(".changelog-summary.is-highlighted");s&&s.classList.remove("is-highlighted"),t&&clearTimeout(t);var n=a.closest(".changelog-summary");n&&(n.classList.add("is-highlighted"),t=setTimeout(function(){n.classList.remove("is-highlighted"),t=null},2e3))}(e),a(n)}}function d(){for(var t=null,s=0;s<p.length;s++){var n=p[s].querySelector("h2[id]");if(n){if(!(p[s].getBoundingClientRect().top<=100))break;t=n.id}}t&&u[t]&&a(u[t])}function r(){function a(a,t){var s=document.createElementNS(n,"svg");Object.keys(a).forEach(function(t){s.setAttribute(t,a[t])});var e=document.createElementNS(n,"path");return Object.keys(t).forEach(function(a){e.setAttribute(a,t[a])}),s.appendChild(e),s}function t(){e.setAttribute("aria-expanded","false"),o.setAttribute("aria-hidden","true"),g.setAttribute("aria-hidden","true"),o.classList.remove("is-open"),g.classList.remove("is-visible"),document.body.style.overflow="","function"==typeof e.focus&&e.focus()}if(l)return l;var s=document.querySelector(".changelog-toc__list");if(!s)return null;var n="http://www.w3.org/2000/svg",e=document.createElement("button");e.type="button",e.className="changelog-mobile-toc__fab",e.setAttribute("aria-label","Ðглавление веÑÑий"),e.setAttribute("aria-expanded","false"),e.appendChild(a({width:"20",height:"20",viewBox:"0 0 24 24",fill:"none","aria-hidden":"true"},{d:"M3 5h2v2H3V5zm4 0h14v2H7V5zM3 11h2v2H3v-2zm4 0h14v2H7v-2zM3 17h2v2H3v-2zm4 0h14v2H7v-2z",fill:"currentColor"}));var g=document.createElement("div");g.className="changelog-mobile-toc__backdrop",g.setAttribute("aria-hidden","true");var o=document.createElement("div");o.className="changelog-mobile-toc__panel",o.setAttribute("role","dialog"),o.setAttribute("aria-label","Ðглавление changelog"),o.setAttribute("aria-hidden","true"),o.setAttribute("aria-modal","true");var c=document.createElement("div");c.className="changelog-mobile-toc__header";var d=document.createElement("span");d.className="changelog-mobile-toc__title",d.textContent="ÐеÑÑии",c.appendChild(d);var r=document.createElement("button");r.type="button",r.className="changelog-mobile-toc__close",r.setAttribute("aria-label","ÐакÑÑÑÑ Ð¾Ð³Ð»Ð°Ð²Ð»ÐµÐ½Ð¸Ðµ"),r.appendChild(a({width:"16",height:"16",viewBox:"0 0 24 24",fill:"none","aria-hidden":"true"},{d:"M6 6l12 12M6 18L18 6",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round"})),c.appendChild(r),o.appendChild(c);var p=s.cloneNode(!0);p.classList.add("changelog-mobile-toc__list"),o.appendChild(p);for(var h=s.querySelectorAll('a[href^="#"]'),u=p.querySelectorAll('a[href^="#"]'),m=Math.min(h.length,u.length),v=0;v<m;v++)E.set(h[v],u[v]),_.set(u[v],h[v]),h[v].classList.contains("is-active")&&u[v].classList.add("is-active");document.body.appendChild(g),document.body.appendChild(o),document.body.appendChild(e);var f=function(){e.setAttribute("aria-expanded","true"),o.setAttribute("aria-hidden","false"),g.setAttribute("aria-hidden","false"),o.classList.add("is-open"),g.classList.add("is-visible"),document.body.style.overflow="hidden"},b=function(){t()},X=function(){t()},F=function(a){var s=a.target.closest('a[href^="#"]');if(s){a.preventDefault();var n=s.getAttribute("href").substring(1);t(),i(n,_.get(s)||s)}},y=function(a){"Escape"===a.key&&o.classList.contains("is-open")&&t()};return e.addEventListener("click",f),g.addEventListener("click",b),r.addEventListener("click",X),p.addEventListener("click",F),document.addEventListener("keydown",y),l=function(){try{e.removeEventListener("click",f)}catch(a){}try{g.removeEventListener("click",b)}catch(a){}try{r.removeEventListener("click",X)}catch(a){}try{p.removeEventListener("click",F)}catch(a){}try{document.removeEventListener("keydown",y)}catch(a){}try{document.body.removeChild(e)}catch(a){}try{document.body.removeChild(g)}catch(a){}try{document.body.removeChild(o)}catch(a){}document.body.style.overflow="",E.clear(),_.clear(),l=null}}var p=document.querySelectorAll(".changelog-section"),h=document.querySelectorAll(".changelog-toc__list a");if(p.length&&h.length){for(var u={},m=0;m<h.length;m++){var v=h[m].getAttribute("href");v&&"#"===v.charAt(0)&&(u[v.substring(1)]=h[m])}var E=new Map,_=new Map,f=null,b=document.querySelector(".changelog-toc");
1b&&b.addEventListener("click",s=function(a){var t=a.target.closest('a[href^="#"]');t&&(a.preventDefault(),i(t.getAttribute("href").substring(1),t))}),n=function(){e||(e=requestAnimationFrame(function(){e=null,d()}))},window.addEventListener("scroll",n,{passive:!0}),d(),(o=window.matchMedia("(max-width: 991px)")).matches&&r(),c=function(){function a(){o&&(o.disconnect(),o=null),n.classList.remove("changelog-filter--stuck"),g.style.height=""}function t(){o||(o=new IntersectionObserver(function(a){var t=a[0];t&&(t.isIntersecting?(n.classList.remove("changelog-filter--stuck"),g.style.height=""):(g.style.height=n.offsetHeight+"px",n.classList.add("changelog-filter--stuck")))},{rootMargin:"-56px 0px 0px 0px",threshold:0})).observe(l)}function s(s){s.matches?t():a()}var n=document.querySelector(".changelog-filter");if(!n)return null;var e=window.matchMedia("(max-width: 991px)"),l=document.createElement("div");l.className="changelog-filter-sentinel",l.setAttribute("aria-hidden","true"),n.parentNode.insertBefore(l,n);var g=document.createElement("div");g.className="changelog-filter-placeholder",g.setAttribute("aria-hidden","true"),n.nextSibling?n.parentNode.insertBefore(g,n.nextSibling):n.parentNode.appendChild(g);var o=null;return e.matches&&t(),"function"==typeof e.addEventListener?e.addEventListener("change",s):"function"==typeof e.addListener&&e.addListener(s),function(){a(),"function"==typeof e.removeEventListener?e.removeEventListener("change",s):"function"==typeof e.removeListener&&e.removeListener(s),l.parentNode&&l.parentNode.removeChild(l),g.parentNode&&g.parentNode.removeChild(g)}}(),g=function(a){a.matches?l||r():l&&l()},"function"==typeof o.addEventListener?o.addEventListener("change",g):"function"==typeof o.addListener&&o.addListener(g)}},100)},this.$onDestroy=function(){if(t&&clearTimeout(t),e&&cancelAnimationFrame(e),n&&window.removeEventListener("scroll",n),s){var a=document.querySelector(".changelog-toc");a&&a.removeEventListener("click",s)}l&&l(),c&&c(),o&&g&&("function"==typeof o.removeEventListener?o.removeEventListener("change",g):"function"==typeof o.removeListener&&o.removeListener(g))}}]})},93531(){angular.module("discours.components").component("bestPage",{bindings:{bestArticles:"<"},templateUrl:"/pages/best/index.html",controller:["$window","contentItemsService",function(a,t){var s=this;s.$onInit=function(){s.moreItems=[].concat(s.bestArticles),s.currentPage=1,s.isMoreLoading=!1},s.loadMore=function(){a.scrollTo({top:0,behavior:"smooth"}),s.isMoreLoading=!0,t.query({page:s.currentPage,perPage:14,randomItems:120,sort:"rating",noBody:1}).then(function(a){s.moreItems=[].concat(a),s.currentPage++,s.isMoreLoading=!1}).catch(function(a){s.isMoreLoading=!1})}}]})},95805(){angular.module("discours.components").component("helpUsPage",{templateUrl:"/pages/about/help-us.html",controller:["$routeParams","$window","$location","$timeout","donateBestArticles",function(a,t,s,n,e){function l(){return t.innerWidth<768}function g(){return t.innerWidth<992}function o(){var a=l(),t=g();a===d.isMobile&&t===d.isTabletOrSmaller||n(function(){d.isMobile=a,d.isTabletOrSmaller=t,(d.visibleProjectsCount===c||d.visibleProjectsCount===i)&&(d.visibleProjectsCount=a?c:i)},0)}var c=3,i=4,d=this;d.isMobile=l(),d.isTabletOrSmaller=g(),d.bestArticles=e,d.visibleProjectsCount=d.isMobile?c:i;var r=a.openDonate||"support"===s.hash();d.isMobileDonateOpen=d.isTabletOrSmaller&&!!r,d.loadMoreProjects=function(){d.visibleProjectsCount+=d.isMobile?2:4},d.openMobileDonate=function(){d.isMobileDonateOpen=!0},d.closeMobileDonate=function(){d.isMobileDonateOpen=!1},angular.element(t).on("resize",o),d.$onDestroy=function(){angular.element(t).off("resize",o)}}]})}}]);
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.