feat: add <Placeholder> component with ASCII bird states#5949
Merged
Conversation
Adds the design for a reusable <Placeholder> component covering empty, loading, no-results, and 404 states using Joan Stark's (jgs) ASCII bird art. Replaces the existing single-use Empty.tsx and seeds a pool-shaped data file for adding more ASCII pieces per variant in future PRs. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
…inboxes and memo list
Contributor
|
Caution Review failedThe pull request is closed. ℹ️ Recent review info⚙️ Run configurationConfiguration used: Organization UI Review profile: CHILL Plan: Pro Run ID: 📒 Files selected for processing (12)
📝 WalkthroughWalkthroughThis PR introduces a new ChangesPlaceholder Component Implementation
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
dgalanberasaluce
pushed a commit
to dgalanberasaluce/infra-personal
that referenced
this pull request
Jun 13, 2026
This PR contains the following updates: | Package | Update | Change | |---|---|---| | [neosmemo/memos](https://github.com/usememos/memos) | minor | `0.28.0` → `0.29.0` | --- ### Release Notes <details> <summary>usememos/memos (neosmemo/memos)</summary> ### [`v0.29.0`](https://github.com/usememos/memos/blob/HEAD/CHANGELOG.md#0290-2026-05-27) [Compare Source](usememos/memos@v0.28.0...v0.29.0) ##### Features - **about:** add about page with bird sprites ([411ba7b](usememos/memos@411ba7b)) - **activity-calendar:** aggregate by ViewContext.timeBasis ([8daef1d](usememos/memos@8daef1d)) - add \<Placeholder> component with ASCII bird states ([#​5949](usememos/memos#5949)) ([8c16ffa](usememos/memos@8c16ffa)) - add configurable `--log-level` flag ([#​5934](usememos/memos#5934)) ([f1e2a06](usememos/memos@f1e2a06)) - add dedicated shortcuts page ([#​5942](usememos/memos#5942)) ([1df6479](usememos/memos@1df6479)) - add link metadata endpoints ([9c5c604](usememos/memos@9c5c604)) - **frontend:** add pixel bird tilemaps ([cf55f11](usememos/memos@cf55f11)) - **memo:** add task list quick actions ([#​5983](usememos/memos#5983)) ([648b3bd](usememos/memos@648b3bd)) - **memo:** create memos on the selected calendar date ([#​5925](usememos/memos#5925)) ([ef55013](usememos/memos@ef55013)) - **notification:** add smtp email settings ([cd4f28a](usememos/memos@cd4f28a)) - **placeholder:** add woodpecker tilemap ([638e4f3](usememos/memos@638e4f3)) - render link metadata cards ([0bc5669](usememos/memos@0bc5669)) - **stats:** admin instance resource statistics ([ea0625d](usememos/memos@ea0625d)) - **stats:** support filtered all-user stats ([88ac3ec](usememos/memos@88ac3ec)) - **transcription:** explicit STT settings with provider, model, prompt ([#​5926](usememos/memos#5926)) ([238f27d](usememos/memos@238f27d)) ##### Bug Fixes - avoid update event on memo create attachments ([#​5961](usememos/memos#5961)) ([3c3382a](usememos/memos@3c3382a)) - delete user cleanup ([#​5981](usememos/memos#5981)) ([e53b7d9](usememos/memos@e53b7d9)) - **editor:** wrap selected text when pasting URL ([e0bb3a2](usememos/memos@e0bb3a2)) - **fileserver:** preserve HDR image metadata in thumbnails ([c724232](usememos/memos@c724232)) - **frontend:** correct static cache headers ([084f40b](usememos/memos@084f40b)) - **frontend:** use correct url path for memos in sitemap.xml ([#​5921](usememos/memos#5921)) ([603781f](usememos/memos@603781f)) - **httpgetter:** prevent DNS rebinding in link metadata fetch ([078488c](usememos/memos@078488c)) - **markdown:** align list items with checkboxes ([e008b1a](usememos/memos@e008b1a)) - **memo:** enforce parent visibility for comments ([4a1e401](usememos/memos@4a1e401)) - **s3presign:** preserve motion media payload ([7f1f53f](usememos/memos@7f1f53f)) - **security:** enforce attachment ownership on memo updates ([35bf761](usememos/memos@35bf761)) - **sse:** stream initial response and refresh tokens ([21303e8](usememos/memos@21303e8)) - **user:** omit internal settings from list responses ([#​5917](usememos/memos#5917)) ([1df3fe7](usememos/memos@1df3fe7)) - **web:** sync avatar changes immediately after profile update ([#​5903](usememos/memos#5903)) ([328396a](usememos/memos@328396a)) ##### Performance Improvements - lazy load heavy first-screen dependencies ([#​5947](usememos/memos#5947)) ([a6024ee](usememos/memos@a6024ee)) </details> --- ### Configuration 📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR is behind base branch, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My43My4yIiwidXBkYXRlZEluVmVyIjoiNDMuNzMuMiIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOlsicmVub3ZhdGUiXX0=--> Reviewed-on: https://forgejo.internal/forgejo_admin/infra-personal/pulls/96 Co-authored-by: Renovate Bot <renovatebot@forgejo.internal> Co-committed-by: Renovate Bot <renovatebot@forgejo.internal>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
<Placeholder variant="empty | loading | noResults | notFound">component that renders a hand-curated ASCII bird from a pool-shaped data file, with subtle CSS-only motion that respectsprefers-reduced-motion.Empty.tsxeverywhere it was used (Inboxes.tsx,PagedMemoList.tsx) with<Placeholder variant="empty">.CREDITS.mdand on eachAsciiPiece.creditfield (not rendered in the UI).Architecture
The pool is variant-tagged and extensible: future PRs can drop additional entries into
ASCII_POOLwithout touching the component.pickPiece(variant)returns a random matching entry on mount.Out of scope (follow-up opportunities)
<Placeholder variant="noResults">into the memo search results page.<Placeholder variant="notFound">into the router 404 catch-all.<Placeholder variant="loading">into Suspense fallbacks.ASCII_POOL.Test plan
pnpm lintcleanpnpm testgreen (17 new assertions acrossplaceholder-pool+placeholder-componentsuites, 94 total)pnpm buildsucceedsprefers-reduced-motion: reduceproduces a static bird🤖 Generated with Claude Code