Skip to content

feat: Solid Cache entry browser#25

Merged
eclectic-coding merged 5 commits into
mainfrom
feat/cache-entry-browser
May 26, 2026
Merged

feat: Solid Cache entry browser#25
eclectic-coding merged 5 commits into
mainfrom
feat/cache-entry-browser

Conversation

@eclectic-coding
Copy link
Copy Markdown
Owner

Summary

  • Adds GET /cache/entries — paginated, sortable table of all SolidCache::Entry records with key, byte size, and created-at columns
  • Key-substring search filters the list; active search is preserved across sort and pagination
  • Per-row Delete button removes a single entry; Flush All header button deletes all entries with a confirmation prompt
  • Cache subnav added to the layout (Overview / Entries) — mirrors the Queue subnav pattern
  • CacheEntriesController uses a private resolve_sort method to validate sort params (no controller-level constants)

Also fixes

  • Pre-existing test falls back to raw arguments string when JSON generation fails was using an over-broad allow(JSON).to receive(:pretty_generate) mock that also caught javascript_importmap_tags' internal serialisation; narrowed with and_wrap_original to only raise for the specific job arguments object

Test plan

  • /cache/entries lists all entries; sorted by size descending by default
  • Searching by key substring filters correctly; Clear resets
  • Clicking column headers toggles sort direction
  • Delete removes a single row; Flush All empties the table
  • Full suite: bundle exec rake

🤖 Generated with Claude Code

eclectic-coding and others added 5 commits May 26, 2026 08:50
…, flush

Adds GET /cache/entries with sortable columns (key, byte_size, created_at),
key-substring search, per-row delete, and "Flush All" with confirmation.
Cache subnav added to the layout (Overview / Entries).

Also fixes a pre-existing test where a broad JSON.pretty_generate mock
was also catching importmap's internal JSON serialisation; narrowed with
and_wrap_original to only raise for the specific job arguments object.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Flush is a non-CRUD bulk-destroy operation; giving it its own controller
mirrors the Queues::PausesController pattern already used in the engine.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Removes explicit Search buttons from all filter forms. The Stimulus
search controller debounces input (300 ms) and submits when length
reaches 4 or clears to 0; select dropdowns submit immediately on change.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
@eclectic-coding eclectic-coding merged commit 92d8f4e into main May 26, 2026
5 checks passed
@eclectic-coding eclectic-coding deleted the feat/cache-entry-browser branch May 26, 2026 13:07
eclectic-coding added a commit that referenced this pull request May 26, 2026
Delete entry and flush all shipped in feat/cache-entry-browser (#25).

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant