milestoner 18.5.0 → 18.7.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- checksums.yaml.gz.sig +0 -0
- data/README.adoc +47 -30
- data/lib/milestoner/commits/collector.rb +1 -0
- data/lib/milestoner/commits/tagger.rb +2 -0
- data/lib/milestoner/configuration/transformers/build/root.rb +1 -1
- data/lib/milestoner/syndication/builder.rb +7 -4
- data/lib/milestoner/templates/milestones/_avatar.adoc.erb +1 -1
- data/lib/milestoner/templates/milestones/_avatar.html.erb +6 -5
- data/lib/milestoner/templates/milestones/_avatar.md.erb +1 -2
- data/lib/milestoner/templates/milestones/_avatar.xml.erb +1 -5
- data/lib/milestoner/templates/milestones/_commit.adoc.erb +6 -20
- data/lib/milestoner/templates/milestones/_commit.html.erb +32 -53
- data/lib/milestoner/templates/milestones/_commit.md.erb +1 -1
- data/lib/milestoner/templates/milestones/_commit.xml.erb +13 -41
- data/lib/milestoner/templates/milestones/_content.adoc.erb +1 -0
- data/lib/milestoner/templates/milestones/_content.html.erb +1 -0
- data/lib/milestoner/templates/milestones/_content.xml.erb +1 -0
- data/lib/milestoner/templates/milestones/_logo.adoc.erb +1 -0
- data/lib/milestoner/templates/milestones/_logo.html.erb +1 -0
- data/lib/milestoner/templates/milestones/_logo.md.erb +3 -0
- data/lib/milestoner/templates/milestones/_logo.xml.erb +3 -0
- data/lib/milestoner/templates/milestones/_none.adoc.erb +1 -0
- data/lib/milestoner/templates/milestones/_none.html.erb +1 -0
- data/lib/milestoner/templates/milestones/_none.xml.erb +1 -0
- data/lib/milestoner/templates/milestones/_profile.adoc.erb +1 -1
- data/lib/milestoner/templates/milestones/_profile.html.erb +1 -5
- data/lib/milestoner/templates/milestones/_profile.md.erb +1 -1
- data/lib/milestoner/templates/milestones/_profile.xml.erb +1 -5
- data/lib/milestoner/templates/milestones/_tag-insecure.html.erb +8 -0
- data/lib/milestoner/templates/milestones/_tag-secure.html.erb +13 -0
- data/lib/milestoner/templates/milestones/_tag.adoc.erb +3 -3
- data/lib/milestoner/templates/milestones/_tag.html.erb +3 -29
- data/lib/milestoner/templates/milestones/_tag.md.erb +2 -6
- data/lib/milestoner/templates/milestones/_tag.xml.erb +2 -7
- data/lib/milestoner/templates/milestones/_user.adoc.erb +1 -0
- data/lib/milestoner/templates/milestones/_user.html.erb +1 -0
- data/lib/milestoner/templates/milestones/_user.md.erb +1 -0
- data/lib/milestoner/templates/milestones/_user.xml.erb +1 -0
- data/lib/milestoner/templates/milestones/_users.adoc.erb +3 -0
- data/lib/milestoner/templates/milestones/_users.html.erb +7 -0
- data/lib/milestoner/templates/milestones/_users.md.erb +3 -0
- data/lib/milestoner/templates/milestones/_users.xml.erb +7 -0
- data/lib/milestoner/templates/public/page.css.erb +49 -21
- data/lib/milestoner/views/context.rb +1 -1
- data/lib/milestoner/views/milestones/show.rb +3 -1
- data/lib/milestoner/views/parts/commit.rb +27 -3
- data/lib/milestoner/views/parts/tag.rb +15 -4
- data/lib/milestoner/views/parts/user.rb +32 -0
- data/lib/milestoner/views/scope_builder.rb +40 -0
- data/lib/milestoner/views/scopes/content.rb +17 -0
- data/lib/milestoner/views/scopes/logo.rb +15 -0
- data/lib/milestoner/views/scopes/tag_signature.rb +27 -0
- data/lib/milestoner/views/scopes/users.rb +14 -0
- data/milestoner.gemspec +3 -3
- data.tar.gz.sig +0 -0
- metadata +33 -11
- metadata.gz.sig +0 -0
- data/lib/milestoner/templates/milestones/_icon.adoc.erb +0 -1
- data/lib/milestoner/templates/milestones/_icon.html.erb +0 -6
- data/lib/milestoner/templates/milestones/_icon.md.erb +0 -5
- data/lib/milestoner/templates/milestones/_icon.xml.erb +0 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 901e8a713ea79f21041e145d69abc34d2c17b7faba71fd66f71710f4bae1e1d7
|
4
|
+
data.tar.gz: 4906056cdb0ed711a675f99bf0be6206ace26552b304351c42027d07348eaa34
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 8cedae5d5a1097ca144f3f327337620d2368759aa9bbbcb4ec804132733c6fa2a1e0733c5d6a572289740084154159b2f8aeb526e4ae94854ebcf0a927f154e0
|
7
|
+
data.tar.gz: 1a7e11af7e982976df1428468bb91db6fafceb6ac65e24dfbc504706730e0d02522e24939708c29d3e87bb2f6f022b9c940c203bcbd77a980aa56b50460d15e4
|
checksums.yaml.gz.sig
CHANGED
Binary file
|
data/README.adoc
CHANGED
@@ -56,41 +56,41 @@ The following are screenshots of using this gem to render release notes for the
|
|
56
56
|
|
57
57
|
=== ASCII Doc
|
58
58
|
|
59
|
-
image:https://alchemists.io/images/projects/milestoner/screenshots/build-ascii_doc-collapsed.png[Release Notes,width=
|
59
|
+
image:https://alchemists.io/images/projects/milestoner/screenshots/build-ascii_doc-collapsed.png[Release Notes,width=1160,height=831,role=focal_point]
|
60
60
|
|
61
|
-
image:https://alchemists.io/images/projects/milestoner/screenshots/build-ascii_doc-expanded.png[Release Notes,width=
|
61
|
+
image:https://alchemists.io/images/projects/milestoner/screenshots/build-ascii_doc-expanded.png[Release Notes,width=1160,height=1335,role=focal_point]
|
62
62
|
|
63
63
|
* *Command*: `milestoner build --format ascii_doc`
|
64
64
|
* *Renderer*: {ascii_doc_link}
|
65
65
|
|
66
66
|
=== Feed
|
67
67
|
|
68
|
-
image:https://alchemists.io/images/projects/milestoner/screenshots/build-feed-collapsed.png[Release Notes,width=
|
68
|
+
image:https://alchemists.io/images/projects/milestoner/screenshots/build-feed-collapsed.png[Release Notes,width=1275,height=954,role=focal_point]
|
69
69
|
|
70
|
-
image:https://alchemists.io/images/projects/milestoner/screenshots/build-feed-expanded.png[Release Notes,width=
|
70
|
+
image:https://alchemists.io/images/projects/milestoner/screenshots/build-feed-expanded.png[Release Notes,width=1275,height=1613,role=focal_point]
|
71
71
|
|
72
72
|
* *Command*: `milestoner build --format feed`
|
73
73
|
* *Renderer*: {net_news_wire_link}
|
74
74
|
|
75
75
|
=== Markdown Format
|
76
76
|
|
77
|
-
image:https://alchemists.io/images/projects/milestoner/screenshots/build-markdown.png[Release Notes,width=
|
77
|
+
image:https://alchemists.io/images/projects/milestoner/screenshots/build-markdown.png[Release Notes,width=796,height=703,role=focal_point]
|
78
78
|
|
79
79
|
* *Command*: `milestoner build --format markdown`
|
80
80
|
* *Renderer*: {marked_link}
|
81
81
|
|
82
82
|
=== Stream
|
83
83
|
|
84
|
-
image:https://alchemists.io/images/projects/milestoner/screenshots/build-stream.png[Release Notes,width=
|
84
|
+
image:https://alchemists.io/images/projects/milestoner/screenshots/build-stream.png[Release Notes,width=566,height=320,role=focal_point]
|
85
85
|
|
86
86
|
* *Command*: `milestoner build --format stream`
|
87
87
|
* *Renderer*: {iterm_link}
|
88
88
|
|
89
89
|
=== Web
|
90
90
|
|
91
|
-
image:https://alchemists.io/images/projects/milestoner/screenshots/build-web-collapsed.png[Release Notes,width=
|
91
|
+
image:https://alchemists.io/images/projects/milestoner/screenshots/build-web-collapsed.png[Release Notes,width=1296,height=647,role=focal_point]
|
92
92
|
|
93
|
-
image:https://alchemists.io/images/projects/milestoner/screenshots/build-web-expanded.png[Release Notes,width=
|
93
|
+
image:https://alchemists.io/images/projects/milestoner/screenshots/build-web-expanded.png[Release Notes,width=1296,height=1032,role=focal_point]
|
94
94
|
|
95
95
|
* *Command*: `milestoner build --format web`
|
96
96
|
* *Renderer*: {firefox_link}
|
@@ -111,10 +111,10 @@ image:https://alchemists.io/images/projects/milestoner/screenshots/build-web-exp
|
|
111
111
|
* Provides automatic versioning based on last {git_link} tag and {git_trailers_link}. See {git_commit_anatomy_link} for details.
|
112
112
|
* Supports multiple build formats:
|
113
113
|
** {ascii_doc_link}
|
114
|
-
** {syndication_link}
|
114
|
+
** {syndication_link} (feed)
|
115
115
|
** {markdown_link}
|
116
116
|
** Stream (console)
|
117
|
-
** link:https://html.spec.whatwg.org/multipage[Web]
|
117
|
+
** link:https://html.spec.whatwg.org/multipage[Web] (HTML)
|
118
118
|
* Supports {git_notes_link}.
|
119
119
|
* Supports customization via your personal {xdg_link}, {runcom_link}, and/or {hanami_views_link} configuration.
|
120
120
|
|
@@ -277,7 +277,7 @@ The above can be customized as follows:
|
|
277
277
|
*** `mime`: Required. The mime type. Defaults to HTML and XML.
|
278
278
|
*** `relation`: Required. Identifies the relation of the link which can either be `self` (i.e. XML) or `alternate` (i.e. HTML).
|
279
279
|
*** `uri`: Required. The link URI to follow for more information. Defaults to dynamic string formatting based on existing configuration values.
|
280
|
-
* `tracker`: Required.
|
280
|
+
* `tracker`: Required. Manages issue tracker details.
|
281
281
|
** `uri`: Required. The URI format for linking to issues as formatted using {string_formats_link}. Default: GitHub. The `id` is dynamically calculated via the commit `Issue` trailer as linted by {git_lint_link}. When no ID can be found, this will default to _All_ issues.
|
282
282
|
|
283
283
|
As hinted at above, all URIs (including syndication), support {string_formats_link}. This means you can use the `%<key>s` format -- replacing `key` with the key of your choice -- to customize your configuration further.
|
@@ -296,7 +296,7 @@ image:https://alchemists.io/images/projects/milestoner/screenshots/usage-cache.p
|
|
296
296
|
|
297
297
|
Milestoner's cache allows you to enrich user information (i.e. authors, collaborators, etc) by storing information in a `PStore` database as managed by the {lode_link} gem. Cache location, as with the Config, is managed by the {runcom_link} gem.
|
298
298
|
|
299
|
-
User information should be sourced from whatever service
|
299
|
+
User information should be sourced from whatever service used for managing your source code. For example, when using GitHub, your workflow might look like this:
|
300
300
|
|
301
301
|
[source,bash]
|
302
302
|
----
|
@@ -393,9 +393,11 @@ Check out the help documentation (i.e. `milestoner build --help`) for addition u
|
|
393
393
|
|
394
394
|
==== Commits
|
395
395
|
|
396
|
-
By default, all {git_link} commit messages support {ascii_doc_link} syntax but you can use {markdown_link}
|
396
|
+
By default, all {git_link} commit messages support {ascii_doc_link} syntax but you can use {markdown_link} too.
|
397
397
|
|
398
|
-
{ascii_doc_link} is rendered using the {ascii_doctor_link} gem while {markdown_link} is rendered using the {redcarpet_link} gem. Regardless of what renderer you choose, each supports syntax highlighting via the {rouge_link} gem. This also means you can customize the {
|
398
|
+
{ascii_doc_link} is rendered using the {ascii_doctor_link} gem while {markdown_link} is rendered using the {redcarpet_link} gem. Regardless of what renderer you choose, each supports syntax highlighting via the {rouge_link} gem. This also means you can customize the {rouge_link} styles via the `page.css` template as documented in the xref:_templates[Templates] section below.
|
399
|
+
|
400
|
+
ℹ️ The {rouge_link} CSS classes are slightly cryptic in terms of readability but you can see how they are applied when inspecting the HTML DOM.
|
399
401
|
|
400
402
|
Here's a couple examples of commit messages using {ascii_doc_link} and {markdown_link} syntax:
|
401
403
|
|
@@ -461,7 +463,7 @@ The following attributes are limited to only a few elements like `a`, `abbr`, an
|
|
461
463
|
|
462
464
|
* link:https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/title[title]
|
463
465
|
|
464
|
-
|
466
|
+
An additional set of attributes are allowed but are specific to each element and fairly limited. Ultimately, if you don't see an attribute being rendered then it's not allowed.
|
465
467
|
|
466
468
|
==== Trailers
|
467
469
|
|
@@ -536,7 +538,7 @@ Given the above, the resulting version would be: 2.0.0. This is because the high
|
|
536
538
|
|
537
539
|
==== Templates
|
538
540
|
|
539
|
-
|
541
|
+
Template functionality is powered by {hanami_views_link} which means you can completely customize _all_ build formats, templates, partials, stylesheets, images, and much more.
|
540
542
|
The quickest way to start customization is to copy the `templates` folder structure -- included with this gem -- to your preferred {runcom_link} configuration (i.e. global or local). For example, this gem's template structure is:
|
541
543
|
|
542
544
|
....
|
@@ -557,19 +559,34 @@ lib/milestoner/templates
|
|
557
559
|
│ ├── _commit.md.erb
|
558
560
|
│ ├── _commit.stream.erb
|
559
561
|
│ ├── _commit.xml.erb
|
560
|
-
│ ├──
|
561
|
-
│ ├──
|
562
|
-
│ ├──
|
563
|
-
│ ├──
|
562
|
+
│ ├── _content.adoc.erb
|
563
|
+
│ ├── _content.html.erb
|
564
|
+
│ ├── _content.xml.erb
|
565
|
+
│ ├── _logo.adoc.erb
|
566
|
+
│ ├── _logo.html.erb
|
567
|
+
│ ├── _logo.md.erb
|
568
|
+
│ ├── _logo.xml.erb
|
569
|
+
│ ├── _none.adoc.erb
|
570
|
+
│ ├── _none.html.erb
|
571
|
+
│ ├── _none.xml.erb
|
564
572
|
│ ├── _profile.adoc.erb
|
565
573
|
│ ├── _profile.html.erb
|
566
574
|
│ ├── _profile.md.erb
|
567
575
|
│ ├── _profile.xml.erb
|
576
|
+
│ ├── _tag-insecure.html.erb
|
577
|
+
│ ├── _tag-secure.html.erb
|
568
578
|
│ ├── _tag.adoc.erb
|
569
579
|
│ ├── _tag.html.erb
|
570
580
|
│ ├── _tag.md.erb
|
571
581
|
│ ├── _tag.stream.erb
|
572
582
|
│ ├── _tag.xml.erb
|
583
|
+
│ ├── _user.adoc.erb
|
584
|
+
│ ├── _user.html.erb
|
585
|
+
│ ├── _user.md.erb
|
586
|
+
│ ├── _user.xml.erb
|
587
|
+
│ ├── _users.adoc.erb
|
588
|
+
│ ├── _users.html.erb
|
589
|
+
│ ├── _users.xml.erb
|
573
590
|
│ ├── show.adoc.erb
|
574
591
|
│ ├── show.html.erb
|
575
592
|
│ ├── show.md.erb
|
@@ -592,29 +609,29 @@ Milestoner searches your {runcom_link} configuration first and, if templates are
|
|
592
609
|
|
593
610
|
Of all build formats supported, the web format is the most powerful and feature rich. The following showcases _some_ of the information rendered in this format based on commit activity.
|
594
611
|
|
595
|
-
*
|
612
|
+
*Overview*
|
596
613
|
|
597
|
-
image:https://alchemists.io/images/projects/milestoner/screenshots/web_format-overview.png[
|
614
|
+
image:https://alchemists.io/images/projects/milestoner/screenshots/web_format-overview.png[ASCII Doc,width=1157,height=843,role=focal_point]
|
598
615
|
|
599
|
-
*With
|
616
|
+
*With Valid Commit Signature*
|
600
617
|
|
601
|
-
image:https://alchemists.io/images/projects/milestoner/screenshots/web_format-
|
618
|
+
image:https://alchemists.io/images/projects/milestoner/screenshots/web_format-commit_valid.png[ASCII Doc,width=1235,height=950,role=focal_point]
|
602
619
|
|
603
|
-
*With Invalid
|
620
|
+
*With Invalid Commit Signature*
|
604
621
|
|
605
|
-
image:https://alchemists.io/images/projects/milestoner/screenshots/web_format-
|
622
|
+
image:https://alchemists.io/images/projects/milestoner/screenshots/web_format-commit_invalid.png[ASCII Doc,width=1235,height=950,role=focal_point]
|
606
623
|
|
607
624
|
*With Valid Tag*
|
608
625
|
|
609
|
-
image:https://alchemists.io/images/projects/milestoner/screenshots/web_format-tag_valid.png[
|
626
|
+
image:https://alchemists.io/images/projects/milestoner/screenshots/web_format-tag_valid.png[ASCII Doc,width=1089,height=1084,role=focal_point]
|
610
627
|
|
611
|
-
*With
|
628
|
+
*With Invalid Tag*
|
612
629
|
|
613
|
-
image:https://alchemists.io/images/projects/milestoner/screenshots/web_format-
|
630
|
+
image:https://alchemists.io/images/projects/milestoner/screenshots/web_format-tag_invalid.png[ASCII Doc,width=978,height=571,role=focal_point]
|
614
631
|
|
615
632
|
*With ASCII Doc/Markdown*
|
616
633
|
|
617
|
-
image:https://alchemists.io/images/projects/milestoner/screenshots/web_format-
|
634
|
+
image:https://alchemists.io/images/projects/milestoner/screenshots/web_format-ascii_doc.png[ASCII Doc,width=908,height=1938,role=focal_point]
|
618
635
|
|
619
636
|
💡 See {git_notes_link} to learn more.
|
620
637
|
|
@@ -20,6 +20,7 @@ module Milestoner
|
|
20
20
|
case [min, max]
|
21
21
|
in MIN, MAX then git.tag_last.bind { |tag| git.commits "#{tag}..#{max}" }
|
22
22
|
in String, String then git.commits "#{min}..#{max}"
|
23
|
+
in nil, String then git.commits max
|
23
24
|
else Failure "Invalid minimum and/or maximum range: #{min}..#{max}."
|
24
25
|
end
|
25
26
|
end
|
@@ -35,8 +35,10 @@ module Milestoner
|
|
35
35
|
|
36
36
|
def collect = git.tagged? ? git.tags("--sort=taggerdate") : placeholder_with_commits
|
37
37
|
|
38
|
+
# :reek:FeatureEnvy
|
38
39
|
def tail references
|
39
40
|
references.append "HEAD" if settings.build_tail == "head"
|
41
|
+
references.prepend nil if references.one?
|
40
42
|
references
|
41
43
|
end
|
42
44
|
|
@@ -12,7 +12,7 @@ module Milestoner
|
|
12
12
|
using Refinements::Hash
|
13
13
|
|
14
14
|
Root = lambda do |attributes, key = :build_root|
|
15
|
-
attributes.
|
15
|
+
attributes.transform_value!(key) { |value| Pathname(value).expand_path }
|
16
16
|
Dry::Monads::Success attributes
|
17
17
|
end
|
18
18
|
end
|
@@ -14,6 +14,12 @@ module Milestoner
|
|
14
14
|
|
15
15
|
using Refine
|
16
16
|
|
17
|
+
def self.authors_for tags
|
18
|
+
tags.flat_map { |tag| tag.commits.map(&:author) }
|
19
|
+
.then { |users| users.any? ? users : tags.map(&:author) }
|
20
|
+
.uniq
|
21
|
+
end
|
22
|
+
|
17
23
|
def initialize(client: RSS::Maker, view: Views::Milestones::Show.new, **)
|
18
24
|
super(**)
|
19
25
|
@client = client
|
@@ -56,10 +62,7 @@ module Milestoner
|
|
56
62
|
def build_channel_elements node, tags
|
57
63
|
build_links node
|
58
64
|
build_generator node
|
59
|
-
|
60
|
-
build_authors node,
|
61
|
-
tags.flat_map { |tag| tag.commits.map(&:author) }
|
62
|
-
.uniq
|
65
|
+
build_authors node, self.class.authors_for(tags)
|
63
66
|
|
64
67
|
node.categories.build label: settings.project_label, term: settings.project_name
|
65
68
|
end
|
@@ -1 +1 @@
|
|
1
|
-
|
1
|
+
image:<%= user.avatar_url %>[<%= user.image_alt %>,24,24]
|
@@ -1,5 +1,6 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
1
|
+
<img src="<%= user.avatar_url %>"
|
2
|
+
alt="<%= user.image_alt %>"
|
3
|
+
class="avatar"
|
4
|
+
width="24"
|
5
|
+
height="24"
|
6
|
+
loading="lazy">
|
@@ -1,2 +1 @@
|
|
1
|
-
|
2
|
-
<%= render :icon, name: "missing", alt: "Unknown" %><% end %>
|
1
|
+
<img src="<%= user.avatar_url %>" alt="<%= user.image_alt %>" width="24" height="24" loading="lazy">
|
@@ -1,5 +1 @@
|
|
1
|
-
|
2
|
-
<img src="<%= url %>" alt="<%= name %>" width="24" height="24" loading="lazy">
|
3
|
-
<% else %>
|
4
|
-
<%= render :icon, name: "missing", alt: "Unknown" %>
|
5
|
-
<% end %>
|
1
|
+
<img src="<%= user.avatar_url %>" alt="<%= user.image_alt %>" width="24" height="24" loading="lazy">
|
@@ -1,39 +1,25 @@
|
|
1
|
-
.<%= commit.emoji %> <%= commit.subject %> - <%= render
|
1
|
+
.<%= commit.emoji %> <%= commit.subject %> - <%= render(:profile, user: commit.author).strip %>
|
2
2
|
[%collapsible]
|
3
3
|
====
|
4
4
|
*Message*
|
5
5
|
|
6
|
-
|
7
|
-
<%= commit.body_lines.join "\n" %>
|
8
|
-
<% else %>
|
9
|
-
None.
|
10
|
-
<% end %>
|
6
|
+
<%= scope(:content, content: Array(commit.body_lines).join("\n")).call %>
|
11
7
|
|
12
|
-
<% unless commit.notes.empty? %>
|
13
8
|
*Notes*
|
14
9
|
|
15
|
-
|
16
|
-
<% end %>
|
10
|
+
<%= scope(:content, content: commit.safe_notes).call %>
|
17
11
|
|
18
12
|
*Author*
|
19
13
|
|
20
|
-
<%= render :
|
14
|
+
<%= render :user, user: commit.author %>
|
21
15
|
|
22
|
-
<% if commit.collaborators.any? %>
|
23
16
|
*Collaborators*
|
24
17
|
|
25
|
-
|
26
|
-
* <%= render :avatar, name: collaborator.name, url: commit.avatar_url(collaborator) %> <%= render :profile, name: collaborator.name, url: commit.profile_url(collaborator) %>
|
27
|
-
<% end %>
|
28
|
-
<% end %>
|
18
|
+
<%= scope(:users, users: commit.collaborators).call %>
|
29
19
|
|
30
|
-
<% if commit.signers.any? %>
|
31
20
|
*Signers*
|
32
21
|
|
33
|
-
|
34
|
-
* <%= render :avatar, name: signer.name, url: commit.avatar_url(signer) %> <%= render :profile, name: signer.name, url: commit.profile_url(signer) %>
|
35
|
-
<% end %>
|
36
|
-
<% end %>
|
22
|
+
<%= scope(:users, users: commit.signers).call %>
|
37
23
|
|
38
24
|
*Details*
|
39
25
|
|
@@ -1,12 +1,17 @@
|
|
1
1
|
<details id="<%= commit.sha %>" class="row" x-bind:open="open">
|
2
2
|
<summary class="summary <%= commit.kind %>">
|
3
3
|
<div class="title">
|
4
|
-
|
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">
|
5
10
|
<span class="subject"><%= commit.subject %></span>
|
6
11
|
</div>
|
7
12
|
|
8
|
-
<a href="<%= commit.profile_url
|
9
|
-
<%= render :avatar,
|
13
|
+
<a href="<%= commit.author.profile_url %>" class="author">
|
14
|
+
<%= render :avatar, user: commit.author %>
|
10
15
|
</a>
|
11
16
|
|
12
17
|
<a href="<%= commit.uri %>" class="files"><%= commit.files_changed %></a>
|
@@ -26,74 +31,48 @@
|
|
26
31
|
|
27
32
|
<div class="message">
|
28
33
|
<h1 class="bar">Message</h1>
|
29
|
-
|
30
34
|
<div class="content">
|
31
|
-
|
32
|
-
<p>None.</p>
|
33
|
-
<% else %>
|
34
|
-
<%= commit.safe_body %>
|
35
|
-
<% end %>
|
35
|
+
<%= scope(:content, content: commit.safe_body).call %>
|
36
36
|
</div>
|
37
37
|
</div>
|
38
38
|
|
39
|
-
|
40
|
-
<
|
41
|
-
|
42
|
-
|
43
|
-
<div class="content">
|
44
|
-
<%= commit.notes.html_safe %>
|
45
|
-
</div>
|
39
|
+
<div class="notes">
|
40
|
+
<h2 class="bar">Notes</h2>
|
41
|
+
<div class="content">
|
42
|
+
<%= scope(:content, content: commit.safe_notes).call %>
|
46
43
|
</div>
|
47
|
-
|
44
|
+
</div>
|
48
45
|
|
49
46
|
<div class="info">
|
50
47
|
<h2 class="bar">Info</h2>
|
51
48
|
|
52
49
|
<div class="panel">
|
53
50
|
<h3 class="label">Author</h3>
|
51
|
+
<p class="line"><%= render :user, user: commit.author %></p>
|
54
52
|
|
55
|
-
<
|
56
|
-
|
57
|
-
<%= render :profile, name: commit.author.name, url: commit.profile_url(commit.author) %>
|
58
|
-
</p>
|
59
|
-
|
60
|
-
<% if commit.collaborators.any? %>
|
61
|
-
<h3 class="label">Collaborators</h3>
|
62
|
-
|
63
|
-
<% commit.collaborators.each do |collaborator| %>
|
64
|
-
<p class="line">
|
65
|
-
<%= render :avatar, name: collaborator.name, url: commit.avatar_url(collaborator) %>
|
66
|
-
<%= render :profile, name: collaborator.name, url: commit.profile_url(collaborator) %>
|
67
|
-
</p>
|
68
|
-
<% end %>
|
69
|
-
<% end %>
|
70
|
-
|
71
|
-
<% if commit.signers.any? %>
|
72
|
-
<h3 class="label">Signers</h3>
|
53
|
+
<h3 class="label">Collaborators</h3>
|
54
|
+
<%= scope(:users, users: commit.collaborators).call %>
|
73
55
|
|
74
|
-
|
75
|
-
|
76
|
-
<%= render :avatar, name: signer.name, url: commit.avatar_url(signer) %>
|
77
|
-
<%= render :profile, name: signer.name, url: commit.profile_url(signer) %>
|
78
|
-
</p>
|
79
|
-
<% end %>
|
80
|
-
<% end %>
|
56
|
+
<h3 class="label">Signers</h3>
|
57
|
+
<%= scope(:users, users: commit.signers).call %>
|
81
58
|
|
82
59
|
<h3 class="label">Signature</h3>
|
83
60
|
|
84
|
-
<
|
85
|
-
<span class="signature"><%= commit.
|
86
|
-
</
|
61
|
+
<button class="button line <%= commit.security %>" popovertarget="<%= commit.popover_id %>">
|
62
|
+
<span class="signature"><%= commit.signature_label %></span>
|
63
|
+
</button>
|
64
|
+
|
65
|
+
<dialog id="<%= commit.popover_id %>" class="popover <%= commit.security %>" popover="auto">
|
66
|
+
<h2 class="sublabel">SHA</h2>
|
67
|
+
<pre><%= commit.sha %></pre>
|
87
68
|
|
88
|
-
|
89
|
-
<
|
90
|
-
<p class="line"><%= commit.fingerprint %></p>
|
91
|
-
<% end %>
|
69
|
+
<h2 class="sublabel">Fingerprint</h2>
|
70
|
+
<pre><%= commit.fingerprint %></pre>
|
92
71
|
|
93
|
-
|
94
|
-
<
|
95
|
-
|
96
|
-
|
72
|
+
<h2 class="sublabel">Fingerprint Primary Key</h2>
|
73
|
+
<pre><%= commit.fingerprint_key %></pre>
|
74
|
+
</p>
|
75
|
+
</dialog>
|
97
76
|
|
98
77
|
<h3 class="label">Created</h3>
|
99
78
|
|
@@ -1 +1 @@
|
|
1
|
-
- <%= commit.emoji %> <%= commit.subject %> - <%= render
|
1
|
+
- <%= commit.emoji %> <%= commit.subject %> - <%= render(:profile, user: commit.author).strip %>
|
@@ -1,56 +1,28 @@
|
|
1
1
|
<details>
|
2
2
|
<summary style="display: inline-flex; align-items: center; gap: 0.5rem; flex-wrap: wrap;">
|
3
|
-
|
3
|
+
<img src="https://alchemists.io/images/projects/milestoner/icons/<%= commit.icon %>.png"
|
4
|
+
alt="<%= commit.kind %>"
|
5
|
+
width="24"
|
6
|
+
height="24"
|
7
|
+
loading="lazy">
|
4
8
|
<%= commit.subject %>
|
5
9
|
</summary>
|
6
10
|
|
7
11
|
<h4>Message</h4>
|
12
|
+
<%= scope(:content, content: commit.safe_body).call %>
|
8
13
|
|
9
|
-
|
10
|
-
|
11
|
-
<% else %>
|
12
|
-
<%= commit.safe_body %>
|
13
|
-
<% end %>
|
14
|
-
|
15
|
-
<% unless commit.notes.empty? %>
|
16
|
-
<details>
|
17
|
-
<summary>Notes</summary>
|
18
|
-
<%= commit.notes.html_safe %>
|
19
|
-
</details>
|
20
|
-
<% end %>
|
14
|
+
<h4>Notes</h4>
|
15
|
+
<%= scope(:content, content: commit.safe_notes).call %>
|
21
16
|
|
22
17
|
<h4>Author</h4>
|
23
18
|
|
24
|
-
<
|
25
|
-
<%= render :avatar, name: commit.author.name, url: commit.avatar_url(commit.author) %>
|
26
|
-
<%= render :profile, name: commit.author.name, url: commit.profile_url(commit.author) %>
|
27
|
-
</span>
|
28
|
-
|
29
|
-
<% if commit.collaborators.any? %>
|
30
|
-
<h4>Collaborators</h4>
|
31
|
-
|
32
|
-
<ul>
|
33
|
-
<% commit.collaborators.each do |collaborator| %>
|
34
|
-
<li style="display: inline-flex; align-items: center; gap: 0.5rem;">
|
35
|
-
<%= render :avatar, name: collaborator.name, url: commit.avatar_url(collaborator) %>
|
36
|
-
<%= render :profile, name: collaborator.name, url: commit.profile_url(collaborator) %>
|
37
|
-
</li>
|
38
|
-
<% end %>
|
39
|
-
</ul>
|
40
|
-
<% end %>
|
19
|
+
<p><%= render :user, user: commit.author %></p>
|
41
20
|
|
42
|
-
|
43
|
-
|
21
|
+
<h4>Collaborators</h4>
|
22
|
+
<%= scope(:users, users: commit.collaborators).call %>
|
44
23
|
|
45
|
-
|
46
|
-
|
47
|
-
<li style="display: inline-flex; align-items: center; gap: 0.5rem;">
|
48
|
-
<%= render :avatar, name: signer.name, url: commit.avatar_url(signer) %>
|
49
|
-
<%= render :profile, name: signer.name, url: commit.profile_url(signer) %>
|
50
|
-
</li>
|
51
|
-
<% end %>
|
52
|
-
</ul>
|
53
|
-
<% end %>
|
24
|
+
<h4>Signers</h4>
|
25
|
+
<%= scope(:users, users: commit.signers).call %>
|
54
26
|
|
55
27
|
<h4>Details</h4>
|
56
28
|
|
@@ -0,0 +1 @@
|
|
1
|
+
<%= content %>
|
@@ -0,0 +1 @@
|
|
1
|
+
<%= content %>
|
@@ -0,0 +1 @@
|
|
1
|
+
<p><%= content %></p>
|
@@ -0,0 +1 @@
|
|
1
|
+
image:<%= project_uri_logo %>[Logo,50,50]pass:[ ]
|
@@ -0,0 +1 @@
|
|
1
|
+
<img src="<%= project_uri_logo %>" alt="Logo" width="30" height="30">
|
@@ -0,0 +1 @@
|
|
1
|
+
None.
|
@@ -0,0 +1 @@
|
|
1
|
+
<p class="line">None.</p>
|
@@ -0,0 +1 @@
|
|
1
|
+
<p>None.</p>
|
@@ -1 +1 @@
|
|
1
|
-
|
1
|
+
link:<%= user.profile_url %>[<%= user.name %>]
|
@@ -1 +1 @@
|
|
1
|
-
|
1
|
+
[<%= user.name %>](<%= user.profile_url %>)
|
@@ -0,0 +1,8 @@
|
|
1
|
+
<button class="button insecure" popovertarget="po-tag">
|
2
|
+
<span class="signature"><%= tag.security %></span>
|
3
|
+
</button>
|
4
|
+
|
5
|
+
<div id="po-tag" class="popover insecure" popover="auto">
|
6
|
+
<h1 class="label">Version <%= tag.version %></h1>
|
7
|
+
<p>No signature found.</p>
|
8
|
+
</div>
|
@@ -0,0 +1,13 @@
|
|
1
|
+
<button class="button secure" popovertarget="po-tag">
|
2
|
+
<span class="signature"><%= tag.security %></span>
|
3
|
+
</button>
|
4
|
+
|
5
|
+
<div id="po-tag" class="popover secure" popover="auto">
|
6
|
+
<h1 class="label">Version <%= tag.version %></h1>
|
7
|
+
|
8
|
+
<h2 class="sublabel">SHA</h2>
|
9
|
+
<pre><%= tag.sha %></pre>
|
10
|
+
|
11
|
+
<h2 class="sublabel">Signature</h2>
|
12
|
+
<pre><%= tag.signature %></pre>
|
13
|
+
</div>
|