Skip to content

[OPIK-7183] [FE] fix: land workspace clicks on the Projects tab#7482

Merged
awkoy merged 1 commit into
mainfrom
awkoy/opik-7183-workspace-projects-landing
Jul 15, 2026
Merged

[OPIK-7183] [FE] fix: land workspace clicks on the Projects tab#7482
awkoy merged 1 commit into
mainfrom
awkoy/opik-7183-workspace-projects-landing

Conversation

@awkoy

@awkoy awkoy commented Jul 15, 2026

Copy link
Copy Markdown
Contributor

Details

Clicking a workspace dropped the user into their last-visited project instead of the workspace overview. Per the Netflix customer request, a workspace click should always land on the workspace Projects tab for a consistent, discoverable entry point.

All workspace-click entry points route through HomePage (/$workspaceName/home), which branched on the stored last-visited project and redirected into it when present. This PR removes that branch so the workspace home always redirects to /$workspaceName/projects.

  • HomePage.tsx — always navigate({ to: "/$workspaceName/projects" }); dropped the now-unused activeProjectId / isProjectLoading reads (also removes a brief loader flicker while the project resolved).
  • router.tsx — updated the stale route comment.

Last-visited-project state is still tracked (the "Back to " button and sidebar highlighting keep working) — it is simply no longer auto-opened on a workspace click. Flows that intentionally deep-link to a project (BackToProjectButton, ProjectSelector) bypass HomePage and are unaffected.

Change checklist

  • User facing
  • Documentation update

Issues

  • Resolves OPIK-7183

AI-WATERMARK

AI-WATERMARK: yes

  • Tools: Claude Code
  • Model(s): Claude Opus 4.8
  • Scope: full implementation (single-choke-point redirect change) with human direction
  • Human verification: manual E2E in the browser (comet mode)

Testing

Ran the frontend in --mode comet against dev.comet.com in the yaroslav-boiko workspace, with a last-visited project set ("Demo chatbot", confirmed by the "Back to Demo chatbot" link):

  • Direct workspace URL (/opik/yaroslav-boiko) → redirects to the Projects tab, not the last-visited project.
  • In-app "Workspace" click from inside the Demo chatbot project → lands on the Projects tab; the "Back to Demo chatbot" link remains, confirming last-visited state is preserved but no longer auto-opened.
  • npm run typecheck and eslint on the changed files — both clean.

Documentation

N/A — navigation behavior change; no user-facing docs affected.

🤖 Generated with Claude Code

…visited project

Clicking a workspace routed through HomePage, which redirected into the
last-visited project when one was stored. Per the Netflix request, always
redirect the workspace home to the Projects tab for a consistent landing
point. Last-visited project state is still tracked (back button, highlight)
but no longer auto-opened.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@awkoy
awkoy requested a review from a team as a code owner July 15, 2026 12:51
@github-actions

Copy link
Copy Markdown
Contributor

⏱️ pre-commit per-hook timing

Hook Description Result Duration
🌐 typecheck — frontend Whole-project tsc type check 43.64s
🌐 eslint — frontend Lint + autofix JS/TS 2.53s
🐍 mypy — python sdk Static type check 1.29s
⚙️ actionlint — github workflows Lint GitHub Actions workflows 1.04s
🐍 fix end of files — python sdk Ensure files end in a newline 0.03s
🐍 trim trailing whitespace — python sdk Strip trailing whitespace 0.03s
🐍 ruff-format — python sdk Format Python code (ruff) 0.01s
🐍 ruff — python sdk Lint + autofix Python (ruff) 0.01s
Total (8 ran) 48.58s
⏭️ 33 skipped (no matching files changed)
Hook Description Result
🤖 trim trailing whitespace — optimizer Strip trailing whitespace ⏭️
🤖 fix end of files — optimizer Ensure files end in a newline ⏭️
🤖 check yaml — optimizer Validate YAML syntax ⏭️
🤖 check json — optimizer Validate JSON syntax ⏭️
🤖 check toml — optimizer Validate TOML syntax ⏭️
🤖 check for added large files — optimizer Block large files (>1MB) ⏭️
🔐 detect private key — optimizer Block committed private keys ⏭️
🤖 check for merge conflicts — optimizer Block merge-conflict markers ⏭️
🤖 check for case conflicts — optimizer Block case-only name clashes ⏭️
🤖 pyupgrade — optimizer Modernize Python syntax ⏭️
🤖 ruff — optimizer Lint + autofix Python (ruff) ⏭️
🤖 ruff-format — optimizer Format Python code (ruff) ⏭️
🤖 mypy — optimizer Static type check ⏭️
📓 nbstripout — optimizer notebooks Strip notebook output ⏭️
📝 markdownlint — optimizer Lint Markdown ⏭️
🔤 codespell — optimizer Fix common misspellings ⏭️
📊 radon cc — optimizer Cyclomatic-complexity gate ⏭️
📊 radon raw — optimizer Raw size metrics gate ⏭️
📊 xenon — optimizer Fail on complexity thresholds ⏭️
📊 lizard — optimizer Cyclomatic-complexity gate ⏭️
🧹 vulture — optimizer Find dead code ⏭️
🛡️ trim trailing whitespace — guardrails Strip trailing whitespace ⏭️
🛡️ fix end of files — guardrails Ensure files end in a newline ⏭️
🛡️ ruff — guardrails Lint + autofix Python (ruff) ⏭️
🛡️ ruff-format — guardrails Format Python code (ruff) ⏭️
🛡️ mypy — guardrails Static type check ⏭️
⚓ helm-docs Regenerate Helm chart README ⏭️
block non-public FE plugins Block non-public FE plugins ⏭️
☕ spotless — java backend Format Java code ⏭️
🧪 pre-commit wrapper smoke tests Self-test the wrapper scripts ⏭️
📘 eslint — typescript sdk Lint + autofix JS/TS ⏭️
📘 typecheck — typescript sdk Whole-project tsc type check ⏭️
🐳 hadolint — dockerfiles Lint Dockerfiles ⏭️

@andriidudar andriidudar left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

LGTM!

@awkoy
awkoy merged commit 3b58a2f into main Jul 15, 2026
20 checks passed
@awkoy
awkoy deleted the awkoy/opik-7183-workspace-projects-landing branch July 15, 2026 13:40
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants