jekyll-theme-flow 0.1.1 → 0.2.0

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: 8d9b7f8a649cb8027dc49ced112d449bd31c9a05d7ad14ea6420a4f859eea88d
4
- data.tar.gz: 67b1e8dfd3573c979e4efc8bb9afae9ae186f145355559f680bbc043a0245ceb
3
+ metadata.gz: 1807cdc544f131cc5fba45fd9e7647632b11885da1622ab37bf741c11f0f240e
4
+ data.tar.gz: 9118dd79f3c32205a91ae8e98a3274b2cd30a3c9678393f013074b692976c139
5
5
  SHA512:
6
- metadata.gz: 2ffb73fb44e1230bb97f421acfc9c0168104ecc87a4d981f65ec142ad834bac6b3106e817d7ac2867874968996f6e279ab7339c1ecfe3d2196ef5ebc4d858490
7
- data.tar.gz: b4fedc81644a899cca432f760970543c96c872359e9c86c7f79ccfe12af0b899e90350c0a8708afeb07b39cac7a33d311540b8442a08e2bdd306c3eabd3a2806
6
+ metadata.gz: 556614a6d2e114ceb5821b6758cfd7fc3bb15566bdeccf1475d45e336244b85e9520fe84d3c588febec280ab2462c31e22d68450e32c33a3456eb10c391b3426
7
+ data.tar.gz: 565c12f444beb7344a4260fcb237fb1d106020f5342e84cd350fea2c18e5df1941d524f0b53a2c59a300f6659c891fc4309837f3c6fe35916308cdd6be719d29
data/CHANGELOG.md CHANGED
@@ -1,6 +1,33 @@
1
1
  # Changelog
2
2
 
3
- ## [Unreleased]
3
+ ## [0.2.0] - 2026-10-31
4
+
5
+ ### Fixed
6
+
7
+ - Archived posts and collection documents are now excluded from
8
+ `sitemap.xml` and get `noindex` too — the archive hook moved from
9
+ `:pages, :post_init` to a `:site, :post_read` sweep over
10
+ `site.pages + site.documents` (document `:post_init` fires before
11
+ front matter is merged, so `layout: archive` was invisible there).
12
+
13
+ ### Changed
14
+
15
+ - Test suite migrated from RSpec to Minitest (`spec/` → `test/`,
16
+ jekyll-test-harness `framework: :minitest`); coverage, codecov and
17
+ sonar wiring updated accordingly.
18
+ - CI matrix now includes a non-blocking Ruby 4.0 leg alongside
19
+ 3.3/3.4; `.ruby-version` remains 3.4.12.
20
+ - Dependency updates: jekyll-client-search 0.4.0,
21
+ jekyll-icon-flow 0.1.2, rubocop 1.92.2, sass-embedded 1.107.1,
22
+ plus transitive bumps; development dep `rspec` replaced by
23
+ `minitest ~> 6.0`.
24
+ - README gained an Inspiration section (just-the-docs nav model;
25
+ planned `layout: portfolio` one-pager after jamigibbs/phantom).
26
+ - Updated vendored Bulma Sass conditional syntax to avoid deprecation
27
+ warnings with current Sass.
28
+ - Constrained runtime plugin dependencies to compatible version series,
29
+ avoiding open-ended gemspec warnings.
30
+ - CI: Semgrep moved from inline `pip3 install semgrep==1.176.0` pins in `ci.yml` and `release.yml` to hashed `.github/requirements-ci.txt` (compiled from `requirements-ci.in`, Python 3.12), installed with `--require-hashes`. Bumped Semgrep to 1.180.0. Added `.github/dependabot.yml` covering github-actions, bundler, and the new `/.github` pip requirements.
4
31
 
5
32
  ## [0.1.1] - 2026-10-06
6
33
 
data/README.md CHANGED
@@ -3,12 +3,13 @@
3
3
  [![Status: Active](https://img.shields.io/badge/status-active-success)](https://github.com/gundestrup/jekyll-theme-flow)
4
4
  [![CI](https://github.com/gundestrup/jekyll-theme-flow/actions/workflows/ci.yml/badge.svg)](https://github.com/gundestrup/jekyll-theme-flow/actions/workflows/ci.yml)
5
5
  [![Gem Version](https://img.shields.io/gem/v/jekyll-theme-flow)](https://rubygems.org/gems/jekyll-theme-flow)
6
+ [![Codecov](https://codecov.io/gh/gundestrup/jekyll-theme-flow/graph/badge.svg)](https://codecov.io/gh/gundestrup/jekyll-theme-flow)
6
7
  [![Ruby](https://img.shields.io/badge/ruby-%E2%89%A5%203.3-red.svg)](https://www.ruby-lang.org/)
7
8
  [![Jekyll](https://img.shields.io/badge/jekyll-4.x-blue.svg)](https://jekyllrb.com/)
8
9
  [![License: AGPL v3](https://img.shields.io/badge/license-AGPL--3.0--or--later-blue.svg)](LICENSE.txt)
9
10
  [![Ask DeepWiki](https://deepwiki.com/badge.svg)](https://deepwiki.com/gundestrup/jekyll-theme-flow)
10
11
  [![CodeFactor](https://www.codefactor.io/repository/github/gundestrup/jekyll-theme-flow/badge)](https://www.codefactor.io/repository/github/gundestrup/jekyll-theme-flow)
11
- [![Semgrep CE](https://img.shields.io/badge/Semgrep_CE-security-success)](https://github.com/gundestrup/jekyll-theme-flow)
12
+ [![Semgrep](https://img.shields.io/badge/Semgrep-security-success)](https://github.com/gundestrup/jekyll-theme-flow)
12
13
  [![Quality Gate Status](https://sonarcloud.io/api/project_badges/measure?project=gundestrup_jekyll-theme-flow&metric=alert_status)](https://sonarcloud.io/dashboard?id=gundestrup_jekyll-theme-flow)
13
14
 
14
15
  A Jekyll theme built on [Bulma](https://bulma.io) (CSS) and
@@ -306,10 +307,10 @@ bundle exec rake ci # RuboCop, audit, Semgrep, real-site tests and gem co
306
307
  bundle exec jekyll serve # demo pages in repo root
307
308
  ```
308
309
 
309
- The theme has no project Ruby runtime to instrument with SimpleCov; its
310
- coverage comes from real consumer-site Jekyll builds, not a misleading Ruby
311
- percentage. A Codecov badge should be added only with measurable, non-vendored
312
- browser or template coverage. SonarCloud analyses the repository automatically;
310
+ The theme's Ruby code in `lib/` is exercised through real consumer-site Jekyll
311
+ builds; SimpleCov measures that coverage and CI uploads it to Codecov. The
312
+ badge reflects `lib/` coverage — templates and vendored assets are not
313
+ instrumented. SonarCloud analyses the repository automatically;
313
314
  the scanner excludes vendored Bulma and Alpine.
314
315
  Use `bundle exec rake "version:bump[patch]"` to bump the gemspec and lockfile,
315
316
  add a dated changelog entry, and run `bundle exec rake version:pre_release`
@@ -319,6 +320,17 @@ must be configured before publishing.
319
320
  Known upstream noise: Bulma 1.0.x emits a handful of Sass `if()`
320
321
  deprecation warnings during build — harmless, fixed upstream eventually.
321
322
 
323
+ ## Inspiration
324
+
325
+ The nav model borrows the `parent`/`nav_order` convention from
326
+ [just-the-docs](https://just-the-docs.com), and the feature set was
327
+ extracted from real sites built on bulma-clean-theme-style overrides.
328
+
329
+ Planned: a `portfolio` one-pager layout (hero, about/services/media/
330
+ contact sections) inspired by
331
+ [jamigibbs/phantom](https://github.com/jamigibbs/phantom) — on our
332
+ Bulma + Alpine base.
333
+
322
334
  ## License
323
335
 
324
336
  Copyright (C) 2026 Svend Gundestrup.
@@ -2,7 +2,7 @@
2
2
  ---
3
3
  {%- assign flow_variant = page.flow_layout | default: layout.flow_layout | default: site.flow.layout | default: "sidebar-left" -%}
4
4
  <!doctype html>
5
- <html lang="{{ page.lang | default: site.lang | default: "en" | escape }}">
5
+ <html lang="{{ page.lang | default: site.lang | default: "en" | escape }}">{% comment %}<!-- //NOSONAR --> Web:PageWithoutTitleCheck: <title> is rendered by _includes/head.html, which the SonarCloud Web analyzer cannot follow{% endcomment %}
6
6
  {% include head.html %}
7
7
  <body>
8
8
  {% assign shell = "shells/" | append: flow_variant | append: ".html" %}
@@ -8,7 +8,7 @@
8
8
  @each $size in dv.$sizes {
9
9
  $i: list.index(dv.$sizes, $size);
10
10
 
11
- .#{iv.$class-prefix}#{iv.$helpers-prefix}size-#{$i}#{if($target == "", "", "-" + $target)} {
11
+ .#{iv.$class-prefix}#{iv.$helpers-prefix}size-#{$i}#{if(sass($target == ""): ""; else: "-" + $target)} {
12
12
  font-size: $size !important;
13
13
  }
14
14
  }
@@ -286,12 +286,12 @@
286
286
  "9": 9,
287
287
  );
288
288
 
289
- @for $i from if($minus, 2, 1) through string.length($value) {
289
+ @for $i from if(sass($minus): 2; else: 1) through string.length($value) {
290
290
  $character: string.slice($value, $i, $i);
291
291
 
292
292
  @if not(list.index(map.keys($numbers), $character) or $character == ".") {
293
293
  @return to-length(
294
- if($minus, -$result, $result),
294
+ if(sass($minus): -$result; else: $result),
295
295
  string.slice($value, $i)
296
296
  );
297
297
  }
@@ -306,5 +306,5 @@
306
306
  }
307
307
  }
308
308
 
309
- @return if($minus, -$result, $result);
309
+ @return if(sass($minus): -$result; else: $result);
310
310
  }
@@ -409,8 +409,8 @@
409
409
  }
410
410
 
411
411
  @mixin ltr-property($property, $spacing, $right: true) {
412
- $normal: if($right, "right", "left");
413
- $opposite: if($right, "left", "right");
412
+ $normal: if(sass($right): "right"; else: "left");
413
+ $opposite: if(sass($right): "left"; else: "right");
414
414
 
415
415
  @if iv.$rtl {
416
416
  #{$property}-#{$opposite}: $spacing;
@@ -420,8 +420,8 @@
420
420
  }
421
421
 
422
422
  @mixin ltr-position($spacing, $right: true) {
423
- $normal: if($right, "right", "left");
424
- $opposite: if($right, "left", "right");
423
+ $normal: if(sass($right): "right"; else: "left");
424
+ $opposite: if(sass($right): "left"; else: "right");
425
425
 
426
426
  @if iv.$rtl {
427
427
  #{$opposite}: $spacing;
@@ -29,10 +29,17 @@ Jekyll::Hooks.register :site, :after_init do |site|
29
29
  end
30
30
  end
31
31
 
32
- Jekyll::Hooks.register :pages, :post_init do |page|
33
- next unless page.data["layout"] == "archive"
34
- next if page.site.config.dig("flow", "archive", "sitemap_exclude") == false
32
+ # One pass over every renderable container — `layout: archive` works on
33
+ # pages, posts and collection documents alike. Runs at :post_read
34
+ # because Document#post_init fires before front matter is merged into
35
+ # `data`, while generators (jekyll-sitemap) run right after this.
36
+ Jekyll::Hooks.register :site, :post_read do |site|
37
+ next if site.config.dig("flow", "archive", "sitemap_exclude") == false
35
38
 
36
- page.data["sitemap"] = false
37
- page.data["noindex"] = true
39
+ (site.pages + site.documents).each do |piece|
40
+ next unless piece.data["layout"] == "archive"
41
+
42
+ piece.data["sitemap"] = false
43
+ piece.data["noindex"] = true
44
+ end
38
45
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: jekyll-theme-flow
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Svend Gundestrup
@@ -33,6 +33,9 @@ dependencies:
33
33
  name: jekyll-client-search
34
34
  requirement: !ruby/object:Gem::Requirement
35
35
  requirements:
36
+ - - "~>"
37
+ - !ruby/object:Gem::Version
38
+ version: '0.3'
36
39
  - - ">="
37
40
  - !ruby/object:Gem::Version
38
41
  version: 0.3.4
@@ -40,6 +43,9 @@ dependencies:
40
43
  prerelease: false
41
44
  version_requirements: !ruby/object:Gem::Requirement
42
45
  requirements:
46
+ - - "~>"
47
+ - !ruby/object:Gem::Version
48
+ version: '0.3'
43
49
  - - ">="
44
50
  - !ruby/object:Gem::Version
45
51
  version: 0.3.4
@@ -47,14 +53,14 @@ dependencies:
47
53
  name: jekyll-icon-flow
48
54
  requirement: !ruby/object:Gem::Requirement
49
55
  requirements:
50
- - - ">="
56
+ - - "~>"
51
57
  - !ruby/object:Gem::Version
52
58
  version: '0.1'
53
59
  type: :runtime
54
60
  prerelease: false
55
61
  version_requirements: !ruby/object:Gem::Requirement
56
62
  requirements:
57
- - - ">="
63
+ - - "~>"
58
64
  - !ruby/object:Gem::Version
59
65
  version: '0.1'
60
66
  - !ruby/object:Gem::Dependency