Skip to content

Merge main into dtec with UI/UX, catalog, and DPP updates#851

Closed
phoebus-84 wants to merge 18 commits intodtecfrom
main
Closed

Merge main into dtec with UI/UX, catalog, and DPP updates#851
phoebus-84 wants to merge 18 commits intodtecfrom
main

Conversation

@phoebus-84
Copy link
Copy Markdown
Collaborator

@phoebus-84 phoebus-84 commented May 8, 2026

Superseded by #852

This PR uses protected main as its head branch, so the conflict-resolution merge commit cannot be pushed back to it. The resolved replacement PR is #852: #852

Summary

This PR brings the current main work into the dtec branch, collecting the recent UI/UX refresh and related feature work.

Included changes

  • Refreshes navigation, layout, unauthenticated user experience, and project/product routing.
  • Adds and refines catalog filters, sorting integration, tag disambiguation, active filter chips, and backend aggregation wiring.
  • Improves DPP flows, including the dedicated DPP detail page, redesigned DPP tab, and DPP-backed 3D model viewer.
  • Fixes project image editing, QR-code/tab URL behavior, location autocomplete migration, and Docker pnpm setup via Corepack.
  • Carries workflow updates for publishing and supporting branch automation.

Conflict resolution

Conflict resolution was completed on the replacement branch because repository protections block direct pushes and merge commits on main.

phoebus-84 and others added 18 commits February 4, 2026 10:00
Co-authored-by: Puria Nafisi Azizi <puria@dyne.org>
Co-authored-by: Puria Nafisi Azizi <puria@dyne.org>
- Make 404 page public (accessible without login)
- Hide Contributors tab when not authenticated
- Hide user info sections (contributors, project by) for logged-out
users
- Skip GraphQL user queries when not authenticated
- Hide contributions count/button when 0
- Show DPP QR-code only for products with DPP metadata
- Fix BrBreadcrumb and GeneralCard license footer

Related to epic interfacer-gui-m4c
Closes: interfacer-gui-m4c.1, interfacer-gui-m4c.2,
interfacer-gui-m4c.3, interfacer-gui-m4c.4, interfacer-gui-m4c.5

---------

Co-authored-by: Puria Nafisi Azizi <puria@dyne.org>
Recyclability: numeric percentage (0-100%) with monotonic range tags
for stepped filtering via classifiedAs, same pattern as energy/CO2.

Repairability: binary toggle with single 'repairability-available' tag
in classifiedAs.

Both filters are wired through:
- Create flow (ProductFiltersStep)
- Edit flow (specs.tsx)
- Products sidebar filters (ProductsFilters)
- Active filters bar chips (ProductsActiveFiltersBar)
- Tag generation and normalization (tagging.ts, useProjectCRUD)

Closes interfacer-gui-zsv
- **feat: ✨ Epic 1 - Design System Foundation**
- **feat: ✨ Epic 2 - Navigation and Layout Redesign**
- **feat: ✨ Epic 3 - Catalog Pages (Designs, Products, Services)**
- **feat: ✨ redesign project detail page with new layout**
- **feat: ✨ Epic 5 - Profile Page Redesign with new layout and tabs**
- **feat: ✨ Epic 6 - Creation Forms Redesign with new design tokens**
- **chore: 🔧 close epics 7-9 in bd tracker**
- **feat: ✨ add creation form access from profile page (cxo.7)**
- **fix: 🐛 align catalog titles, stats & placeholders with prototype
(cxo.1, cxo.2, cxo.3)**
- **feat: ✨ add Show All dropdown to catalog toolbar (cxo.5)**
- **feat: ✨ add missing sidebar filters (cxo.4)**
- **feat: ✨ rename My list to Saved Lists, add Track Record nav item
(cxo.8)**
- **feat: ✨ enhance project cards with requires/nearby and based-on
links (cxo.6)**
- **feat: ✨ enhance detail page sidebar and add product passport section
(cxo.9)**
- Add /dpps/[id] route with SSG fallback and public access
- Header card: orange DPP icon, inline status badge, batch code,
  Share/Download PDF/overflow action buttons
- Collapsible 'What is a DPP?' explainer card with checkmarks
- Sticky sidebar with colored section navigation (desktop)
- Section cards with colored icon headers, title+subtitle, field grids
- Product detail DPP cards navigate to /dpps/{id}
- Profile DPP tab rows navigate to /dpps/{id} with keyboard support
- Fix useDppApi infinite re-render: bypass unstable useStorage refs,
  read localStorage directly in useCallback bodies

Closes: interfacer-gui-7yb.1, .2, .3, .4, .6, .7, .8, .9
)

- Layout.tsx: always render Topbar, remove authenticated gate
- Topbar: show nav links for all users, add sign-in/sign-up for guests
- NavigationMenu: add sign-in/sign-up CTA for unauthenticated users
- sign_in/sign_up: use standard Layout instead of NRULayout
- Topbar: Designs nav button links to /designs instead of /
- Topbar: active state uses exact path matching, no fallback
- NavigationMenu: Designs sidebar link updated to /designs
- Logo still links to / homepage
… backend (#838)

- **feat: ✨ wire totalCount into first hero stat card on catalog pages**
- **feat: ✨ wire sorting orderBy and distinctPrimaryAccountableCount
from backend**
- Add KPI counter cards (total/active/drafts/archived) with backend
facets
- Add status filter dropdown and expanded sort options
- Redesign table with Product ID, DPP ID, Batch/Unit, Status, Created
columns
- Add QR code download button and More Actions overflow menu
- Add pagination footer showing count of displayed DPPs
- Update API types for facets, search, sort params
- Wire frontend to new backend search/sort/facets/QR endpoints
…840)

## Summary
- remove owner-only edit banners from profile and project detail pages
while keeping inline edit actions
- fix search page filter composition to avoid sending mutually exclusive
fields name and orName
- fix profile tab search by wiring search input into the projects query
filter with debounce

## Commits
- refactor(ui): remove owner edit banners from profile and project
detail pages
- fix(search): avoid sending both name and orName filter params
- fix(profile): wire search input to GraphQL filter in profile tabs

## Testing
- manual verification of search page error path and profile tab search
behavior
… system classifiedAs (#841)

classifiedAs stores both user free-form tags and system-derived metadata
(machine-*, material-*, category-*, powercompat-*, env-*, etc.), forcing
display code to maintain drifting per-component blocklists to hide
system tags from users.

Introduce a dedicated TAG_PREFIX.USER = "tag" prefix applied
symmetrically on save and read:

- lib/tagging.ts: add userTag, isUserTag, stripUserTagPrefix,
isSystemTag, extractUserTagValues, normalizeUserTagsForSave helpers plus
SYSTEM_TAG_PREFIXES and LEGACY_SYSTEM_TAG_PATTERNS constants.
- Save sites (useProjectCRUD handleProjectCreation +
handleMachineCreation, resource claim) normalize user-entered tags to
tag-<slug>.
- URL filter producers (ProductsFilters, ProjectsFilters) prefix on
apply and strip on load so chips show "laser cut" instead of
"tag-laser-cut".
- Display sites (ProjectCardNew, ProjectDetailNew, GeneralCard,
ProjectsTableRow, ProductsActiveFiltersBar) route through
extractUserTagValues, removing bespoke blocklists (including stale mat:,
c:, pc:, env:, pwr:, rep:, m: entries).
- Legacy un-prefixed tags remain visible via backwards-compat fallback
in extractUserTagValues; no data migration required.

Closes interfacer-gui-i46.
pnpm changed their release artifact naming, causing

https://github.com/pnpm/pnpm/releases/latest/download/pnpm-linuxstatic-x64
to return 404.

Use Node.js built-in corepack instead, which is the officially
recommended
way to install pnpm in Docker images.
@phoebus-84 phoebus-84 changed the title feat: new ui/ux Merge main into dtec with UI/UX, catalog, and DPP updates May 8, 2026
@phoebus-84 phoebus-84 closed this May 8, 2026
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