milestoner 19.2.0 → 19.3.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: 7d957f55958fe682de293955b8ae7d1762722654ab97323da41473e21a76c3b1
4
- data.tar.gz: ed92635b6e20f6dbfb0ef8c43f11368bff7114aac753c8057753414e95e2e055
3
+ metadata.gz: b1216fdfa3ee558e0f321b79ad864c5fdca540233896721aaa416841a061423c
4
+ data.tar.gz: 203a5d11b22360d123413129ba3a83ae6f93fc8cf44d09ccfb7f40f1cf2c5ecc
5
5
  SHA512:
6
- metadata.gz: 7f78eb0132c2c5ea28e8d456bbd438cc0536785d085234cbc55fb431f712df51387bfa72102b127929cee70aba359b6bc507a97241498382f02be1a930334cd9
7
- data.tar.gz: da79e4b9aa49da378d9e037799a85c63c66d5b9c743e1e0854157d9e525416eee21b4f24f65310b493984157ec2c61464c71e00d95c55c18575604ec8354c337
6
+ metadata.gz: 4394df1c89804ceafbbbe5b85e67239288430b23216bb251ec11f1bb00f67fee947d3b06cc1da6f3792e222453d6a986c154561390e1da04c74c38c32482f29b
7
+ data.tar.gz: b4769cd20edf13fea347875433974c6b510ec22aaa58c4b7d345685103e6e5e92a8a80ac823601f62ac71b54b23d346e0b35ffe2bf8b2ba5087729ef4b390887
checksums.yaml.gz.sig CHANGED
Binary file
data/README.adoc CHANGED
@@ -359,7 +359,7 @@ image:https://alchemists.io/images/projects/milestoner/screenshots/no_cache.png[
359
359
 
360
360
  === Build
361
361
 
362
- image:https://alchemists.io/images/projects/milestoner/screenshots/usage-build.png[Usage,width=787,height=675,role=focal_point]
362
+ image:https://alchemists.io/images/projects/milestoner/screenshots/usage-build.png[Usage,width=786,height=708,role=focal_point]
363
363
 
364
364
  The build command allows you to quickly build release notes to check the current status of your project or deploy a new milestone. By default, the build command uses either the default or custom configuration as documented in the _Configuration_ section above. This means, when using the defaults, you can immediately build the release notes for your project in a temporary directory:
365
365
 
@@ -40,6 +40,11 @@
40
40
  integrity="sha384-HGfztofotfshcF7+8n44JQL2oJmowVChPTg48S+jvZoztPfvwD79OC/LTtG6dMp+"
41
41
  crossorigin="anonymous">
42
42
  </script>
43
+
44
+ <script src="https://unpkg.com/htmx-select@0.0.0"
45
+ integrity="sha384-sHXxspXI+1G3Mb+k1zPcNdkBRL2Q+nKLcOtkbUPE0USxJFJtjf5pQpuykwTDAcPc"
46
+ crossorigin="anonymous">
47
+ </script>
43
48
  </head>
44
49
 
45
50
  <body class="milestoner">
@@ -1,14 +1,13 @@
1
1
  <details id="<%= commit.sha %>" class="row" x-bind:open="open">
2
2
  <summary class="summary <%= commit.kind %>">
3
- <div class="title">
4
- <img src="https://alchemists.io/images/projects/milestoner/icons/<%= commit.icon %>.png"
5
- alt="<%= commit.kind %>"
6
- class="icon"
7
- width="24"
8
- height="24"
9
- loading="lazy">
10
- <span class="subject"><%= commit.subject %></span>
11
- </div>
3
+ <img src="https://alchemists.io/images/projects/milestoner/icons/<%= commit.icon %>.png"
4
+ alt="<%= commit.kind %>"
5
+ class="icon"
6
+ width="24"
7
+ height="24"
8
+ loading="lazy">
9
+
10
+ <span class="subject"><%= commit.subject %></span>
12
11
 
13
12
  <a href="<%= commit.author.profile_url %>" class="author">
14
13
  <%= render :avatar, user: commit.author %>
@@ -1,6 +1,6 @@
1
1
  <section class="milestones">
2
2
  <h1 class="title">
3
- <a href="<%= project_uri_home %>" class="label"><%= project_label %></a> Versions
3
+ <a href="<%= project_uri_home %>" class="label"><%= project_label %></a>
4
4
  </h1>
5
5
 
6
6
  <p>All versions adhere to the <a href="https://alchemists.io/articles/strict_semantic_versioning">Strict Semantic Versioning</a> as enforced with <a href="https://alchemists.io/projects/versionaire">Versionaire</a> and automated by <a href="<%= generator_uri %>"><%= generator_label %></a>. Briefly, this means:</p>
@@ -11,21 +11,30 @@
11
11
  <li><strong>Patch</strong> (x.y.Z): Incremented for small, backwards compatible, bug fixes.</li>
12
12
  </ul>
13
13
 
14
- <ul class="list">
15
- <% tags.each do |tag| %>
16
- <li class="item">
17
- <a href="/<%= tag.version %>/"
18
- class="version"
19
- hx-get="/<%= tag.version %>/"
20
- hx-select=".milestone"
21
- hx-target=".milestones"
22
- hx-swap="outerHTML"
23
- hx-push-url="true">
24
- <%= tag.version %>
25
- </a>
14
+ <div class="selection fragment">
15
+ <label for="version" class="label">Version:</label>
26
16
 
27
- <span class="date"><%= tag.committed_date %></span>
28
- </li>
29
- <% end %>
30
- </ul>
17
+ <select id="version"
18
+ name="version"
19
+ class="versions"
20
+ hx-get=""
21
+ hx-trigger="change"
22
+ hx-select=".milestone"
23
+ hx-target=".milestones"
24
+ hx-swap="outerHTML"
25
+ hx-push-url="true"
26
+ hx-indicator=".spinner"
27
+ hx-ext="select">
28
+
29
+ <option value="" class="option">Select...</option>
30
+
31
+ <% tags.each do |tag| %>
32
+ <option value="<%= tag.version %>/" class="option">
33
+ <%= tag.version %> (<%= tag.committed_date %>)
34
+ </option>
35
+ <% end %>
36
+ </select>
37
+
38
+ <div class="spinner htmx-indicator"></div>
39
+ </div>
31
40
  </section>
@@ -13,5 +13,5 @@
13
13
  *<%= tag.total_commits %>. <%= tag.total_files %>. <%= tag.total_deletions %>. <%= tag.total_insertions %>.* +
14
14
  *<%= tag.total_duration %>.*
15
15
 
16
- link:<%= past.version %>/[Previous (<%= past.version %>)] | link:<%= future.version %>/[Next (<%= future.version %>)]
16
+ link:../<%= past.version %>/[Previous (<%= past.version %>)] | link:../<%= future.version %>/[Next (<%= future.version %>)]
17
17
  <% end %>
@@ -1,16 +1,21 @@
1
1
  <article class="milestone">
2
2
  <header class="header">
3
3
  <% if tag.index? %>
4
- <a href="../"
5
- class="root"
6
- hx-get="../"
7
- hx-select=".milestones"
8
- hx-trigger="click, keyup[key=='v'] from:body"
9
- hx-target=".milestone"
10
- hx-swap="outerHTML"
11
- hx-push-url="true">
12
- Versions
13
- </a>
4
+ <div class="fragment">
5
+ <a href="../"
6
+ class="root"
7
+ hx-get="../"
8
+ hx-select=".milestones"
9
+ hx-trigger="click, keyup[key=='v'] from:body"
10
+ hx-target=".milestone"
11
+ hx-swap="outerHTML"
12
+ hx-push-url="true"
13
+ hx-indicator=".index">
14
+ Versions
15
+ </a>
16
+
17
+ <div class="index spinner htmx-indicator"></div>
18
+ </div>
14
19
  <% end %>
15
20
 
16
21
  <h1 class="title">
@@ -71,19 +76,22 @@
71
76
  </p>
72
77
 
73
78
  <ul class="actions">
74
- <li>
75
- <a href="/<%= past.version %>/"
79
+ <li class="fragment">
80
+ <a href="../<%= past.version %>/"
76
81
  class="action"
77
82
  data-direction="previous"
78
- hx-get="/<%= past.version %>/"
83
+ hx-get="../<%= past.version %>/"
79
84
  hx-select=".milestone"
80
85
  hx-trigger="click, keyup[key=='ArrowLeft'] from:body"
81
86
  hx-target=".milestone"
82
87
  hx-swap="outerHTML"
83
- hx-push-url="true">
88
+ hx-push-url="true"
89
+ hx-indicator=".previous">
84
90
  Previous
85
91
  (<%= past.version %>)
86
92
  </a>
93
+
94
+ <div class="previous spinner htmx-indicator"></div>
87
95
  </li>
88
96
 
89
97
  <li>
@@ -100,16 +108,19 @@
100
108
  </div>
101
109
  </li>
102
110
 
103
- <li>
104
- <a href="/<%= future.version %>/"
111
+ <li class="fragment">
112
+ <div class="next spinner htmx-indicator"></div>
113
+
114
+ <a href="../<%= future.version %>/"
105
115
  class="action"
106
116
  data-direction="next"
107
- hx-get="/<%= future.version %>/"
117
+ hx-get="../<%= future.version %>/"
108
118
  hx-select=".milestone"
109
119
  hx-trigger="click, keyup[key=='ArrowRight'] from:body"
110
120
  hx-target=".milestone"
111
121
  hx-swap="outerHTML"
112
- hx-push-url="true">
122
+ hx-push-url="true"
123
+ hx-indicator=".next">
113
124
  Next
114
125
  (<%= future.version %>)
115
126
  </a>
@@ -12,5 +12,5 @@
12
12
  **<%= tag.total_commits %>. <%= tag.total_files %>. <%= tag.total_deletions %>. <%= tag.total_insertions %>.**
13
13
  **<%= tag.total_duration %>.**
14
14
 
15
- [Previous (<%= past.version %>)](<%= past.version %>/) | [Next (<%= future.version %>)](<%= future.version %>/)
15
+ [Previous (<%= past.version %>)](../<%= past.version %>/) | [Next (<%= future.version %>)](../<%= future.version %>/)
16
16
  <% end %>
@@ -1,3 +1,8 @@
1
+ @keyframes spin {
2
+ 0% { transform: rotate(0deg); }
3
+ 100% { transform: rotate(360deg); }
4
+ }
5
+
1
6
  /* Rouge (https://rouge.jneen.net) */
2
7
  .rouge.highlight {
3
8
  --color-berry: hsl(240, 18%, 40%);
@@ -479,6 +484,21 @@
479
484
  }
480
485
  }
481
486
 
487
+ .spinner {
488
+ animation: spin 1.5s linear infinite;
489
+ border-radius: 50%;
490
+ border: 0.3rem solid var(--color-grey);
491
+ border-top: 0.3rem solid var(--color-green);
492
+ height: 1rem;
493
+ width: 1rem;
494
+ }
495
+
496
+ .fragment {
497
+ align-items: center;
498
+ display: flex;
499
+ gap: 0.5rem;
500
+ }
501
+
482
502
  .toggle {
483
503
  background-color: var(--color-white);
484
504
  border: 0.15rem solid var(--color-smoke);
@@ -500,24 +520,20 @@
500
520
  flex-direction: column;
501
521
  margin: 0 12vw;
502
522
 
503
- .list {
504
- background-color: var(--color-grey);
505
- border: 0.1rem solid var(--color-black);
506
- border-radius: 0.5rem;
507
- display: flex;
508
- gap: 0.5rem;
509
- flex-direction: column;
510
- margin: 1rem 0;
511
- padding: 1rem;
523
+ .label {
524
+ font-weight: 600;
525
+ }
512
526
 
513
- .item {
514
- flex-wrap: wrap;
515
- justify-content: space-between;
516
- }
527
+ .selection {
528
+ margin: 1rem 0 0.5rem 0;
517
529
  }
518
530
 
519
- .date {
520
- color: var(--color-slate);
531
+ .versions {
532
+ background-color: var(--color-ice);
533
+ border-radius: 0.5rem;
534
+ border: 0.15rem solid var(--color-black);
535
+ font-size: 1rem;
536
+ padding: 0.2rem 0.5rem;
521
537
  }
522
538
  }
523
539
 
@@ -551,21 +567,6 @@
551
567
  color: var(--color-white);
552
568
  }
553
569
 
554
- .columns {
555
- background-color: var(--color-black);
556
- border-top-left-radius: 0.5rem;
557
- border-top-right-radius: 0.5rem;
558
- color: var(--color-white);
559
- display: grid;
560
- grid-template: 1fr / 4.7fr 1fr 1fr 1fr 1fr 1fr;
561
- padding: 0.3rem 0;
562
-
563
- .label {
564
- font-weight: 600;
565
- text-align: center;
566
- }
567
- }
568
-
569
570
  .header {
570
571
  align-items: center;
571
572
  display: grid;
@@ -621,7 +622,6 @@
621
622
  }
622
623
 
623
624
  .owner {
624
- align-items: center;
625
625
  display: flex;
626
626
  gap: 0.5rem;
627
627
  justify-content: center;
@@ -634,6 +634,27 @@
634
634
  }
635
635
  }
636
636
 
637
+ .columns {
638
+ background-color: var(--color-black);
639
+ border-top-left-radius: 0.5rem;
640
+ border-top-right-radius: 0.5rem;
641
+ color: var(--color-white);
642
+ display: none;
643
+ padding: 0.3rem 0;
644
+
645
+ @media (width >= 700px) {
646
+ display: grid;
647
+ grid-template: 1fr / 4.7fr repeat(5, 1fr);
648
+ }
649
+
650
+ .label {
651
+ font-weight: 600;
652
+ overflow: hidden;
653
+ texdt-overflow: ellipsis;
654
+ text-align: center;
655
+ }
656
+ }
657
+
637
658
  .row {
638
659
  .label {
639
660
  font-weight: 600;
@@ -650,18 +671,22 @@
650
671
  border-radius: 0.5rem;
651
672
  display: grid;
652
673
  gap: 0 1rem;
653
- grid-template: 1fr / auto 5fr 1fr 1fr 1fr 1fr 1fr;
674
+ grid-template: 1fr 1fr / auto auto auto repeat(5, 1fr);
675
+ grid-template-areas:
676
+ "toggle icon subject subject subject subject subject subject"
677
+ "toggle icon author files lines issue review review";
654
678
  padding: 0.15rem 0;
655
679
  margin: 0.25rem 0 0 0;
656
680
 
657
681
  &::-webkit-details-marker {
658
- display:none;
682
+ display: none;
659
683
  }
660
684
 
661
685
  &::before {
662
686
  color: var(--color-carbon);
663
- content: "\25B6";
687
+ content: "\25B6\FE0E";
664
688
  cursor: pointer;
689
+ grid-area: toggle;
665
690
  width: 0.5rem;
666
691
  }
667
692
 
@@ -690,10 +715,25 @@
690
715
  border-radius: 0.5rem;
691
716
  }
692
717
 
693
- .title {
694
- align-items: center;
695
- display: flex;
696
- gap: 0 0.5rem;
718
+ @media (width >= 700px) {
719
+ grid-template: 1fr / auto auto 5fr repeat(5, 1fr);
720
+ grid-template-areas: "toggle icon subject author files lines issue review";
721
+ }
722
+
723
+ .icon {
724
+ grid-area: icon;
725
+ }
726
+
727
+ .subject {
728
+ grid-area: subject;
729
+ }
730
+
731
+ .author {
732
+ grid-area: author;
733
+ }
734
+
735
+ .files {
736
+ grid-area: files;
697
737
  }
698
738
 
699
739
  .author,
@@ -709,6 +749,13 @@
709
749
  }
710
750
 
711
751
  .lines {
752
+ grid-area: lines;
753
+ white-space: nowrap;
754
+
755
+ @media (width >= 700px) {
756
+ white-space: normal;
757
+ }
758
+
712
759
  .deletions {
713
760
  color: var(--color-green);
714
761
  }
@@ -717,6 +764,14 @@
717
764
  color: var(--color-red);
718
765
  }
719
766
  }
767
+
768
+ .issue {
769
+ grid-area: issue;
770
+ }
771
+
772
+ .review {
773
+ grid-area: review;
774
+ }
720
775
  }
721
776
 
722
777
  .details {
@@ -736,7 +791,6 @@
736
791
  }
737
792
 
738
793
  .tag {
739
- align-self: stretch;
740
794
  border-radius: 0.3rem;
741
795
  grid-area: tag;
742
796
  margin: 1rem 0;
data/milestoner.gemspec CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  Gem::Specification.new do |spec|
4
4
  spec.name = "milestoner"
5
- spec.version = "19.2.0"
5
+ spec.version = "19.3.0"
6
6
  spec.authors = ["Brooke Kuhlmann"]
7
7
  spec.email = ["brooke@alchemists.io"]
8
8
  spec.homepage = "https://alchemists.io/projects/milestoner"
data.tar.gz.sig CHANGED
@@ -1,3 +1,2 @@
1
- �0hU���i�&(xD���Ď�ljLs\��XZ�\�v��_���)|�?�fEr��xdXV��v�^{/�UK��g�r�;C��wRO��\���m�+��؛�� ��\8Z����*yuKx0*�#Δ��
2
- A/�Dc-b�y���ɾ%{��d)�-> �ρO��Q��8i)Q8j��E���{��!G#�ٵ�����J9�&6� b�����,(ݮO'OuWuUmR4g��^�� `@�J��\��Z~F3c5r\�z,=��[�9�IV`��S&���c�M��
3
- #o⧩5 _ͯ���Z�_���;��Pc]_�� |��<�����S������1sj�/�k���pO ;�V�O���T�쯑d�= �s'
1
+ ����]�(0��Ub����}����zո� Kq5��fW�OҺ~rd)��AL�;Mg�u3��`���� �������Q�Բ��>��C��6�B��"В<z1�=���>����X�̀q�q��I�x��ߌrL����zJ٥�F���A��'��� +���9�ar���oDxg"�R]*�AeQU|��͊�U!W��t׊�5}���*=]�3
2
+ ��Y��3=$U��EFY���/]��� ��\��4�˱؎ .���6��@D��AMZg�xY��R�èpy$ I�&����{q!��KCE��saiWS��ճV}MHRh�y'�-�a&�9�����:����r�x3]h��̆�����l�ʮ�0��
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: milestoner
3
3
  version: !ruby/object:Gem::Version
4
- version: 19.2.0
4
+ version: 19.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Brooke Kuhlmann
@@ -34,7 +34,7 @@ cert_chain:
34
34
  3n5C8/6Zh9DYTkpcwPSuIfAga6wf4nXc9m6JAw8AuMLaiWN/r/2s4zJsUHYERJEu
35
35
  gZGm4JqtuSg8pYjPeIJxS960owq+SfuC+jxqmRA54BisFCv/0VOJi7tiJVY=
36
36
  -----END CERTIFICATE-----
37
- date: 2025-02-06 00:00:00.000000000 Z
37
+ date: 2025-02-20 00:00:00.000000000 Z
38
38
  dependencies:
39
39
  - !ruby/object:Gem::Dependency
40
40
  name: asciidoctor
@@ -555,7 +555,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
555
555
  - !ruby/object:Gem::Version
556
556
  version: '0'
557
557
  requirements: []
558
- rubygems_version: 3.6.3
558
+ rubygems_version: 3.6.4
559
559
  specification_version: 4
560
560
  summary: A command line interface for automated Git repository milestones.
561
561
  test_files: []
metadata.gz.sig CHANGED
Binary file