release v2.0.1

This commit is contained in:
2025-10-22 22:49:45 +06:00
parent e37599d3ef
commit 3e1cb1e078
9 changed files with 161 additions and 36 deletions

View File

@@ -1,33 +1,53 @@
archives:
- format: tar.gz
builds:
- binary: lcg
env:
- CGO_ENABLED=0
goarch:
- amd64
- arm64
- arm
goos:
- linux
- darwin
changelog:
filters:
exclude:
- '^docs:'
- '^test:'
sort: asc
checksum:
name_template: 'checksums.txt'
release:
draft: true
snapshot:
name_template: "{{ incpatch .Version }}-next"
# This is an example .goreleaser.yml file with some sensible defaults.
# Make sure to check the documentation at https://goreleaser.com
# The lines below are called `modelines`. See `:help modeline`
# Feel free to remove those if you don't want/need to use them.
# yaml-language-server: $schema=https://goreleaser.com/static/schema.json
# vim: set ts=2 sw=2 tw=0 fo=cnqoj
version: 2
before:
hooks:
# You may remove this if you don't use go modules.
- go mod tidy
# you may remove this if you don't need go generate
- go generate ./...
builds:
- env:
- CGO_ENABLED=0
goos:
- linux
- windows
- darwin
archives:
- formats: [tar.gz]
# this name template makes the OS and Arch compatible with the results of `uname`.
name_template: >-
{{ .ProjectName }}_
{{- title .Os }}_
{{- if eq .Arch "amd64" }}x86_64
{{- else if eq .Arch "386" }}i386
{{- else }}{{ .Arch }}{{ end }}
{{- if .Arm }}v{{ .Arm }}{{ end }}
# use zip for windows archives
format_overrides:
- goos: windows
formats: [zip]
changelog:
sort: asc
filters:
exclude:
- "^docs:"
- "^test:"
release:
footer: >-
---
Released by [GoReleaser](https://github.com/goreleaser/goreleaser).

33
.goreleaser.yaml.old Normal file
View File

@@ -0,0 +1,33 @@
archives:
- format: tar.gz
builds:
- binary: lcg
env:
- CGO_ENABLED=0
goarch:
- amd64
- arm64
- arm
goos:
- linux
- darwin
changelog:
filters:
exclude:
- '^docs:'
- '^test:'
sort: asc
checksum:
name_template: 'checksums.txt'
release:
draft: true
snapshot:
name_template: "{{ incpatch .Version }}-next"
# yaml-language-server: $schema=https://goreleaser.com/static/schema.json
# vim: set ts=2 sw=2 tw=0 fo=cnqoj

View File

@@ -181,3 +181,7 @@ curl -sS -X POST \
- Добавление новых полей в ответах, не используемых клиентом, допустимо при сохранении существующих.
- Переименование или удаление полей `response` (proxy) и `message.content` (ollama) нарушит совместимость.
---
Дополнительно: для HTTP API веб‑сервера (эндпоинт `POST /execute`, только `curl`) см. `API_GUIDE.md` с примерами и подробной схемой запроса/ответа.

View File

@@ -1,6 +1,34 @@
CHANGELOG
=========
Версия 2.0.1 (2025-10-22)
=========================
## ✨ ИЗМЕНЕНИЯ И НОВОЕ
- 📱 Веб‑интерфейс: улучшена мобильная адаптация (кнопки, шрифты, отступы, верстка)
- 🧭 Учет `prefers-reduced-motion` для снижения анимаций при необходимости
- 🔌 Добавлен публичный REST эндпоинт `POST /execute` для программного доступа
- ⚠️ Ограничение безопасности: принимаются только запросы от `curl` (User-Agent)
- 📖 Подробности и примеры: см. `API_GUIDE.md`
## 🐛 ИСПРАВЛЕНИЯ И УЛУЧШЕНИЯ
- 🔧 Рефакторинг HTTPсервера: вынесен в пакет `serve/*` для лучшей поддерживаемости
- 🗑️ Удалены устаревшие файлы: `cmd/serve.go`, `_main.go`
- 🛠️ Скрипты релиза: небольшие правки в `shell-code/pre-release.sh` и `shell-code/release.py`
## 📚 ДОКУМЕНТАЦИЯ
- Добавлен `API_GUIDE.md` (описание `/execute`, примеры `curl`/Python)
- 📝 Обновлены `README.md` и `USAGE_GUIDE.md` (актуализация про мобильную версию и API)
- 🔗 В `API_CONTRACT.md` добавлена ссылка на `API_GUIDE.md` (HTTP API веб‑сервера)
## ♻️ СОВМЕСТИМОСТЬ
- ✅ Обратная совместимость сохранена; CLI и провайдеры (proxy/ollama) без изменений
- 🚫 Миграция не требуется
Версия 2.0.0 (2025-01-19)
=========================

View File

@@ -35,6 +35,11 @@ Explanations:
Clipboard support requires `xclip` or `xsel`.
## What's new in 2.0.1
- Mobile UI improvements: better responsiveness (buttons, fonts, spacing) and reduced motion support
- Public REST endpoint: `POST /execute` (curl-only) for programmatic access — see `API_GUIDE.md`
## Environment
- `LCG_PROVIDER` (default `ollama`) — provider type: `ollama` or `proxy`

View File

@@ -21,7 +21,8 @@ sudo apt-get install xsel
Сборка из исходников:
```bash
git clone --depth 1 https://github.com/Direct-Dev-Ru/linux-command-gpt.git ~/.linux-command-gpt
git clone --depth 1 https://github.com/Direct-Dev-Ru/go-lcg.git ~/.linux-command-gpt
cd ~/.linux-command-gpt
go build -o lcg
@@ -59,6 +60,12 @@ lcg --file /path/to/context.txt "хочу вывести список дирек
Действия: (c)копировать, (s)сохранить, (r)перегенерировать, (e)выполнить, (v|vv|vvv)подробно, (n)ничего:
```
### Что нового в 2.0.1
- Улучшена мобильная версия веб‑интерфейса: корректные размеры кнопок, шрифтов и отступов; адаптивная верстка
- Учитывается `prefers-reduced-motion` для снижения анимаций, если это задано в системе
- Добавлен REST эндпоинт `POST /execute` (только через curl) — см. подробности и примеры в `API_GUIDE.md`
## Переменные окружения
Можно настроить поведение без изменения командной строки.
@@ -75,6 +82,7 @@ lcg --file /path/to/context.txt "хочу вывести список дирек
| `LCG_PROVIDER` | `ollama` | Тип провайдера: `ollama` или `proxy`. |
| `LCG_JWT_TOKEN` | пусто | JWT токен для `proxy` провайдера (альтернатива — файл `~/.proxy_jwt_token`). |
| `LCG_PROMPT_ID` | `1` | ID системного промпта по умолчанию. |
| `LCG_BROWSER_PATH` | пусто | Путь к браузеру для автооткрытия (`--browser`). |
| `LCG_TIMEOUT` | `300` | Таймаут запроса в секундах. |
| `LCG_RESULT_HISTORY` | `$(LCG_RESULT_FOLDER)/lcg_history.json` | Путь к JSONистории запросов. |
| `LCG_PROMPT_FOLDER` | `~/.config/lcg/gpt_sys_prompts` | Папка для хранения системных промптов. |
@@ -109,7 +117,7 @@ lcg [глобальные опции] <описание команды>
- `--file, -f string` — прочитать часть запроса из файла и добавить к описанию.
- `--sys, -s string` — системный промпт (содержимое или ID как строка). Если не задан, используется `--prompt-id` или `LCG_PROMPT`.
- `--prompt-id, --pid int` — ID системного промпта (15 для стандартных, либо ваш кастомный ID).
- `--timeout, -t int` — таймаут запроса в секундах (по умолчанию 300).
- `--timeout, -t int` — таймаут запроса в секундах (по умолчанию 120; через `LCG_TIMEOUT` 300).
- `--no-history, --nh` — отключить запись/обновление истории для текущего запуска.
- `--debug, -d` — показать отладочную информацию (параметры запроса и промпты).
- `--version, -v` — вывести версию.
@@ -133,10 +141,11 @@ lcg [глобальные опции] <описание команды>
- `lcg prompts list --full` (`-f`) — полный вывод содержимого без обрезки длинных строк.
- `lcg prompts add` (`-a`) — добавить пользовательский промпт (по шагам в интерактиве).
- `lcg prompts delete <id>` (`-d`) — удалить пользовательский промпт по ID (>5).
- `lcg test-prompt <prompt-id> <описание>` (`-tp`): показать детали выбранного системного промпта и протестировать его на заданном описании.
- `lcg test-prompt <prompt-id> <описание>` (алиас: `tp`): показать детали выбранного системного промпта и протестировать его на заданном описании.
- `lcg serve`: запустить HTTP сервер для просмотра сохраненных результатов:
- `--port, -p` — порт сервера (по умолчанию из `LCG_SERVER_PORT`)
- `--host, -H` — хост сервера (по умолчанию из `LCG_SERVER_HOST`)
- `--browser, -b` — открыть браузер автоматически после старта
### Подробные объяснения (v/vv/vvv)
@@ -249,6 +258,9 @@ lcg serve --port 9090
# Запуск на другом хосте
lcg serve --host 0.0.0.0 --port 8080
# Автооткрытие браузера (опционально)
lcg serve --browser
# Использование переменных окружения
export LCG_SERVER_PORT=3000
export LCG_SERVER_HOST=0.0.0.0
@@ -277,6 +289,11 @@ lcg serve
- `## Command` — первая сгенерированная команда.
- `## Explanation and Alternatives (model: <MODEL>)` — подробное объяснение и альтернативы.
### Браузер
- По умолчанию UI не открывается автоматически. Для автооткрытия используйте `--browser`.
- Путь к конкретному браузеру можно задать переменной `LCG_BROWSER_PATH`.
## Выполнение сгенерированной команды
Действие `e` запустит команду через `bash -c`. Перед запуском потребуется подтверждение `y/yes`. Всегда проверяйте команду вручную, особенно при операциях с файлами и сетью.
@@ -345,7 +362,7 @@ lcg serve --host 0.0.0.0 --port 8080
## История
`lcg history` выводит историю текущего процесса (не сохраняется между запусками, максимум 100 записей):
`lcg history` выводит историю из JSONфайла (`LCG_RESULT_HISTORY`), сохраняется между запусками:
```bash
lcg history list
@@ -388,3 +405,20 @@ lcg history list
## Лицензия и исходники
См. README и репозиторий проекта. Предложения и баг‑репорты приветствуются в Issues.
## Доступ к локальному API
Эндпоинт: `POST /execute` (только через curl).
```bash
# Запустить сервер
lcg serve
# Выполнить запрос
curl -X POST http://localhost:8080/execute \
-H "Content-Type: application/json" \
-A curl \
-d '{"prompt": "create directory test", "verbose": "vv"}'
```
Подробности и примеры: `API_GUIDE.md`.

View File

@@ -1 +1 @@
v2.0.0
v2.0.1

2
go.mod
View File

@@ -8,7 +8,7 @@ require gopkg.in/yaml.v3 v3.0.1
require (
github.com/cpuguy83/go-md2man/v2 v2.0.5 //indirect
github.com/russross/blackfriday/v2 v2.1.0
github.com/russross/blackfriday/v2 v2.1.0
github.com/urfave/cli/v2 v2.27.5
github.com/xrash/smetrics v0.0.0-20240521201337-686a1a2994c1 // indirect
)

1
go.sum
View File

@@ -8,6 +8,7 @@ github.com/urfave/cli/v2 v2.27.5 h1:WoHEJLdsXr6dDWoJgMq/CboDmyY/8HMMH1fTECbih+w=
github.com/urfave/cli/v2 v2.27.5/go.mod h1:3Sevf16NykTbInEnD0yKkjDAeZDS0A6bzhBH5hrMvTQ=
github.com/xrash/smetrics v0.0.0-20240521201337-686a1a2994c1 h1:gEOO8jv9F4OT7lGCjxCBTO/36wtF6j2nSip77qHd4x4=
github.com/xrash/smetrics v0.0.0-20240521201337-686a1a2994c1/go.mod h1:Ohn+xnUBiLI6FVj/9LpzZWtj1/D6lUovWYBkxHVV3aM=
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM=
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=