Skip to content

Release v1.5.0: UI improvements and Font Awesome removal#32

Merged
tovrleaf merged 47 commits into
mainfrom
feature/v1.5.0-release
Feb 27, 2026
Merged

Release v1.5.0: UI improvements and Font Awesome removal#32
tovrleaf merged 47 commits into
mainfrom
feature/v1.5.0-release

Conversation

@tovrleaf
Copy link
Copy Markdown
Owner

Summary

Release v1.5.0 with major UI improvements and performance optimizations.

Changes

Added

  • Vercel-style README header with centered logo and documentation links
  • Social media preview image (Open Graph and Twitter Card meta tags)
  • Mobile tap feedback for better touch interaction
  • Gallery images to album pages (World Rat Conspiracy: 7 images, Fridlyst: 2 images)
  • Custom SVG icons for Instagram, Bandcamp, YouTube, and Camera
  • Vignette effect on video thumbnails
  • Fairfield Circuitry Unpleasant Surprise to gear inventory
  • Agent Limitations section in AGENTS.md

Changed

  • Removed Font Awesome library (~70KB saved)
  • Replaced all icons with custom SVG files
  • Moved Bandcamp/Discogs icons to album header next to artist name
  • Responsive icon layout (right-aligned on desktop, stacked on mobile)
  • All icons use consistent #b0b0b0 color
  • Fixed bump_version.py to update all version files

Fixed

  • Camera icon visibility and sharpness on media page
  • Version sync across README.md, CHANGELOG.md, and website/static/changelog.txt

Testing

  • ✅ All pre-commit hooks passed
  • ✅ Hugo build successful
  • ✅ HTML validation passed
  • ✅ Link checking passed

Deployment

After merge, the deploy workflow will automatically:

  1. Build and deploy to production
  2. Create GitHub release v1.5.0 from CHANGELOG

Update deploy workflow to automatically:
- Extract version from CHANGELOG.md after merge to main
- Create and push git tag (e.g., v1.4.0)
- Create GitHub release from CHANGELOG notes

This eliminates manual tag creation step from release process.

Workflow now:
1. Bump version on feature branch
2. Fill CHANGELOG.md
3. Create PR and merge
4. Tag and release created automatically
Remove space in .kiro/instructions/ link that was preventing
proper navigation to agent-specific instructions directory.
Adjust hero logo positioning to remove horizontal offset on mobile
screens. Moves transform from individual logo elements to container
for cleaner responsive behavior.
Document architecture decision for gear inventory feature including:
- YAML-based data storage in website/data/gear/
- Hugo template with expandable list and multi-select filters
- CLI management script with fzf integration
- AI-assisted gear addition via @add-gear prompt
- SEO exclusion via robots.txt

Files modified:
- docs/adr/018-gear-inventory-management-and-display-system.md - new ADR
- docs/adr/README.md - add ADR-018 to index
Implement command-line tool for managing gear inventory with:
- Add/list/search/edit/delete operations
- fzf integration for interactive selection
- YAML validation and nested settings support
- AI-assisted addition prompt

Files added:
- scripts/manage_gear.py - CLI management tool
- mk/gear.mk - Makefile module for 'make gear' command
- .kiro/prompts/add-gear.md - AI-assisted gear addition

Files modified:
- Makefile - include gear.mk module
- requirements-dev.txt - add ddgs>=1.0.0 for web search
Create gear catalog page with:
- Expandable list of gear items
- Multi-select filters (category, manufacturer, type)
- Search functionality
- Visual filter tags with rust smoke effect
- SVG filter for rough, hand-drawn borders
- Nested settings support

Files added:
- website/layouts/gear/list.html - gear page template
- website/content/gear/_index.md - gear page content
- website/data/gear/*.yaml - gear data files (BD-2, RingerBringer, Data Corrupter)

Features:
- JavaScript filtering with OR logic within type, AND across types
- Rough border effect using SVG feTurbulence filter
- Dark minimal aesthetic with rust-colored filter tags
Implement dark minimal styling for gear page:
- Rust-colored smoke effect on filter tags
- Complex radial gradients (12 steps per smoke pocket)
- Black gradient from left edge (0-15%)
- Smoke pockets positioned at 35-85% horizontally
- Rough border effect on inputs and gear items
- Expandable gear items with smooth transitions
- Responsive layout with flexbox

Filter tag styling:
- 3 smoke pockets with rust colors fading to transparent
- Base layer with radial gradient black
- Hover state with enhanced smoke effect
- Remove button with color transition

Gear item styling:
- Rough borders using SVG filter
- Clean text without distortion effects
- Border hidden between header and details when expanded
- Nested settings display support

Files modified:
- website/static/css/main.css - add 345 lines of gear page styles
Add navigation to gear page and configure SEO:
- Link "analog filth" text to /gear/ page (same tab)
- Create link render hook to only open external links in new tab
- Add /gear/ to robots.txt Disallow list

Files modified:
- website/content/about/_index.md - add gear link
- website/layouts/about/section.html - remove target=_blank JavaScript
- website/static/robots.txt - add /gear/ to Disallow

Files added:
- website/layouts/_default/_markup/render-link.html - link render hook
Fix Hugo build error by moving changelog.txt out of data directory.
Hugo expects only structured data files (YAML, JSON, TOML) in data/.

Files modified:
- website/data/changelog.txt - deleted
- website/static/changelog.txt - moved here
Add the following pedals:
- EarthQuaker Devices Hizumitas (Fuzz/Distortion)
- Death By Audio Space Bender (Modulation/Chorus/Vibrato)
- Electro-Harmonix Freeze (Sound Sustainer)
- Intensive Care Audio Vena Cava Filter (Filter)
- M.A.S.F. Pedals wata fUZZ (Fuzz/Distortion)
- ZVEX Effects Super Duper 2-in-1 (Boost/Overdrive, nested settings)

Files added:
- website/data/gear/earthquaker-devices-hizumitas.yaml
- website/data/gear/death-by-audio-space-bender.yaml
- website/data/gear/electro-harmonix-freeze.yaml
- website/data/gear/intensive-care-audio-vena-cava-filter.yaml
- website/data/gear/masf-pedals-wata-fuzz.yaml
- website/data/gear/zvex-effects-super-duper-2-in-1.yaml
Apply consistent border rendering technique across all gear page elements:
- Move filter from wrapper element to ::before pseudo-element
- Ensures text remains clean while borders have rough effect
- Matches the styling used for gear item boxes

Files modified:
- website/static/css/main.css - update .input-wrapper border implementation
Add the following pedals:
- Walovoid The Distroyer (Distortion/Fuzz)
- Walovoid Filth Grinder II (Fuzz/Octaver with detailed controls)

Files added:
- website/data/gear/walovoid-the-distroyer.yaml
- website/data/gear/walovoid-filth-grinder-ii.yaml
Layout improvements:
- Change from vertical list to waterfall/masonry grid layout
- 3 columns on desktop, 2 on tablet, 1 on mobile
- Move search box to separate row above filters
- Add rough border effect to search box

New features:
- Add "Expand All" / "Collapse All" toggle button
- Button placed with filter controls
- Matches filter control styling

Files modified:
- website/static/css/main.css - add grid layout, search wrapper, toggle button styles
Convert filter dropdowns to searchable inputs:
- Replace select elements with input + datalist
- Users can type to search/filter options
- Validates selection against datalist options
- Only adds filter on valid selection (change event)
- Prevents adding filter on every keystroke

Features:
- Category, Manufacturer, and Type filters now searchable
- Native HTML5 datalist for browser compatibility
- Maintains rough border styling
- Toggle all button functionality integrated

Files modified:
- website/layouts/gear/list.html - convert selects to datalist inputs, add toggle button logic
Add the following pedals:
- Meris Ottobit Jr. (Bitcrusher/Sequencer, Hybrid)
- Meris Hydra (Modulation/Chorus/Flanger/Phaser, Hybrid)
- BOSS HM-2 Heavy Metal (Distortion/Fuzz, Analog)

Files added:
- website/data/gear/meris-ottobit-jr.yaml
- website/data/gear/meris-hydra.yaml
- website/data/gear/boss-hm-2-heavy-metal.yaml
Replace "Expand All" / "Collapse All" text with visual icons:
- Show both ▲ (collapse) and ▼ (expand) icons
- Highlight active icon (opacity 1.0)
- Dim inactive icon (opacity 0.3)
- Icons indicate current action (what will happen on click)

Files modified:
- website/layouts/gear/list.html - add icon spans, update toggle logic
Style toggle button icons with active/inactive states:
- Flexbox layout for centered icon display
- Active icon: full opacity (1.0)
- Inactive icon: dimmed (0.3 opacity)
- Smooth opacity transitions
- Fix duplicate border-color declaration

Files modified:
- website/static/css/main.css - add icon styles and flexbox layout
Improve gear addition workflow to prevent incorrect controls:
- Require web search for specifications
- Examine product images to identify physical controls
- Read control labels directly from photos
- Never guess controls from similar products
- Ask user if images aren't clear
- Fix field name from 'type' to 'technology' in example

This prevents adding incorrect control information by requiring
visual verification of the actual hardware.

Files modified:
- .kiro/prompts/add-gear.md - add image examination requirements
Add the following gear:
- Metsään Noise Nihil (Analog Delay/Feedback)
- Rucci Electronics Bent Time Drive (Analog Delay/Distortion/Circuit Bending)
- Sunmachine Effects Colossus (Analog Distortion/Fuzz)
- JMT Synth DNVO-1 (Analog Drone Synth)
- TH/FX Noisedevices Rita's Cracked Pointe Shoe (Analog Noise Generator/Distortion)
- TC Electronic Flashback II X4 (Digital Delay)

Files added:
- website/data/gear/metsaan-noise-nihil.yaml
- website/data/gear/rucci-electronics-bent-time-drive.yaml
- website/data/gear/sunmachine-effects-colossus.yaml
- website/data/gear/jmt-synth-dnvo-1.yaml
- website/data/gear/thfx-noisedevices-ritas-cracked-pointe-shoe.yaml
- website/data/gear/tc-electronic-flashback-ii-x4.yaml
Standardize all gear YAML files:
- Rename 'settings' field to 'controls' (11 files)
- Capitalize category values: 'pedal' → 'Pedal', 'synth' → 'Synth'
- Capitalize technology values: 'analog' → 'Analog', 'digital' → 'Digital', 'hybrid' → 'Hybrid'
- Remove quotes for consistency

This ensures consistent field naming and display across all gear items.

Files modified:
- website/data/gear/*.yaml (all gear files)
Template improvements:
- Change from 'settings' to 'controls' field
- Display each type in separate badge (not comma-delimited)
- Simplify template logic

This allows each gear type (Delay, Distortion, etc.) to be displayed
as individual badges instead of combined in one element.

Files modified:
- website/layouts/gear/list.html
Style improvements for gear badges:
- Category (Pedal/Synth): Light gray background
- Types (Delay, Distortion, etc.): Warm rust/brown tint
- Technology (Analog/Digital/Hybrid): Cool blue tint
- Remove duplicate flex-direction on mobile

Each badge type now has subtle color variation for better
visual distinction while maintaining the dark minimal aesthetic.

Files modified:
- website/static/css/main.css
Update 'make generate' to automatically compile the Hugo site
after generating markdown from YAML data.

This ensures gear changes are immediately compiled into the site
without requiring a separate build step.

Files modified:
- mk/generate.mk
Implement Model Context Protocol server for managing gear inventory:

Features:
- add_gear: Add new gear with type-safe validation
- list_gear: List all gear with optional filters
- search_gear: Search by name, manufacturer, types, description
- update_gear: Update existing gear fields (new capability)
- delete_gear: Remove gear from inventory (new capability)

Benefits:
- Type-safe data validation (required fields, enums)
- Consistent YAML formatting
- Duplicate prevention
- Atomic file operations
- Better error handling

Configuration:
- .kiro/mcp.json: Workspace MCP server configuration
- Auto-loads when Kiro CLI starts
- Uses uv for automatic dependency management

Files added:
- .mcp/gear-server/server.py - MCP server implementation
- .mcp/gear-server/pyproject.toml - Python dependencies
- .mcp/gear-server/README.md - Usage documentation
- .mcp/gear-server/SETUP.md - Setup guide
- .mcp/gear-server/test_server.py - Test script
- .kiro/mcp.json - MCP configuration

Files modified:
- AGENTS.md - Add MCP servers section
- .kiro/prompts/add-gear.md - Update to use MCP tools
Rename .kiro/prompts/add-gear.md to gear-add.md for better naming
consistency with gear-related commands. Updated usage examples in
documentation to reflect new prompt name.
Remove unused gallery image arrays from Fridlyst Rauhoitettu and
World Rat Conspiracy album pages. Gallery functionality not currently
implemented in the music page template.
Add the following pedals with specifications and controls:

- Death By Audio Rooms: Stereo reverb with 6 algorithms
- Death By Audio Evil Filter: Multimode filter with fuzz
- EarthQuaker Devices Acapulco Gold: Simple distortion pedal
- EarthQuaker Devices Plumes: Tube-like overdrive with 3 clipping modes
- Fairfield Circuitry Accountant: JFET feedback compressor

All controls formatted in Title Case as per project convention.
- TC Electronic Ditto Looper: Minimalist looper with 5min loop time
- TC Electronic Hall of Fame Reverb: Digital reverb with 10 types and TonePrint
- Fairfield Circuitry Long Life: Parametric EQ with CV inputs
- Death By Audio Fuzz War: Extreme fuzz with multi-curve tone control

All pedals include controls, technology type, and manufacturer URLs.
Mark Death By Audio Rooms as Stereo type to enable filtering by
stereo capability. This allows users to search for pedals with
stereo inputs/outputs.
Make category, type, and technology badges clickable to add them as
active filters. This provides a more intuitive way to filter gear by
clicking on attributes directly from gear items.

Changes:
- Add onclick handlers to category, type, and technology badges
- Add technology filter dropdown and filtering logic
- Add hover effects to indicate clickable elements
- Use event.stopPropagation() to prevent gear expansion on click

Users can now filter by clicking badges or using the dropdown menus.
Update version partial to read from static/changelog.txt instead of
data/changelog.txt after the file was moved. This restores the version
number display in the footer (e.g., 'Site v1.4.0').
Remove the technology filter dropdown while keeping technology
filtering via clickable badges. Technology can still be filtered
by clicking on Analog/Digital/Hybrid badges on gear items.
Pedals:
- TC Electronic Ditto Looper X2: Dual-switch looper with mode switch
- Proco Rat 2: Classic distortion with 3-knob control

Metsään pedals:
- Echoblender: Experimental delay/distortion with 6 controls
- Total Control: 3-band resonance filter with 7 controls

Metsään synths:
- Dirty Drone Lowlife: Subbass/drone generator with dual oscillators
- Stochastic Asymmetry: Harsh noise generator with 5 oscillators
- Landscape Stereo Field: Touch-reactive feedback synth with CV

All items include manufacturer, category, types, technology, controls,
descriptions, and product URLs.
Pedals:
- Death By Audio Absolute Destruction: Extreme fuzz/distortion with power amp IC
- Dunlop Cry Baby: Classic wah pedal
- Moog Minifooger MF Trem v2: Analog tremolo with shape control
- Saturnworks 4 Loop Looper: True bypass loop switcher
- Lehle Dual Expression: Dual-output expression pedal

Synths:
- Olegtron 4060: CMOS chip drone synthesizer with patchboard
- Error Instruments DATA Synth: Digital noise/glitch synth with algorithm control

Instruments (new category):
- Metsään Resin Contact Mic: Piezo contact mic embedded in resin
- Dassum Shake Box: Amplified shaker with contact mic
- Dassum Dual Clipper Mic: Dual contact mic system with clippers

Files modified:
- website/data/gear/death-by-audio-absolute-destruction.yaml - new
- website/data/gear/olegtron-4060.yaml - new
- website/data/gear/moog-minifooger-mf-trem-v2.yaml - new
- website/data/gear/saturnworks-4-loop-looper.yaml - new
- website/data/gear/lehle-dual-expression.yaml - new
- website/data/gear/error-instruments-data-synth.yaml - new
- website/data/gear/dunlop-cry-baby.yaml - new
- website/data/gear/metsaan-resin-contact-mic.yaml - new (introduces Instrument category)
- website/data/gear/dassum-shake-box.yaml - new
- website/data/gear/dassum-dual-clipper-mic.yaml - new
Synths:
- Korg SQ-1: 2x8 step analog sequencer with CV/Gate
- Korg MS-20 FS: Full-size reissue of legendary semi-modular synth
- Moog Grandmother: Semi-modular analog synth with spring reverb
- Moog Werkstatt-01 & CV Expander: Compact patchable analog synth

Instruments:
- Allen & Heath ZED-10: 4-channel analog mixer with USB interface
- Orange OR15 H: 15-watt tube amp head with 3-band EQ
- Orange PPC112: 1x12" speaker cabinet with Celestion speaker
- Orange Crush 10: 10-watt practice combo with dual gain channels

Files added:
- website/data/gear/korg-sq-1.yaml - new
- website/data/gear/korg-ms-20-fs.yaml - new
- website/data/gear/moog-grandmother.yaml - new
- website/data/gear/moog-werkstatt-01-cv-expander.yaml - new
- website/data/gear/allen-heath-zed-10.yaml - new
- website/data/gear/orange-or15-h.yaml - new
- website/data/gear/orange-ppc112.yaml - new
- website/data/gear/orange-crush-10.yaml - new
Document decision to use directory-based archiving with URL parameter
for showing archived gear. Archived items stored in separate directory
and only displayed when ?archived parameter is present.

Files modified:
- docs/adr/019-archived-gear-visibility-system.md - new ADR
Add directory-based archiving with URL parameter control. Archived
gear stored in website/data/gear/archived/ and only displayed when
visiting /gear/?archived. Archived items shown with reduced opacity
and gray styling.

Features:
- Archive/unarchive functions in management script
- Hidden by default with inline style
- JavaScript shows archived items when ?archived parameter present
- CSS styling for grayed out archived items

Files modified:
- scripts/manage_gear.py - add archive_gear() and unarchive_gear()
- website/layouts/gear/list.html - render archived items conditionally
- website/static/css/main.css - archived item styling
- website/data/gear/archived/ - new directory with 13 archived items
Update category for Orange OR15 H, Crush 10, and PPC112 to properly
categorize them as amplifiers instead of instruments.

Files modified:
- website/data/gear/orange-or15-h.yaml - category: Amplifier
- website/data/gear/orange-crush-10.yaml - category: Amplifier
- website/data/gear/orange-ppc112.yaml - category: Amplifier
- website/data/gear/orange-tiny-terror-head.yaml - new amplifier
Add three electric guitars, one amplifier head, and one speaker
cabinet to the active gear inventory.

Instruments:
- Gibson Les Paul Standard 2013
- Jackson ATX Dinky
- Epiphone Gibson Stratocaster

Amplifiers:
- Sound City Mark 4 (MKIV) 120 ('75) - 120W tube head from 1975
- HIWATT SE4123F - 4x12" speaker cabinet

Files added:
- website/data/gear/gibson-les-paul-standard-2013.yaml
- website/data/gear/jackson-atx-dinky.yaml
- website/data/gear/epiphone-gibson-stratocaster.yaml
- website/data/gear/sound-city-mark-4-mkiv-120-75.yaml
- website/data/gear/hiwatt-se4123f-guitar-extension-speaker-cabinet.yaml
- Add centered logo and tagline to README
- Add centered documentation links
- Add gallery images to World Rat Conspiracy (7 inside images)
- Add gallery images to Fridlyst / Rauhoitettu (2 inside images)
- Move Bandcamp/Discogs icons next to artist name in album header
- Icons align right on desktop, wrap below if needed
- Icons stack below artist name on mobile

Files modified:
- README.md - Vercel-style header with logo and links
- logo.png - New project logo
- website/content/music/world-rat-conspiracy.md - Gallery images
- website/content/music/fridlyst-rauhoitettu.md - Gallery images
- website/layouts/music/single.html - Header icons layout
- Add Open Graph and Twitter Card meta tags with logo image
- Social shares now display obscvrat-logo-static.png (756x306px)
- Add vignette effect to video thumbnails on media page
- Vignette uses inset box-shadow for darkened edges

Files modified:
- website/layouts/partials/og-tags.html - Social media preview tags
- website/layouts/media/list.html - Vignette effect on media items
- Add mobile tap feedback for better touch interaction
  - Remove default iOS tap highlight
  - Add custom active state (60% opacity, 98% scale)
  - Fast 0.15s transition for responsive feel

- Replace Font Awesome camera icon with custom SVG
  - Add camera.svg icon (14x14px)
  - Replace fa-camera with SVG on media page
  - Force no blur on icon to keep it sharp on hover
  - Use explicit color (#e5e5e5) for visibility

Files modified:
- website/static/css/main.css - Mobile tap feedback styles
- website/layouts/media/list.html - Camera SVG icon
- website/static/icons/camera.svg - New camera icon
Remove Font Awesome library entirely and replace with custom SVG icons
from SVG Repo, saving ~70KB of CSS download.

Icons replaced:
- Instagram: Custom SVG (outline style)
- Bandcamp: Custom SVG (parallelogram logo)
- YouTube: Custom SVG (play button logo)
- Camera: Custom SVG (for photo credits)

All icons use #b0b0b0 color to match site's secondary color.

Files modified:
- website/layouts/_default/baseof.html - Remove Font Awesome CDN
- website/layouts/partials/footer.html - SVG icons for social links
- website/layouts/license/section.html - Update credits to SVG Repo (MIT)
- website/layouts/media/list.html - Update comment
- website/static/icons/bandcamp.svg - New icon
- website/static/icons/instagram.svg - New icon
- website/static/icons/youtube.svg - New icon
Major improvements to site UI and performance:
- Vercel-style README with logo
- Social media preview images
- Mobile tap feedback
- Album gallery images
- Custom SVG icons replacing Font Awesome (~70KB saved)
- Vignette effects on videos
- Improved album page layout with header icons
- Update README.md to show v1.5.0
- Update website/static/changelog.txt with v1.5.0 changes
- Fix bump_version.py to update all version files:
  - CHANGELOG.md (already working)
  - website/static/changelog.txt (was website/data)
  - README.md (was missing)

This ensures version stays in sync across the site.
- Add Agent Limitations section to AGENTS.md
  - Document that agents may violate role boundaries
  - Provide best practices for users to catch violations
  - Note that technical enforcement would be better

- Add Fairfield Circuitry Unpleasant Surprise to gear inventory
  - Fuzz/Gate pedal with analog technology
  - Controls: Volume, Onset, 3x 2-position switches

Files modified:
- AGENTS.md - Agent limitations documentation
- website/data/gear/fairfield-circuitry-unpleasant-surprise.yaml - New gear
@github-actions
Copy link
Copy Markdown

✅ CI Checks: PASSED

All checks passed - ready to review!

Results Summary

  • Lint: success
  • Build & Validate: success
  • Security Scan: success

View full logs

@tovrleaf tovrleaf merged commit cef6695 into main Feb 27, 2026
10 checks passed
@tovrleaf tovrleaf deleted the feature/v1.5.0-release branch February 27, 2026 21:57
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