Model contacts pages after people pages #153

Closed
opened 2026-06-19 18:54:40 -05:00 by erik · 6 comments
Owner

Goal

Update Slugkit's public contacts experience so it is modeled after the people listing and detail pages in ~/Private/code/github/evcraddock/erikcraddock.me/.

Requirements

  • Use the erikcraddock.me people pages as the reference, especially the people listing and detail route behavior in src/routes/pages.tsx.
  • Update GET /contacts to follow the reference site's people listing structure and visual treatment.
  • Preserve GET /contacts/:id and adapt the detail page only where needed for consistency with the listing page.
  • Use Slugkit's existing contact, account, template, and public CSS conventions.
  • Show useful contact metadata such as name, URL, and accounts where available.
  • Add or update route/template tests for the contacts listing and detail behavior where practical.

Acceptance criteria

  • GET /contacts renders a public contacts page modeled after the reference site's people listing.
  • The page lists Slugkit contacts with useful summary metadata.
  • GET /contacts/:id still renders contact details.
  • Existing public routes such as /, /posts/:slug, /feed, /articles, /sources, and /tags still work.
  • Relevant tests and local checks pass.

Dependencies

  • None
## Goal Update Slugkit's public contacts experience so it is modeled after the people listing and detail pages in `~/Private/code/github/evcraddock/erikcraddock.me/`. ## Requirements - Use the `erikcraddock.me` people pages as the reference, especially the people listing and detail route behavior in `src/routes/pages.tsx`. - Update `GET /contacts` to follow the reference site's people listing structure and visual treatment. - Preserve `GET /contacts/:id` and adapt the detail page only where needed for consistency with the listing page. - Use Slugkit's existing contact, account, template, and public CSS conventions. - Show useful contact metadata such as name, URL, and accounts where available. - Add or update route/template tests for the contacts listing and detail behavior where practical. ## Acceptance criteria - [ ] `GET /contacts` renders a public contacts page modeled after the reference site's people listing. - [ ] The page lists Slugkit contacts with useful summary metadata. - [ ] `GET /contacts/:id` still renders contact details. - [ ] Existing public routes such as `/`, `/posts/:slug`, `/feed`, `/articles`, `/sources`, and `/tags` still work. - [ ] Relevant tests and local checks pass. ## Dependencies - None
Author
Owner

Synced from todu comment by @todu on 2026-06-20T02:16:35.844Z

Update

  • Started implementation on branch feat/task-e0fdae66-contacts-people-pages.
  • Plan: model /contacts after the reference people listing, keep /contacts/:id working, update tests, and preserve existing public routes.
_Synced from todu comment by @todu on 2026-06-20T02:16:35.844Z_ ### Update - Started implementation on branch `feat/task-e0fdae66-contacts-people-pages`. - Plan: model `/contacts` after the reference people listing, keep `/contacts/:id` working, update tests, and preserve existing public routes.
Author
Owner

Synced from todu comment by @todu on 2026-06-20T02:24:23.038Z

Review update

  • PR: #157 is open and reviewed after the people-page alignment revision.
  • Result: approved; no blocking issues or warnings.
  • Verified: npm run build, ./scripts/pre-pr.sh, Forgejo Actions run #214, and browser smoke testing for /contacts and /contacts/:id.
  • Acceptance: 5/5 criteria met.
  • Follow-up: waiting for explicit human merge approval.
_Synced from todu comment by @todu on 2026-06-20T02:24:23.038Z_ ### Review update - PR: https://forge.caradoc.com/erik/slugkit/pulls/157 is open and reviewed after the people-page alignment revision. - Result: approved; no blocking issues or warnings. - Verified: `npm run build`, `./scripts/pre-pr.sh`, Forgejo Actions run #214, and browser smoke testing for `/contacts` and `/contacts/:id`. - Acceptance: 5/5 criteria met. - Follow-up: waiting for explicit human merge approval.
Author
Owner

Synced from todu comment by @todu on 2026-06-20T02:23:09.982Z

Update

  • Revised PR #157 after visual feedback so /contacts more closely matches the reference people page: full-width content container, search box, live search behavior, result count, and people-style cards.
  • Verified: npm run build, ./scripts/pre-pr.sh, and browser smoke test for /contacts and /contacts/:id.
_Synced from todu comment by @todu on 2026-06-20T02:23:09.982Z_ ### Update - Revised PR #157 after visual feedback so `/contacts` more closely matches the reference people page: full-width content container, search box, live search behavior, result count, and people-style cards. - Verified: `npm run build`, `./scripts/pre-pr.sh`, and browser smoke test for `/contacts` and `/contacts/:id`.
Author
Owner

Synced from todu comment by @todu on 2026-06-20T02:33:43.314Z

Update

  • Completed merge of PR #157 into main.
  • Verified: local main fast-forwarded to origin/main; feature branch was deleted locally and pruned from remote.
  • Next: run close gate before marking the task done.
_Synced from todu comment by @todu on 2026-06-20T02:33:43.314Z_ ### Update - Completed merge of PR #157 into `main`. - Verified: local `main` fast-forwarded to `origin/main`; feature branch was deleted locally and pruned from remote. - Next: run close gate before marking the task done.
Author
Owner

Synced from todu comment by @todu on 2026-06-20T02:33:22.819Z

Review update

  • PR: #157 reviewed at final head.
  • Result: approved; no blocking issues or warnings.
  • Verified: npm run build, ./scripts/pre-pr.sh, Forgejo Actions run #215, and browser smoke testing for /contacts and /contacts/:id.
  • Acceptance: 5/5 criteria met.
  • Follow-up: human approved merge; proceeding to merge PR #157.
_Synced from todu comment by @todu on 2026-06-20T02:33:22.819Z_ ### Review update - PR: https://forge.caradoc.com/erik/slugkit/pulls/157 reviewed at final head. - Result: approved; no blocking issues or warnings. - Verified: `npm run build`, `./scripts/pre-pr.sh`, Forgejo Actions run #215, and browser smoke testing for `/contacts` and `/contacts/:id`. - Acceptance: 5/5 criteria met. - Follow-up: human approved merge; proceeding to merge PR #157.
erik 2026-06-19 21:39:13 -05:00
Author
Owner

Synced from todu comment by @todu on 2026-06-20T02:36:39.897Z

Closing summary

Readiness: READY

Acceptance criteria evidence:

  • GET /contacts renders a public contacts page modeled after the reference site's people listing — met. PR #157 is merged into main at f98cf8e; template/site/src/templates/public.tsx renders a full-width contacts page with people-style search, live result updates, count text, and card grid.
  • The page lists Slugkit contacts with useful summary metadata — met. ContactCard renders contact name/detail links, website hostnames, avatars/initials, and account chips; template/site/src/routes/__tests__/public.test.ts asserts contact card markup, Alice Example, alice.example, and Mastodon account metadata.
  • GET /contacts/:id still renders contact details — met. template/site/src/routes/home.ts preserves /contacts/:id via getPublicContact and renderContactDetailContent; public route tests assert 200 detail response, back link, detail copy, and account URL.
  • Existing public routes such as /, /posts/:slug, /feed, /articles, /sources, and /tags still work — met for the existing implemented public route set. registerHomeRoutes still registers /, /posts/:slug, /tags, /tags/:slug, /sources, /sources/:id, and /feed.xml; public.test.ts covers home, post detail, tags, sources, and feed behavior. Task comments also record PR #157 final verification through build, pre-PR, CI, and browser smoke checks.
  • Relevant tests and local checks pass — met by recorded evidence. Final review comment reports npm run build, ./scripts/pre-pr.sh, Forgejo Actions run #215, and browser smoke testing for /contacts and /contacts/:id; no tests were run during this close gate per instruction.

Repository evidence: current main includes merged PR #157 (f98cf8e). Current source and route tests match the accepted implementation. The working tree also contains local/untracked changes (template/site/src/styles/public.css, .pi/tmp/, docs/atproto-strategy.md), but the closure decision is based on the merged PR, task comments, and source/test state for the acceptance criteria.

_Synced from todu comment by @todu on 2026-06-20T02:36:39.897Z_ ### Closing summary Readiness: READY Acceptance criteria evidence: - `GET /contacts` renders a public contacts page modeled after the reference site's people listing — met. PR #157 is merged into `main` at `f98cf8e`; `template/site/src/templates/public.tsx` renders a full-width contacts page with people-style search, live result updates, count text, and card grid. - The page lists Slugkit contacts with useful summary metadata — met. `ContactCard` renders contact name/detail links, website hostnames, avatars/initials, and account chips; `template/site/src/routes/__tests__/public.test.ts` asserts contact card markup, Alice Example, `alice.example`, and Mastodon account metadata. - `GET /contacts/:id` still renders contact details — met. `template/site/src/routes/home.ts` preserves `/contacts/:id` via `getPublicContact` and `renderContactDetailContent`; public route tests assert 200 detail response, back link, detail copy, and account URL. - Existing public routes such as `/`, `/posts/:slug`, `/feed`, `/articles`, `/sources`, and `/tags` still work — met for the existing implemented public route set. `registerHomeRoutes` still registers `/`, `/posts/:slug`, `/tags`, `/tags/:slug`, `/sources`, `/sources/:id`, and `/feed.xml`; `public.test.ts` covers home, post detail, tags, sources, and feed behavior. Task comments also record PR #157 final verification through build, pre-PR, CI, and browser smoke checks. - Relevant tests and local checks pass — met by recorded evidence. Final review comment reports `npm run build`, `./scripts/pre-pr.sh`, Forgejo Actions run #215, and browser smoke testing for `/contacts` and `/contacts/:id`; no tests were run during this close gate per instruction. Repository evidence: current `main` includes merged PR #157 (`f98cf8e`). Current source and route tests match the accepted implementation. The working tree also contains local/untracked changes (`template/site/src/styles/public.css`, `.pi/tmp/`, `docs/atproto-strategy.md`), but the closure decision is based on the merged PR, task comments, and source/test state for the acceptance criteria.
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
erik/slugkit#153
No description provided.