From da34deac024156f6f8b1832e2fb09d8665d0310e Mon Sep 17 00:00:00 2001 From: busya Date: Mon, 26 Jan 2026 20:58:38 +0300 Subject: [PATCH] tasks ready --- .kilocode/rules/specify-rules.md | 4 +- .specify/memory/constitution.md | 14 ++- backend/tasks.db | Bin 90112 -> 98304 bytes specs/009-backup-scheduler/tasks.md | 2 +- .../checklists/requirements.md | 34 ++++++ .../contracts/backup_contracts.md | 19 +++ specs/015-frontend-nav-redesign/plan.md | 81 +++++++++++++ specs/015-frontend-nav-redesign/quickstart.md | 29 +++++ specs/015-frontend-nav-redesign/research.md | 23 ++++ specs/015-frontend-nav-redesign/spec.md | 95 +++++++++++++++ specs/015-frontend-nav-redesign/tasks.md | 112 ++++++++++++++++++ 11 files changed, 406 insertions(+), 7 deletions(-) create mode 100644 specs/015-frontend-nav-redesign/checklists/requirements.md create mode 100644 specs/015-frontend-nav-redesign/contracts/backup_contracts.md create mode 100644 specs/015-frontend-nav-redesign/plan.md create mode 100644 specs/015-frontend-nav-redesign/quickstart.md create mode 100644 specs/015-frontend-nav-redesign/research.md create mode 100644 specs/015-frontend-nav-redesign/spec.md create mode 100644 specs/015-frontend-nav-redesign/tasks.md diff --git a/.kilocode/rules/specify-rules.md b/.kilocode/rules/specify-rules.md index f3111f9..8b6dc47 100644 --- a/.kilocode/rules/specify-rules.md +++ b/.kilocode/rules/specify-rules.md @@ -29,6 +29,8 @@ Auto-generated from all feature plans. Last updated: 2025-12-19 - LocalStorage (for language preference) (013-unify-frontend-css) - Python 3.9+ (Backend), Node.js 18+ (Frontend) + FastAPI (Backend), SvelteKit (Frontend) (014-file-storage-ui) - Local Filesystem (for artifacts), Config (for storage path) (014-file-storage-ui) +- Python 3.9+ (Backend), Node.js 18+ (Frontend) + FastAPI (Backend), SvelteKit + Tailwind CSS (Frontend) (015-frontend-nav-redesign) +- N/A (UI reorganization and API integration) (015-frontend-nav-redesign) - Python 3.9+ (Backend), Node.js 18+ (Frontend Build) (001-plugin-arch-svelte-ui) @@ -49,9 +51,9 @@ cd src; pytest; ruff check . Python 3.9+ (Backend), Node.js 18+ (Frontend Build): Follow standard conventions ## Recent Changes +- 015-frontend-nav-redesign: Added Python 3.9+ (Backend), Node.js 18+ (Frontend) + FastAPI (Backend), SvelteKit + Tailwind CSS (Frontend) - 014-file-storage-ui: Added Python 3.9+ (Backend), Node.js 18+ (Frontend) + FastAPI (Backend), SvelteKit (Frontend) - 013-unify-frontend-css: Added Node.js 18+ (Frontend Build), Svelte 5.x + SvelteKit, Tailwind CSS, `date-fns` (existing) -- 011-git-integration-dashboard: Added Python 3.9+ (Backend), Node.js 18+ (Frontend) + FastAPI, SvelteKit, GitPython (or CLI git), Pydantic, SQLAlchemy, Superset API diff --git a/.specify/memory/constitution.md b/.specify/memory/constitution.md index 9a75c9e..069ab61 100644 --- a/.specify/memory/constitution.md +++ b/.specify/memory/constitution.md @@ -1,11 +1,10 @@ @@ -37,6 +36,11 @@ To maintain semantic coherence, code must adhere to the complexity limits (Modul ### VII. Everything is a Plugin All functional extensions, tools, or major features must be implemented as modular Plugins inheriting from `PluginBase`. Logic should not reside in standalone services or scripts unless strictly necessary for core infrastructure. This ensures a unified execution model via the `TaskManager`, consistent logging, and modularity. +### VIII. Unified Frontend Experience +To ensure a consistent and accessible user experience, all frontend implementations must strictly adhere to the unified design and localization standards. +- **Component Reusability**: All UI elements MUST utilize the standardized Svelte component library (`src/lib/ui`) and centralized design tokens. Ad-hoc styling and hardcoded values are prohibited. +- **Internationalization (i18n)**: All user-facing text MUST be extracted to the translation system (`src/lib/i18n`). Hardcoded strings in the UI are prohibited. + ## File Structure Standards Refer to **Section III (File Structure Standard)** in `semantic_protocol.md` for the authoritative definitions of: - Python Module Headers (`.py`) @@ -64,4 +68,4 @@ This Constitution establishes the "Semantic Code Generation Protocol" as the sup - **Amendments**: Changes to core principles require a Constitution amendment. Changes to technical syntax require a Protocol update. - **Compliance**: Failure to adhere to the Protocol constitutes a build failure. -**Version**: 1.7.1 | **Ratified**: 2025-12-19 | **Last Amended**: 2026-01-13 +**Version**: 1.8.0 | **Ratified**: 2025-12-19 | **Last Amended**: 2026-01-26 diff --git a/backend/tasks.db b/backend/tasks.db index 64a674b459179182610fc54fccd1630d921fef1b..10e028dd36e821d9cd65a33eb42727b73fe15cd3 100644 GIT binary patch delta 6097 zcmc&&-D@0G6yG3K(KM-+*kYv&1BDhk>wJH#B8Di4_@JZ#u_?EAX6|Ii&dzM+&g8>o zxsi(aAk>(Dz=ytzL@d4)eD+PMZ~7nj=CkMS?o77XO}a^z-N2HaJ!kGc=iK`{zu&z( zkI(JwJpbL5^A9SO%4PUmg3rwEb!+CqPj?@(%L}uu%Itshf6gtOU!VPbUY~ns?$`OR zXIuNP@1WTm*PmONF>M>0UZ6{^;rWuTVqbFYAdnnF0!MR+ZtKRS{fFP){cY}C<$h)E z>g?MuefHv3<^JyOI{WeSOYHXzp zRaQ+&RwUIF6sx8fHQlJ{vSm5?pv9`1x-8qy?bhD@FR#6-nzs&KQ8Y(!_7|NLCNP&&d0nknmh?>_nPDW}JOTz&H(fR>28EKFjtCWslKndG|?ZieDb zL8M8ZdIXVpWAE|b3ygbEs*3Fv{8QkmC3;C7XYfq}Zy#sa#gtHZz73;BQL>4=4D;sz zN0fk1@5hZHKl+Vmz%d9Tg7RjRU|+1UL!&hEC<~DXvqs6>AWaC1Y(ZQpf4}GEV(%V_Ay7eV z!VGIEq3aPZqgTiA8u5|K$Lvj3{MM~ItiB;Bs-()d6ul;!HN~kKwjo<;-}?+DG4e^2 zVN}l>I1axcoyoA!NaCz6;I*XVof1gv>Dh{6&W;01M ziu`SeEA;x-vRBg5gKq>@?u4S^r8&WQR#%Il+mKXmbx@gk$ZMr^EeYkpB3PaXyYO>w zHnNqa7#_veYAnFts@Q-`yJf*CW(~Ru)>ivwVeaMK1ml3MeAUBVogmn3B+0Ww15hwE zFhw0$z?wn*P~V>C-nZ|p#_iP@7K({r1~_s^q3)Yt@9n2Dy*%%H6|w4jmW2a}n1(Lt zj_XRUrYe#y2c~Nn4ps;ep;Ds*l@;)PCQ{42(}nw(fXWW`WM|xCpgKBIy(skV)svhO z-|fR%7ppBX2vg`4UDQDS%XyQelw{m9!lgwJ7yU*U^KzD8KLl*;mSWaqtEQS&O*M4g z>Yr>hT(f>)KONdgk(E#=n!pmz{R5u6u#^Biy-c`XWO#$eS3hiUVY zJ`2Kp$^ycQ;&_4Tsge;WwxnyANRFavlI7Z_@0+e}DE841W@jSXvS_DSMlTTSf)AEQ+JX!LH z6G*yYTaxWKy5wVDcEDs?8gs?=9nJ_`GEZ771AJM(;vN$PmvUnS0%p_H$^c0=O|1+7 zW7E{i05H})H5DE6#N>A-tqgLw(|@O>m4Rp3G_^8FakMbDYnoou?W$_2a6Tyxwv1nS4L{jVL>R+y8I^6JkP`h+MAd3Bpl{p;izEXljE`BisGo)EGUq{vArUKv4b4|K=l~e diff --git a/specs/009-backup-scheduler/tasks.md b/specs/009-backup-scheduler/tasks.md index bc27443..e2558a5 100644 --- a/specs/009-backup-scheduler/tasks.md +++ b/specs/009-backup-scheduler/tasks.md @@ -35,7 +35,7 @@ ## Final Phase: Polish & Cross-cutting concerns - [ ] T022 Implement task cleanup/retention policy (e.g., delete tasks older than 30 days) -- [ ] T023 Add real-time updates for task status using WebSockets (optional/refinement) +- [x] T023 Add real-time updates for task status using WebSockets (optional/refinement) - [x] T024 Ensure consistent error handling and logging across scheduler and task manager ## Dependencies diff --git a/specs/015-frontend-nav-redesign/checklists/requirements.md b/specs/015-frontend-nav-redesign/checklists/requirements.md new file mode 100644 index 0000000..9fca097 --- /dev/null +++ b/specs/015-frontend-nav-redesign/checklists/requirements.md @@ -0,0 +1,34 @@ +# Specification Quality Checklist: Frontend Navigation Redesign + +**Purpose**: Validate specification completeness and quality before proceeding to planning +**Created**: 2026-01-26 +**Feature**: [specs/015-frontend-nav-redesign/spec.md](../spec.md) + +## Content Quality + +- [x] No implementation details (languages, frameworks, APIs) +- [x] Focused on user value and business needs +- [x] Written for non-technical stakeholders +- [x] All mandatory sections completed + +## Requirement Completeness + +- [x] No [NEEDS CLARIFICATION] markers remain +- [x] Requirements are testable and unambiguous +- [x] Success criteria are measurable +- [x] Success criteria are technology-agnostic (no implementation details) +- [x] All acceptance scenarios are defined +- [x] Edge cases are identified +- [x] Scope is clearly bounded +- [x] Dependencies and assumptions identified + +## Feature Readiness + +- [x] All functional requirements have clear acceptance criteria +- [x] User scenarios cover primary flows +- [x] Feature meets measurable outcomes defined in Success Criteria +- [x] No implementation details leak into specification + +## Notes + +- Items marked incomplete require spec updates before `/speckit.clarify` or `/speckit.plan` \ No newline at end of file diff --git a/specs/015-frontend-nav-redesign/contracts/backup_contracts.md b/specs/015-frontend-nav-redesign/contracts/backup_contracts.md new file mode 100644 index 0000000..4a52658 --- /dev/null +++ b/specs/015-frontend-nav-redesign/contracts/backup_contracts.md @@ -0,0 +1,19 @@ +# Backup Contracts + +## Component: BackupManager + +### Props +None (Top-level page component) + +### Events +- `on:backup-create`: Triggered when user requests a new backup. +- `on:backup-restore`: Triggered when user requests a restore. + +### Data Dependencies +- `GET /api/backups`: Fetch list of backups. + - Response: `Array` +- `POST /api/backups`: Create new backup. + - Body: `{ type: string, target: string }` +- `POST /api/backups/{id}/restore`: Restore a backup. + +*(Note: Actual endpoints depend on Feature 009 implementation; these are the frontend's expected contracts)* \ No newline at end of file diff --git a/specs/015-frontend-nav-redesign/plan.md b/specs/015-frontend-nav-redesign/plan.md new file mode 100644 index 0000000..3ddcaf6 --- /dev/null +++ b/specs/015-frontend-nav-redesign/plan.md @@ -0,0 +1,81 @@ +# Implementation Plan: Frontend Navigation Redesign + +**Branch**: `015-frontend-nav-redesign` | **Date**: 2026-01-26 | **Spec**: [specs/015-frontend-nav-redesign/spec.md](../spec.md) +**Input**: Feature specification from `specs/015-frontend-nav-redesign/spec.md` + +**Note**: This template is filled in by the `/speckit.plan` command. See `.specify/templates/commands/plan.md` for the execution workflow. + +## Summary + +This feature redesigns the frontend navigation to shift from a Navbar-heavy approach to a Dashboard-centric model. Key changes include moving tool access (Mapper, Storage, Backups) to the Dashboard, simplifying the Navbar to global contexts (Tasks, Settings), removing deprecated features (Dataset Search, Environments), and implementing a dedicated Backup Management UI based on backend capabilities from feature 009. + +## Technical Context + +**Language/Version**: Python 3.9+ (Backend), Node.js 18+ (Frontend) +**Primary Dependencies**: FastAPI (Backend), SvelteKit + Tailwind CSS (Frontend) +**Storage**: N/A (UI reorganization and API integration) +**Testing**: Playwright (E2E - if available), Vitest (Unit) +**Target Platform**: Web Browser +**Project Type**: Web Application (Frontend + Backend) +**Performance Goals**: Instant navigation (<100ms), fast dashboard load +**Constraints**: Must maintain responsive design; Backup UI must interface with existing backend endpoints +**Scale/Scope**: ~5-10 file modifications, 1 new major component (BackupManager) + +## Constitution Check + +*GATE: Must pass before Phase 0 research. Re-check after Phase 1 design.* + +- [x] **Semantic Protocol Compliance**: All new components will follow Svelte component header standards. +- [x] **Causal Validity**: Contracts (props/events) will be defined before implementation. +- [x] **Immutability of Architecture**: No core architectural changes; only UI reorganization. +- [x] **Design by Contract**: New Backup component will define clear interface contracts. +- [x] **Everything is a Plugin**: N/A (Frontend changes primarily, backend remains plugin-based). +- [x] **Unified Frontend Experience**: All new UI components will use standardized components and internationalization (i18n). + +## Project Structure + +### Documentation (this feature) + +```text +specs/015-frontend-nav-redesign/ +├── plan.md # This file +├── research.md # Phase 0 output +├── data-model.md # Phase 1 output +├── quickstart.md # Phase 1 output +├── contracts/ # Phase 1 output +└── tasks.md # Phase 2 output +``` + +### Source Code (repository root) + +```text +backend/ +├── src/ +│ └── api/routes/ # (Verify backup routes exist) + +frontend/ +├── src/ +│ ├── components/ +│ │ ├── Navbar.svelte # (Modify: Simplify items) +│ │ ├── DashboardGrid.svelte # (Modify: Add tool links) +│ │ └── backups/ # (New: Backup UI) +│ │ ├── BackupManager.svelte +│ │ └── BackupList.svelte +│ ├── pages/ +│ │ └── Dashboard.svelte # (Modify: Layout updates) +│ └── routes/ +│ ├── +layout.svelte # (Check global nav injection) +│ └── tools/ +│ └── backups/ # (New Route) +│ └── +page.svelte +``` + +**Structure Decision**: Standard SvelteKit structure. New `backups` component directory for the complex backup UI. Route added under `tools/` to match existing pattern (mapper, storage). + +## Complexity Tracking + +> **Fill ONLY if Constitution Check has violations that must be justified** + +| Violation | Why Needed | Simpler Alternative Rejected Because | +|-----------|------------|-------------------------------------| +| N/A | | | diff --git a/specs/015-frontend-nav-redesign/quickstart.md b/specs/015-frontend-nav-redesign/quickstart.md new file mode 100644 index 0000000..ee5b5cf --- /dev/null +++ b/specs/015-frontend-nav-redesign/quickstart.md @@ -0,0 +1,29 @@ +# Quickstart: Frontend Navigation Redesign + +## Overview +This feature reorganizes the application navigation to be dashboard-centric and introduces a dedicated UI for Backup Management. + +## New Routes +- `/tools/backups`: The new Backup Management interface. +- `/`: Dashboard (updated with new tool links). + +## Removed Routes +- `/tools/search`: Deprecated and removed. +- `/settings/environments`: Deprecated and removed. + +## Development + +### Running the Backup UI +1. Ensure the backend is running: `cd backend && uvicorn src.app:app --reload` +2. Start the frontend: `cd frontend && npm run dev` +3. Navigate to `http://localhost:5173/tools/backups` + +### Key Components +- `frontend/src/components/backups/BackupManager.svelte`: Main container for backup operations. +- `frontend/src/components/DashboardGrid.svelte`: Updated grid with new tool cards. +- `frontend/src/components/Navbar.svelte`: Simplified navigation bar. + +## Verification +1. Check Dashboard: Should see cards for Mapper, Storage, and Backups. +2. Check Navbar: Should ONLY show Tasks and Settings. +3. Check Backup Tool: Should load and display backup status/controls. \ No newline at end of file diff --git a/specs/015-frontend-nav-redesign/research.md b/specs/015-frontend-nav-redesign/research.md new file mode 100644 index 0000000..c537ab6 --- /dev/null +++ b/specs/015-frontend-nav-redesign/research.md @@ -0,0 +1,23 @@ +# Research: Frontend Navigation Redesign + +## Decisions + +### 1. Backup Management UI Strategy +**Decision**: Create a dedicated `BackupManager` component in `frontend/src/components/backups/`. +**Rationale**: The requirement is to have a "full component" accessible from the dashboard. Separating it into its own directory ensures modularity and keeps the Dashboard component clean. It will consume the existing backup APIs (likely `/api/tasks` with specific backup types or a dedicated backup endpoint if one exists - *to be verified in Phase 1*). +**Alternatives considered**: Embedding backup controls directly in the Dashboard (rejected: clutters the main view), reusing the TaskRunner component (rejected: need specific backup context/history view). + +### 2. Navigation State Management +**Decision**: Use SvelteKit's layout system (`+layout.svelte`) and simple component props for Navbar state. +**Rationale**: The Navbar changes are global. Removing items is a static change to the `Navbar.svelte` component. No complex state management (stores) is needed for this structural change. +**Alternatives considered**: Dynamic config-based menu (rejected: overkill for this specific redesign). + +### 3. Deprecation Strategy +**Decision**: Hard removal of "Dataset Search" and "Deployment Environments" components and routes. +**Rationale**: The spec explicitly calls for removal. Keeping dead code increases maintenance burden. +**Alternatives considered**: Hiding behind a feature flag (rejected: requirement is explicit removal). + +### 4. Dashboard Grid Layout +**Decision**: Update `DashboardGrid.svelte` to include new cards for Mapper, Storage, and Backups. +**Rationale**: Reusing the existing grid component maintains consistency. +**Alternatives considered**: Creating a separate "Tools" page (rejected: spec requires access from main Dashboard). \ No newline at end of file diff --git a/specs/015-frontend-nav-redesign/spec.md b/specs/015-frontend-nav-redesign/spec.md new file mode 100644 index 0000000..8c26a26 --- /dev/null +++ b/specs/015-frontend-nav-redesign/spec.md @@ -0,0 +1,95 @@ +# Feature Specification: Frontend Navigation Redesign + +**Feature Branch**: `015-frontend-nav-redesign` +**Created**: 2026-01-26 +**Status**: Draft +**Input**: User description: "Я хочу провести редизайн фронта в части навигации. 1. Удалить Dataset Search (из Navbar и дашборда), Deployment Environments 2. Вкладку Tasks оставить для просмотра всех задач - убрать оттуда кнопку Run backup 3. Должен быть полноценный компонент бэкапов, как мы разрабатывали в 009-backup-scheduler. Доступ - из дашборда главного 4. Перенести ссылку на Dataset mapper из Navbar на дашборд 5. Перенести ссылку на Storage manager на дашборд Общая логика - на дашборде должны быть ссылки на полноценные инструменты, навбар - для настроек и общей Tasks" + +## Clarifications + +### Session 2026-01-26 +- Q: Do I need to build the Backup Management UI from scratch? → A: Yes, create the UI for backup using data from task 009-backup-scheduler. + +## User Scenarios & Testing *(mandatory)* + +### User Story 1 - Centralized Tool Access via Dashboard (Priority: P1) + +As a user, I want to access all main tools (Backups, Mapper, Storage) from the main Dashboard so that I have a central hub for operations. + +**Why this priority**: This is the core of the redesign, shifting the navigation paradigm to a dashboard-centric model for tools. + +**Independent Test**: Can be tested by verifying the Dashboard contains links/cards for Backups, Mapper, and Storage, and that clicking them navigates to the correct full-page tools. + +**Acceptance Scenarios**: + +1. **Given** I am on the main Dashboard, **When** I look at the available tools, **Then** I see options for "Backup Manager", "Dataset Mapper", and "Storage Manager". +2. **Given** I am on the Dashboard, **When** I click "Backup Manager", **Then** I am taken to the full Backup management interface. +3. **Given** I am on the Dashboard, **When** I click "Dataset Mapper", **Then** I am taken to the Mapper tool. +4. **Given** I am on the Dashboard, **When** I click "Storage Manager", **Then** I am taken to the Storage tool. + +--- + +### User Story 2 - Simplified Navigation Bar (Priority: P1) + +As a user, I want a clean Navbar containing only global context items (Tasks, Settings) so that the interface is less cluttered and navigation is distinct from tool usage. + +**Why this priority**: Enforces the separation of concerns between "Global Status/Settings" (Navbar) and "Operational Tools" (Dashboard). + +**Independent Test**: Can be tested by inspecting the Navbar across the application to ensure removed items (Search, Mapper, Environments) are gone and only Tasks and Settings remain. + +**Acceptance Scenarios**: + +1. **Given** I am on any page, **When** I view the Navbar, **Then** I do NOT see links for "Dataset Search", "Dataset Mapper", or "Deployment Environments". +2. **Given** I am on any page, **When** I view the Navbar, **Then** I see links for "Tasks" and "Settings". +3. **Given** I am on the Tasks page, **When** I look for the "Run backup" button, **Then** it is NOT present (as it belongs in the Backup tool). + +--- + +### User Story 3 - Deprecation of Unused Features (Priority: P2) + +As a user, I want removed features (Dataset Search, Deployment Environments) to be inaccessible so that I don't use deprecated workflows. + +**Why this priority**: Cleans up the UI and prevents confusion with features that are being removed or hidden. + +**Independent Test**: Verify that UI elements for Dataset Search and Deployment Environments are removed from both Navbar and Dashboard. + +**Acceptance Scenarios**: + +1. **Given** I am on the Dashboard, **When** I look for "Dataset Search", **Then** it is not visible. +2. **Given** I am on the Dashboard or Navbar, **When** I look for "Deployment Environments", **Then** it is not visible. + +### Edge Cases + +- **Direct URL Access**: If a user attempts to access the URL of a removed page (e.g., `/search` or `/environments`) via bookmark or history, they should be redirected to the Dashboard or shown a 404 page (standard app behavior). +- **Mobile View**: The simplified Navbar must remain responsive; with fewer items, it should likely avoid collapsing into a hamburger menu unless necessary on very small screens. + +### Assumptions + +- The backend logic and UI components for the "Backup Scheduler" (Feature 009) are available and ready to be integrated into the main Dashboard view. +- Existing tools (Dataset Mapper, Storage Manager) function independently of the Navbar context and will work correctly when accessed via the Dashboard. + +## Requirements *(mandatory)* + +### Functional Requirements + +- **FR-001**: System MUST display "Dataset Mapper" entry point on the main Dashboard. +- **FR-002**: System MUST display "Storage Manager" entry point on the main Dashboard. +- **FR-003**: System MUST display "Backup Scheduler" (or similar name) entry point on the main Dashboard. +- **FR-004**: System MUST provide access to the full Backup Management component (newly created based on feature 009 data) via the Dashboard link. +- **FR-005**: Navbar MUST NOT contain links to "Dataset Search", "Dataset Mapper", or "Deployment Environments". +- **FR-006**: Dashboard MUST NOT contain "Dataset Search" widget or link. +- **FR-007**: Tasks page MUST NOT show the "Run backup" button (backup initiation moves to Backup tool). +- **FR-008**: Navbar MUST retain "Tasks" and "Settings" links. + +### Key Entities + +- **Dashboard**: The main landing page serving as the registry for tools. +- **Navbar**: The persistent top navigation for global application state/config. + +## Success Criteria *(mandatory)* + +### Measurable Outcomes + +- **SC-001**: Users can navigate to Dataset Mapper, Storage Manager, and Backup Manager within 1 click from the Dashboard. +- **SC-002**: Navbar contains strictly 0 links to operational tools (Mapper, Search, Storage), containing only Tasks and Settings. +- **SC-003**: "Run backup" action is successfully performed via the new Dashboard -> Backup route. diff --git a/specs/015-frontend-nav-redesign/tasks.md b/specs/015-frontend-nav-redesign/tasks.md new file mode 100644 index 0000000..85e3afe --- /dev/null +++ b/specs/015-frontend-nav-redesign/tasks.md @@ -0,0 +1,112 @@ +# Tasks: Frontend Navigation Redesign + +**Feature Branch**: `015-frontend-nav-redesign` +**Spec**: [specs/015-frontend-nav-redesign/spec.md](../spec.md) +**Plan**: [specs/015-frontend-nav-redesign/plan.md](../plan.md) + +## Phase 1: Setup + +*Goal: Initialize project structure for the new feature.* + +- [ ] T001 Create backup component directory structure + - Path: `frontend/src/components/backups/` +- [ ] T002 Create backup page route directory + - Path: `frontend/src/routes/tools/backups/` + +## Phase 2: Foundational + +*Goal: Prepare core components for integration and verify backend connectivity.* + +- [ ] T003 Verify backend API endpoints for backups (via `009-backup-scheduler`) + - Path: `backend/src/api/routes/tasks.py` (or relevant backup route) +- [ ] T004 Define Backup types and interfaces in frontend + - Path: `frontend/src/types/backup.ts` + +## Phase 3: User Story 1 - Centralized Tool Access via Dashboard + +*Goal: Update the main dashboard to include all tool entry points.* + +**User Story**: As a user, I want to access all main tools (Backups, Mapper, Storage) from the main Dashboard so that I have a central hub for operations. (P1) + +- [ ] T005 [US1] Update DashboardGrid to include "Backup Manager" card + - Path: `frontend/src/components/DashboardGrid.svelte` +- [ ] T006 [US1] Update DashboardGrid to ensure "Dataset Mapper" and "Storage Manager" cards are present + - Path: `frontend/src/components/DashboardGrid.svelte` +- [ ] T007 [US1] Remove "Dataset Search" card from DashboardGrid + - Path: `frontend/src/components/DashboardGrid.svelte` + +## Phase 4: User Story 2 - Simplified Navigation Bar + +*Goal: Clean up the Navbar to show only global context items.* + +**User Story**: As a user, I want a clean Navbar containing only global context items (Tasks, Settings) so that the interface is less cluttered and navigation is distinct from tool usage. (P1) + +- [ ] T008 [US2] Remove "Dataset Search" link from Navbar + - Path: `frontend/src/components/Navbar.svelte` +- [ ] T009 [US2] Remove "Dataset Mapper" link from Navbar + - Path: `frontend/src/components/Navbar.svelte` +- [ ] T010 [US2] Remove "Deployment Environments" link from Navbar + - Path: `frontend/src/components/Navbar.svelte` +- [ ] T011 [US2] Verify "Tasks" and "Settings" links remain in Navbar + - Path: `frontend/src/components/Navbar.svelte` +- [ ] T012 [US2] Remove "Run backup" button from Tasks page + - Path: `frontend/src/routes/tasks/+page.svelte` (or relevant component) + +## Phase 5: Backup Management UI + +*Goal: Implement the dedicated Backup Management interface.* + +**User Story**: (Implicit P1 from FR-004) System MUST provide access to the full Backup Management component via the Dashboard link. + +- [ ] T013 [US1] Create BackupList component to display existing backups (Must use `src/lib/ui` components and `src/lib/i18n`) + - Path: `frontend/src/components/backups/BackupList.svelte` +- [ ] T014 [US1] Create BackupManager main component (container) (Must use `src/lib/ui` components and `src/lib/i18n`) + - Path: `frontend/src/components/backups/BackupManager.svelte` +- [ ] T015 [US1] Implement "Create Backup" functionality in BackupManager (Must use `src/lib/ui` components and `src/lib/i18n`) + - Path: `frontend/src/components/backups/BackupManager.svelte` +- [ ] T016 [US1] Implement "Restore Backup" functionality (if supported by backend) (Must use `src/lib/ui` components and `src/lib/i18n`) + - Path: `frontend/src/components/backups/BackupManager.svelte` +- [ ] T017 [US1] Create Backup page to host the manager (Must use `src/lib/ui` components and `src/lib/i18n`) + - Path: `frontend/src/routes/tools/backups/+page.svelte` + +## Phase 6: User Story 3 - Deprecation + +*Goal: Remove deprecated routes and code.* + +**User Story**: As a user, I want removed features (Dataset Search, Deployment Environments) to be inaccessible so that I don't use deprecated workflows. (P2) + +- [ ] T018 [US3] Delete Dataset Search route + - Path: `frontend/src/routes/tools/search/` (delete directory) +- [ ] T019 [US3] Delete Deployment Environments route + - Path: `frontend/src/routes/settings/environments/` (delete directory) +- [ ] T020 [US3] Delete Dataset Search component (if not used elsewhere) + - Path: `frontend/src/components/tools/SearchTool.svelte` +- [ ] T021 [US3] Delete EnvSelector component (if not used elsewhere) + - Path: `frontend/src/components/EnvSelector.svelte` + +## Phase 7: Polish & Cross-Cutting + +*Goal: Final verification and cleanup.* + +- [ ] T022 Verify all navigation links work correctly + - Path: `frontend/src/components/Navbar.svelte` +- [ ] T023 Verify responsive layout of new Dashboard grid + - Path: `frontend/src/components/DashboardGrid.svelte` +- [ ] T024 Ensure i18n strings are extracted for new Backup UI + - Path: `frontend/src/lib/i18n/` (or relevant locale files) +- [ ] T025 Verify "Run backup" action successfully triggers backup job (Manual/E2E check) + - Path: `frontend/src/components/backups/BackupManager.svelte` + +## Dependencies + +1. **Phase 1 & 2** must be completed first. +2. **Phase 3 (Dashboard)** and **Phase 4 (Navbar)** can be done in parallel. +3. **Phase 5 (Backup UI)** depends on Phase 1 & 2. +4. **Phase 6 (Deprecation)** should be done last to ensure no regressions before removal. + +## Implementation Strategy + +1. **Setup**: Create the new directory structure. +2. **Dashboard & Navbar**: Quick wins to reshape the navigation. +3. **Backup UI**: The core development effort. Connect to existing backend. +4. **Cleanup**: Remove old code once the new flows are verified. \ No newline at end of file