Features & tips page (/features) admin-editable - #2170
Merged
Conversation
maebeale
force-pushed
the
maebeale/features-protips-page
branch
from
August 12, 2026 13:22
496c16d to
ded33b7
Compare
maebeale
force-pushed
the
maebeale/features-protips-page
branch
from
August 15, 2026 22:48
76df140 to
bc7c566
Compare
jmilljr24
approved these changes
Aug 16, 2026
A login-gated, filterable "Features & tips" page so facilitators and admins can see what the portal can do. DB-backed Feature model (rich WYSIWYG description for screenshots, external doc link, audience/display status, area, pro tips, release date), edited in-app by super-admins. config/features.yml is the starter seed an admin "Import from seed" button hydrates (create-missing-only, never clobbers in-app edits). Client-side search + area/audience dropdowns + date range + sort. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Model/decorator/service/policy/request/routing specs, factory, and page_bg_class mappings. Document the seed-append workflow in CLAUDE.md, AGENTS.md, and the Copilot instructions. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Grow config/features.yml from the initial 15 to 132 curated user-facing features mined from the full git history (2025-09 → 2026-08), grouped by area. Switch the features index from a 2-up grid to full-width row cards (pro tips move to a right rail on wide screens). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
- Detail page gets a person-show-style colored topper (area colour banner with the area identity + audience chip), title on its own line with the date far right. - Add per-feature "Check out this feature" in-app link (action_path) and a GitHub PR link (pr_number); seed carries both (action_path on all 132, PR # on 101). - "Import from seed" → "Sync latest updates": now also fills BLANK fields on existing features (never overwrites in-app edits); returns created/updated. - Edit/Delete buttons carry the admin-blue themselves (no background block). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
… top-right Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
- "Check out this feature" now targets the actual feature page with sample id 1 (e.g. org-autofill → /events/1/registrants), falling back to the resource index when id 1 is absent (FeatureDecorator#resolved_action_url). Re-curated all 132 action_paths to real routes. - Audit display_status: Topic subscriptions, Communications, Workshop ideas are admin-only (→ admin_facing); CE requests are public (→ public_facing). - "Sync latest updates" now re-aligns catalog classification (area, audience, links, date, PR) so seed corrections propagate, while still only filling blank admin content (summary/tips/guide/description) — never overwriting it. - Search box + Clear button match the community-news look (live filter, btn-utility). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
CE attendance tracking (#2075), CE/licenses browse indexes (#2208), payments Stripe/metadata/amount search (#2210), grant sector+category tagging (#2199), richer communications log (#2177), and topic-subscription recipient filter (#2179). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Fold action_path + pr_number into the create_features migration and drop the two follow-up add-column migrations; it's all shipping in this PR. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Replace the bespoke client-side feature_list Stimulus controller with the app's standard server-side pattern: a _search_boxes form (query + area/audience selects + date range + sort) driving a :features_results Turbo frame via the shared collection controller. Controller filters/sorts server-side; no custom JS. Removes feature_list_controller.js and the decorator's client-only search_text/ released_iso helpers. Docs updated (lazy-frame list, controller count). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Apply the "default to no comment" rule across the feature model/decorator/service/ controller/policy/view — keep only genuine gotchas (Tailwind safelist, rhino_ convention, the id-1 action_path fallback, the catalog-vs-content sync contract). Add a "Features & tips" card to the admin home's Additional data section. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
- Card title/Details links inside the features_results Turbo frame now set data-turbo-frame="_top" so they open the show page instead of erroring with a "content missing" frame swap. - Gate the Help-menu "Features & tips" link on admin (allowed_to?(:create?, Feature)) and give it the admin-only bg-blue-100 styling, desktop + mobile. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…e to a ticket - Feature::AREAS now maps each area to a shared `domain` key; FeatureDecorator resolves colour via DomainTheme.color_for and icon via INDEX_BUTTON_ICONS (content/reporting keep a manual colour+icon since they have no model). - Ticket/callout features use a "/registration/sample" action_path that resolves to a real registrant's ticket, else a sample ticket, else /events. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Split the admin-home Deprecated data row to 50% and add a 50% Actions section holding the "Sync features & tips" button; remove that button from the /features index (New feature stays). Add an admin-home render spec. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Reuse the expandable-card/expandable-cards controllers: index cards collapse to their header row (name, chips, date) with a top-right chevron to expand each, plus a bulk Expand all / Collapse all toggle above the list. Cards start collapsed. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
md:flex overrode the hidden class at the md breakpoint, so card bodies never collapsed. Move md:flex to an inner div so the target carries only hidden. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Seed the file-upload form field (#2136), professional-license management (#2218), person history/activity filter (#2207), planned-giving grant flag (#2203), story image carousel (#2221), story-idea promotion email (#2213), and payments recent- period default (#2216). Hide the detail-page "View the pull request" link behind admin. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
maebeale
force-pushed
the
maebeale/features-protips-page
branch
from
August 16, 2026 22:32
dcb26ed to
f4fbf9c
Compare
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.
🤖 suggested review level: 5 Inspect 🔬 new DB model + policy (audience gating), controller CRUD, WYSIWYG form, a public-facing page, and a 132-entry content seed
What is the goal of this PR and why is this important?
/features) so facilitators and admins can browse what the portal does, newest first, with pro tips.display_statusgates visibility: everyone signed in sees public-/user-facing features; admin-facing is admin-only (enforced inFeaturePolicyrelation scope, not just hidden in JS).How did you approach the change?
config/features.ymlis a checked-in seed of 132 curated user-facing features mined from the full git history (2025-09 → 2026-08), grouped by the nine areas; each carries anaction_pathand 101 carry apr_number.FeatureCatalog#import!): adds newly-shipped features and fills in blank fields on existing ones — never overwrites an admin's edits; returns created/updated counts.feature-listStimulus controller does client-side search (name + tips), area/audience dropdowns, date range, and newest/oldest sort. Title truncates with the two chips to its right.Anything else to add?
main; folds the newest features (payment due date, bulk invite mode, WordPress story import) into the seed.