Releases: pathetixx/190x4-Ninety
Releases · pathetixx/190x4-Ninety
Release list
Ninety v0.5.1
English
- The tray menu opens again. Right-clicking the icon rebuilt the menu at the exact moment Windows was showing it, and the menu closed itself in a few hundredths of a second — measured on a live install, it survived between 13 and 33 ms. A rebuild now waits until the menu is closed, and pointing at the icon no longer rebuilds anything when nothing has changed.
- The Server section is usable on a large subscription. It opens on the current server, then Favourites and Fastest, then countries with the number of nodes in each; inside a country the servers are ordered by measured latency, and that latency is shown next to the name. The last line, All servers, opens the Servers screen with its search and the full list. A subscription of a dozen servers stays a plain list, as before.
- The same subscription link can no longer be added twice. The add window names the subscription that already uses that link before you press the button, and adding it again opens that subscription instead of creating a second copy of the same servers.
Русский
- Меню в трее снова открывается. Правый клик по значку пересобирал меню ровно в тот момент, когда Windows его показывала, и меню закрывалось само за сотые доли секунды — на живой установке оно держалось от 13 до 33 мс. Теперь пересборка ждёт, пока меню закроют, а наведение на значок ничего не пересобирает, если ничего не изменилось.
- Разделом «Сервер» можно пользоваться на большой подписке. Он открывается текущим сервером, дальше идут «Избранные» и «Самые быстрые», ниже — страны с числом серверов в каждой; внутри страны серверы стоят по возрастанию измеренной задержки, и она же показана рядом с именем. Последняя строка, «Все серверы», открывает экран «Серверы» с поиском и полным списком. Подписка на десяток серверов, как и раньше, остаётся простым списком.
- Одну и ту же ссылку подписки больше нельзя добавить дважды. Окно добавления называет подписку, которая уже использует эту ссылку, ещё до нажатия кнопки, а повторное добавление открывает её саму вместо второй копии тех же серверов.
Ninety v0.5.0
English
- Subscriptions from panels that count devices work now. Such a panel limits how many devices one subscription may be used on, and until the app tells it which device is asking, it answers with a single server called "Enable HWID parameter" — or with nothing at all. Ninety can now send that identifier: turn on "Send HWID" in the subscription's edit window, or accept the question that appears right after a refresh, and the real server list comes back.
- The identifier is per subscription and off by default, so panels that do not count devices never receive it. It is derived from your computer one way — the Windows value behind it is never sent, and the result does not match what other apps use — and it stays the same on every refresh, so the panel keeps seeing one device instead of spending a new slot each time. Settings → General shows it, copies it and can replace it.
- When the panel reports that the subscription has no free device slots left, Ninety says exactly that, instead of showing an empty subscription and leaving you to guess.
- Recommendations are calculated by the ratio between delays, not the difference in milliseconds. The old scale spread 25–300 ms evenly, so two milliseconds counted the same between 26 and 28 as between 260 and 262 — and on a subscription where every live server sits between 26 and 40 ms the whole delay range took up a twentieth of the scale. What was left to decide the order was the spread, so a steady 33 ms server stood in "Recommended" while the list right below it showed 26 ms. At 30 ms a millisecond of delay now weighs about as much as a millisecond of spread; at 300 ms it weighs less, which is what it is worth there.
- "Lowest latency" is only written where the latency really is the lowest. The line went to any server whose strongest side happened to be its delay — including when a faster server was sitting a few rows below in the same list. Such a server is now described as having low latency, and the superlative is left for the one that has earned it.
Русский
- Подписки панелей, которые считают устройства, теперь работают. Такая панель ограничивает, на скольких устройствах можно пользоваться одной подпиской, и пока приложение не сообщит ей, какое устройство спрашивает, она отдаёт один сервер с названием «Включите HWID параметр» — или не отдаёт ничего. Ninety умеет отправлять этот идентификатор: включите «Отправлять HWID» в окне подписки или ответьте на вопрос, который появится сразу после обновления, — и вернётся настоящий список серверов.
- Идентификатор задаётся для каждой подписки отдельно и по умолчанию выключен, поэтому панели, которые устройства не считают, его не получают. Он выводится из вашего компьютера односторонне — исходное значение Windows наружу не уходит, и результат не совпадает с тем, что отправляют другие программы, — и не меняется при обновлениях, так что панель видит одно устройство, а не тратит новое место каждый раз. В «Настройках → Общие» его видно, можно скопировать и заменить.
- Когда панель сообщает, что свободных мест для устройств у подписки не осталось, Ninety так и говорит, вместо того чтобы показать пустую подписку и оставить вас гадать.
- Рекомендации считаются по отношению задержек, а не по разнице в миллисекундах. Прежняя шкала растягивала 25–300 мс равномерно, и две миллисекунды весили одинаково на паре 26/28 и на паре 260/262, — а на подписке, где все живые серверы укладываются в 26–40 мс, весь разброс задержки занимал двадцатую часть шкалы. Решал порядок тогда разброс: ровный сервер с 33 мс стоял в «Рекомендованных», пока в списке прямо под ним значилось 26 мс. Теперь на 30 мс миллисекунда задержки весит примерно столько же, сколько миллисекунда разброса, а на 300 мс — меньше, сколько она там и стоит.
- «Самая низкая задержка» пишется только там, где она действительно самая низкая. Раньше строка доставалась любому серверу, у которого задержка оказалась сильнейшей стороной, — в том числе когда несколькими строками ниже в том же списке стоял сервер быстрее. Про такой сервер теперь написано, что задержка низкая, а превосходная степень остаётся тому, кто её заслужил.
Ninety v0.4.5
English
- The server list is sorted again. In 0.4.4 the order was held still so rows would not jump while measurements came in — but the "Delay" column stays marked as the active sort, so a list that no longer matches it reads as broken: the server Auto had picked sat below rows showing smaller numbers. The order now follows the numbers again, and it is still cheap, because existing rows are moved rather than the table rebuilt. During "Re-measure all" the order is still held, since there results arrive several times a second.
- Auto switches when another server is genuinely better. The threshold below which a difference was not worth dropping connections was 50 ms — wider than the spread between live servers on a typical subscription, so Auto could not move at all and stayed on a server that was worse than its neighbours. It is now 15 ms.
Русский
- Список серверов снова отсортирован. В 0.4.4 порядок держался неподвижным, чтобы строки не прыгали, пока приходят замеры, — но столбец «Задержка» остаётся подсвечен как активная сортировка, и список, который ей не соответствует, читается как поломка: выбранный «Авто» сервер оказывался ниже строк с меньшими числами. Теперь порядок снова следует за числами и по-прежнему стоит дёшево — готовые строки переставляются, таблица не пересобирается. На время «Измерить все» порядок всё так же держится неподвижным: там результаты приходят по нескольку раз в секунду.
- «Авто» переключается, когда другой сервер действительно лучше. Порог, ниже которого разница не стоила обрыва соединений, был 50 мс — шире, чем весь разброс между живыми серверами обычной подписки, поэтому «Авто» не мог переключиться в принципе и оставался на сервере хуже соседей. Теперь порог 15 мс.
Ninety v0.4.4
English
- The server list no longer stalls the window while measurements arrive. Each incoming measurement used to tear the whole list down and build it again — about five thousand elements on a subscription of a few hundred servers — and that is what you felt as stutter, both during "Re-measure all" and in the background. Rows are now reused: only the two cells that changed are replaced.
- Auto could quietly stop measuring altogether. A health check that never finished left the group unable to start another one — not on schedule, not on request — so Auto went on choosing between measurements that only got older, and a server that had since died stayed the "fastest" one. Found on a live install, where nothing had been measured for nineteen minutes on a ten minute interval. A check that overruns its time is now abandoned and replaced.
- Measurements arriving in the background no longer reshuffle the list. The order holds until you ask for a new one — by clicking a column, searching, grouping, or entering the screen again — so rows no longer move out from under the cursor while you are reading them. The numbers still update in place.
Русский
- Список серверов больше не подвешивает окно, пока приходят замеры. Каждый пришедший замер пересобирал список целиком — на подписке в несколько сотен серверов это около пяти тысяч элементов, — и именно это ощущалось рывками: и во время «Измерить все», и в фоне. Теперь строки переиспользуются, заменяются только те две ячейки, что изменились.
- «Авто» могло незаметно перестать мерить вообще. Проверка, которая не дошла до конца, не давала запустить следующую — ни по расписанию, ни по запросу, — и «Авто» продолжало выбирать из замеров, которые только устаревали: умерший сервер так и оставался «самым быстрым». Найдено на живой установке, где не измерялось ничего девятнадцать минут при интервале в десять. Проверка, вышедшая за отведённое время, теперь бросается и заменяется новой.
- Фоновые замеры больше не переставляют список. Порядок держится, пока вы не попросите другой — кликом по столбцу, поиском, группировкой или повторным входом на экран, — и строки не уезжают из-под курсора, пока вы их читаете. Цифры при этом обновляются на месте.
Ninety v0.4.3
English
- "Re-measure all" no longer freezes the window for seconds. Every result that came back rebuilt the entire server list — every row, flag and graph of it — and results now arrive several times a second. Only the two cells that actually changed are redrawn.
- The list also keeps the order it had when the run started, instead of resorting itself on every result. Rows no longer jump out from under the cursor mid-run; the final order is applied once, when the run finishes.
Русский
- «Измерить все» больше не подвешивает окно на несколько секунд. Каждый пришедший результат пересобирал весь список серверов целиком — все строки, флаги и графики, — а результаты теперь приходят по нескольку раз в секунду. Перерисовываются только те две ячейки, что действительно изменились.
- Список к тому же держит порядок, который был на момент запуска, вместо того чтобы пересортировываться на каждом замере. Строки больше не выпрыгивают из-под курсора посреди прогона, а итоговый порядок применяется один раз — по завершении.
Ninety v0.4.2
English
- The "best measured" line and the order of the server list no longer treat delays left over from an earlier session as if they were current. A server that does not answer right now cannot be offered as the best one, and its old number sorts below the servers that do answer — it is still shown, dimmed, because it says what that server used to do.
- When a connection through a server fails, that server is measured again straight away instead of waiting for the next scheduled check. It returns to the running as soon as it works again, and stays out of it while it does not — answering a check is not enough on its own, since a server can pass the check and still refuse to carry traffic.
- Measuring the servers is quicker. Most of the wait was never the servers that answer — it was the ones that never will, waited on a handful at a time. They are now waited on in far larger batches, so a run over a few hundred servers takes well under a minute instead of several, both for Re-measure all and for the checks the app makes on its own. Re-measure all also starts with the servers that were fastest last time, so the top of the list fills in first.
Русский
- Строка «лучший по замерам» и порядок списка серверов больше не считают задержки из прошлой сессии свежими. Сервер, который сейчас не отвечает, не может быть предложен как лучший, а его старая цифра уходит ниже тех, кто отвечает, — она по-прежнему видна, приглушённо, потому что говорит, каким этот сервер был раньше.
- Если соединение через сервер не удалось, он перемеряется сразу, а не ждёт очередной плановой проверки. Он возвращается в выбор, как только снова заработает, и не участвует в нём, пока не работает: одной пройденной проверки мало — сервер может отвечать на проверку и всё равно не пропускать трафик.
- Замеры серверов идут заметно быстрее. Почти всё время прогона занимали не те серверы, что отвечают, а те, что не ответят никогда, — и ждали их по нескольку штук за раз. Теперь их ждут куда большими пачками: прогон по нескольким сотням серверов укладывается меньше чем в минуту вместо нескольких — и для кнопки «Измерить все», и для проверок, которые приложение делает само. «Измерить все» вдобавок начинает с тех серверов, что были быстрыми в прошлый раз, поэтому верх списка заполняется первым.
Ninety v0.4.1
English
- Auto no longer gets stuck on the first server of a subscription. It chooses by measured delay, but those delays were measured once, when the connection came up, and were never refreshed; each failed connection dropped one more of them, and once none were left Auto held the first server in the list even when that server answered nothing. The app now keeps the measurements current by itself, and a server that fails to carry traffic steps out of the running for a while instead of being picked again straight away.
- The servers screen counted responding servers from measurements saved earlier, so the number was settled in the first session and never recalculated — not even by Re-measure all. It now counts what has just been confirmed, shows how far a measurement run has got, and dims delays left over from an earlier session, so a server that has since died no longer reads as a healthy one.
- In the recommendations, the line naming the server Auto is on showed the winner of the app's own rating rather than the server the traffic actually goes through. The two could disagree for hours.
- The tray icon could stay grey and say disconnected while the VPN was up, and only restarting the app put it right.
- On subscriptions with hundreds of servers the tray menu lists the current server, your favourites and the head of the list, and says how many more are waiting on the Servers screen.
- Delays measured from the app and delays the core measures on its own now use the same test address, so the two numbers can be compared.
- The connection test interval in settings finally does what it says: server checks really do repeat on it.
- The core was updated to sing-box 1.13.19.
- Wording: the app no longer speaks about itself in the first person.
Русский
- «Авто» больше не залипает на первом сервере подписки. Он выбирает по замеренной задержке, но замеры делались один раз, при подключении, и дальше не обновлялись; каждое неудачное соединение убирало ещё один, а когда не оставалось ни одного, «Авто» держал первый сервер списка, даже если тот не отвечал вовсе. Теперь приложение обновляет замеры само, а сервер, через который не удалось пройти трафику, на время выбывает из выбора вместо того, чтобы выбираться снова тут же.
- Экран «Серверы» считал отвечающие серверы по ранее сохранённым замерам, поэтому число определялось в первую сессию и больше не пересчитывалось — даже кнопкой «Измерить все». Теперь считается то, что подтверждено сейчас, во время прогона виден его ход, а задержки, оставшиеся с прошлой сессии, показаны приглушённо: умерший сервер больше не выглядит живым.
- В рекомендациях строка о том, на каком сервере стоит «Авто», называла победителя собственного рейтинга приложения, а не сервер, через который реально идёт трафик. Расходиться они могли часами.
- Значок в трее мог оставаться серым и сообщать «отключено» при работающем VPN — помогал только перезапуск приложения.
- На подписках в сотни серверов меню в трее показывает текущий сервер, избранные и начало списка, а также сообщает, сколько ещё осталось на экране «Серверы».
- Задержки, которые меряет приложение, и задержки, которые ядро меряет само, теперь измеряются до одного адреса — их наконец можно сравнивать.
- Интервал проверки соединения в настройках наконец делает то, что обещает: проверки серверов действительно повторяются с ним.
- Ядро обновлено до sing-box 1.13.19.
- Формулировки: приложение больше не говорит о себе от первого лица.
Ninety v0.4.0
English
- WireGuard and AmneziaWG profiles can be added. Paste the contents of a
.conffile into the same field you use for links: it becomes an ordinary profile, appears in the server list, takes part in Auto and shows its ping. For AmneziaWG the traffic masking written in the file is kept, so a paid profile behaves the way it does in the client you brought it from. - If the file contains lines the app does not carry over — a DNS line, for example — it says so right after the import instead of leaving you to find out later that the profile behaves differently here.
- A WireGuard profile can be copied back out as a
.conffrom its menu, to move it to another device or another app. - Standalone configs can be deleted all at once: the group header now has a Delete all button, which asks for confirmation and leaves subscriptions untouched.
- WARP masking traffic did not leave the computer in the shape it was meant to: the first bytes of every masking packet were cut off, and the packet size setting was off by nine bytes. Both fixed.
Русский
- Профили WireGuard и AmneziaWG теперь можно добавлять. Вставьте содержимое файла
.confв то же поле, куда вставляете ссылки: получится обычный профиль — он виден в списке серверов, участвует в «Авто» и показывает пинг. Для AmneziaWG сохраняется маскировка трафика, записанная в файле, поэтому платный профиль ведёт себя так же, как в клиенте, откуда вы его принесли. - Если в файле есть строки, которые приложение не переносит — например, строка DNS, — оно скажет об этом сразу после импорта, а не оставит вас выяснять позже, почему профиль ведёт себя иначе.
- Профиль WireGuard можно скопировать обратно в виде
.confиз его меню — чтобы перенести на другое устройство или в другое приложение. - Отдельные конфиги можно удалить все сразу: в заголовке группы появилась кнопка «Удалить все» — она переспрашивает и не трогает подписки.
- Маскировочный трафик WARP уходил с компьютера не в том виде, в каком задумано: у каждого маскировочного пакета обрезались первые байты, а настройка размера пакета промахивалась на девять байт. Исправлено.
Ninety v0.3.8
English
- Picking another server now takes effect at once. The app confirmed the choice, but the connections that were already open kept running through the previous server, so a site that checks your address still showed the old country until you turned the VPN off and on again. Those connections are now closed, so everything moves to the server you picked. Whatever you have excluded from the tunnel is left running.
- The same applies to the server list, to the tray menu and to the automatic switch the app makes when a server starts performing badly.
- The core was updated to sing-box 1.13.18.
Русский
- Выбор другого сервера применяется сразу. Приложение подтверждало выбор, но уже открытые соединения продолжали идти через прежний сервер — сайт проверки адреса показывал прежнюю страну, пока вы не выключите и не включите VPN заново. Теперь такие соединения закрываются, и всё уходит на выбранный сервер. То, что вы исключили из туннеля, продолжает работать.
- Это работает и в списке серверов, и в меню в трее, и при автоматической смене сервера, когда текущий начинает работать плохо.
- Ядро обновлено до sing-box 1.13.18.
Ninety v0.3.7
English
- More node types connect: AnyTLS, Hysteria v1 and SOCKS are supported, and transports that used to be quietly simplified to a plain connection are now passed on exactly as the subscription describes them. Nodes on the newer Xray transport name no longer disappear from the list either.
- Servers whose parameters a panel writes in a different but equally valid form — the flow value and the TLS fingerprint — are accepted instead of being dropped.
- Your own routing rules work as written. A rule with an address such as
192.168.001.100used to be handed to the core as typed and could take the whole connection down; and a personal rule for Discord was silently overridden by the built-in Discord split, so the rule existed, showed as enabled and did nothing. - Link handlers can be turned on again. The switch in settings never took effect: the app was asking for schemes the system side did not know, and the request stopped at the first one.
- Clicking the same invite link a second time works without restarting the app, and importing a list of links now says how many entries were skipped instead of dropping them silently.
- Security: the decision to run with administrator rights, and the paths to the Windows system folders, no longer come from environment variables that any account can rewrite. On a machine where someone had set them, the app could be pointed at a file of their choosing and run it with the rights it holds.
- Security: every line written into the system hosts file is now checked before it is applied.
- Security: if the Windows protected store is unavailable, node passwords and keys are no longer mirrored into the app's ordinary storage in plain text — the app reports the failure instead.
- "Reset WARP" now removes all of its files. It stopped at the first one it could not delete, which left the private key on disk, and the app kept reading it.
- The connection-quality indicator no longer stays on "Excellent" when it has stopped measuring because the PC is under load. It says that measurement is paused.
- DPI bypass: a strategy that has disappeared from the channel no longer stays in the interface showing one name while the engine starts another, and "Apply" after auto-pick no longer leaves the bypass switched off while the app shows it as running.
- "Clear sensitive data" no longer brings the deleted data back on the next start, and a failed state backup or a failed profile-store write is now visible in the app instead of only in a developer console.
- An update check that runs while the network is changing says there is no update only when there is none; it no longer turns "nothing new" into "could not check".
- Installer: reinstalling over an existing copy with a downloaded setup.exe no longer cancels itself, the final screen after uninstalling says the app was removed rather than deployed, and the downgrade guard now also works in silent mode.
- Interface: the portable-storage section, three later settings sections and the confirmation dialog are translated in all 15 languages; labels on accent buttons are readable in light themes; and right-to-left languages mirror the whole interface, including the back arrow and the active menu item.
- The stop log now names which component failed to exit, instead of reporting the same verdict for all three.
- Privacy: the document describing what Ninety connects to now also names the Discord checks that DPI auto-pick makes from your real address.
Русский
- Подключается больше типов нод: поддержаны AnyTLS, Hysteria v1 и SOCKS, а транспорты, которые раньше молча упрощались до обычного соединения, теперь передаются ровно так, как их описывает подписка. Ноды на новом имени транспорта Xray тоже перестали пропадать из списка.
- Серверы, у которых панель пишет параметры в другой, но столь же корректной форме — значение flow и отпечаток TLS, — принимаются, а не отбрасываются.
- Собственные правила маршрутизации работают так, как записаны. Правило с адресом вида
192.168.001.100уходило в ядро как есть и могло положить всё подключение, а личное правило для Discord молча перекрывалось встроенным разделением Discord: правило было, показывалось включённым и не делало ничего. - Обработчики ссылок снова включаются. Переключатель в настройках не срабатывал вообще: приложение запрашивало схемы, которых системная часть не знала, и запрос обрывался на первой же.
- Повторный клик по той же ссылке-приглашению работает без перезапуска приложения, а импорт списка ссылок теперь говорит, сколько записей пропущено, вместо того чтобы молча их выбросить.
- Безопасность: решение о запуске с правами администратора и пути к системным папкам Windows больше не берутся из переменных окружения, которые может переписать любая учётная запись. На машине, где их подменили, приложение можно было направить на чужой файл и запустить его с теми правами, которые у приложения есть.
- Безопасность: каждая строка, которая пишется в системный файл hosts, проверяется перед применением.
- Безопасность: если защищённое хранилище Windows недоступно, пароли и ключи нод больше не дублируются в обычное хранилище приложения открытым текстом — вместо этого приложение сообщает об отказе.
- «Сбросить WARP» удаляет все свои файлы. Раньше сброс останавливался на первом же файле, который не удалось удалить, — приватный ключ оставался на диске, и приложение продолжало его читать.
- Индикатор качества канала больше не держит «Отлично», когда измерения остановлены из-за нагрузки на компьютер. Он так и говорит: замеры на паузе.
- Обход DPI: стратегия, исчезнувшая из канала, больше не остаётся в интерфейсе под одним именем, пока движок запускает другую, а «Применить» после авто-подбора больше не оставляет обход выключенным при включённом виде в приложении.
- «Очистить конфиденциальные данные» больше не возвращает удалённое при следующем запуске, а сбой резервной копии состояния и сбой записи в хранилище профилей теперь видны в приложении, а не только в консоли разработчика.
- Проверка обновления во время смены сети говорит «обновления нет» только тогда, когда его действительно нет, и больше не превращает «ничего нового» в «не удалось проверить».
- Установщик: переустановка поверх уже стоящей копии скачанным setup.exe больше не отменяет сама себя, финальный экран после удаления сообщает, что приложение удалено, а не развёрнуто, и запрет отката на старую версию теперь работает и в тихом режиме.
- Интерфейс: раздел portable-хранилища, три поздних раздела настроек и диалог подтверждения переведены на все 15 языков; подписи на акцентных кнопках читаются в светлых темах; языки с письмом справа налево зеркалят весь интерфейс, включая стрелку «назад» и активный пункт меню.
- В журнале остановки видно, какой именно компонент не завершился, — раньше все три получали один и тот же вердикт.
- Приватность: документ о том, куда обращается Ninety, теперь называет и проверки Discord, которые авто-подбор DPI делает с вашего реального адреса.