Commit Graph
233 Commits
Author SHA1 Message Date
雷电芽衣 47e5cb862f Issue templates: [FEATURE REQUEST], [BUG REPORT] and [Other] 2026-10-19 21:21:30 -04:00
雷电芽衣 c0da2bd1e2 PR template: titles start with [FEATURE REQUEST], [BUG REPORT] or [Other] 2026-10-19 21:18:40 -04:00
ZacharyZhang-NYandClaude d8e0046ad6 site: footer License link uses GitHub's blob path
The footer still built the LICENSE URL with Gitea's /src/branch/main/
layout, which 404s on github.com.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-10-19 19:36:25 -04:00
ZacharyZhang-NYandClaude ce792f180d site: point kigicli.dev at GitHub
- Worker proxies install.sh/install.ps1 from raw.githubusercontent.com.
- dist bundle: repo, releases and issues links go to
  github.com/ELY-Open-Source/Kigi-CLI, and the Gitea icon and labels become
  the GitHub mark ("Star on GitHub").

Co-Authored-By: Claude <noreply@anthropic.com>
2026-10-19 19:22:12 -04:00
ZacharyZhang-NYandClaude a848b8f06c Move releases, self-update and links to ELY-Open-Source on GitHub
- kigi-env: update_base_url defaults to
  api.github.com/repos/ELY-Open-Source/Kigi-CLI/releases.
- install.sh / install.ps1: resolve releases from the same API.
- /feedback and the no-session feedback fallback open GitHub issues/new;
  /docs opens the README on GitHub.
- SECURITY, NOTICE, AGENTS, CONTRIBUTING: GitHub repo, issues and fork-based
  pull requests replace git.zacharyzhang.com and AGit.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-10-19 19:22:12 -04:00
ZacharyZhang-NYandClaude a21cb266c5 ci: release on GitHub-hosted runners
Move the tag-triggered release pipeline from .gitea/workflows to
.github/workflows for github.com/ELY-Open-Source/Kigi-CLI:

- ubuntu-latest (x86_64 linux), ubuntu-24.04-arm (native aarch64 linux),
  macos-latest (both darwin targets), windows-latest (msvc).
- gh release with GITHUB_TOKEN keeps the draft -> per-target upload ->
  SHA256SUMS -> publish ordering and the kigi-<version>-<triple> asset names.
- upload/download-artifact v4 for the checksum lines.
- docs/RELEASE.md: GitHub runner layout replaces the Gitea runner setup.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-10-19 19:22:11 -04:00
ZacharyZhang-NYandClaude Opus 5.5 4d034cc5c8 chore(release): bump workspace version to 0.1.21
Release / publish release (push) Successful in 3s
Release / prepare draft release (push) Successful in 8s
Release / build (x86_64-apple-darwin) (push) Successful in 1h4m24s
Release / build (x86_64-unknown-linux-gnu) (push) Successful in 26m25s
Release / build (aarch64-apple-darwin) (push) Successful in 1h8m15s
Release / build (aarch64-unknown-linux-gnu) (push) Successful in 27m25s
Release / build (x86_64-pc-windows-msvc) (push) Successful in 20m43s
The first release built and published on Gitea since the forge moved back.
THIRD-PARTY-NOTICES carries the new workspace crate versions; no dependency changed.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
v0.1.21
2026-10-10 02:54:48 -04:00
ZacharyZhang-NYandClaude Opus 5.5 ddecaea075 Return the forge to Gitea: releases, self-update, links, CI
The GitHub account is gone again, so git.zacharyzhang.com/ZacharyZhang-NY/Kigi-CLI
is the canonical repo. Reverse f7a4cb6:

- .gitea/workflows/release.yml: restore the Gitea edition retired in f7a4cb6
  (draft release, per-target upload, SHA256SUMS, then publish). The Windows
  leg runs on the windows-amd64 label the current runner advertises.
- .github/workflows/{release,warm-cache}.yml: drop them; they target hosted
  GitHub runners and softprops, and Gitea ignores them once .gitea exists.
- kigi-env: update_base_url defaults to the Gitea Releases API again.
- install.sh / install.ps1: resolve releases from git.zacharyzhang.com.
- feedback, /docs, SECURITY.md, frontend worker + site: repo, issues and
  raw-file links point at git.zacharyzhang.com.
- docs/RELEASE.md: Gitea edition of the checklist with the current runners.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-10 02:25:59 -04:00
ZacharyZhang-NY 963a3383df docs: add AGit pull request instructions 2026-10-09 19:46:41 +00:00
ZacharyZhang-NY cdeae6db89 feat(videos): add kigi-graph-bauhaus HyperFrames promo video project
Keep env.md (local MiniMax API key read by tts.py) out of the repo.
2026-10-09 15:43:10 -04:00
ZacharyZhang-NYandClaude Opus 5.5 719638875b docs(agents): upstream references come from the local grok-build clone
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-05 23:42:01 -04:00
雷电芽衣 e63d36468b chore(legal): regenerate THIRD-PARTY-NOTICES for the 0.1.20 workspace version
Release / build (aarch64-apple-darwin) (push) Canceled after 0s
Release / build (aarch64-unknown-linux-gnu) (push) Canceled after 0s
Release / build (x86_64-unknown-linux-gnu) (push) Failing after 6s
Release / build (x86_64-apple-darwin) (push) Canceled after 0s
Release / build (x86_64-pc-windows-msvc) (push) Canceled after 0s
Release / publish GitHub Release (push) Canceled after 0s
v0.1.20
2026-09-29 22:02:32 -04:00
雷电芽衣 389a931cad chore(release): bump workspace version to 0.1.20 2026-09-29 22:02:32 -04:00
雷电芽衣 9a2a9eac99 feat(login): custom provider logins fetch and select models
After the base URL, name, and key steps, the login now opens a model
selection screen instead of blindly saving. The listing fetch runs
concurrently with a manual-id input — a WAF challenge page or a 404 no
longer passes validation silently: a base without a /vN tail is probed
once as {base}/v1 and the working base is adopted, an anthropic-wire
listing that 401s on x-api-key retries once with Bearer (relays gate
GET /models on Bearer while /messages takes the key header), and a
failed fetch shows its reason while manual add stays usable. The chosen
ids persist as [platforms.<name>] models = [...]; catalog assembly
synthesizes selected ids the listing never served (before [model.*]
overrides so they compose) and filters unselected provider entries
(after overrides, authoritative in the provider namespace). Provider-
owned entries keep their declared wire against donor backend
inheritance, and listing errors quote line/column only — a reflected
body could carry the key.
2026-09-29 22:00:20 -04:00
雷电芽衣 1d631a07fa fix(tui): welcome auth inputs paste with Ctrl/Super+V
The API-key, custom-provider, and loopback paste boxes matched
KeyCode::Char without checking modifiers, so Ctrl+V inserted a literal
'v' and no chord read the host clipboard. The arms now read the
clipboard through is_paste_key/is_inline_paste_key (the picker.rs
pattern) and the char fallthrough is gated by is_text_input_key, so
Ctrl+letter chords no longer type.
2026-09-29 21:57:19 -04:00
雷电芽衣 c56660fe07 chore(legal): regenerate THIRD-PARTY-NOTICES for the 0.1.19 workspace version
Release / build (x86_64-unknown-linux-gnu) (push) Failing after 6s
Release / build (aarch64-apple-darwin) (push) Canceled after 0s
Release / build (aarch64-unknown-linux-gnu) (push) Canceled after 0s
Release / build (x86_64-apple-darwin) (push) Canceled after 0s
Release / build (x86_64-pc-windows-msvc) (push) Canceled after 0s
Release / publish GitHub Release (push) Canceled after 0s
v0.1.19
2026-09-29 16:54:21 -04:00
雷电芽衣 3bde7fe851 chore(release): bump workspace version to 0.1.19 2026-09-29 16:53:53 -04:00
雷电芽衣 793b93b74d test(subagent): the auth-scheme test joins the existing tests module 2026-09-29 16:53:07 -04:00
雷电芽衣 c9855c4bb6 fix(review): custom provider login comments, doc placement, subagent scheme test
The subagent auth-scheme lookup is now a function with a test. The failed-login
span carries the same method id as the successful one. README order matches the
code: the provider is saved, then the key is checked.
2026-09-29 16:50:03 -04:00
雷电芽衣 c4ef8a3779 docs+test: custom providers in README and AGENTS.md, provider-only startup PTY test
Also records the codex catalog at eight models and the 0.159.0 User-Agent.
2026-09-29 16:37:56 -04:00
雷电芽衣 ae40ba8da2 test(inspect): serialize the version_overrides test against KIGI_TEST_VERSION setters
It read the installed version while serial tests set a broken one, and failed
about one full run in four.
2026-09-29 16:34:19 -04:00
雷电芽衣 de42bb55c9 feat(models): gpt-6.1-sol joins the compiled-in codex catalog; codex User-Agent follows 0.159.0
The Codex backend (client_version 0.159.0) served eight list+supported models on
2026-09-29, gpt-6.1-sol first: context 272000, efforts low..max, default low.
POST /codex/responses with kigi's codex headers answers 200 and completes.
2026-09-29 16:34:19 -04:00
雷电芽衣 791f953c07 feat(login): custom provider rows, URL / name / key steps, and custom:<name> authenticate
The picker lists Custom provider (OpenAI compatible) and (Anthropic compatible).
The TUI asks for a base URL, a name (default from the host), and a key, saves the
definition and the key, and the agent validates the key against GET {base}/models.
PTY e2e covers both wires against the mock inference server.
2026-09-29 16:10:41 -04:00
雷电芽衣 eb86d7ec26 fix(shell): turns read the auth scheme and BYOK status from the live catalog
reconstruct_full_config and the subagent spawn resolved both from a disk reload
that never holds fetched entries, so a fetched Messages model (anthropic,
minimax) went out with Authorization: Bearer instead of x-api-key.
2026-09-29 16:10:41 -04:00
雷电芽衣 2ca1f3baa7 feat(shell): custom providers declared in config.toml join the model catalog
[platforms.<name>] with base_url and api (openai or anthropic) declares a provider.
Its key lives in auth.json under the name or in the table; /models is fetched per
provider, entries are keyed <name>/<model>, and the key is stamped in memory only.
2026-09-29 14:50:24 -04:00
雷电芽衣 4514b66ffe feat(models): custom provider wire kinds, name and base-URL rules 2026-09-29 14:08:29 -04:00
雷电芽衣 45edd7bf33 docs(agents): record the 0.1.19 upstream sync window and what it left behind 2026-09-29 14:03:38 -04:00
雷电芽衣 ceff1d7cc7 fix(tui): a second Ctrl+C cancels a plan comment
The first Ctrl+C clears the draft; the second did nothing and left the user in
comment mode. Both the approval and the casual preview paths now cancel.
2026-09-29 14:02:43 -04:00
雷电芽衣 041c5ca030 fix(tui): a bracketed paste that is not the clipboard never attaches its image
The origin check ran only on Otty. An IME commit or a diverged tmux buffer on any
other terminal attached whatever image sat on the clipboard.
2026-09-29 13:54:45 -04:00
雷电芽衣 0e063e5b02 fix(tui): y copies the whole queued prompt; a finished queue edit refocuses the composer
y copied the truncated display row. Saving or discarding a row edit left focus on
the queue pane, so the next Enter re-opened the edit instead of sending.
2026-09-29 13:43:56 -04:00
雷电芽衣 b840fff80c fix(sampler): Messages streams keep every thinking block and join split signatures
A turn with interleaved thinking lost all but its last signed block on
replay, and a signature split across deltas kept only its last part.
2026-09-29 13:32:03 -04:00
雷电芽衣 cb4c2eaad9 update version
Release / build (x86_64-unknown-linux-gnu) (push) Failing after 6s
Release / build (aarch64-apple-darwin) (push) Canceled after 0s
Release / build (aarch64-unknown-linux-gnu) (push) Canceled after 0s
Release / build (x86_64-pc-windows-msvc) (push) Canceled after 0s
Release / publish GitHub Release (push) Canceled after 0s
Release / build (x86_64-apple-darwin) (push) Canceled after 0s
v0.1.18
2026-09-22 18:43:42 -04:00
雷电芽衣 cfde4e91a1 chore(legal): regenerate THIRD-PARTY-NOTICES for the 0.1.18 workspace version 2026-09-22 18:42:49 -04:00
雷电芽衣 5082bd47ee chore(release): bump workspace version to 0.1.18 2026-09-22 18:42:49 -04:00
雷电芽衣 5d70140d62 docs(agents): the codex table is seven models 2026-09-22 18:42:49 -04:00
雷电芽衣 299c6bcfcb chore(sampler): codex User-Agent follows the 0.156.0 release 2026-09-22 18:42:49 -04:00
雷电芽衣 6be9ab0aea feat(models): gpt-6-sol and gpt-6-luna join the compiled-in codex catalog
The Codex backend (client_version 0.156.0) served seven list+supported
models on 2026-09-22: gpt-6-astra, gpt-6-sol, gpt-6-luna, then
gpt-5.6-sol/terra/luna and gpt-5.5. Sol and Luna carry context 272000,
efforts low..max, default medium. POST /codex/responses with kigi's codex
headers answers 200 and completes for both.
2026-09-22 18:42:49 -04:00
ZacharyZhang-NY 0e4e446fe4 docs(agents): record where Shift+Enter can and cannot arrive
Release / build (x86_64-unknown-linux-gnu) (push) Failing after 6s
Release / publish GitHub Release (push) Canceled after 0s
Release / build (aarch64-apple-darwin) (push) Canceled after 0s
Release / build (aarch64-unknown-linux-gnu) (push) Canceled after 0s
Release / build (x86_64-apple-darwin) (push) Canceled after 0s
Release / build (x86_64-pc-windows-msvc) (push) Canceled after 0s
v0.1.17
2026-09-21 19:25:20 -04:00
ZacharyZhang-NY 008b6623f6 docs(tui): correct the VTE and WezTerm notes around the Shift+Enter hint 2026-09-21 19:25:04 -04:00
ZacharyZhang-NY f8cd33d19d fix(tui): the Shift+Enter hint follows the protocol, not a brand list
`shift_enter_unavailable` kept its own list of brands and missed every
other reason the Kitty keyboard protocol gets skipped: JetBrains, screen,
tmux below 3.3 and tmux with `extended-keys off` all swallow it, yet the
prompt still advertised Shift+Enter there. It now reads
`kitty_skip_reason` directly. Two skips deliver the modifier another way
and stay available: Apple Terminal, where `route_enter` polls
CoreGraphics, and Windows Terminal, where the console key record carries
SHIFT — a bare ConHost, only optimistically refined to Windows Terminal,
keeps advertising Alt+Enter.

The old list also carried a `VTE_VERSION >= 8200` cutoff, citing VTE
0.82.0 as the first release with the protocol. It is not: at tag 0.82.0
the string "kitty" appears nowhere in `src/parser-seq.py`, `src/vte.cc`
or `src/widget.cc`, and `_vte_keymap_GDK_Return` encodes only Alt
(`ESC CR`), so Shift+Enter leaves a VTE terminal as the same bare CR as
Enter. Every VTE now advertises Alt+Enter, and `/terminal-setup` stops
telling GNOME Terminal users to upgrade to a version that would not
help. It also stops advertising Alt+Enter to WezTerm, which binds that
chord to ToggleFullScreen.
2026-09-21 19:19:21 -04:00
ZacharyZhang-NY 2e40ebb08b docs(agents): the codex table is five models, and how to refresh it 2026-09-21 18:43:46 -04:00
ZacharyZhang-NY fcb7588312 feat(models): gpt-6-astra joins the compiled-in codex catalog
The Codex backend served five `visibility=list` + `supported_in_api`
models on 2026-09-21: `gpt-6-astra` ahead of `gpt-5.6-sol/terra/luna`
and `gpt-5.5`. Astra carries context 272000 and efforts
low/medium/high/xhigh/max, default medium; the `ultra` tier it also
advertises has no kigi level and is left out. `gpt-reserve` and
`codex-auto-review` stay hidden.

Inference checked against the live backend: `POST
/backend-api/codex/responses` with `model: gpt-6-astra` and the codex
`User-Agent` kigi sends answers 200 and streams, so the model works on
the compiled-in path.
2026-09-21 18:42:22 -04:00
ZacharyZhang-NY 9ab038f573 docs(agents): rewrap the reasoning-effort paragraph 2026-09-21 18:39:46 -04:00
ZacharyZhang-NY dd5711f24f docs(agents): the codex backend does advertise an ultra tier 2026-09-21 18:39:40 -04:00
ZacharyZhang-NY a690987ea2 revert: openai-codex goes back to the compiled-in catalog
Reverts c61977c. The live listing needed no codex CLI on the user's
machine — kigi issued the request itself and `client_version` was a
compiled-in string — but the project keeps the catalog in the binary, so
the fetch path, the `OpenaiCodex` listing dialect, its parser and the
pinned client version are gone again, and the codex `User-Agent` returns
to its previous value.

The models.dev provider rename `kimi-for-coding` → `kimi-code-plan-cn`
rode in the same commit and stays: the regenerated snapshot ships under
the new id.
2026-09-21 18:36:46 -04:00
ZacharyZhang-NY 95d4f19650 chore(legal): regenerate THIRD-PARTY-NOTICES for the 0.1.17 workspace version 2026-09-21 15:16:47 -04:00
ZacharyZhang-NY 99e09cfaf5 chore(release): bump workspace version to 0.1.17 2026-09-21 15:16:13 -04:00
ZacharyZhang-NY 0c580afb5f chore(models): regenerate the models.dev enrichment snapshot
`xai` and `openai` carry `restrict_to_enriched`, so a live listing id the
enrichment catalog does not know is dropped. The bundled snapshot knew
neither `grok-4.7` nor `gpt-6-astra`, which left both invisible offline
and until the 24h models.dev refresh landed.

Regeneration also tripped the generator's fail-fast: models.dev renamed
the Kimi coding provider. `kimi-for-coding` is now `kimi-code-plan-cn`
(api.kimi.com — kigi's endpoint), with `kimi-code-plan-global` the
api.kimi.ai twin; the model set is unchanged. Both registry rows, the
generator target and the two snapshot lookups follow the new id, and the
cache `keep_set` guard invalidates any cache filtered under the old one.
2026-09-21 15:13:00 -04:00
ZacharyZhang-NY c61977cb70 feat(models): fetch the openai-codex catalog live
The ChatGPT Codex catalog was compiled in: four models read once from the
Codex CLI cache. The backend moved on — `gpt-6-astra` shipped, and
`gpt-5.3-codex-spark` left — so the picker showed a table that no longer
matched the account.

`GET https://chatgpt.com/backend-api/codex/models?client_version=<v>`
serves that table. Verified against a live ChatGPT account: the OAuth
Bearer alone returns 200, the query is required (400 without it), and the
backend gates the catalog on it — `0.104.0` answers with
`codex-auto-review` alone, `0.150.0` omits `gpt-6-astra`, `0.155.1`
serves the full set. `CODEX_CLIENT_VERSION` pins the current upstream
release (openai/codex rust-v0.155.1) and the codex `User-Agent` now
derives from it, so the two can never drift.

`ListingDialect::OpenaiCodex` + `parse_openai_codex_listing` keep the
`visibility == "list" && supported_in_api` models and carry the wire
context window and per-model reasoning levels; `hardcoded_catalog` and
its short-circuit in the fetch path are gone. The catalog advertises an
`ultra` tier kigi has no level for — `think_efforts_to_options` drops it
with a warning, as it does any unknown token.
2026-09-21 15:12:54 -04:00
ZacharyZhang-NY 781fb44659 chore(legal): regenerate THIRD-PARTY-NOTICES for the 0.1.16 dependency set
Release / build (x86_64-unknown-linux-gnu) (push) Failing after 5s
Release / build (aarch64-apple-darwin) (push) Canceled after 0s
Release / build (aarch64-unknown-linux-gnu) (push) Canceled after 0s
Release / build (x86_64-apple-darwin) (push) Canceled after 0s
Release / build (x86_64-pc-windows-msvc) (push) Canceled after 0s
Release / publish GitHub Release (push) Canceled after 0s
`cargo about generate about.hbs -o THIRD-PARTY-NOTICES.md` (cargo-about
0.9.2) on the 0.1.16 lock: kigi crates at 0.1.16, rustls 0.23.45,
rustls-webpki 0.103.15, aws-lc-rs 1.18.1, aws-lc-sys 0.45.0. The set of
listed crates is otherwise unchanged; the large diff is block order.
v0.1.16
2026-09-19 04:21:53 -04:00