Skip to content

feat: UI/UX overhaul — edit consistency, always-on history, visibility removal, report + library improvements#149

Merged
ChristopherRotnes merged 10 commits into
masterfrom
feat/147-ui-overhaul
May 7, 2026
Merged

feat: UI/UX overhaul — edit consistency, always-on history, visibility removal, report + library improvements#149
ChristopherRotnes merged 10 commits into
masterfrom
feat/147-ui-overhaul

Conversation

@ChristopherRotnes
Copy link
Copy Markdown
Owner

@ChristopherRotnes ChristopherRotnes commented May 6, 2026

Summary

  • Edit panel consistency (As a user I want edit and data-entry panels to be visually consistent so I can immediately recognise when I am in an edit state #147) — all edit/entry surfaces now use var(--cds-layer-02) + 2px var(--accent) top border + SectionLabel with icon header. Applies to ExerciseForm, TemplateSessionEditor, and the MuscleMap confirm step. Cancel → ghost, errors → InlineNotification kind="error". SectionLabel accepts renderIcon prop.
  • Session visibility removed — "Del med andre instruktører" toggle gone entirely. DB migration backfills all private sessions; RLS policy updated to remove visibility = 'shared' filter. All sessions now always visible to gym co-instructors. GDPR transparency note added to Settings.
  • History — always-on inline editing — the "Rediger økt" gate is gone. Expanded sessions are always editable. Per-session state in Map<id, editState> fixes the filter+edit bug. Dirty-state Save / Discard / Reupload bar. Muscle groups section removed. "Re-analyser" → "Last opp nytt bilde".
  • Template use flow — step indicator ("Steg 2 av 3 — Tilpass øvelser") in use mode; "Lagre mal" removed from use flow; template name is now a Carbon TextInput.
  • Report restructured — "Ikke trent" gap card moved to after the frequency table (directly above the rec button). Post-recommendation body map removed. Fallback messages when all primary muscles trained.
  • Library scaling — Snarveier carousel capped at 6 with "Se alle →" link. Load-more buttons on exercises (20/batch) and templates (12/batch). Search input on templates tab.
  • i18n — new keys added across nb/en/fa: common.discard, exerciseForm.headerNew/Edit, muscleMap.confirmLabel, history.reuploadPhoto, templateEditor.stepIndicator/nameLabel, settings.dataSharingNote, report.allMusclesPrimary/allMusclesSecondaryNote, bibliotek.searchTemplates/showMore/seeAll. Dead sharing keys removed.

Test plan

  • Template flow: Planlegger → Bruk økt → step indicator shows "Steg 2 av 3" → no "Lagre mal" visible → confirm step shows layer-02 container with SectionLabel
  • History: expand a session → all exercise rows immediately editable, no "Edit" button → change something → Save/Discard bar appears → discard reverts → save works → filter active sessions still editable (filter+edit bug fixed)
  • History: no visibility toggle visible anywhere
  • Settings → Konto: GDPR data sharing note visible below email
  • Report: open → frequency table → gap card below it → rec button directly under → click → recs appear (no body map) → if all muscles trained, success message shown
  • Library: add 25+ exercises → load-more button appears → search filters correctly → templates tab has search input → carousel shows max 6 with "Se alle →"
  • ExerciseForm: Bibliotek → Ny øvelse → form has accent border + icon header + ghost cancel button
  • Theme: g10 ↔ g100 toggle — no regressions in any updated component

🤖 Generated with Claude Code

…isibility removal, report restructure, library scaling (#147)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
@ChristopherRotnes ChristopherRotnes self-assigned this May 6, 2026
- Fix react-hooks/refs: track wrapWidth via ResizeObserver in BodySVG and HeatmapBodySVG instead of reading ref during render
- Fix setState-in-useMemo in Bibliotek: move setExVisible reset to useEffect
- Remove unused imports/state: DefinitionTooltip, EditIcon (History), selectedSession (History), saved (TemplateSessionEditor)
- Add supabase/templates/ with branded magic_link, invite, and confirmation HTML emails
- Add supabase/config.toml referencing templates for version-controlled config push
- Gitignore supabase/.temp/ (ephemeral CLI state)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
@github-actions
Copy link
Copy Markdown

github-actions Bot commented May 6, 2026

Azure Static Web Apps: Your stage site is ready! Visit it here: https://white-island-090dfd003-149.westeurope.7.azurestaticapps.net

Previous config.toml only had email template sections, causing config push
to overwrite site_url, redirect URLs, MFA and email confirmation settings
with local dev defaults. Full auth section added with correct production values.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
@github-actions
Copy link
Copy Markdown

github-actions Bot commented May 6, 2026

Azure Static Web Apps: Your stage site is ready! Visit it here: https://white-island-090dfd003-149.westeurope.7.azurestaticapps.net

ChristopherRotnes and others added 2 commits May 7, 2026 01:25
Completes full coverage of all 5 Supabase auth email templates.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Completes all 6 Supabase auth email templates with consistent branding.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
@github-actions
Copy link
Copy Markdown

github-actions Bot commented May 6, 2026

Azure Static Web Apps: Your stage site is ready! Visit it here: https://white-island-090dfd003-149.westeurope.7.azurestaticapps.net

1 similar comment
@github-actions
Copy link
Copy Markdown

github-actions Bot commented May 6, 2026

Azure Static Web Apps: Your stage site is ready! Visit it here: https://white-island-090dfd003-149.westeurope.7.azurestaticapps.net

ChristopherRotnes and others added 3 commits May 7, 2026 02:23
- History: remove username from edit box; unify ghost buttons; fix chip
  overflow (+N); pre-fetch library on mount for autocomplete; clarify
  gym conflict warning
- Bibliotek: rename "Maler" → "Mine maler"; remove Snarveier carousel;
  remove used_at date from template cards
- TemplatePicker: remove "Sist brukt" date
- Planlegger: auto-save on add/remove; remove Lagre/Fjern uke buttons
- MuscleMap: remove "Neste steg" CTA and "Tips" callout
- Login: English-only quotes (language unknown before sign-in)
- app.css: strengthen Carbon Select fix (default + hover background)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
@github-actions
Copy link
Copy Markdown

github-actions Bot commented May 7, 2026

Azure Static Web Apps: Your stage site is ready! Visit it here: https://white-island-090dfd003-149.westeurope.7.azurestaticapps.net

…rt CTA, fix planner wording (#147)

- TemplatePicker: add 3-step visual progress indicator (step 1 active)
- TemplateSessionEditor: replace plain step text with same visual stepper (step 2 active)
- MuscleMap: rename "Mal" button to "Mine maler" (nb) / "My templates" (en)
- Report: remove "Disse bør du legge inn i programmet" StickyCta — misleading (navigates to library root, exercises are not saved)
- Planlegger: allMusclesTrained message changed from "trent" to "planlagt"

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
@github-actions
Copy link
Copy Markdown

github-actions Bot commented May 7, 2026

Azure Static Web Apps: Your stage site is ready! Visit it here: https://white-island-090dfd003-149.westeurope.7.azurestaticapps.net

…nes)

Both buildRecommendPrompt and buildPeriodRecommendPrompt now tell Claude the
session takes place in a group gym hall with only free weights, bars, dumbbells,
mats, yoga blocks and resistance bands — no weight machines.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
@github-actions
Copy link
Copy Markdown

github-actions Bot commented May 7, 2026

Azure Static Web Apps: Your stage site is ready! Visit it here: https://white-island-090dfd003-149.westeurope.7.azurestaticapps.net

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.

1 participant