Commit Graph
100 Commits
Author SHA1 Message Date
bircni 33f3ff10b6 fix: drop only control character references from Markdown, keep escaped quotes in env files, reject prefill-less inline comment edits, relabel the token's account
Signed-off-by: bircni <bircni@icloud.com>
2026-10-18 20:56:34 +02:00
bircni dd2ec74d96 fix(team,repo,org,wiki,auth): detect a kept admin permission, validate topics up front, page public members, name disabled wikis, treat auth switch's account as --user
Signed-off-by: bircni <bircni@icloud.com>
2026-10-18 20:40:25 +02:00
bircni 339527b26c fix(pr,time,release): closed PRs for checkout and edit, dismiss state check first, worktree-aware checkout errors, exact piped durations (follow gh)
Signed-off-by: bircni <bircni@icloud.com>
2026-10-18 20:38:01 +02:00
bircni 6224190bd9 test: give the integration SSH key a comment, since the title defaults to it
Signed-off-by: bircni <bircni@icloud.com>
2026-10-18 20:26:06 +02:00
bircni fa14c6e7a4 style: fix a doc comment typo
Signed-off-by: bircni <bircni@icloud.com>
2026-10-18 20:09:06 +02:00
bircni efd3383ff9 fix(pr): review decision ignores comment reviews, paged review list, pending review comments hidden, team request names (follow gh)
Signed-off-by: bircni <bircni@icloud.com>
2026-10-18 20:07:47 +02:00
bircni aa181a2b5c fix(repo): README lookup like Gitea, clearer branch/org errors, clone-after-create report, mirror interval 0 and search sort (follow gh)
Signed-off-by: bircni <bircni@icloud.com>
2026-10-18 20:03:55 +02:00
bircni 8305a89531 fix: page hint for comment list, keep SSH settings on re-login, hard-link-free downloads, stable OWNER/REPO#N instance (follow gh)
Signed-off-by: bircni <bircni@icloud.com>
2026-10-18 20:03:15 +02:00
bircni dfb56eae67 fix(org,team): guard the owner team rename, show permission-only team access and tidy member lookups
Signed-off-by: bircni <bircni@icloud.com>
2026-10-18 20:02:11 +02:00
bircni dd9e05c6b9 fix(wiki,notification): guard wiki edit renames, show real revision totals and tidy notification view
Signed-off-by: bircni <bircni@icloud.com>
2026-10-18 20:01:48 +02:00
bircni f7ed123cec fix(release): lightweight tags in the snap build, version fallback, man pages for help topics, draft the 1.0.0 changelog
Signed-off-by: bircni <bircni@icloud.com>
2026-10-18 20:01:14 +02:00
bircni 90df795abb fix(release): create download directories, refuse duplicate asset names and empty notes (follow gh)
Signed-off-by: bircni <bircni@icloud.com>
2026-10-18 20:00:24 +02:00
bircni c97044f76c fix(release): report an unknown target clearly, hint to push, and add --verify-tag (follow gh)
Signed-off-by: bircni <bircni@icloud.com>
2026-10-18 19:01:19 +02:00
bircni 9360f39cc8 perf(pr,issue): load the interactive create form data concurrently
Signed-off-by: bircni <bircni@icloud.com>
2026-10-18 18:59:59 +02:00
bircni 517d164d8a fix(git): prefer the upstream remote over a tracked origin when finding the repository (follow gh)
Signed-off-by: bircni <bircni@icloud.com>
2026-10-18 18:59:04 +02:00
bircni 2a221d0a81 fix: seed issue create from --template, edit and delete inline review comments, explain workflow run refs (follow gh)
Signed-off-by: bircni <bircni@icloud.com>
2026-10-18 18:58:28 +02:00
bircni 0db9ed463e fix: pr-closed-lookup (follow gh: find closed and merged pull requests by branch)
Signed-off-by: bircni <bircni@icloud.com>
2026-10-18 18:57:43 +02:00
bircni 9ce014bc75 fix: auth-decisions (follow gh: auth status exit code and GITEA_TOKEN account)
Signed-off-by: bircni <bircni@icloud.com>
2026-10-18 18:57:25 +02:00
bircni 20b9b1a2c1 style: fix lint findings from the review fixes
Signed-off-by: bircni <bircni@icloud.com>
2026-10-18 17:43:58 +02:00
bircni d0cdfe7113 fix: address verified review findings (actions-runs-1)
Signed-off-by: bircni <bircni@icloud.com>
2026-10-18 17:43:11 +02:00
bircni b69019fd74 fix: address verified review findings (admin-webhooks-keys-1)
Signed-off-by: bircni <bircni@icloud.com>
2026-10-18 17:42:51 +02:00
bircni 0910cf307a fix: address verified review findings (terminal-forms-1)
Signed-off-by: bircni <bircni@icloud.com>
2026-10-18 17:42:24 +02:00
bircni caeed59bc6 fix: address verified review findings (issues-1)
Signed-off-by: bircni <bircni@icloud.com>
2026-10-18 17:41:33 +02:00
bircni e28bb6e039 fix: address verified review findings (labels-milestones-time-1)
Signed-off-by: bircni <bircni@icloud.com>
2026-10-18 17:40:59 +02:00
bircni be3b8a1ced fix: address verified review findings (completion-target-ref-1)
Signed-off-by: bircni <bircni@icloud.com>
2026-10-18 17:40:30 +02:00
bircni 432d139071 fix: address verified review findings (actions-workflows-values-1)
Signed-off-by: bircni <bircni@icloud.com>
2026-10-18 17:40:06 +02:00
bircni 401650b489 fix: address verified review findings (pulls-1)
Signed-off-by: bircni <bircni@icloud.com>
2026-10-18 17:39:24 +02:00
bircni 58f0fc4bf9 fix: address verified review findings (branches-checkout-status-1)
Signed-off-by: bircni <bircni@icloud.com>
2026-10-18 17:38:53 +02:00
bircni 6e523d969d fix: address verified review findings (repo-mutations-sync-1)
Signed-off-by: bircni <bircni@icloud.com>
2026-10-18 17:38:53 +02:00
bircni 0d47b3f149 fix: address verified review findings (auth-config-doctor-1)
Signed-off-by: bircni <bircni@icloud.com>
2026-10-18 17:38:52 +02:00
bircni e15ea907be fix: address verified review findings (cli-core-1)
Signed-off-by: bircni <bircni@icloud.com>
2026-10-18 17:38:52 +02:00
bircni a47dbc413c fix: address verified review findings (terminal-output-1)
Signed-off-by: bircni <bircni@icloud.com>
2026-10-18 17:38:52 +02:00
bircni 6b847058eb fix: address verified review findings (api-transport-download-1)
Signed-off-by: bircni <bircni@icloud.com>
2026-10-18 17:38:51 +02:00
bircni 45c564811e fix: address verified review findings (comments-views-search-1)
Signed-off-by: bircni <bircni@icloud.com>
2026-10-18 17:38:51 +02:00
bircni 3e522ac5ec fix: address verified review findings (misc-1)
Signed-off-by: bircni <bircni@icloud.com>
2026-10-18 17:38:50 +02:00
bircni 61f492d96d fix: address verified review findings (docs-deps-surface-1)
Signed-off-by: bircni <bircni@icloud.com>
2026-10-18 17:38:50 +02:00
bircni e0fc5e965d docs(config): describe every setting in config set --help
Signed-off-by: bircni <bircni@icloud.com>
2026-10-18 17:21:33 +02:00
bircni 0a02cb80c5 fix: keep the command word after a leading --json
Signed-off-by: bircni <bircni@icloud.com>
2026-10-18 17:20:24 +02:00
bircni 08ba777f2b fix(release): upload before deleting on --clobber; show repo view to readers without code access
Signed-off-by: bircni <bircni@icloud.com>
2026-10-18 17:19:54 +02:00
bircni 3d10badb8b fix: sanitize server text in pull request messages, auth status and notification watch
Signed-off-by: bircni <bircni@icloud.com>
2026-10-18 17:19:10 +02:00
bircni 04ad230d59 docs: note the 1.0 short-flag and argument changes; drop the stale retract
Signed-off-by: bircni <bircni@icloud.com>
2026-10-18 17:18:17 +02:00
bircni 0b7e2f01b0 perf(pr): read the pull request template with one request
Signed-off-by: bircni <bircni@icloud.com>
2026-10-18 17:17:51 +02:00
bircni 5f878c86ed fix(pr): do not delete a head branch that Gitea kept after a merge
Signed-off-by: bircni <bircni@icloud.com>
2026-10-18 17:17:38 +02:00
bircni d2e1c546e3 fix(pr): keep the body of a pending review when posting another review
Signed-off-by: bircni <bircni@icloud.com>
2026-10-18 17:17:24 +02:00
bircni 3a61db6533 feat(issue): list issues without an assignee with --no-assignee
Signed-off-by: bircni <bircni@icloud.com>
2026-10-18 17:17:11 +02:00
bircni bae885a4d2 fix(context): find the Gitea remote among all remotes of a clone
Signed-off-by: bircni <bircni@icloud.com>
2026-10-18 17:16:57 +02:00
bircni 51709abdc0 fix(wiki): list every page without stopping at an empty window
Signed-off-by: bircni <bircni@icloud.com>
2026-10-18 17:16:33 +02:00
bircni 064dbc1cbd fix(team): show public teams to non-members
Signed-off-by: bircni <bircni@icloud.com>
2026-10-18 17:16:19 +02:00
bircni 51c436ef11 fix(issue): resolve --milestone titles before IDs in list and search filters
Signed-off-by: bircni <bircni@icloud.com>
2026-10-18 17:16:05 +02:00
bircni 219798732d fix(auth): print only a token that belongs to the selected account
Signed-off-by: bircni <bircni@icloud.com>
2026-10-18 17:15:52 +02:00
bircni 4d6e68ed85 fix(doctor): check the account when the instance requires sign-in to view
Signed-off-by: bircni <bircni@icloud.com>
2026-10-18 17:15:38 +02:00
bircni f61ee4b4cc fix(repo): add the upstream remote when cloning a pull mirror
Signed-off-by: bircni <bircni@icloud.com>
2026-10-18 17:15:25 +02:00
bircni 843c3c2977 test: update the integration tests to the 1.0 command and output behavior
Signed-off-by: bircni <bircni@icloud.com>
2026-10-18 17:14:46 +02:00
bircni 061652810a fix(deps): update goldmark and golang.org/x modules
Signed-off-by: bircni <bircni@icloud.com>
2026-10-18 17:14:46 +02:00
bircni f75568a8df fix(release): refuse a stray true or false word after --draft and --prerelease on release edit
Signed-off-by: bircni <bircni@icloud.com>
2026-10-18 17:14:46 +02:00
bircni 7437f45d9a fix(team): keep the access of read and write teams when editing --unit
Signed-off-by: bircni <bircni@icloud.com>
2026-10-18 17:14:46 +02:00
bircni 45e015e7dc fix(auth): make logout reject only the credential tea stored
Signed-off-by: bircni <bircni@icloud.com>
2026-10-18 17:14:46 +02:00
bircni d67963b29a fix(terminal): drop escape sequences that markdown character references decode to
Signed-off-by: bircni <bircni@icloud.com>
2026-10-18 17:14:45 +02:00
bircni 09e9f7f668 docs: tighten the completion and 1.0 migration notes
Signed-off-by: bircni <bircni@icloud.com>
2026-10-12 20:49:33 +02:00
bircni 1917fc7471 refactor(terminal): inline the column fitting and shorten doc comments
Signed-off-by: bircni <bircni@icloud.com>
2026-10-12 20:49:33 +02:00
bircni dbe2d376fe refactor(services): share the SDK list-page wrapper
Signed-off-by: bircni <bircni@icloud.com>
2026-10-12 20:49:33 +02:00
bircni 9df6cb7dd3 test: merge duplicate terminal, git and Actions service tests
Signed-off-by: bircni <bircni@icloud.com>
2026-10-12 20:49:32 +02:00
bircni aee57be8b9 test(repo,release): fold the repo delete report into the --yes test and drop redundant setup
Signed-off-by: bircni <bircni@icloud.com>
2026-10-12 20:48:01 +02:00
bircni b79845b9f3 refactor(repo,org,team,release): trim help texts, obvious comments and single-use helpers
Signed-off-by: bircni <bircni@icloud.com>
2026-10-12 20:48:01 +02:00
bircni d5aef95855 test(pr): drop cases that repeat covered pr list, merge, review and diff paths
Signed-off-by: bircni <bircni@icloud.com>
2026-10-12 20:48:00 +02:00
bircni 2826726557 refactor(issue,pr): trim help, restating comments and single-use helpers
Cut issue, pr, label, milestone and comment examples to at most three, drop
doc comments that only restate the name, fold the comment and attachment
argument lookups into one closure each, and inline label helpers with one
caller.

Signed-off-by: bircni <bircni@icloud.com>
2026-10-12 20:48:00 +02:00
bircni 4a85bb3d40 test(actions): drop duplicate cases and share the checks server
Signed-off-by: bircni <bircni@icloud.com>
2026-10-12 20:48:00 +02:00
bircni 71d84b070b refactor(actions): trim help examples and restating comments
Signed-off-by: bircni <bircni@icloud.com>
2026-10-12 20:48:00 +02:00
bircni f783de3564 docs(completion): shorten completer doc comments
Signed-off-by: bircni <bircni@icloud.com>
2026-10-12 20:48:00 +02:00
bircni fa9cb4f852 docs(help): trim examples and verbose doc comments in core commands
Signed-off-by: bircni <bircni@icloud.com>
2026-10-12 20:48:00 +02:00
bircni a0d4e85605 test(app): drop completion and table cases other tests already cover
Signed-off-by: bircni <bircni@icloud.com>
2026-10-12 20:48:00 +02:00
bircni a24acef26c fix(run): keep the permission bits of extracted artifact files
Signed-off-by: bircni <bircni@icloud.com>
2026-10-12 20:36:16 +02:00
bircni f51af883c6 fix(repo): archive after the other edits in repo edit
Signed-off-by: bircni <bircni@icloud.com>
2026-10-12 20:35:08 +02:00
bircni 1fa954b74b docs: drop planning IDs from code comments
Signed-off-by: bircni <bircni@icloud.com>
2026-10-12 20:33:45 +02:00
bircni 2c17f374cb fix(ref): treat X#N as a reference only when X names a repository
Signed-off-by: bircni <bircni@icloud.com>
2026-10-12 20:32:29 +02:00
bircni 048bb291fc fix(auth): resolve a bare GITEA_TOKEN host in completion and the Git helper
Signed-off-by: bircni <bircni@icloud.com>
2026-10-12 20:31:09 +02:00
bircni c22e8550da refactor(run): drop the unused job of a run URL
Signed-off-by: bircni <bircni@icloud.com>
2026-10-12 20:29:37 +02:00
bircni 57cbded4a0 fix(pr): delete the local branch on merge only when asked to
Signed-off-by: bircni <bircni@icloud.com>
2026-10-12 20:28:35 +02:00
bircni 102de5a2c2 fix(output): always report warnings on stderr
Signed-off-by: bircni <bircni@icloud.com>
2026-10-12 20:27:12 +02:00
bircni badd934d64 fix(pr): prefer an open pull request over a merged one recorded by checkout
Signed-off-by: bircni <bircni@icloud.com>
2026-10-12 20:25:40 +02:00
bircni 12972e6327 perf(services): stop reading pull requests once a filtered page is full
Signed-off-by: bircni <bircni@icloud.com>
2026-10-12 20:24:25 +02:00
bircni ac0127fa83 fix(git): refuse to sync a branch checked out in another worktree
Signed-off-by: bircni <bircni@icloud.com>
2026-10-12 20:23:02 +02:00
bircni ab8ba6df4f docs: shorten help and migration texts to gh-like brevity
Long texts no longer restate the flag list, the instance selection
of tea help environment, the config keys with descriptions or the
team argument rules shown under ARGUMENTS; webhook events come from
services.WebhookEvents; the migration guide refers to tea help
formatting for the terminal layout.

Signed-off-by: bircni <bircni@icloud.com>
2026-10-12 20:14:09 +02:00
bircni 8bf979099b perf: drop wasted requests and reuse markdown renderers
pr edit with reviewers and other fields reads the pull request once,
org delete counts only repositories, org view counts concurrently,
team list skips the repository count of all-repository teams,
pr diff --web builds the URL locally, pr list re-reads pull requests
concurrently for review fields, and glamour renderers are built once
per width and color.

Signed-off-by: bircni <bircni@icloud.com>
2026-10-12 18:44:29 +02:00
bircni af14803b3a refactor(services): leave CLI flag and command names to the app layer
Services report ErrRunScanExhausted, ErrMaxPages and plain conflicts,
and the commands add the --branch/--max-pages/--force hints. Unknown
label names use the shared NotFoundError, and the repository-scoped
review and team search refusal moves into tea search's own usage
check.

Signed-off-by: bircni <bircni@icloud.com>
2026-10-12 18:44:29 +02:00
bircni f2f1dd1e34 refactor(flags): accept plural flag names through one normalize function
Every command accepts a flag's plural, such as --add-labels for
--add-label (D8), instead of per-command alias maps.

Signed-off-by: bircni <bircni@icloud.com>
2026-10-12 18:44:29 +02:00
bircni dc24231ebc test: share the first-page and clock helpers
writeFirstPage answers paged listings in app and services tests,
testNow replaces the copied clock, withoutANSI the second color
stripper, and the single-entry table test becomes a plain test.

Signed-off-by: bircni <bircni@icloud.com>
2026-10-12 14:25:38 +02:00
bircni 83924892ff refactor: reuse the existing service and rendering helpers
services.IsNotFound replaces the hand-rolled 404 checks, convertPage
the copied page conversions and lastPathNumber the comment's own
number parser. The List wrappers around ListPage of releases,
branches, wiki pages, secrets and variables go, pull request filters
resolve milestones through Milestones.FindOne like issues, and
localFlagsChanged, boolOrder, Cell.Render, stateBadge and dueText
replace their copies.

Signed-off-by: bircni <bircni@icloud.com>
2026-10-12 11:22:52 +02:00
bircni 29f62da006 refactor: load settings once per run and reuse shared helpers
The application caches the settings snapshot and reloads it only after
an update through the store, so output and prompt helpers no longer
read and parse config.yml and hosts.yml several times per command.
canPrompt and chooser replace the inline prompt-policy checks.

Checks are tallied by one services.Tally, terminal.Plural replaces the
two app copies, refKind.article/noun replace the comment group's own
words, list commands use servicePage, and web URLs are built by
repositoryURL and webURL in browser.go.

Signed-off-by: bircni <bircni@icloud.com>
2026-10-12 10:57:39 +02:00
bircni 9ac5b79e9e refactor(completion): name path arguments explicitly and share firstArg
The six commands that take a file or directory argument set their
completer directly instead of a Use-line parser wrapping every
command, the first-argument-only wrappers become one firstArg helper,
and only the bash completion help keeps a custom text.

Signed-off-by: bircni <bircni@icloud.com>
2026-10-12 10:50:37 +02:00
bircni 1f4b5f868f refactor(prompts): fold Asker into Prompter and share delete confirmations
FormPrompter is the only production prompter and implements the rich
prompt API, so Ask, AskText and ConfirmDefault become the Prompter
interface and the plain Input/Confirm fallbacks go away.

Confirmations that default to no derive their non-terminal wording
from the prompt, and single deletes share deleteConfirmed for the
prompt, the request and the done line.

Signed-off-by: bircni <bircni@icloud.com>
2026-10-12 10:47:54 +02:00
bircni 6b204a34c0 refactor(output): share the JSON, created-resource and batch tails
Mutations end with a.jsonResult or a.created instead of hand-rolled
--json branches, the two identical jsonResult/writeMutationJSON helpers
become one, and writeBatchJSON checks --json itself so batch commands
share one tail.

Signed-off-by: bircni <bircni@icloud.com>
2026-10-12 10:43:46 +02:00
bircni 27e39ec4be refactor: drop the URL-based error classifier and hint lookups
Errors are named by the service call that failed: Classify,
NotFoundError and ConflictError at the call site. Remove the endpoint
parser that guessed the resource from the request path, and the
follow-up reads the explainer made at error time (repository state,
issue-vs-pull-request, the existing pull request's URL) together with
the credentialed transport each API error carried for them.

Calls that the endpoint parser covered and the services did not now
classify themselves: issues, pull requests, reviews, comments,
releases, branches, wiki pages, repositories, organizations and SSH
keys. Unclassified failures fall back to the generic
"not found (HTTP 404 GET ...)" text.

Signed-off-by: bircni <bircni@icloud.com>
2026-10-12 10:40:45 +02:00
bircni ea13c9e4f5 refactor: remove features beyond the UX plan
Drop additions that the UX plan does not ask for:

- the interactive label edit form; label edit now requires a flag
- label clone and the skip mode of label creation it needed
- repo rename rewriting the Git remote or tea.repository; it now
  warns that the remote still points to the old name
- the extra "source" remote on clones of pull mirrors
- run artifact download, which duplicates run download --zip
- 256-color and 24-bit label swatches; colors stay ANSI 16
- config list --show-source (config get keeps it)
- the membership and access GETs before team member/repo add and
  remove; Gitea's PUT and DELETE are idempotent

label edit/delete keep --by-name: it is the only way to address a
label whose name is a number that is also another label's ID.

Signed-off-by: bircni <bircni@icloud.com>
2026-10-12 10:36:50 +02:00
bircni 2ec16292f5 fix: name team repository arguments and release assets consistently
Signed-off-by: bircni <bircni@icloud.com>
2026-10-12 10:06:09 +02:00
bircni 43f35fdaed docs: describe the gh-style output, aliases and flags in the 1.0 guide
Update the migration guide for the output on terminals and in pipes,
markdown and hyperlink preferences, verb aliases and gh short flags, -q
and -y, exit codes, the inbox default of notifications, config get, auth
status and token, pr checkout branch names, pr review types, comment
commands, name addressing, and setup-git replacing old helpers. Fix the
merge example, which now needs --yes, and the contributor guide's output
and layering notes.

Signed-off-by: bircni <bircni@icloud.com>
2026-10-12 10:05:15 +02:00
bircni 50a604f169 refactor: remove helpers the new output and prompts left unused
Drop writeDownload, terminal.Require, terminal.Confirm, terminal.Row,
terminal.Record and Pulls.FindOpenByHead, which no command calls anymore,
and point their tests at the code that replaced them.

Signed-off-by: bircni <bircni@icloud.com>
2026-10-12 10:00:05 +02:00
bircni eff6efe759 test: require help texts on every command without allowlists
Signed-off-by: bircni <bircni@icloud.com>
2026-10-12 10:00:05 +02:00
bircni 5fd4be9803 refactor(errors): explain failed requests through the SDK
The hints for a missing repository, a pull request number that names an
issue and an existing pull request read the API with raw GETs from the app
layer. Read them through SDK lookups in services, which reuse the failed
request's instance and credential, and let transport only hand out that
client.

Signed-off-by: bircni <bircni@icloud.com>
2026-10-12 09:57:12 +02:00
bircni 03aa64233f refactor(completion): complete assignees and tags through the SDK
Completion fetched repository assignees and tags with raw GETs. List them
through new Repositories.Assignees and Repositories.Tags service methods on
the SDK, and remove the raw fetch helper.

Signed-off-by: bircni <bircni@icloud.com>
2026-10-12 09:55:36 +02:00