Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
---
date: '2026-08-06'
date: '2026-08-07'
title: 'Вход в CLI через браузер, архивные чаты в списке'
---

Expand Down
6 changes: 3 additions & 3 deletions apps/docs/data/releases.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
{
"product": "sdk",
"version": "1.2.0",
"date": "2026-08-06",
"date": "2026-08-07",
"changes": [
{
"type": "+",
Expand All @@ -17,7 +17,7 @@
{
"product": "cli",
"version": "2026.8.1",
"date": "2026-08-06",
"date": "2026-08-07",
"changes": [
{
"type": "+",
Expand Down Expand Up @@ -72,7 +72,7 @@
{
"product": "n8n",
"version": "2.0.18",
"date": "2026-08-06",
"date": "2026-08-07",
"changes": [
{
"type": "+",
Expand Down
2 changes: 1 addition & 1 deletion apps/docs/public/llms.txt
Original file line number Diff line number Diff line change
Expand Up @@ -300,7 +300,7 @@ C#: new PachcaClient("TOKEN") → await client.Messages.CreateMessage
- [Получение подписи, ключа и других параметров](https://dev.pachca.com/api/files/uploads.md): POST /uploads

## Обновления
- [06 августа 2026 — Вход в CLI через браузер, архивные чаты в списке](https://dev.pachca.com/updates/2026-08-06.md)
- [07 августа 2026 — Вход в CLI через браузер, архивные чаты в списке](https://dev.pachca.com/updates/2026-08-07.md)
- [01 августа 2026 — Проверка имени файла, уточнения в журнале аудита и страница «Права и роли»](https://dev.pachca.com/updates/2026-08-01.md)
- [28 июля 2026 — Уточнения в описании API](https://dev.pachca.com/updates/2026-07-28.md)
- [24 июля 2026 — Самостоятельные треды и аудит видеозвонков](https://dev.pachca.com/updates/2026-07-24.md)
Expand Down
2 changes: 1 addition & 1 deletion apps/docs/public/updates.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@

### Вход в CLI через браузер, архивные чаты в списке

_06 августа 2026_
_07 августа 2026_

В CLI появился вход через браузер: команда `pachca auth login`
вместо выписывания токена в интерфейсе. Токен живёт час, продлевается сам и
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

# Вход в CLI через браузер, архивные чаты в списке

_06 августа 2026_
_07 августа 2026_

В CLI появился вход через браузер: команда `pachca auth login`
вместо выписывания токена в интерфейсе. Токен живёт час, продлевается сам и
Expand Down
2 changes: 1 addition & 1 deletion apps/docs/public/updates/season/summer-2026.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@

### Вход в CLI через браузер, архивные чаты в списке

_06 августа 2026_
_07 августа 2026_

В CLI появился вход через браузер: команда `pachca auth login`
вместо выписывания токена в интерфейсе. Токен живёт час, продлевается сам и
Expand Down
2 changes: 1 addition & 1 deletion integrations/n8n/CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

# Changelog

## 2.0.18 (2026-08-06)
## 2.0.18 (2026-08-07)

### Improvements

Expand Down
2 changes: 1 addition & 1 deletion packages/cli/CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# Changelog

## 2026.8.1 (6 августа 2026)
## 2026.8.1 (7 августа 2026)

- **Добавлено** (auth login): Вход через браузер — без ручной вставки токена. CLI показывает адрес и код, открывает браузер и ждёт подтверждения. Токен такого входа живёт час и продлевается сам перед каждой командой; при параллельных процессах обновляет только один, остальные ждут результат. Флаг `--no-browser` печатает адрес и код, не открывая браузер. `--token` и `PACHCA_TOKEN` работают как раньше — это путь для CI и агентов
- **Добавлено** (auth login): Токен хранится в хранилище ключей ОС — Keychain на macOS, Secret Service на Linux, Диспетчер учётных данных на Windows; в файле конфигурации остаются только имя, почта и права. Где хранилища нет (headless-машина, контейнер), CLI сохраняет токен в файл и сообщает об этом при входе. Отказаться от хранилища: флаг `--insecure-storage` или переменная `PACHCA_SECRET_STORE=file`
Expand Down
2 changes: 1 addition & 1 deletion packages/cli/src/data/changelog.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
[
{
"version": "2026.8.1",
"date": "6 августа 2026",
"date": "7 августа 2026",
"changes": [
{
"type": "+",
Expand Down
59 changes: 55 additions & 4 deletions scripts/check-changelog-sync.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -130,6 +130,55 @@ function releasesForProduct(ref, product) {
}
}

/**
* Whether the release entries declare a release, rather than just fixing the
* metadata of one that already shipped.
*
* A release slipping past midnight is normal: the entry is written on one day
* and merged on the next, and the date then has to be corrected. That correction
* touches no code, so without this the gate would demand a code change for a
* pure date fix — and the only way to satisfy it would be to invent one.
*
* A release is declared when a version appears, disappears, or its list of
* changes is edited. A date moving on a version that was already there is not.
*/
function declaresRelease(before, after) {
const byVersion = (list) => new Map(list.map((r) => [r.version, r]));
const prev = byVersion(before);
const next = byVersion(after);

if (prev.size !== next.size) return true;

for (const [version, entry] of next) {
const old = prev.get(version);
if (!old) return true;
if (JSON.stringify(old.changes) !== JSON.stringify(entry.changes)) return true;
}
return false;
}

/**
* Whether a package's own changelog changed in substance, or only in its dates.
*
* Same reason as `declaresRelease`: a release written on one day and merged on
* the next needs its date corrected, and that correction is not a release.
* Dates are blanked on both sides before comparing — in the CLI's JSON entries
* and in the `## 2.0.18 (2026-08-07)` headings of the n8n changelog.
*/
function contentChangedBeyondDate(base, file) {
const withoutDates = (text) =>
text.replace(/"date":\s*"[^"]*"/g, '"date":""').replace(/^(##\s+\S+)\s+\([^)]*\)/gm, '$1');

try {
return (
withoutDates(sh(`git show ${base}:${file}`)) !== withoutDates(sh(`git show HEAD:${file}`))
);
} catch {
// A file that is new or gone on either side is a real change.
return true;
}
}

const base = resolveBase();
if (!base) {
// Fail closed. Skipping here turned the whole gate into a no-op whenever the
Expand Down Expand Up @@ -157,10 +206,12 @@ for (const pkg of PACKAGES) {
// Editing a generated changelog alone is sync-fixing, not declaring a
// release — see the comment on `sourceChangelogs` in the PACKAGES table.
const ownChanged =
pkg.sourceChangelogs.length > 0 && changedFiles(base, pkg.sourceChangelogs).length > 0;
const releasesChanged =
JSON.stringify(releasesForProduct(base, pkg.product)) !==
JSON.stringify(releasesForProduct('HEAD', pkg.product));
pkg.sourceChangelogs.length > 0 &&
changedFiles(base, pkg.sourceChangelogs).some((file) => contentChangedBeyondDate(base, file));
const releasesChanged = declaresRelease(
releasesForProduct(base, pkg.product),
releasesForProduct('HEAD', pkg.product)
);
const changelogWritten = ownChanged || releasesChanged;

const changelogTargets = [`${RELEASES} (product "${pkg.product}")`, ...pkg.ownChangelogs].join(
Expand Down
Loading