Skip to content

FE-1709: Revamp Petrinaut user settings - #9697

Merged
kube merged 17 commits into
mainfrom
codex/fe-1709-petrinaut-user-settings
Sep 15, 2026
Merged

kube merged 17 commits into
mainfrom
codex/fe-1709-petrinaut-user-settings

Conversation

@kube

@kube kube commented Sep 13, 2026

Copy link
Copy Markdown
Contributor

Summary

Bring Petrinaut preferences into one movable, resizable User Settings dialog with General, Viewport, Simulation and Labs sections. Settings can be opened from the viewport controls, command palette, keyboard shortcut and navigation state.

The heading stays visible while settings scroll beneath progressive blur. The dialog keeps the canvas at its normal brightness and supports the same edge and corner resizing as the AI assistant.

user-settings--drag-scroll-resize.mp4

Links

Blocked by

Changes

  • Replace the viewport-only dialog and retain existing preferences, including Petricon and automatic arc connections
  • Keep the heading and navigation fixed around one content scrollbar, with stacked 0.5, 1 and 2px blur layers and a gradient at each scroll edge
  • Make the top area draggable and all eight edges and corners resizable, preserving size and position when changing sections
  • Share movement, resize handles and viewport limits with the floating AI assistant
  • Show Experimental badges inline without increasing normal row height, and disable text selection throughout the dialog
  • Preserve the selected settings section in website navigation URLs
  • Extend the design-system Dialog with a content ref and inline style support; update the user guide and package changesets

Known issues

User-guide screenshots pending for the visual-settings, drawing-a-net and compilation-output pages. A refreshed User Settings capture is prepared locally.

Test coverage

  • Settings tests cover entry points, keyboard navigation, preferences, drag boundaries, all eight resize handles and size preservation between sections
  • Shared geometry tests cover minimum and maximum dimensions, viewport limits, opposite-edge anchoring and custom Settings limits
  • All 1,310 Petrinaut unit tests passed with two workers, including saved dimensions during constrained resizing and hiding unavailable optimization settings
  • All 20 build, type-check and lint tasks passed, along with architecture and formatting checks
  • All 85 design-system tests and 696 website tests passed on the final main-based revision 94a8255fcb
  • Browser verification covered single scrolling, inline badges, non-selectable navigation, both blur edges, dragging while scrolled, corner resizing, minimum size, smaller-window containment and AI panel dragging, resizing, keyboard movement and docking

How to test

  • Open User Settings through the viewport controls, command palette or keyboard shortcut
  • Scroll Viewport settings and check the fixed heading and blur at both ends
  • Drag the heading or empty top area, then resize an edge or corner
  • Switch sections and check that the dialog keeps its size and position
  • Drag across navigation text and check that it remains unselected
  • Reopen the dialog and check that its initial size and position return
  • Float the AI assistant, then drag, resize and dock it

@kube kube self-assigned this Sep 13, 2026
@vercel

vercel Bot commented Sep 13, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated
hash Ready Ready Preview Sep 15, 2026 8:11pm UTC
petrinaut Ready Ready Preview Sep 15, 2026 8:11pm UTC
petrinaut-docs Ready Ready Preview Sep 15, 2026 8:11pm UTC
1 Skipped Deployment
Project Deployment Actions Updated
hashdotdesign-tokens Ignored Ignored Preview Sep 15, 2026 8:11pm UTC

Request Review

@github-actions github-actions Bot added area/infra Relates to version control, CI, CD or IaC (area) area/libs Relates to first-party libraries/crates/packages (area) type/eng > frontend Owned by the @frontend team area/apps labels Sep 13, 2026
@kube
kube added this pull request to stack #9699 September 13, 2026 22:54
@kube
kube removed this pull request from stack #9699 September 15, 2026 01:16
@kube
kube force-pushed the codex/fe-1709-petrinaut-user-settings branch from cfa1a72 to 7ee3571 Compare September 15, 2026 01:18
@kube
kube added this pull request to stack #9730 September 15, 2026 01:18
@kube
kube removed this pull request from stack #9730 September 15, 2026 02:00
@kube
kube changed the base branch from codex/fe-601-code-editor-variations to codex/fe-1658-petrinaut-ai-right-sidebar September 15, 2026 02:00
@github-actions github-actions Bot added the area/apps > hash.design Affects the `hash.design` design site (app) label Sep 15, 2026
@kube
kube force-pushed the codex/fe-1709-petrinaut-user-settings branch from 7ee3571 to 25e2a24 Compare September 15, 2026 02:01
@github-actions github-actions Bot removed the area/apps > hash.design Affects the `hash.design` design site (app) label Sep 15, 2026
@kube
kube added this pull request to stack #9731 September 15, 2026 02:02
@github-merge-queue
github-merge-queue Bot removed this pull request from the merge queue because a pull request earlier in the stack was removed Sep 15, 2026

@drdma drdma left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks awesome!

@kube
kube added this pull request to the merge queue Sep 15, 2026
Merged via the queue into main with commit 2c1a8fd Sep 15, 2026
64 checks passed
Base automatically changed from codex/fe-1658-petrinaut-ai-right-sidebar to main September 15, 2026 21:19
@kube
kube deleted the codex/fe-1709-petrinaut-user-settings branch September 15, 2026 21:19
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area/apps > hash.design Affects the `hash.design` design site (app) area/apps area/infra Relates to version control, CI, CD or IaC (area) area/libs Relates to first-party libraries/crates/packages (area) type/eng > frontend Owned by the @frontend team

Development

Successfully merging this pull request may close these issues.

4 participants