# 27-Jan-2026 — enhance album grid view with masonry layout, gap control, and URL persistence [ref: #96](https://github.com/nbarrett/ngx-ramblers/issues/96)

## [build 439](https://github.com/nbarrett/ngx-ramblers/actions/runs/21416381896) — [commit b1cae9c](https://github.com/nbarrett/ngx-ramblers/commit/b1cae9c5b856291e2b97d4d2f0f487dfc4eb31c5)

_____

Album Grid View Enhancements:
- Add masonry layout mode as an alternative to fixed-aspect grid layout
- Add configurable gap control between images (0 to 1.75rem with descriptive labels)
- Add column count stepper (1-6 columns) for real-time grid customization
- Add layout mode toggle to switch between masonry and fixed-aspect views
- Add title visibility toggle in grid view
- All grid settings (columns, gap, layout mode, titles, album view) now persist in URL params
New Components:
- BadgeStepperComponent: Reusable numeric stepper with +/- buttons, custom labels, and unit formatting
- HeightResizerComponent: Draggable height adjuster with mouse and touch support for preview panels
Album Editor Improvements:
- Grid settings now configured via toolbar controls in presentation mode
- Settings auto-save with album configuration
- Simplified editor UI with informative alert about grid control location
Model Updates:
- Add GridLayoutMode enum (FIXED_ASPECT, MASONRY)
- Extend GridViewOptions with layoutMode, imageFit, and gap properties
- Add URL param StoredValue constants for grid state persistence
- Update DEFAULT_GRID_OPTIONS with sensible defaults (masonry, 2 columns, 1rem gap)
Technical Details:
- CSS Grid with column-count for masonry layout
- Bootstrap grid with responsive column classes for fixed-aspect
- Real-time URL updates without page reload using Location.replaceState
- URL params read on init for shareable album view states