Skip to content

Feat/ux streamline experience#891

Closed
gildesmarais wants to merge 16 commits intomainfrom
feat/ux-streamline-experience
Closed

Feat/ux streamline experience#891
gildesmarais wants to merge 16 commits intomainfrom
feat/ux-streamline-experience

Conversation

@gildesmarais
Copy link
Copy Markdown
Member

No description provided.

@gildesmarais gildesmarais changed the base branch from master to main March 19, 2026 15:39
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR streamlines the “trial” and feed-creation UX by (1) switching the app’s default request strategy to Faraday, (2) adding embedded-config fallback + “featured feeds” surfaced via API metadata, and (3) refreshing both the web UI and RSS XSL feed preview styling.

Changes:

  • Replace the legacy ssrf_filter request strategy with faraday across backend + frontend, and update related specs.
  • Add embedded feed-config fallback (html2rss-configs) and expose a curated featured_feeds list via /api/v1 metadata for trial runs.
  • Improve UX/UI: shared public CSS, richer result preview cards, auto-submit for prefilled URLs, and a redesigned RSS XSL “human view”.

Reviewed changes

Copilot reviewed 40 out of 41 changed files in this pull request and generated 6 comments.

Show a summary per file
File Description
spec/smoke/docker_spec.rb Update smoke payload strategy to faraday.
spec/html2rss/web/local_config_spec.rb Add test for embedded-config fallback.
spec/html2rss/web/feeds/source_resolver_spec.rb Update strategy expectations; add not-found/override tests.
spec/html2rss/web/feeds/service_spec.rb Update strategy to faraday in contracts.
spec/html2rss/web/feeds/rss_renderer_spec.rb Update expected renderer strategy string.
spec/html2rss/web/feeds/responder_spec.rb Update observability strategy expectations.
spec/html2rss/web/feeds/json_renderer_spec.rb Update expected renderer strategy string.
spec/html2rss/web/feeds/cache_spec.rb Update cached payload strategy string.
spec/html2rss/web/boot/setup_spec.rb Adjust setup spec require + assertions after boot changes.
spec/html2rss/web/app_spec.rb Expect 404 + improved error feed content for missing static feeds.
spec/html2rss/web/app_integration_spec.rb Update token strategy to faraday in integration tests.
spec/html2rss/web/api/v1/feed_metadata_spec.rb Update expected strategy in metadata fixtures.
spec/html2rss/web/api/v1_spec.rb Update strategy usage; add featured feeds assertion.
README.md Add “Trial run” instructions; update security wording.
public/shared-ui.css New shared UI tokens/layout styles in /public.
public/rss.xsl Major RSS human-view redesign; uses shared CSS + sanitizing templates.
Gemfile.lock Update dependencies; remove ssrf_filter; bundler version change.
Gemfile Remove ssrf_filter gem dependency.
frontend/vite.config.ts Serve backend /public assets in Vite dev/build.
frontend/src/styles/main.css Refactor to rely on shared UI tokens and new layout patterns.
frontend/src/components/ResultDisplay.tsx Richer result page + preview cards (dates/excerpts/links).
frontend/src/components/DominantField.tsx Add className passthrough + rename input size class.
frontend/src/components/AppPanels.tsx Update strategy labels; show “included feeds” when disabled.
frontend/src/components/App.tsx Prefer browserless default; auto-submit prefilled URL; plumb featured feeds.
frontend/src/api/contracts.ts Extend metadata contract with featured_feeds.
frontend/src/tests/useFeedConversion.test.ts Update tests for faraday strategy.
frontend/src/tests/useFeedConversion.contract.test.ts Update contract expectations for faraday.
frontend/src/tests/ResultDisplay.test.tsx Update for richer preview rendering and labels.
frontend/src/tests/mocks/server.ts Update mock strategies + metadata shape.
frontend/src/tests/App.test.tsx Add default-strategy + auto-submit + featured-feeds tests.
frontend/src/tests/App.contract.test.tsx Update contract to browserless default + richer preview.
frontend/index.html Include /shared-ui.css.
docs/README.md Update architecture wording (URL validation vs SSRF strategy).
docker-compose.yml Default to bundled config; add env_file: .env; make bind mount optional.
app/web/security/ssrf_filter_strategy.rb Remove custom SsrfFilterStrategy.
app/web/feeds/source_resolver.rb Return 404 for missing static feeds; default static strategy to :faraday.
app/web/domain/auto_source.rb Default stable-feed strategy to faraday.
app/web/config/local_config.rb Fallback to embedded configs; normalize names to support path feeds.
app/web/boot/setup.rb Remove request-service wiring; keep env validation only.
app/web/api/v1/strategies.rb Update displayed strategy names.
app/web/api/v1/root_metadata.rb Add featured_feeds to instance metadata.

Comment thread Gemfile
Comment on lines 7 to 20
# gem 'html2rss', '~> 0.14'
gem 'html2rss', github: 'html2rss/html2rss', branch: :master
gem 'html2rss-configs', github: 'html2rss/html2rss-configs'

# Use these instead of the two above (uncomment them) when developing locally:
# gem 'html2rss', path: '../html2rss'
# gem 'html2rss-configs', path: '../html2rss-configs'

gem 'parallel'
gem 'rack-cache'
gem 'rack-timeout'
gem 'roda'
gem 'ssrf_filter'
gem 'zeitwerk'

Copy link

Copilot AI Mar 20, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Removing the ssrf_filter dependency and the custom SsrfFilterStrategy means this repo no longer enforces a network-level SSRF protection layer for outbound fetches; with config/feeds.yml allowing allowed_urls: ['*'] for the admin account, authenticated users can now cause the server to fetch arbitrary URLs using the default Faraday strategy. Please reintroduce an SSRF-safe request strategy (or ensure Html2rss::RequestService is configured to reject private/metadata IP ranges and other sensitive targets) before relying on * allowlists in production configs.

Copilot uses AI. Check for mistakes.
Comment thread app/web/feeds/source_resolver.rb Outdated
Comment thread app/web/domain/auto_source.rb Outdated
Comment thread app/web/config/local_config.rb Outdated
Comment thread spec/html2rss/web/boot/setup_spec.rb
Comment thread docker-compose.yml
- Move Design System Manifest to docs/design-system.md
- Refactor README.md to be a high-level entry point
- Establish docs/README.md as the canonical contributor guide
- Trim AGENTS.md to focus on agent-specific constraints
- Convert .github/copilot-instructions.md into a redirect to consolidated docs
- Update cross-references and shared-ui.css header
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.

2 participants