Moves phases 08–11 execution artifacts from .planning/phases/ to .planning/milestones/v0.2-phases/ to keep .planning/phases/ clean for the next milestone. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
8.4 KiB
status, phase, source, started, updated, resolved_by
| status | phase | source | started | updated | resolved_by | |||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| resolved | 11-visual-design-responsive-layout-cleanup |
|
2026-06-17T08:10:53Z | 2026-06-17T11:20:00Z | 11-07-PLAN.md |
Current Test
[testing complete]
Tests
1. Mobile Sidebar Drawer
expected: At a 375px-wide viewport, the normal sidebar is hidden and a mobile header with a hamburger button is visible. Tapping the hamburger opens a slide-in sidebar drawer over the page; tapping the backdrop or navigating to a sidebar link closes it. result: pass
2. Mobile Storage Rows and Touch Targets
expected: At a 375px-wide viewport, the document/folder list shows icon, name, and actions only. Size and modified-date columns are hidden, names truncate instead of overflowing, and row action buttons are large enough to tap comfortably.
result: pass
previous_result: issue
reported: "I cannot view the actions as they are only a hover-over action. This needs to be changes and they need to be always visible. If I am on a touchscreen I need to imagine where the buttons are and could accidentally delete files. Furthermore the search field, sorting field and new folder button are not as dynamic. They are fully visible at a 550 px-wide viewport but lower it shift out of the window on the right site."
severity: major
resolution: "Plan 11-07 removed hover-only opacity from folder/file action containers, widened the mobile actions column, and added regression tests asserting row actions do not contain opacity-0 or group-hover:opacity-100."
evidence:
- "frontend/src/components/storage/StorageBrowser.vue:
data-test=\"folder-row-actions\"anddata-test=\"file-row-actions\"action containers are visible by default." - "frontend/src/components/storage/tests/StorageBrowser.skeleton.test.js: action visibility tests pass."
3. Mobile-Safe Modals and Forms
expected: Share, cloud credential, folder delete, and document preview modals fit within a small viewport. Modal content scrolls when needed, form controls look consistent, and fields/buttons remain reachable without horizontal scrolling.
result: pass
previous_result: issue
reported: "The mobile navigation is a bit difficult. The file browser is not scollable. I need to scroll sideways to access the sorting and new file buttons. Herre the searchfield, sorting and new file should morph into a icons for space savings."
severity: major
resolution: "Plan 11-07 split the StorageBrowser toolbar into full controls at sm+ and compact icon controls below sm; mobile search opens a full-width row, sort opens an in-viewport panel, and new-folder is an icon button."
evidence:
- "StorageBrowser mobile toolbar exposes accessible Search, Sort, and New folder icon buttons."
- "SearchBar now uses
w-full sm:w-56so expanded mobile search fits its container." - "Regression tests cover mobile toolbar visibility, search toggle, sort panel emission, and new-folder emission."
4. Visual Consistency and Keyboard Focus
expected: Page headings, panel headings, sidebar rows, buttons, and interactive links use consistent typography and spacing. Hover states are distinct, and keyboard tabbing shows visible focus rings on buttons, links, and sidebar tree controls. result: pass
5. Navigation and Lazy-Loaded Pages
expected: Navigating to Topics, Document detail, Settings, Cloud storage, Shared, and Admin pages still works normally. Pages load without a blank-screen failure, auth/admin redirects behave as expected, and returning to the main file manager remains fast. result: pass
6. Bundle and Dead-Code Cleanup Smoke Check
expected: The app production build succeeds, the baseline and final bundle reports exist in .planning/perf/, and removed dead-code views/components do not appear anywhere in the UI.
result: pass
Summary
total: 6 passed: 6 issues: 0 pending: 0 skipped: 0 blocked: 0
Gaps
[resolved]
- truth: "At a 375px-wide viewport, row actions are visible and safe to tap without relying on hover."
status: resolved
reason: "User reported: actions are only hover-over, which makes them invisible on touchscreen and can lead to accidental deletes."
severity: major
test: 2
root_cause: "StorageBrowser row action containers are hidden by default with
opacity-0 group-hover:opacity-100, so touch devices have no reliable visible target. The buttons have 36px touch classes, but their parent remains invisible until hover." artifacts:- path: "frontend/src/components/storage/StorageBrowser.vue"
issue: "Folder and file action containers use
opacity-0 group-hover:opacity-100 transition-opacity." missing: - "Make row action controls visible by default, especially below
md; do not rely on hover to reveal destructive actions." - "Add regression tests asserting action containers are visible without hover and buttons remain 36px minimum on mobile."
fixed_by: "11-07-PLAN.md"
verification: "StorageBrowser.skeleton.test.js asserts
file-row-actionsandfolder-row-actionsdo not contain hover-only opacity classes." debug_session: "inline-uat-diagnosis-2026-06-17"
- path: "frontend/src/components/storage/StorageBrowser.vue"
issue: "Folder and file action containers use
- truth: "Below 550px, the search field, sorting field, and new-folder button fit within the viewport without shifting off the right side."
status: resolved
reason: "User reported: search, sorting, and new-folder controls are visible at 550px but shift out of the window on the right side below that width."
severity: major
test: 2
root_cause: "StorageBrowser places BreadcrumbBar plus a right-aligned
ml-auto flex shrink-0toolbar in one flex row. The toolbar contains a fixed-widthSearchBar(w-56), text sort buttons, and a full textNew folderbutton, so the cluster cannot shrink below narrow mobile widths." artifacts:- path: "frontend/src/components/storage/StorageBrowser.vue"
issue: "Toolbar cluster uses
ml-auto flex items-center gap-2 shrink-0and keeps full controls visible at all widths." - path: "frontend/src/components/documents/SearchBar.vue"
issue: "Search input uses fixed
w-56width." - path: "frontend/src/components/documents/SortControls.vue" issue: "Sort controls render three text buttons with active arrow text, with no compact mobile mode." missing:
- "Introduce mobile-specific compact icon controls for search, sort, and new-folder below
smor the verified breakpoint." - "Allow expanded mobile search/sort UI to occupy its own full-width row or popover instead of pushing off-screen."
- "Add responsive tests for toolbar behavior below 550px." fixed_by: "11-07-PLAN.md" verification: "Mobile toolbar tests cover icon-only controls, full-width search row, sort panel, and new-folder event emission." debug_session: "inline-uat-diagnosis-2026-06-17"
- path: "frontend/src/components/storage/StorageBrowser.vue"
issue: "Toolbar cluster uses
- truth: "On mobile, file-browser toolbar navigation does not require sideways scrolling; search, sort, and new-folder controls collapse into compact icon controls when space is tight."
status: resolved
reason: "User reported: mobile navigation is difficult, the file browser is not scrollable, and they need sideways scrolling to access sorting and new-file buttons; search, sorting, and new-file should morph into icons for space savings."
severity: major
test: 3
root_cause: "Same responsive toolbar constraint as Test 2: full text controls are always rendered in the sticky header, and the list container does not provide a usable alternative when the toolbar overflows horizontally."
artifacts:
- path: "frontend/src/components/storage/StorageBrowser.vue" issue: "No mobile compact toolbar state or icon-only controls exist." missing:
- "Collapse search/sort/new-folder into icon buttons on mobile."
- "Expose search and sort through accessible toggle panels or menus that fit within viewport width."
- "Verify file browser remains vertically scrollable and never requires horizontal scroll for primary controls."
fixed_by: "11-07-PLAN.md"
verification: "
cd frontend && npm run test -- --run src/components/storage/__tests__/StorageBrowser.skeleton.test.jspassed with 22 tests after the fix." debug_session: "inline-uat-diagnosis-2026-06-17"
Resolution Evidence
cd frontend && npm run test -- --run src/components/storage/__tests__/StorageBrowser.skeleton.test.js— pass: 1 file, 22 tests.cd frontend && npm run test -- --run— pass: 36 files, 277 tests.cd frontend && npm run build— pass: production build succeeded; existingauth.jsmixed static/dynamic import warning remains.