fix(TASK-31): Sticky nav header for Apps + Marketplace

My Apps/App Store/Services tabs, category filters, and search bar
now stay fixed at the top on scroll using sticky positioning with
glass-blur background. Applied to both Apps.vue and Marketplace.vue
desktop views.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
Dorian 2026-03-18 18:18:31 +00:00
parent a2d2d3ca29
commit 035b44aa8a
3 changed files with 15 additions and 4 deletions

View File

@ -42,6 +42,17 @@
| **TASK-36** | **Cleaner iframe error screen with remediation** | **P2** | PLANNED | - |
| **BUG-37** | **Apps flicker Start/Launch during container scan** | **P2** | PLANNED | - |
| **TASK-38** | **Add blockchain sync info to homepage System card** | **P2** | PLANNED | - |
| **BUG-1** | **Random logout / CSRF mismatch** | **P0** | PLANNED | - |
| **FEATURE-4** | **Onboarding loading screen with progress** | **P1** | IN PROGRESS | - |
| **BUG-3** | **IndeedHub WebSocket spam in console** | **P2** | PLANNED | - |
| **TASK-8** | **Security hardening (CRIT-01, CRIT-02, HIGHs)** | **P0** | PLANNED | - |
| **TASK-9** | **Full feature testing sweep** | **P1** | PLANNED | - |
| **TASK-10** | **ISO build verification + multi-hardware test** | **P1** | PLANNED | - |
| **TASK-11** | **Rootless podman + restore security hardening** | **P1** | ~~DONE~~ | - |
| **TASK-12** | **Beta telemetry — node reporting + monitoring panel** | **P1** | PLANNED | - |
| **TASK-17** | **Alpha version tags + rollback strategy** | **P2** | PLANNED | - |
| **BUG-18** | **Fedimint Gateway iframe/tab UI doesn't load** | **P1** | PLANNED | - |
| **BUG-19** | **Wrong IndeedHub splash (needs "Studio" version)** | **P1** | PLANNED | - |
### Phase 2: User Testing (controlled, real hardware)

View File

@ -1,7 +1,7 @@
<template>
<div class="pb-6">
<!-- Desktop: page tabs + category tabs + search -->
<div class="hidden md:flex mb-4 items-center gap-4">
<!-- Desktop: page tabs + category tabs + search (sticky on scroll) -->
<div class="hidden md:flex mb-4 items-center gap-4 sticky top-0 z-10 py-3 -mt-3 -mx-6 px-6" style="background: rgba(0,0,0,0.6); backdrop-filter: blur(18px); -webkit-backdrop-filter: blur(18px);">
<div class="mode-switcher flex-shrink-0">
<button class="mode-switcher-btn" :class="{ 'mode-switcher-btn-active': activeTab === 'apps' }" @click="activeTab = 'apps'; router.replace({ query: {} })">My Apps</button>
<RouterLink to="/dashboard/marketplace" class="mode-switcher-btn">App Store</RouterLink>

View File

@ -74,8 +74,8 @@
</div>
</div>
<!-- Desktop: tabs + categories + search in one row -->
<div class="hidden md:flex mb-4 items-center gap-4">
<!-- Desktop: tabs + categories + search (sticky on scroll) -->
<div class="hidden md:flex mb-4 items-center gap-4 sticky top-0 z-10 py-3 -mt-3 -mx-6 px-6" style="background: rgba(0,0,0,0.6); backdrop-filter: blur(18px); -webkit-backdrop-filter: blur(18px);">
<div class="mode-switcher flex-shrink-0">
<RouterLink to="/dashboard/apps" class="mode-switcher-btn">My Apps</RouterLink>
<RouterLink to="/dashboard/marketplace" class="mode-switcher-btn mode-switcher-btn-active">App Store</RouterLink>