Skip to content

feat(knowledge): one Research surface — Web Tools and Settings become tabs (#16900) - #16906

Closed
mrveiss wants to merge 1 commit into
mainfrom
issue-16900-research-tabs
Closed

mrveiss wants to merge 1 commit into
mainfrom
issue-16900-research-tabs

Conversation

@mrveiss

@mrveiss mrveiss commented Sep 17, 2026 •

Copy link
Copy Markdown
Owner

Thinking Path

Research was three top-level Knowledge sidebar entries answering one question — how do I research
something
— and the settings for web research sat apart from the thing they configure.

They read as two iterations of one feature. They are not, and I checked before assuming.

KnowledgeResearchPanel WebResearchPanel
What it does agentic research run over a query scrape / crawl / sitemap / extract
How it reaches the backend WebSocket, /api/ws/knowledge/research useWebResearchStore
Structure single surface four inner tabs (MVA-344)

They share a subject, not an implementation, and neither is a newer version of the other. Collapsing
them into one component would conflate an agentic run with a scraping toolkit and lose the
distinction that makes each usable. So this consolidates the navigation, not the code.

The pattern is already established twice — /knowledge/watch-folders and, this session,
/knowledge/connectors (#16897) — so this follows it rather than inventing one.

What Changed

  • New KnowledgeResearchTabs.vue (85 lines) hosting the three panels, with ?tab= initialisation.
  • /knowledge/research renders it instead of KnowledgeResearchPanel directly.
  • /knowledge/web-research → redirect: '/knowledge/research?tab=webTools'
  • /knowledge/web-research-settings → redirect: '/knowledge/research?tab=settings'
  • Two sidebar entries removed; Research is the single door.
  • Two orphaned locale keys removed from all 11 locales.

Verification

  • No new i18n keys. All three tab labels already existed and were translated in every locale —
    knowledge.views.research, knowledge.webResearch.navLabel, knowledge.webResearch.settingsNavLabel.
    Adding new ones would have meant eleven new translations of words the files already carry.
  • The orphan check caught itself being wrong. My first probe used git grep, which cannot see the
    new untracked component — so it reported navLabel and settingsNavLabel as orphaned when
    KnowledgeResearchTabs.vue is precisely what uses them. Re-run against the filesystem, only
    navAriaLabel and settingsNavAriaLabel are genuinely dead; those two are removed, consistently
    across all 11 locales.
  • Redirects, not deletions. Both retired paths still land the user on the same UI. Deleting them
    would break bookmarks silently — a 404 on a path that worked yesterday.
  • The original route comments are preserved above the new ones (Issue #3850, MVA-344), so the
    history of why each existed is not lost to a redirect.
  • Icons verified present in Icon.vue (search, globe, cog).
  • WebResearchPanel keeps its own four inner tabs, untouched, inside the new outer tab.

CI is the gate — vue-tsc and the frontend suite cover what the static checks above cannot.

Model Used

Claude Opus 5

Single-issue rationale

#16900 is one navigation change across one new component, three router entries and one view. It is
not batched because it is user-visible UI a reviewer should be able to accept or reject on its own.
It is deliberately not combined with #16898, the Connectors consolidation, even though they are the
same pattern on the same sidebar: each removes a door a user may rely on, and they deserve separate
verdicts.

Not in this PR

Any code-level sharing between the two research panels. If they should later share components, that
needs its own justification — this change is about the doors, and merging the panels would undo the
distinction documented above.

Closes #16900

🤖 Generated with Claude Code

Summary by CodeRabbit

  • New Features

    • Added a unified Knowledge research area with Research, Web Tools and Settings tabs.
    • The selected tab can be opened directly and is preserved through the page URL.
  • Navigation

    • Existing Web Research and Web Research Settings links now open the corresponding tab in the unified research area.
    • Removed the separate Web Research and Web Research Settings entries from the Knowledge sidebar.

… tabs (#16900)

Research was three top-level Knowledge sidebar entries answering one question:
/knowledge/research, /knowledge/web-research and /knowledge/web-research-settings.
Three doors, one job — and the settings for web research sat apart from the
thing they configure.

`/knowledge/research` is now the single surface, with Research, Web Tools and
Settings as tabs. The other two paths redirect with `?tab=`, kept rather than
deleted, the same treatment /knowledge/watch-folders and /knowledge/connectors
(#16897) got, so existing links and bookmarks survive.

This hosts the three panels; it does not merge them, and that is deliberate.
They read as two iterations of one feature and are not: KnowledgeResearchPanel
opens a WebSocket and runs an agentic research task against a query;
WebResearchPanel is four web-fetching primitives (scrape/crawl/sitemap/extract,
MVA-344) with its own inner tabs. They share a subject, not an implementation.
Collapsing them would conflate an agentic run with a scraping toolkit and lose
the distinction that makes each usable. What collapses is the navigation.

No new i18n keys. All three tab labels already existed and were translated in
all 11 locales — `knowledge.views.research`, `knowledge.webResearch.navLabel`
and `knowledge.webResearch.settingsNavLabel` — so the tabs reuse them rather
than adding a twelfth spelling of the same words.

`knowledge.webResearch.navAriaLabel` and `settingsNavAriaLabel` had the removed
sidebar entries as their only consumers and are dropped from all 11 locales in
the same commit. Verified against the filesystem rather than `git grep`, which
cannot see the new untracked component — the first check reported the two labels
I actually use as orphaned for exactly that reason.

Closes #16900
@coderabbitai

coderabbitai Bot commented Sep 17, 2026 •

Copy link
Copy Markdown
Contributor

Review Change StackReview Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: ASSERTIVE

Plan: Advanced

Run ID: 7bd9b423-b32e-4a99-b186-abc8db51e326

📥 Commits

Reviewing files that changed from the base of the PR and between 10b3eb6 and bd106c2.

📒 Files selected for processing (14)
  • autobot-frontend/src/components/knowledge/KnowledgeResearchTabs.vue
  • autobot-frontend/src/i18n/locales/ar.json
  • autobot-frontend/src/i18n/locales/de.json
  • autobot-frontend/src/i18n/locales/en.json
  • autobot-frontend/src/i18n/locales/es.json
  • autobot-frontend/src/i18n/locales/fa.json
  • autobot-frontend/src/i18n/locales/fr.json
  • autobot-frontend/src/i18n/locales/he.json
  • autobot-frontend/src/i18n/locales/lv.json
  • autobot-frontend/src/i18n/locales/pl.json
  • autobot-frontend/src/i18n/locales/pt.json
  • autobot-frontend/src/i18n/locales/ur.json
  • autobot-frontend/src/router/index.ts
  • autobot-frontend/src/views/KnowledgeView.vue
💤 Files with no reviewable changes (12)
  • autobot-frontend/src/i18n/locales/he.json
  • autobot-frontend/src/i18n/locales/fa.json
  • autobot-frontend/src/i18n/locales/fr.json
  • autobot-frontend/src/i18n/locales/pl.json
  • autobot-frontend/src/i18n/locales/pt.json
  • autobot-frontend/src/i18n/locales/en.json
  • autobot-frontend/src/i18n/locales/ar.json
  • autobot-frontend/src/i18n/locales/lv.json
  • autobot-frontend/src/i18n/locales/de.json
  • autobot-frontend/src/i18n/locales/es.json
  • autobot-frontend/src/i18n/locales/ur.json
  • autobot-frontend/src/views/KnowledgeView.vue

Included review availability: Your plan provides up to 10 included reviews per hour; 0 remain after this review.


📝 Walkthrough

Walkthrough

The Knowledge area now uses one research route with Research, Web Tools, and Settings tabs. Legacy web research routes redirect to their corresponding tabs. The sidebar removes the separate web research entries, and obsolete locale keys are removed.

Changes

Knowledge research surface

Layer / File(s) Summary
Tabbed research surface
autobot-frontend/src/components/knowledge/KnowledgeResearchTabs.vue
Adds three tabs, renders the existing research panels, and selects the initial tab from valid ?tab= values.
Route and navigation integration
autobot-frontend/src/router/index.ts, autobot-frontend/src/views/KnowledgeView.vue, autobot-frontend/src/i18n/locales/*.json
Loads the tabbed surface at /knowledge/research, redirects legacy routes to settings or webTools, removes separate sidebar links, and removes obsolete navigation translations.

Priority: ⬇️ Low

Estimated code review effort: 3 (Moderate) | ~20 minutes

Change: Feature

Sequence Diagram(s)

sequenceDiagram
  participant Browser
  participant Router
  participant KnowledgeResearchTabs
  participant ResearchPanels
  Browser->>Router: Open research route
  Router->>KnowledgeResearchTabs: Load tabbed surface
  KnowledgeResearchTabs->>KnowledgeResearchTabs: Read ?tab=
  KnowledgeResearchTabs->>ResearchPanels: Render selected panel
Loading

Merge Risk: ⚪ Minimal · up to bd106

Existing research links and bookmarks continue to reach their corresponding tabs. No unresolved merge-blocking risk remains.

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly summarises the main change: consolidating Knowledge research into one Research surface with Web Tools and Settings as tabs.
Linked Issues check ✅ Passed The PR satisfies issue #16900. KnowledgeResearchTabs.vue hosts KnowledgeResearchPanel, WebResearchPanel, and WebResearchSettings as separate tabs. The valid ?tab= values initialise the selec…
Out of Scope Changes check ✅ Passed The changes stay within issue #16900. The new tab container, legacy-route redirects, sidebar consolidation, and locale-key cleanup directly implement the linked issue. The three existing panel impleme…
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check. Docstring coverage is scoped to functions touched by this diff. Analyzed 0 functions across 1…
✨ Finishing Touches
📝 Generate docstrings
  • Commit to this branch
  • Create a new PR
🧪 Generate unit tests (beta)
  • Commit to this branch
  • Create a new PR

Comment @coderabbitai help to get the list of available commands.

@mrveiss

mrveiss commented Sep 17, 2026

Copy link
Copy Markdown
Owner Author

Superseded by #16907, which carries this change and #16898's together as one train.

They are the same change to the same surface and shared 13 files — router/index.ts, views/KnowledgeView.vue and all 11 locales — so split across two PRs, whichever merged second was guaranteed to conflict. That conflict existed only because I split them, against this repository's own batch-by-default rule.

The commit is cherry-picked into #16907 unchanged; nothing is lost. Branch kept until #16907 merges.

@mrveiss mrveiss closed this Sep 17, 2026
@github-actions

Copy link
Copy Markdown
Contributor

✅ SSOT Configuration Compliance: Passing

🎉 No new hardcoded values of either class — ssot and other both block.

Known backlog in pipeline-scripts/hardcoded_values_baseline.txt is suppressed and tracked in #14371.

@github-actions

Copy link
Copy Markdown
Contributor

Notice: 29 open PRs — past the runaway threshold (25)

There is no PR queue limit, and this is not a request to defer this PR. Work proceeds one issue at a time without a cap on open PRs; review capacity is the constraint.

This notice only means the count is high enough to be worth a glance for a runaway — something opening PRs in a loop, or a merge pipeline that has stalled so nothing is draining.

Currently open:

If the queue is draining normally, ignore this. Otherwise:

  1. Check whether CI is dispatching at all — see the ci-dispatch-watchdog status on these PRs
  2. Merge the ones whose CI has finished and review has passed: gh pr merge <number> --squash --delete-branch
  3. Look for a loop opening near-identical PRs

Warn-only runaway detector — .github/workflows/pr-queue-gate.yml. It never blocks a merge.

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.

feat(knowledge): one Research surface — fold Web Research and its settings into tabs

1 participant