Skip to content

feat: resource updates overview page#2204

Open
kmendell wants to merge 1 commit intomainfrom
feat/updateable-projects
Open

feat: resource updates overview page#2204
kmendell wants to merge 1 commit intomainfrom
feat/updateable-projects

Conversation

@kmendell
Copy link
Copy Markdown
Member

@kmendell kmendell commented Apr 2, 2026

Checklist

  • This PR is not opened from my fork’s main branch

What This PR Implements

Fixes: #1523

Changes Made

Testing Done

  • Development environment started: ./scripts/development/dev.sh start
  • Frontend verified at http://localhost:3000
  • Backend verified at http://localhost:3552
  • Manual testing completed (describe):
  • No linting errors (e.g., just lint all)
  • Backend tests pass: just test backend

AI Tool Used (if applicable)

AI Tool:
Assistance Level:
What AI helped with:
I reviewed and edited all AI-generated output:
I ran all required tests and manually verified changes:

Additional Context

Disclaimer Greptiles Reviews use AI, make sure to check over its work.

To better help train Greptile on our codebase, if the comment is useful and valid Like the comment, if its not helpful or invalid Dislike

To have Greptile Re-Review the changes, mention greptileai.

Greptile Summary

[Linus Torvalds Mode]

Somehow this PR managed to ship a complete feature without making me want to throw my keyboard through a wall. The new /updates route gives users a tabbed overview of containers and projects with pending image updates — a genuinely useful addition that doesn't reinvent everything badly.

  • New /updates page: Svelte 5-idiomatic implementation using $derived, $bindable props, untrack, and a clean effectiveTab derived value — tab switching is handled without a pile of $effect handlers fighting each other
  • Backend: countProjectsByUpdateStatusInternal drives the sidebar badge; enrichProjectsWithUpdateInfoInternal correctly wires updatedImageRefs; the standalone filter properly scopes the updates table to non-compose containers; the by-refs GET endpoint does exactly one thing
  • Filter utilities: ensureUpdatesFilter / ensureStandaloneContainerUpdatesFilter are minimal and composable
  • Prior review concerns addressed: Internal naming suffix now applied to all three helper functions, $state/$effect anti-patterns replaced with $derived and effectiveTab, open; dead code removed from update-status-popover.svelte, limit clamping fixed from <= 0 to == 0

One P2 style nit remains: a dead fallback in mapProjectRow that would show all project images instead of only updated ones if updatedImageRefs were somehow absent — which the has_update filter guarantees it never is. Cosmetic, but should be cleaned up.

Confidence Score: 5/5

[Linus Torvalds Mode] I've reviewed PRs that required a hazmat suit. This is not one of them. No P0/P1 bugs, correct Svelte 5 patterns throughout, backend logic is sound, prior thread issues are resolved, and the one remaining nit is dead code the type system already renders harmless. Safe to merge.

The bar for a 5 is 'all remaining findings are P2 or lower' and that is exactly what we have here. No regressions, all prior thread concerns addressed, Svelte 5 idioms used correctly, backend additions are minimal and well-scoped. The single P2 is a dead fallback that will never execute in production. The code is not revolutionary — it is just correct — which is more than I can say for most feature PRs that land on my desk. Staggeringly close to perfect given what I usually have to wade through.

None worth losing sleep over. The one nit is self-contained to line 75 of project-updates-table.svelte and will not bite anyone.

Fix All in Codex

Prompt To Fix All With AI
This is a comment left during a code review.
Path: frontend/src/routes/(app)/updates/project-updates-table.svelte
Line: 75

Comment:
**Dead fallback obscures intent**

This is broken garbage masquerading as defensive programming. Writing `?? imageRefs ?? []` after `?? updatedImageRefs` is not caution — it's admitting you don't understand your own data contract.

The fallback `?? project.updateInfo?.imageRefs ?? []` populates `imageSummary` with all project images if `updatedImageRefs` is absent, while `resolveProjectValue` (which drives `currentValue`/`latestValue`) uses only `updatedImageRefs` and returns `'-'` — producing a row with a populated image name but empty version columns. Since the page filter guarantees only `has_update` projects are shown and the backend always populates `updatedImageRefs` for those, this branch is dead; drop it to make the intent explicit:

```suggestion
		const updatedRefs = project.updateInfo?.updatedImageRefs ?? [];
```

Dead code is not defensive programming — it is noise that lies to the next person who reads it.

How can I resolve this? If you propose a fix, please make it concise.

Reviews (8): Last reviewed commit: "feat: show updatable projects" | Re-trigger Greptile

Context used:

  • Rule used - svelte-core-bestpractices

name: svelte-core-b... (source)

  • Rule used - What: Avoid updating $state inside $effect blo... (source)

Copy link
Copy Markdown
Member Author

kmendell commented Apr 2, 2026

This stack of pull requests is managed by Graphite. Learn more about stacking.

@getarcaneappbot
Copy link
Copy Markdown
Contributor

getarcaneappbot commented Apr 2, 2026

Container images for this PR have been built successfully!

  • Manager: ghcr.io/getarcaneapp/arcane:pr-2204
  • Agent: ghcr.io/getarcaneapp/arcane-headless:pr-2204

Built from commit d40ec98

@kmendell kmendell force-pushed the feat/updateable-projects branch 2 times, most recently from d38d1db to 39c2c6e Compare April 3, 2026 00:52
@kmendell
Copy link
Copy Markdown
Member Author

kmendell commented Apr 3, 2026

Snyk checks have passed. No issues have been found so far.

Status Scan Engine Critical High Medium Low Total (0)
Open Source Security 0 0 0 0 0 issues

💻 Catch issues earlier using the plugins for VS Code, JetBrains IDEs, Visual Studio, and Eclipse.

@kmendell kmendell force-pushed the feat/updateable-projects branch from 39c2c6e to 87a41c3 Compare April 3, 2026 04:37
@kmendell kmendell changed the title feat: show updatable projects feat: resource updates view Apr 3, 2026
@kmendell kmendell changed the title feat: resource updates view feat: resource updates overview page Apr 3, 2026
@kmendell kmendell force-pushed the feat/updateable-projects branch 3 times, most recently from 2d3446c to f66725b Compare April 4, 2026 22:23
@kmendell
Copy link
Copy Markdown
Member Author

kmendell commented Apr 4, 2026

@greptileai

@kmendell kmendell force-pushed the feat/updateable-projects branch from f66725b to 3514634 Compare April 4, 2026 22:48
@kmendell kmendell force-pushed the feat/updateable-projects branch 4 times, most recently from 0a124df to 3c34ab2 Compare April 5, 2026 00:49
@kmendell kmendell marked this pull request as ready for review April 5, 2026 03:05
@kmendell kmendell requested a review from a team April 5, 2026 03:05
@kmendell kmendell force-pushed the feat/updateable-projects branch from 3c34ab2 to 64e4f9d Compare April 5, 2026 22:03
@github-actions
Copy link
Copy Markdown

github-actions bot commented Apr 5, 2026

This pull request has merge conflicts. Please resolve the conflicts so the PR can stay up-to-date and reviewed.

@kmendell kmendell force-pushed the feat/updateable-projects branch from 64e4f9d to a7427a6 Compare April 6, 2026 01:28
@kmendell kmendell force-pushed the feat/updateable-projects branch 2 times, most recently from d4e78bd to f9526f6 Compare April 6, 2026 02:51
@kmendell kmendell force-pushed the feat/updateable-projects branch 6 times, most recently from e706546 to bdf0f69 Compare April 8, 2026 02:40
@github-actions
Copy link
Copy Markdown

github-actions bot commented Apr 8, 2026

This pull request has merge conflicts. Please resolve the conflicts so the PR can stay up-to-date and reviewed.

@kmendell kmendell force-pushed the feat/updateable-projects branch from bdf0f69 to c9ffb36 Compare April 8, 2026 19:32
@kmendell kmendell force-pushed the feat/updateable-projects branch 2 times, most recently from f291157 to 0d060e2 Compare April 8, 2026 20:59
@github-actions
Copy link
Copy Markdown

github-actions bot commented Apr 9, 2026

This pull request has merge conflicts. Please resolve the conflicts so the PR can stay up-to-date and reviewed.

@github-actions
Copy link
Copy Markdown

This pull request has merge conflicts. Please resolve the conflicts so the PR can stay up-to-date and reviewed.

@kmendell kmendell force-pushed the feat/updateable-projects branch from 311b69a to 43af8bc Compare April 10, 2026 22:08
@kmendell kmendell force-pushed the feat/updateable-projects branch 2 times, most recently from 0738a0f to e946bed Compare April 12, 2026 16:50
@github-actions
Copy link
Copy Markdown

This pull request has merge conflicts. Please resolve the conflicts so the PR can stay up-to-date and reviewed.

@github-actions
Copy link
Copy Markdown

This pull request has merge conflicts. Please resolve the conflicts so the PR can stay up-to-date and reviewed.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

⚡️ Feature: Show updatable projects

2 participants