howdy-jekyll-theme 1.0.7 → 1.0.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: cd3f028e19f87a1cd51259d579c9173f33dab0baaa32d10b316173da0f61feaf
4
- data.tar.gz: 65c76f1ac9fc9d933b3e144028654a144d074b250e2082706962c6c19685856e
3
+ metadata.gz: 7ed9dd05ba0a5247cf2a24cd463d7382670faf53c12c676131ef1bd46a6ef3d9
4
+ data.tar.gz: efe04c285cf8a8aec7a5ebb04d0ae5eef6f147e3663b74f52cae0d05cd3b5e9d
5
5
  SHA512:
6
- metadata.gz: 0d4c6d52bdd1a0534b54a98c184d841f4b771ea91b073b6fb2735ad0171a86cfb248f509a9f17eb0b1c24e5849e8c96eea6541c841fe1c9d8bd309d274413260
7
- data.tar.gz: 108e77d91cc21e1fd6b5e0c71fd5243829ce509183e582e9bba17ab074d2acea9d3f2d6bee4539d733a6e75c6568caf5a7fd1049595a60e4b962c20bcb5276ed
6
+ metadata.gz: e3663db58963755d6e3dd4ac56f33d813b3b80045528928c7e3d489048581ace0df6e77aefbe1710887a1fb4baa8f1d9909451389a5e7eaa27cb0bdf9d95d270
7
+ data.tar.gz: 12b8f70cfe8c8e0b9c0c9ea40831f6f673bb6782c2392a0e3abf1adc86bc3149cc34ee772030fb90eed7e825520aa6fb2de24af888c8c83ae6e03e300af92105
data/AGENTS.md CHANGED
@@ -60,3 +60,4 @@ lib/ — Gem entry point (Jekyll hook)
60
60
  - The `.bundle/` directory contains vendored gems — do not edit files inside it.
61
61
  - When deploying to a GitHub Pages project site, build with `--baseurl "/repository-name"` so asset paths resolve correctly.
62
62
  - The Playwright Docker container is based on Ubuntu 22.04 — Ruby native gems that need C compilation require `build-essential` and `ruby-dev`.
63
+ - `main` is a **protected branch** — requires 4 status checks to pass. Commits cannot be pushed directly to main; use branches + PRs into main. Tags can be pushed independently without PRs (`git push origin <tagname>`).
data/Gemfile CHANGED
@@ -1,11 +1,3 @@
1
1
  source "https://rubygems.org"
2
2
 
3
- # Gem specification
4
3
  gemspec
5
-
6
- # Development dependencies
7
- gem "jekyll", ">= 3.9"
8
- gem "jekyll-seo-tag", "~> 2.8"
9
- gem "jekyll-feed", "~> 0.17"
10
- gem "jekyll-sitemap", "~> 1.4"
11
- gem "jekyll-paginate-v2", "~> 3.0"
data/README.md CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  > A clean, modern, and minimalist Jekyll theme for personal websites and portfolios.
4
4
 
5
- [![Gem Version](https://badge.fury.io/rb/howdy-jekyll-theme.svg)](https://rubygems.org/gems/howdy-jekyll-theme)
5
+ [![Gem Version](https://img.shields.io/gem/v/howdy-jekyll-theme)](https://rubygems.org/gems/howdy-jekyll-theme)
6
6
  [![Gem Downloads](https://img.shields.io/gem/dt/howdy-jekyll-theme)](https://rubygems.org/gems/howdy-jekyll-theme)
7
7
  [![CI](https://github.com/howdyitskyle/howdy-jekyll-theme/actions/workflows/ci.yml/badge.svg)](https://github.com/howdyitskyle/howdy-jekyll-theme/actions/workflows/ci.yml)
8
8
  [![Jekyll](https://img.shields.io/badge/jekyll-%E2%89%A53.9-008a1e)](https://jekyllrb.com/)
@@ -2,7 +2,7 @@
2
2
  <div class="pagination">
3
3
  {% if paginator.previous_page %}
4
4
  <a href="{{ paginator.previous_page_path }}" class="btn btn-secondary">
5
- <svg viewBox="0 0 16 16" fill="none" aria-hidden="true" class="btn-arrow">
5
+ <svg viewBox="0 0 16 16" fill="none" aria-hidden="true">
6
6
  <path d="M9 3L4 8L9 13" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
7
7
  </svg>
8
8
  {{ site.pagination.prev_text | default: "Prev" }}
@@ -22,7 +22,7 @@
22
22
  {% if paginator.next_page %}
23
23
  <a href="{{ paginator.next_page_path }}" class="btn btn-secondary post-nav-next">
24
24
  {{ site.pagination.next_text | default: "Next" }}
25
- <svg viewBox="0 0 16 16" fill="none" aria-hidden="true" class="btn-arrow">
25
+ <svg viewBox="0 0 16 16" fill="none" aria-hidden="true">
26
26
  <path d="M7 3L12 8L7 13" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
27
27
  </svg>
28
28
  </a>
data/_includes/head.html CHANGED
@@ -87,7 +87,6 @@
87
87
  const root = document.documentElement;
88
88
  const saved = localStorage.getItem('howdy-theme');
89
89
  {% if site.default_theme and site.default_theme != "auto" %}
90
- const defaultMode = '{{ site.default_theme }}';
91
90
  if (saved === 'dark') {
92
91
  root.classList.add('dark-mode');
93
92
  root.classList.remove('light-mode');
@@ -9,8 +9,8 @@
9
9
  </div>
10
10
 
11
11
 
12
- <script src="{{ '/assets/js/theme-toggle.js' | relative_url }}"></script>
13
- <script src="{{ '/assets/js/mobile-nav.js' | relative_url }}"></script>
12
+ <script src="{{ '/assets/js/theme-toggle.js' | relative_url }}" defer></script>
13
+ <script src="{{ '/assets/js/mobile-nav.js' | relative_url }}" defer></script>
14
14
 
15
15
  <!-- Analytics -->
16
16
  {% include analytics.html %}
data/_layouts/page.html CHANGED
@@ -24,7 +24,7 @@ layout: default
24
24
  <p class="body-large" style="margin-top: 16px;">{{ page.subtitle }}</p>
25
25
  {% endif %}
26
26
 
27
- <div class="page-content" style="margin-top: 32px;">
27
+ <div style="margin-top: 32px;">
28
28
  {{ content }}
29
29
  </div>
30
30
  </div>
data/_layouts/post.html CHANGED
@@ -48,10 +48,10 @@ layout: default
48
48
 
49
49
  <!-- Post navigation -->
50
50
  {% if page.previous.url or page.next.url %}
51
- <div class="detail-nav detail-nav-post">
51
+ <div class="detail-nav">
52
52
  {% if page.previous.url %}
53
53
  <a href="{{ page.previous.url | relative_url }}" class="btn btn-secondary">
54
- <svg viewBox="0 0 16 16" fill="none" aria-hidden="true" class="btn-arrow">
54
+ <svg viewBox="0 0 16 16" fill="none" aria-hidden="true">
55
55
  <path d="M9 3L4 8L9 13" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
56
56
  </svg>
57
57
  <span class="btn-label">{{ page.previous.title }}</span>
@@ -60,7 +60,7 @@ layout: default
60
60
  {% if page.next.url %}
61
61
  <a href="{{ page.next.url | relative_url }}" class="btn btn-secondary post-nav-next">
62
62
  <span class="btn-label">{{ page.next.title }}</span>
63
- <svg viewBox="0 0 16 16" fill="none" aria-hidden="true" class="btn-arrow">
63
+ <svg viewBox="0 0 16 16" fill="none" aria-hidden="true">
64
64
  <path d="M7 3L12 8L7 13" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
65
65
  </svg>
66
66
  </a>
@@ -39,17 +39,17 @@ layout: default
39
39
  {{ content }}
40
40
  </div>
41
41
 
42
- <div class="detail-nav detail-nav-project">
42
+ <div class="detail-nav">
43
43
  <a href="{{ '/projects' | relative_url }}" class="btn btn-secondary">
44
- <svg viewBox="0 0 16 16" fill="none" aria-hidden="true" class="btn-arrow">
44
+ <svg viewBox="0 0 16 16" fill="none" aria-hidden="true">
45
45
  <path d="M9 3L4 8L9 13" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
46
46
  </svg>
47
47
  Back to Projects
48
48
  </a>
49
49
  {% if page.next %}
50
- <a href="{{ page.next.url | relative_url }}" class="btn btn-secondary project-nav-next">
50
+ <a href="{{ page.next.url | relative_url }}" class="btn btn-secondary">
51
51
  <span class="btn-label">{{ page.next.title }}</span>
52
- <svg viewBox="0 0 16 16" fill="none" aria-hidden="true" class="btn-arrow">
52
+ <svg viewBox="0 0 16 16" fill="none" aria-hidden="true">
53
53
  <path d="M7 3L12 8L7 13" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
54
54
  </svg>
55
55
  </a>
data/_sass/_base.scss CHANGED
@@ -5,7 +5,6 @@
5
5
  html {
6
6
  box-sizing: border-box;
7
7
  scroll-behavior: smooth;
8
- overflow-x: hidden;
9
8
  }
10
9
 
11
10
  *, *::before, *::after {
data/_sass/_layout.scss CHANGED
@@ -49,8 +49,7 @@
49
49
  // Page exit transition — content only, keeps hero/nav persistent
50
50
  body.howdy-navigating {
51
51
  .content-area,
52
- .company-logos,
53
- .stats {
52
+ .company-logos {
54
53
  opacity: 0;
55
54
  transition: opacity 0.15s var(--howdy-ease-in);
56
55
  will-change: opacity;
@@ -82,13 +81,6 @@ body.loaded .hero-content {
82
81
  opacity: 1;
83
82
  }
84
83
 
85
- // Carousel container starts invisible, fades in smoothly
86
- .hero-carousel {
87
- opacity: 0;
88
- transform: scale(1.02);
89
- transition: opacity 0.5s var(--howdy-ease-out), transform 0.5s var(--howdy-ease-out);
90
- }
91
-
92
84
  body.loaded .hero-carousel {
93
85
  opacity: 1;
94
86
  transform: scale(1);
@@ -362,9 +354,6 @@ body.loaded .projects-grid {
362
354
  position: relative;
363
355
  overflow-y: auto;
364
356
  transition: var(--howdy-transition);
365
- scrollbar-width: thin;
366
- scrollbar-color: var(--howdy-border) transparent;
367
-
368
357
  @media (max-width: $howdy-lg) {
369
358
  flex: none;
370
359
  width: 100%;
@@ -863,6 +852,9 @@ html.nav-open .nav-overlay {
863
852
  position: relative;
864
853
  width: 100%;
865
854
  height: 100%;
855
+ opacity: 0;
856
+ transform: scale(1.02);
857
+ transition: opacity 0.5s var(--howdy-ease-out), transform 0.5s var(--howdy-ease-out);
866
858
 
867
859
  .swiper-wrapper {
868
860
  height: 100%;
@@ -122,7 +122,7 @@ ul ul {
122
122
  }
123
123
 
124
124
  // Heading 2 — fluid responsive sizing
125
- h2, .h2 {
125
+ h2 {
126
126
  font-family: var(--howdy-font-primary);
127
127
  font-weight: 600;
128
128
  // Fluid: 24px at 360px → 40px at 1440px+
@@ -140,7 +140,7 @@ h2, .h2 {
140
140
  }
141
141
 
142
142
  // Heading 3 — fluid responsive sizing
143
- h3, .h3 {
143
+ h3 {
144
144
  font-family: var(--howdy-font-primary);
145
145
  font-weight: 600;
146
146
  // Fluid: 18px at 480px → 24px at 1440px+
@@ -4,9 +4,6 @@ document.addEventListener('DOMContentLoaded', () => {
4
4
  carousels.forEach(carousel => {
5
5
  if (typeof Swiper === 'undefined') return;
6
6
 
7
- const slideCount = carousel.querySelectorAll('.swiper-slide').length;
8
- if (slideCount < 2) return;
9
-
10
7
  new Swiper(carousel, {
11
8
  effect: 'fade',
12
9
  fadeEffect: { crossFade: true },
@@ -9,18 +9,6 @@
9
9
  const moonIcon = toggleButton.querySelector('.moon-icon');
10
10
  const root = document.documentElement;
11
11
 
12
- // Update icon visibility
13
- function updateIcon(theme) {
14
- if (!sunIcon || !moonIcon) return;
15
- if (theme === 'dark') {
16
- sunIcon.style.display = 'block';
17
- moonIcon.style.display = 'none';
18
- } else {
19
- sunIcon.style.display = 'none';
20
- moonIcon.style.display = 'block';
21
- }
22
- }
23
-
24
12
  // Set theme
25
13
  function setTheme(theme) {
26
14
  if (theme === 'dark') {
@@ -31,13 +19,8 @@
31
19
  root.classList.remove('dark-mode');
32
20
  }
33
21
  localStorage.setItem('howdy-theme', theme);
34
- updateIcon(theme);
35
22
  }
36
23
 
37
- // Initialize - check current theme from class
38
- const currentTheme = root.classList.contains('dark-mode') ? 'dark' : 'light';
39
- updateIcon(currentTheme);
40
-
41
24
  // Toggle on click
42
25
  toggleButton.addEventListener('click', function() {
43
26
  const newTheme = root.classList.contains('dark-mode') ? 'light' : 'dark';
data/contact.md CHANGED
@@ -5,7 +5,7 @@ subtitle: "Let's chat"
5
5
  hero_image: /assets/illustrations/email.svg
6
6
  ---
7
7
 
8
- <section class="contact-section">
8
+ <section>
9
9
  {% if site.contact.intro %}
10
10
  <p class="contact-intro">{{ site.contact.intro }}</p>
11
11
  {% endif %}
@@ -1,6 +1,6 @@
1
1
  Gem::Specification.new do |spec|
2
2
  spec.name = "howdy-jekyll-theme"
3
- spec.version = "1.0.7"
3
+ spec.version = "1.0.8"
4
4
  spec.authors = ["Kyle Greenan"]
5
5
  spec.email = ["kyle@howdyitskyle.com"]
6
6
 
@@ -22,4 +22,5 @@ Gem::Specification.new do |spec|
22
22
  spec.add_development_dependency "bundler", ">= 2.4"
23
23
  spec.add_development_dependency "rake", "~> 13.0"
24
24
  spec.add_development_dependency "html-proofer", "~> 5.0"
25
+ spec.add_development_dependency "webrick", "~> 1.8"
25
26
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: howdy-jekyll-theme
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.7
4
+ version: 1.0.8
5
5
  platform: ruby
6
6
  authors:
7
7
  - Kyle Greenan
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2026-06-24 00:00:00.000000000 Z
11
+ date: 2026-07-06 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: jekyll
@@ -128,6 +128,20 @@ dependencies:
128
128
  - - "~>"
129
129
  - !ruby/object:Gem::Version
130
130
  version: '5.0'
131
+ - !ruby/object:Gem::Dependency
132
+ name: webrick
133
+ requirement: !ruby/object:Gem::Requirement
134
+ requirements:
135
+ - - "~>"
136
+ - !ruby/object:Gem::Version
137
+ version: '1.8'
138
+ type: :development
139
+ prerelease: false
140
+ version_requirements: !ruby/object:Gem::Requirement
141
+ requirements:
142
+ - - "~>"
143
+ - !ruby/object:Gem::Version
144
+ version: '1.8'
131
145
  description: Howdy is a clean and modern Jekyll theme designed for personal websites
132
146
  and portfolios. Features both light and dark themes, responsive layout, elegant
133
147
  typography, and support for projects and blog.