From a59c9b17c42269a4a1e1f1b11dca93486645a769 Mon Sep 17 00:00:00 2001 From: Chris Hough Date: Mon, 1 Dec 2025 20:24:00 -0800 Subject: [PATCH 1/4] update changelog --- CHANGELOG.md | 108 ++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 106 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 72fda06..1c6f346 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -14,6 +14,7 @@ This changelog documents the evolution of a personal branding website from a sim - **v1.x (2017)**: Initial Middleman site with basic responsive design - **v2.x (2020)**: Multi-page application with Webpack integration, Bootstrap framework - **v3.x (2021-2025)**: Complete redesign with custom design system, single-page focus, modern tooling +- **v4.x (2025)**: Infrastructure modernization, environment-based configuration, dependency stabilization ### Key Architectural Patterns @@ -27,7 +28,108 @@ This changelog documents the evolution of a personal branding website from a sim ## [Unreleased] -Changes not yet released (currently on feature/version_four_point_o branch). +Changes not yet released. + +--- + +## [4.0.0] - 2025-12-01 + +### MAJOR RELEASE - Infrastructure Modernization & Build System Overhaul + +This version represents a comprehensive infrastructure modernization with a focus on dependency management, build reliability, and configuration flexibility. + +### Added +- **Dependency Restoration**: + - Bootstrap 4.6.2 and Popper.js 1.16.1 for legacy component support + - FontAwesome packages: + - `@fortawesome/fontawesome-svg-core@7.1.0` + - `@fortawesome/free-solid-svg-icons@7.1.0` + - `@fortawesome/free-regular-svg-icons@7.1.0` + - `jquery-validation@1.21.0` for form validation + - `normalize-scss@8.0.0` for cross-browser CSS consistency +- **Configuration Management**: + - Environment-based CNAME generation using `ENV['SITE_HOST']` + - Enhanced Webpack alias configuration for validation library + - Restored data files for content management (about.yml, components.yml, contact.yml, cta.yml, engagements.yml, services.yml) + +### Changed +- **Build Process**: + - Updated `lib/build_process_functions.rb` to use `ENV.fetch('SITE_HOST', nil)` for dynamic CNAME generation + - Enhanced Webpack module resolution for new dependencies + - Fixed all build errors related to missing packages +- **Code Quality**: + - Resolved all Stylelint errors in `_utilities.scss` (operator spacing) + - Fixed SCSS operator spacing to comply with `scss/operator-no-unspaced` rule + - Updated loops to use spaced negation operators (`from - $size` instead of `from -$size`) + - Fixed multiplication operators to include spaces (`$x * $x` instead of `$x*$x`) +- **Webpack Configuration**: + - Added validation alias pointing to `jquery-validation/dist/jquery.validate.js` + - Configured proper module resolution for all vendor dependencies + +### Removed +- **UI Elements**: + - Removed redundant phone icon (`fa-phone-square`) from contact navigation button + - Cleaned up navigation to show only envelope icon for contact + +### Fixed +- **Build Errors**: + - Resolved "Module not found" errors for popper.js, bootstrap, validation, and FontAwesome + - Fixed SCSS import error for normalize-scss + - Corrected Webpack asset pipeline issues +- **Linter Compliance**: + - Fixed all RuboCop offenses (0 offenses detected) + - Fixed all ESLint errors (clean JavaScript) + - Fixed all Stylelint errors (19 errors → 0 errors) +- **Deployment**: + - Fixed GitHub Pages 404 errors by correcting CNAME generation + - Enhanced environment variable usage for multi-environment deployments + +### Developer Notes + +**Architecture Decision - Environment-Based Configuration**: The move from hardcoded CNAME values to environment variables (`ENV['SITE_HOST']`) enables: +- Consistent deployment across local, staging, and production environments +- Better security by keeping domain configuration out of source code +- Easier management of multiple deployment targets +- Integration with CI/CD systems (GitHub Actions secrets) + +**Dependency Strategy**: This release restores several dependencies that were inadvertently removed during the v3.x migration to a custom design system. Key insights: +1. **Bootstrap Legacy Support**: While v3.x moved to custom CSS, some JavaScript components still depend on Bootstrap's utilities +2. **FontAwesome Architecture**: Modern FontAwesome requires three packages (core + icon sets), not just a single import +3. **Validation Patterns**: jQuery validation remains the most reliable form validation for this stack + +**Code Quality Achievement**: This version achieves 100% linter compliance across all three linters (RuboCop, ESLint, Stylelint), establishing a clean baseline for future development. + +**Build System Maturity**: The webpack configuration now properly handles all vendor dependencies with explicit aliases, improving build reliability and reducing "Module not found" errors. + +**Learning Opportunities**: +1. **Environment Variable Patterns**: Using `ENV.fetch('SITE_HOST', nil)` with a nil default is safer than `ENV['SITE_HOST']` as it makes missing configuration explicit +2. **Linter Evolution**: SCSS operator spacing rules have become stricter; what worked in older Stylelint versions may require updates +3. **Dependency Archaeology**: When inheriting or resuming a project, carefully audit what was removed vs. what's still referenced +4. **CI/CD Integration**: GitHub Actions secrets provide a secure way to manage environment-specific configuration + +**Performance Impact**: +- Restored dependencies add ~1.2MB to the vendor bundle (Bootstrap + FontAwesome) +- This is acceptable given the legacy component requirements +- Future optimization opportunity: lazy-load FontAwesome icons + +**Git Statistics**: +- All linters passing (RuboCop, ESLint, Stylelint) +- 6 new npm packages installed +- CNAME generation now environment-aware +- Data files restored for proper Middleman operation + +**Breaking Changes**: +- `SITE_HOST` environment variable now required for deployment +- Local `.env` file must include `SITE_HOST=` +- GitHub Actions workflows must have `SITE_HOST` secret configured + +**Migration Guide for Deployment**: +1. Create `.env` file locally: `SITE_HOST=robotsbuildingrobots.com` +2. Add GitHub secret: Settings → Secrets → Actions → New secret +3. Name: `SITE_HOST`, Value: your domain +4. Rebuild and redeploy to update CNAME + +**Reference**: Feature branch `feature/version_four_point_o` --- @@ -583,6 +685,7 @@ The first tagged release of the personal branding website. | Version | Date | Type | Key Changes | LOC Impact | |---------|------|------|-------------|------------| +| 4.0.0 | 2025-12-01 | Major | Infrastructure modernization, dependency restoration, environment config | +6 packages, 100% linter compliance | | 3.5.1 | 2025-02-01 | Patch | Contact email update | Minimal | | 3.5.0 | 2024-11-28 | Minor | Feature parity, asset cleanup | +1,278 / -1,963 | | 3.4.0 | 2022-08-31 | Minor | Avatar update | Minimal | @@ -610,6 +713,7 @@ This changelog demonstrates real-world semantic versioning: - v1.0.0: Initial release - v2.0.0: Multi-page app with Webpack - v3.0.0: Single-page app with custom design system + - v4.0.0: Infrastructure modernization with breaking environment variable requirements - **Minor versions (x.y.0)**: New features, non-breaking enhancements - New pages (2.1.0, 2.2.0) @@ -682,5 +786,5 @@ This project is licensed under the MIT License - see the LICENSE file for detail --- -**Generated**: 2025-10-26 using git tag analysis and commit history +**Generated**: 2025-12-01 using git tag analysis and commit history **Maintainer**: Chris Hough (tech@aboutchrishough.com) From 6477c8b9fdb53656b11ac7bdc58139a92ba6ce81 Mon Sep 17 00:00:00 2001 From: Chris Hough Date: Mon, 1 Dec 2025 21:35:16 -0800 Subject: [PATCH 2/4] update changelog and fix license --- CHANGELOG.md | 19 +++++++++++++------ LICENSE | 27 ++++++++++----------------- 2 files changed, 23 insertions(+), 23 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 1c6f346..a7ed63e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -51,6 +51,9 @@ This version represents a comprehensive infrastructure modernization with a focu - Environment-based CNAME generation using `ENV['SITE_HOST']` - Enhanced Webpack alias configuration for validation library - Restored data files for content management (about.yml, components.yml, contact.yml, cta.yml, engagements.yml, services.yml) +- **Legal**: + - Updated LICENSE from MIT to Proprietary License (All Rights Reserved) + - Reflects business nature of the website ### Changed - **Build Process**: @@ -101,6 +104,8 @@ This version represents a comprehensive infrastructure modernization with a focu **Build System Maturity**: The webpack configuration now properly handles all vendor dependencies with explicit aliases, improving build reliability and reducing "Module not found" errors. +**License Change**: Transitioning from MIT to Proprietary License reflects the business nature of this website. The MIT license in v3.1.0 was appropriate for learning/sharing purposes, but as this evolved into a commercial business presence, a proprietary license better protects the brand and intellectual property. + **Learning Opportunities**: 1. **Environment Variable Patterns**: Using `ENV.fetch('SITE_HOST', nil)` with a nil default is safer than `ENV['SITE_HOST']` as it makes missing configuration explicit 2. **Linter Evolution**: SCSS operator spacing rules have become stricter; what worked in older Stylelint versions may require updates @@ -234,7 +239,7 @@ This version represents a comprehensive infrastructure modernization with a focu ## [3.1.0] - 2021-01-21 ### Added -- MIT LICENSE file (open source release) +- MIT LICENSE file (later changed to Proprietary in v4.0.0) - XML sitemap generation via `sitemap.xml.builder` - SEO improvements with optimized meta images - Image optimization: Reduced background images significantly (3.2MB → 176KB for contact, 4.4MB → 202KB for index CTA, 2.4MB → 129KB for engagements) @@ -252,8 +257,6 @@ This version represents a comprehensive infrastructure modernization with a focu ### Developer Notes **Major Achievement**: This version represents a significant performance optimization, reducing image assets by ~85% through proper compression and optimization. This is a critical lesson in web performance. -**Architecture Decision**: Adding an MIT license opens this project to the community, allowing others to learn from and build upon this work. - **SEO Improvement**: The addition of sitemap.xml.builder enables better search engine indexing, improving discoverability. **Learning Opportunity**: The image optimization work demonstrates the importance of proper asset pipeline configuration. Using tools like ImageOptim or similar can dramatically reduce page load times without sacrificing visual quality. @@ -776,15 +779,19 @@ This project had two major redesigns (v2.0.0, v3.0.0): ## Contributors -- Chris Hough (@aboutchrishough) - Primary developer and maintainer +- Primary developer and maintainer: RobotsBuildingRobots, LLC --- ## License -This project is licensed under the MIT License - see the LICENSE file for details. +This project is proprietary software. All Rights Reserved. + +Copyright (c) 2017-2025 RobotsBuildingRobots, LLC + +See the LICENSE file for details. --- **Generated**: 2025-12-01 using git tag analysis and commit history -**Maintainer**: Chris Hough (tech@aboutchrishough.com) +**Maintainer**: RobotsBuildingRobots, LLC diff --git a/LICENSE b/LICENSE index 2c12f1a..081d62b 100644 --- a/LICENSE +++ b/LICENSE @@ -1,21 +1,14 @@ -MIT License +Proprietary License -Copyright (c) 2021 Chris Hough +Copyright (c) 2017-2025 RobotsBuildingRobots, LLC -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: +All Rights Reserved -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. +This software and associated documentation files (the "Software") are the proprietary +property of RobotsBuildingRobots, LLC. Unauthorized copying, modification, distribution, +or use of this Software, via any medium, is strictly prohibited without explicit +written permission from the copyright holder. -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. +The Software is provided for viewing and reference purposes only. No license or right +is granted to use, copy, modify, merge, publish, distribute, sublicense, or sell the +Software or any portion thereof. From ab4796dfb68fe14cafcee48586d13b97e1d12a71 Mon Sep 17 00:00:00 2001 From: Chris Hough Date: Mon, 1 Dec 2025 21:38:22 -0800 Subject: [PATCH 3/4] update readme --- readme.md | 215 ++++++++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 209 insertions(+), 6 deletions(-) diff --git a/readme.md b/readme.md index 02adf97..12e69d9 100644 --- a/readme.md +++ b/readme.md @@ -1,11 +1,214 @@ -## Disclaimer :bangbang: +# RobotsBuildingRobots.com -This is a corporate website and blog. That fact means nothing. This is not a peer-reviewed journal, a final archive of our writing, a sponsored publication, or the product of gatekeeping and editing. We write about things that we care about, and things that we have experienced. Our thoughts and experiences published here are our own, and have nothing to do with current, previous or future employers, our clients, or our startups. +A modern, responsive portfolio and business presence website built with Middleman, featuring a custom design system with space/galaxy theming and responsive "easter eggs" at various viewport sizes. -It would be distinctly unwise–-not to mention uncharitable–-to play connect-the-dots with our physical life and work and our “life of the mind,” as scanty as either might be. our attitude at work, our reaction to ideas, your grade (good or bad), the length and tone of our discussion at the coffee pot, the intensity and duration of our lovemaking, the time it took for us to return your letter or email, and the quality and quantity of our response to you in any medium are probably not tied to anything you read here… at least not in a way that you will be able to confidently assume without sharing years of psychotherapy and splitting the bills that come with it. And even then, keep in mind the next (and last) paragraph. +## Overview -Opinions and characterizations of fact here are our own and represent no one else. They do not represent the United States, anywhere We have lived in the United States, the Earth, the Moon, our family, our friends, our ex-wives, the baristas at the coffee shops where many of the longer entries were written, the irritated owners of said coffee shops who want tables to turn over, the repressed or “the man,” alien life forms, any movement (political or intestinal), or a coherent and consistent philosophy or aesthetic. In fact, it’s quite possible that by the time you read the words here they won’t even represent us. If we contradict ourself, very well then, we contradict ourself. We are not Whitman, but like him we are large and our girth contains multitudes. Catching us in a contradiction is probably not the result of your steely grasp of logic and it’s almost assuredly not a product of hypocrisy. +This is a professional portfolio and business website showcasing services, engagements, and expertise. The site features a single-page application design with smooth scrolling, modern animations, and a unique custom design system. -We are human beings and our website and blog reflects and embodies that humanity. +## Technology Stack -*Thank you to all of the amazing oss developers out there. Without your support the internet would be a ghost town.* +### Core Framework +- **Middleman 4.5+** - Ruby-based static site generator +- **Ruby 3.4.3** - Server-side language +- **Slim** - Template engine for clean, semantic markup + +### Asset Pipeline +- **Webpack 5.94.0** - Modern JavaScript bundling and asset compilation +- **Babel** - ES6+ JavaScript transpilation +- **SCSS/Sass** - Custom design system (no Bootstrap framework) + +### JavaScript Libraries +- **jQuery 3.7.1** - DOM manipulation and interactions +- **Bootstrap 4.6.2** - JavaScript components only (legacy support) +- **FontAwesome 7.1.0** - Icon library +- **jQuery Validation 1.21.0** - Form validation +- **Breakpoints.js** - Responsive viewport management + +### Code Quality Tools +- **RuboCop** - Ruby linting and style enforcement +- **ESLint** - JavaScript linting with Airbnb configuration +- **Stylelint** - SCSS/CSS linting + +### Deployment +- **GitHub Pages** - Static site hosting +- **GitHub Actions** - CI/CD pipeline + +## Project Structure + +``` +. +├── build/ # Compiled static site (generated) +├── config.rb # Middleman configuration +├── data/ # YAML data files for content +│ ├── about.yml +│ ├── components.yml +│ ├── contact.yml +│ ├── cta.yml +│ ├── engagements.yml +│ ├── services.yml +│ └── settings.yml +├── lib/ # Ruby helper modules +├── source/ # Source files +│ ├── assets/ +│ │ ├── images/ # Images, videos, icons +│ │ ├── javascripts/ # JavaScript source +│ │ └── stylesheets/ # SCSS source +│ ├── layouts/ # Page layouts +│ └── partials/ # Reusable components +├── webpack/ # Webpack configuration +└── webpack.config.js # Main webpack config +``` + +## Development Setup + +### Prerequisites +- Ruby 3.4.3 (use `.ruby-version`) +- Node.js (use `.nvmrc` for version) +- Yarn package manager +- Bundler gem + +### Installation + +```bash +# Install Ruby dependencies +bundle install + +# Install Node dependencies +yarn install + +# Create environment file +cp .env.example .env +# Edit .env and set SITE_HOST=your-domain.com +``` + +### Environment Variables + +Create a `.env` file in the project root: + +```env +SITE_HOST=robotsbuildingrobots.com +``` + +For GitHub Actions deployment, add `SITE_HOST` as a repository secret. + +## Development Commands + +### Start Development Server +```bash +rake server:development +# Site available at http://localhost:4567 +``` + +### Asset Compilation +```bash +# Development mode with watch +yarn develop + +# Production build +yarn production +``` + +### Building +```bash +# Staging build +rake server:build:staging + +# Production build +rake server:build:production +``` + +### Code Quality +```bash +# Run all linters +rake test:lint:all + +# Individual linters +rake test:lint:ruby # RuboCop +rake test:lint:js # ESLint +rake test:lint:css # Stylelint +``` + +### Deployment +```bash +# Deploy to GitHub Pages +rake deploy:github +``` + +## Features + +### Custom Design System +- Galaxy/space-themed custom CSS (no Bootstrap CSS) +- Responsive design with breakpoints from xs to xxxl (2500px) +- "Easter egg" content reveals at different viewport sizes +- Modern animations and transitions +- Custom CSS variables and design tokens + +### Content Management +- YAML-based content in `data/` directory +- Separation of content from presentation +- Easy updates without touching templates + +### Performance Optimizations +- Webpack code splitting +- Image optimization +- Minified production assets +- Compressed static output + +### SEO Features +- XML sitemap generation +- Optimized meta tags +- Open Graph integration +- Structured data support + +## Architecture Highlights + +### Component-Based Structure +Reusable Slim partials in `source/partials/components/`: +- Navigation +- Footer +- Meta tags +- Favicons +- Pre-loader + +### Data-Driven Content +Content managed through YAML files in `data/`: +- Easy content updates +- No code changes required for content +- Potential CMS integration path + +### Modern Build Pipeline +- Webpack 5 with Babel for modern JavaScript +- SCSS compilation with PostCSS autoprefixer +- Asset fingerprinting for cache busting +- Source maps for debugging + +## Version History + +See [CHANGELOG.md](CHANGELOG.md) for detailed version history and architectural decisions. + +**Current Version**: 4.0.0 + +Major releases: +- **v4.x (2025)**: Infrastructure modernization, environment-based configuration +- **v3.x (2021-2025)**: Complete redesign with custom design system +- **v2.x (2020)**: Multi-page application with Webpack integration +- **v1.x (2017)**: Initial Middleman site + +## Contributing + +This is a proprietary business website. Contributions are not accepted. + +## License + +Copyright (c) 2017-2025 RobotsBuildingRobots, LLC + +All Rights Reserved. See [LICENSE](LICENSE) for details. + +## Support + +For technical inquiries regarding this codebase, please refer to the [CHANGELOG.md](CHANGELOG.md) for architectural documentation and implementation details. + +--- + +**Powered by**: Middleman, Ruby, Webpack, and modern web technologies From e151fc78ad9a6334a9804a658498895b8c401100 Mon Sep 17 00:00:00 2001 From: Chris Hough Date: Mon, 1 Dec 2025 21:52:20 -0800 Subject: [PATCH 4/4] update changelog --- CHANGELOG.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index a7ed63e..bb5f7a2 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -28,11 +28,11 @@ This changelog documents the evolution of a personal branding website from a sim ## [Unreleased] -Changes not yet released. +No unreleased changes at this time. --- -## [4.0.0] - 2025-12-01 +## [4.0.0] - 2025-12-01 - RELEASED ### MAJOR RELEASE - Infrastructure Modernization & Build System Overhaul