Skip to content

ff-711 — Improved Discovery view and toolbar - #538

Merged
Tiendil merged 6 commits into
mainfrom
feature/ff-711-better-discovery-view
Sep 4, 2026
Merged

Tiendil merged 6 commits into
mainfrom
feature/ff-711-better-discovery-view

Conversation

@Tiendil

@Tiendil Tiendil commented Sep 4, 2026

Copy link
Copy Markdown
Owner

No description provided.

Copilot AI lite review requested due to automatic review settings September 4, 2026 16:20

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

🟡 Changes recommended

OPML upload can get stuck in a perpetual “running” state because FileReader errors/aborts are not handled, and the file also contains unused imports that may fail CI linting.

Once you've addressed the issues Copilot identified, you can request another Copilot review.

Pull request overview

This PR improves the feed discovery and toolbar UX by introducing reusable toolbar actions, standardizing in-page navigation fragments via shared constants, and consolidating async-operation UI feedback into a reusable status pattern.

Changes:

  • Reworked Discovery into distinct “Add a feed” and “Import OPML” sections with section navigation and shared fragment IDs (site/src/logic/navigation.ts).
  • Introduced reusable UI building blocks (UiSectionNavigation, UiInfoIcon, UiAsyncActionStatus) and toolbar actions (ToolbarAddFeed, ToolbarUndoMarkRead) and adopted them across key views.
  • Added collection subscription support from public collection pages and introduced shared async-action state handling (useAsyncAction) with new unit tests.
File summaries
File Description
specs/frontend_architecture/modules_layout.md Documents new components/toolbar module and enforces single-source-of-truth for fragment IDs.
site/src/views/SettingsView.vue Migrates section IDs + “On this page” navigation to shared navigation constants and reusable nav component.
site/src/views/PublicCollectionView.vue Adds subscribe CTA + async status display to public collection pages.
site/src/views/NewsView.vue Replaces inline undo button with reusable toolbar components.
site/src/views/FeedsView.vue Adds toolbar with Add Feed + OPML import/export actions and hash navigation into Discovery.
site/src/views/DiscoveryView.vue Splits Discovery into sectioned layout with tips, nav, and shared fragment IDs.
site/src/stores/tests/collections.test.ts Adds test coverage for the new collections.subscribe() behavior.
site/src/stores/globalSettings.ts Removes obsolete “check your feed URLs” user setting.
site/src/stores/collections.ts Adds subscribe() method and triggers globalSettings.updateDataVersion() on success.
site/src/router/index.ts Adds hash-based scroll behavior for router navigations.
site/src/main.ts Registers new UI + toolbar components globally; removes deprecated collections warning component.
site/src/logic/tests/navigation.test.ts Tests navigation fragment constants.
site/src/logic/tests/asyncAction.test.ts Tests async action state machine behavior.
site/src/logic/navigation.ts Defines shared fragment IDs for Discovery + Settings sections.
site/src/logic/asyncAction.ts Introduces useAsyncAction() composable for consistent async state tracking.
site/src/components/ui/SectionNavigation.vue New reusable “On this page” section navigation component.
site/src/components/ui/InfoIcon.vue New tooltip-backed info icon component.
site/src/components/ui/AsyncActionStatus.vue New reusable status notice component for async operations.
site/src/components/toolbar/UndoMarkRead.vue New reusable undo-mark-read toolbar action.
site/src/components/toolbar/AddFeed.vue New reusable add-feed toolbar action (routes to Discovery hash).
site/src/components/OPMLUpload.vue Migrates OPML upload UI to useAsyncAction + reusable status component.
site/src/components/notifications/Block.vue Removes deprecated collections warning notification logic and prop.
site/src/components/main/IntegrationsTable.vue Replaces title-based info icons with UiInfoIcon.
site/src/components/collections/Warning.vue Removes deprecated collections warning component.
site/src/components/collections/SubscribingProgress.vue Refactors to accept async-action status and render via UiAsyncActionStatus.
site/src/components/collections/PublicIntro.vue Displays collection description in public intro.
site/src/components/collections/DetailedItem.vue Refactors subscription flow to use collections.subscribe() + useAsyncAction.
site/src/components/collections/Block.vue Refactors subscription flow to use collections.subscribe() + useAsyncAction.
ffun/ffun/product/user_settings.py Removes backend registration of the deprecated user setting.
ffun/ffun/product/entities.py Removes deprecated user setting enum member (kept as commented placeholder).
ffun/ffun/api/spa/entities.py Removes deprecated SPA user-setting kind value.
changes/unreleased.md Removes old unreleased entry.
changes/next_release.md Adds release notes for ff-710 and ff-711.
Review details
  • Files reviewed: 33/33 changed files
  • Comments generated: 2
  • Review effort level: Lite

💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

Comment on lines +59 to +66
const reader = new FileReader();

reader.readAsText(file);
const content = await new Promise<string>((resolve) => {
reader.onload = () => {
resolve(reader.result as string);
};
});
Comment on lines 29 to 33
import {computed, ref} from "vue";
import * as t from "@/logic/types";
import * as e from "@/logic/enums";
import * as api from "@/logic/api";
import {computedAsync} from "@vueuse/core";
@Tiendil
Tiendil merged commit 2513a17 into main Sep 4, 2026
2 checks passed
@Tiendil
Tiendil deleted the feature/ff-711-better-discovery-view branch September 4, 2026 16:40
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