Repository navigation
Conversation
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
There was a problem hiding this comment.
Looks good to me. linear.app/new with title/description matches Linear's documented prefill URL, and building the backlink from the finding UUID (without the dashboard's search params) gives the ticket a stable reference even when short IDs repeat. Since FindingArticle is shared, the inspector and the full page get the same draft, and the optional evidence, location, source, and commit lines drop out cleanly for older findings. The new app tests pass for me locally on this branch.
There was a problem hiding this comment.
Nice, small addition. Linking the draft to the UUID page and leaving range out of it both look right, and the old-finding test covers the optional fields well. Two things to look at:
- In
linear-issue.tsx,- Source:usesdetail.sourceUrldirectly.FindingArticleonly renders it when it matches^https?://, and the schema'sz.url()doesn't enforce that. Pull that check into a small shared helper, likesafeSourceUrl(detail), and use it in both places. That way the ticket can't carry a link the dashboard itself refuses to render. - Worst case, the draft URL gets big. The description can be up to 8k chars and verification up to 4k, and URL-encoding inflates both, so a long finding can push
linear.app/new?...into the range where proxies start returning 414s. Consider capping the description/evidence in the draft (truncate with a "see Warden for full details" pointer, since the finding link is already there). If you do, add one test with a max-length finding.
fbd5efe to
d2529c3
Compare
d2529c3 to
620dd5e
Compare
Replace dashboard DOM construction with strict TypeScript, React, and Effect. Keep the existing usage and finding views, filters, themes, and token controls. Effect validates service responses, handles failures, and cancels obsolete requests. Search typing survives delayed URL updates and still follows filter resets and browser history. Newly created token secrets stay visible during a failed list refresh, and account controls offer a retry after a request failure. React and React DOM are pinned together. Vite builds assets for the existing authenticated service routes. CI checks both TypeScript configurations and Oxlint, including hooks, accessibility, and unsafe values. Frontend requirements live in `policies/warden-service-frontend.md`, linked from the app and service `AGENTS.md` files. App and service integration tests cover navigation, stale responses, token creation, account recovery, and asset authentication. Lint, typecheck, build, and repository tests pass. Evidence (#545), short finding URLs (#546), and Linear drafts (#548) are separate follow-up PRs. --------- Co-authored-by: GPT-6 <noreply@anthropic.com>
620dd5e to
bbfd720
Compare
bbfd720 to
a4ee9a1
Compare
a4ee9a1 to
5e6b045
Compare
5e6b045 to
8dc675f
Compare
Give each finding a permanent short URL and redirect existing UUID links. Keep repeated findings distinct so opening a short URL preserves the selected record, including after retention deletes older findings. Backfill existing records during deployment and keep the migration compatible with writes from the previous service version. Refs GH-546 Co-Authored-By: GPT-6 <noreply@anthropic.com>
Create tickets through the service with a configured Linear API key and team. Include retained evidence and source links, and show the ticket on later visits. Use the finding UUID in Linear so repeated requests reuse the same issue. Limit the action to browser users in the configured tenant with finding access. Co-Authored-By: GPT-6 <noreply@anthropic.com>
Keep the finding action hidden until the service responds, so deployments without Linear credentials do not briefly show a disabled button. Co-Authored-By: GPT-6 <noreply@anthropic.com>
Link tickets to the finding's permanent short URL. Keep the finding UUID as the Linear issue ID so retries still reuse the same ticket. Co-Authored-By: GPT-6 <noreply@anthropic.com>
378032d to
675fe31
Compare
Create Linear issues from the finding inspector and full page, with the description, evidence, and source links. The button then links to the issue. Using the finding UUID as the Linear issue ID makes repeated clicks, retries, and lost responses reuse the same ticket.
Set
LINEAR_API_KEYandLINEAR_TEAM_IDin Vercel and redeploy. Leave both unset to keep the action hidden. The key stays on the server. Browser users in the configured tenant can create tickets for findings they can read; bearer tokens cannot use the action.Depends on #549. Ticket descriptions use the finding's permanent short URL.
Lint, strict typechecking, build, and tests pass. Integration tests mock Linear.