Commit graph

22 commits

Author SHA1 Message Date
RoboClaw
e90948d26e
fix(ui): show hover previews for GitHub commit links (#182224)
* fix(ui): show hover previews for GitHub commit links

Reuse the GitHub preview transport, scoped cache, and shared hover card for commit links, including session-bound Enterprise reads. Preserve existing reader navigation and eligibility boundaries.

Co-authored-by: steipete <58493+steipete@users.noreply.github.com>

* fix(ui): show hover previews for GitHub commit links

Worked on by:
- @steipete

Co-authored-by: steipete <58493+steipete@users.noreply.github.com>
OpenClaw-Publication: 235c04cf-d163-4bc3-87a4-00aa61200877

---------

Co-authored-by: steipete <58493+steipete@users.noreply.github.com>
2026-10-24 12:50:47 +08:00
Peter Steinberger
34c95cb9e0
perf(github): overlap pull request comment reads (#181887)
Fetch discussion and inline review comments concurrently while retaining dispatch and delivery access checks. Preserve partial results and comment ordering. Add synthetic overlap regression and a rerunnable reader benchmark.
2026-10-23 14:49:15 -07:00
Peter Steinberger
2c9a7f6d00
perf(github): show cached hover previews without forced refresh (#179167) 2026-10-21 00:56:30 -07:00
Peter Steinberger
2ed85de7b6
perf(github): refresh expired preview avatars in background (#176790) 2026-10-18 19:15:27 -07:00
Shakker
19d311e002
fix: read public GitHub Actions job logs (#176147)
Read completed public GitHub Actions job logs through github_read while preserving public repository and credential boundaries.

Fixes #176126.
2026-10-18 11:44:55 +01:00
RoboClaw
b5ef99d705
improve: read GitHub details before checks and diffs load (#174644)
* improve: read GitHub details before checks and diffs load

Co-authored-by: steipete <58493+steipete@users.noreply.github.com>

* fix: preserve reader SDK budget and revocation expectations

Co-authored-by: steipete <58493+steipete@users.noreply.github.com>

---------

Co-authored-by: steipete <58493+steipete@users.noreply.github.com>
2026-10-16 21:19:39 +00:00
Galin Iliev
d25d32d5fa
feat(github): preview GitHub Enterprise links through admitted session readers (#173712)
* feat(identity): support configurable Enterprise GitHub coauthor credit

Co-authored-by: galiniliev <5711535+galiniliev@users.noreply.github.com>

* fix(identity): preserve enterprise credit consent across profile merges

Keep enterprise credit preferences through chained profile merges, explain host-selected credit independently of the displayed primary account, and separate worker writes from identity readers.

Co-authored-by: galiniliev <5711535+galiniliev@users.noreply.github.com>

* refactor(identity): name Enterprise GitHub coauthor support consistently

Rename the feature, internal types, worker operations and source files to Enterprise GitHub while retaining the deployed proxy header names. Carry enterprise identities through the resident profile catalog introduced on main, using the same identity projection as direct reads.

Co-authored-by: galiniliev <5711535+galiniliev@users.noreply.github.com>

* feat(control-ui): scope opted-in link readers to pane sessions

(cherry picked from commit d14e9c16b230d425eb9aca5622bef039b8d493df)

* fix(control-ui): preserve keyboard previews in session panes

* feat(github): admit foreground session reads through the selected App

* fix(github): retain Factory actor authority through session reads

* fix(github): keep App credentials scoped to foreground reads

* fix(github): read Enterprise previews through the current session App

* test(github): use an explicit synthetic App profile identifier

* test(github): use a synthetic profile in preview admission proof

* test(control-ui): mount chat panes with their application context

* fix(github): complete Factory admission integration contracts

* fix(identity): preserve issuer scope and editable coauthor consent

Co-authored-by: galiniliev <5711535+galiniliev@users.noreply.github.com>

* fix(github): isolate App keys and narrow admitted repository reads

Co-authored-by: galiniliev <5711535+galiniliev@users.noreply.github.com>

* fix(github): retain preview authority through token cleanup

Move the preview identity contract to its leaf owner and pass the selected repository into admission.

Co-authored-by: galiniliev <5711535+galiniliev@users.noreply.github.com>

* chore(github): regenerate integrated App config documentation

Canonical config docs generator and verification passed in secretless isolation, with focused admission, exec and preview regression suites plus core/plugin typechecks and lint.

Co-authored-by: galiniliev <5711535+galiniliev@users.noreply.github.com>

* fix(github): export the admitted Enterprise account resolver

The session admission caller introduced here needs the helper that main made private while it had only same-module consumers. Restore only the required export; keep metadata resolution private. Build, 72 focused tests, and core types pass.

Co-authored-by: galiniliev <5711535+galiniliev@users.noreply.github.com>

* test(gateway): prepare canonical config for native session controls

The native row in the actor/native fixture uses the storage accessor runtime snapshot, not the mocked config/io getter. Install the fixture config before each case and clear it afterward. The exact pinned Bun regression fails before this setup and all nine tests pass after it; assertions and production behavior are unchanged.

Co-authored-by: galiniliev <5711535+galiniliev@users.noreply.github.com>

---------

Co-authored-by: galiniliev <5711535+galiniliev@users.noreply.github.com>
2026-10-17 03:23:12 +08:00
Peter Steinberger
785f2467d8
perf(github): share public avatars across hover previews (#173871)
* perf(github): share public avatars across hover previews

Replace per-item decoration tracking with bounded anonymous avatar reuse across items and credential scopes. Preserve each preview deadline when joining shared work. Metadata and repository authorization remain credential-scoped.

* fix(github): give shared avatars an independent deadline

* test(github): reject canceled avatar requests with AbortError
2026-10-15 23:35:42 -07:00
Peter Steinberger
f76c0414df
perf(github): reuse unchanged preview avatar decoration (#173295) 2026-10-15 11:00:15 -07:00
RoboClaw
e8eef4f656
fix(ui): show repository-qualified GitHub issue and PR references (#172836)
* fix(ui): qualify GitHub issue and pull request references

Show owner/repo#number in GitHub item chips, previews, and pull request rows while preserving descriptive links and repository context resolution.

Co-authored-by: steipete <58493+steipete@users.noreply.github.com>

* fix(ui): show repository-qualified GitHub issue and PR references

Worked on by:
- @steipete

Co-authored-by: steipete <58493+steipete@users.noreply.github.com>
OpenClaw-Publication: d3e5389e-79cb-43ae-86be-dc0e9130609e

* test(ui): update qualified GitHub reference expectations

---------

Co-authored-by: steipete <58493+steipete@users.noreply.github.com>
Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-10-15 01:52:54 -07:00
Shakker
d7e63183c4
feat: search public GitHub issues and pull requests (#172779) 2026-10-15 04:49:16 +01:00
Shakker
494d418aa1
feat: let agents read public GitHub items (#172692)
Expose the existing public GitHub reader through github_read, with Gateway-held identity selection, current caller authority, cancellation and bounded results.
2026-10-15 04:42:12 +01:00
Peter Steinberger
3ed9529997
perf(github): avoid redundant cached preview credential reads (#171603)
Keep live credential validation at dispatch and delivery, and log slow preview phase durations without URLs or content. Preserve stale background refresh and the existing upstream deadline.
2026-10-13 20:06:42 -07:00
Peter Steinberger
fd80f72fa0
perf(github): conditionally revalidate shared hover previews (#170508)
Keep ETags and response bodies with the existing preview cache so refreshes
can reuse unchanged GitHub responses without a second invalidation owner.
Preserve public visibility checks and per-reader authority; separate injected
transports, token rotations, and anonymous fallback representations.

Synthetic WAN replay: unchanged refresh p50 416 to 47 ms and p99 431 to 51 ms;
HTTP count unchanged, 30 of 60 requests now return 304. Cold loads are neutral.
Focused preview, API, detail, and cache tests: 102 passed. Independent review
found no actionable P0-P2 findings. Broad proof belongs to PR CI.
2026-10-12 18:59:29 -07:00
RoboClaw
f023f0a704
fix(ui): render emoji shortcodes in GitHub comments (#167830)
Render named emoji shortcodes in GitHub reader descriptions and comments using the existing Markdown emoji plugin. Preserve literal code, URLs, attributes, unknown shortcodes, and emoticons without changing chat rendering or sanitization.

Reported by Jacob Tomlinson (@jacobtomlinson).

Co-authored-by: jacobtomlinson <1610850+jacobtomlinson@users.noreply.github.com>
2026-10-09 07:55:41 -07:00
Peter Steinberger
8b979cce75
perf(github): share previews and bound publication options (#165094)
Coalesce concurrent hover previews, fetch independent PR metadata together,
and keep cached previews scoped to each reader's current GitHub identity.
Limit publication-options reads to five seconds while preserving ownership
of OAuth token rotations and final authorization checks.

Public repository admission and final visibility checks remain in place.
Update the alias-owner regression for the deadline callback, retaining the
complete RPC response and repeated cross-agent routing assertions.
2026-10-05 09:30:14 +00:00
Peter Steinberger
cce1cf81a6
perf(github): share one two-second upstream budget across a preview (#161653)
Each upstream request inside a GitHub hover preview received its own
eight-second deadline, so the metadata -> commits -> co-author avatar chain
could stack several waits before the card appeared. Carry one abort signal
through visibility checks, redirects, the optional-auth fallback, item and
body reads, commits, and avatars. Slow required metadata keeps the existing
retryable unavailable response; slow optional content is omitted while the
card is preserved. Completed cache hits still make zero network requests
and the full detail reader keeps its own timeout.

Microbenchmark with an abort-aware slow transport: slow avatars after a
700 ms commits page 8,704 -> 2,001 ms wall; stalled required item
8,001 -> 2,002 ms; reopened completed previews unchanged at zero requests.
2026-09-30 05:48:35 +00:00
Peter Steinberger
d5b6e687ca
fix(github): avoid anonymous quota in authenticated link readers (#153981) 2026-09-20 21:00:36 +00:00
RoboClaw
efc4126215
improve(ui): show CI in native PR readers and keep login links ordinary (#153274)
Improve the native PR reader with exact-head CI status, clear sections and branch metadata. Keep GitHub login, authentication and general-page links ordinary while preserving genuine issue and PR previews.

Keep public-only anonymous reads, explicit partial/unavailable states, canonical URL identity and the existing startup performance budgets. Verified by focused regressions, source-UI captures, exact-head hosted CI, and native preparation.

Co-authored-by: steipete <58493+steipete@users.noreply.github.com>
2026-09-20 10:40:28 -07:00
Peter Steinberger
764cf14731
fix(ui): show actionable GitHub errors across previews and status views (#153181)
* fix(ui): show actionable GitHub errors across previews and status views

Preserve safe Gateway errors in link readers, hover cards, CI details, and project search, and warn when session PR status is stale. Keep cached details, request scoping, and credential policy intact.

* test(ui): verify visible GitHub failures through browser interactions
2026-09-19 22:27:52 +00:00
Peter Steinberger
4396f9bb39
fix(ui): display GitHub attachments and hide comment metadata (#153004)
* fix(ui): display GitHub attachments and hide comment metadata

* refactor(plugins): keep image resolver within SDK export budget

* refactor(ui): keep reader presentation within module limits

* fix(ui): preserve anonymous-CORS image fallback

* test: rebalance gateway worker environment typecheck roots
2026-09-19 12:44:03 -07:00
RoboClaw
a46de01a4a
feat: read GitHub issues, pull requests, and commits beside chat (#148464)
Keep public GitHub issues, pull requests, commits, comments, images, and diffs readable beside chat in a resizable, tabbed reader. Preserve external navigation for modified clicks and explicit links.

Move GitHub transport and document mapping into the bundled plugin, and expose the passive reader through the shared plugin contract. Preserve operator plugin controls, managed-preview credential authority, anonymous detail reads, and existing host read-library behavior.

Bind responses to their requested resource, retain rapid reader opens in FIFO order, and cancel stale batches on close or session replacement. Add regression coverage and synchronize heartbeat and attachment tests with their actual completion boundaries.

Co-authored-by: steipete <58493+steipete@users.noreply.github.com>
2026-09-18 23:54:04 -07:00