utopia-project 0.45.1 → 0.46.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 +4 -4
- checksums.yaml.gz.sig +0 -0
- data/bake/utopia/project/agent/context.rb +2 -2
- data/bake/utopia/project.rb +0 -2
- data/context/documentation-guidelines.md +17 -13
- data/lib/utopia/project/base.rb +2 -2
- data/lib/utopia/project/document.rb +3 -3
- data/lib/utopia/project/guide.rb +3 -24
- data/lib/utopia/project/version.rb +1 -1
- data/license.md +0 -1
- data/pages/guides/controller.rb +3 -1
- data/pages/index.xnode +3 -3
- data/pages/reference/controller.rb +1 -1
- data/public/_static/site.css +34 -24
- data/readme.md +15 -6
- data/releases.md +11 -0
- data.tar.gz.sig +0 -0
- metadata +24 -28
- metadata.gz.sig +0 -0
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 4d35291268cc31c4024ff6d4200677f386fa498109864c54bfce893e8f508ece
|
|
4
|
+
data.tar.gz: ec9a466972478651161739435f9f2dba51af0c16c993d2890a58da49e0c4f297
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 5de2b1d9065d36afda1ed73a20921cb634eb8046c72c317ad3c814421424599dcf3ebc1fd06dd68d92d9b79b1c36c427036c915cb6dbaa0c8743ea3680ba86e0
|
|
7
|
+
data.tar.gz: 718c11d9f1d680fdfa56a22ff1a3a56cd1631ce457b33b45b7ef718675d100b85df393f8c6eb547d9d4f1d0f6c2947bb21ec972d641db84348d3e317048572cf
|
checksums.yaml.gz.sig
CHANGED
|
Binary file
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
3
|
# Released under the MIT License.
|
|
4
|
-
# Copyright, 2025, by Samuel Williams.
|
|
4
|
+
# Copyright, 2025-2026, by Samuel Williams.
|
|
5
5
|
|
|
6
6
|
def initialize(...)
|
|
7
7
|
super
|
|
@@ -24,7 +24,7 @@ def update
|
|
|
24
24
|
files << {
|
|
25
25
|
"path" => guide.name + ".md",
|
|
26
26
|
"title" => guide.title,
|
|
27
|
-
"description" => guide.description
|
|
27
|
+
"description" => guide.description&.to_markdown&.chomp || "",
|
|
28
28
|
}
|
|
29
29
|
end
|
|
30
30
|
|
data/bake/utopia/project.rb
CHANGED
|
@@ -121,8 +121,6 @@ def description(root: context.root)
|
|
|
121
121
|
child = document.first_child
|
|
122
122
|
|
|
123
123
|
if child&.type == :header
|
|
124
|
-
title = child.first_child.string_content
|
|
125
|
-
|
|
126
124
|
# First sentence
|
|
127
125
|
if introduction = child.next
|
|
128
126
|
$stdout.puts introduction.to_plaintext[/.*?\./]
|
|
@@ -123,11 +123,8 @@ When documenting advanced features, follow this structure:
|
|
|
123
123
|
2. **Use Case Examples**: Provide concrete scenarios:
|
|
124
124
|
- Business logic examples (user accounts, inventory, etc.)
|
|
125
125
|
- Technical scenarios (performance, reliability, etc.)
|
|
126
|
-
- Anti-patterns to avoid
|
|
127
126
|
|
|
128
127
|
3. **Implementation**: Show practical code examples
|
|
129
|
-
4. **Best Practices**: When to use vs when not to use
|
|
130
|
-
5. **Common Pitfalls**: What to watch out for
|
|
131
128
|
|
|
132
129
|
#### Template
|
|
133
130
|
|
|
@@ -142,14 +139,6 @@ Use [feature] when you need:
|
|
|
142
139
|
- **[Third use case]**: [Brief explanation]
|
|
143
140
|
|
|
144
141
|
[Implementation examples with practical scenarios]
|
|
145
|
-
|
|
146
|
-
### Best Practices
|
|
147
|
-
|
|
148
|
-
[When to use this feature vs alternatives]
|
|
149
|
-
|
|
150
|
-
### Common Pitfalls
|
|
151
|
-
|
|
152
|
-
[What to avoid and why]
|
|
153
142
|
```
|
|
154
143
|
|
|
155
144
|
#### "Getting Started" Guide
|
|
@@ -233,6 +222,22 @@ Help users understand when to choose between alternatives:
|
|
|
233
222
|
|
|
234
223
|
## Code Examples in Guides
|
|
235
224
|
|
|
225
|
+
### Inline Code
|
|
226
|
+
|
|
227
|
+
Use backticks for inline code. Markly supports a language prefix immediately before the opening backtick, with no space after the colon: `` ruby:`Object.new` ``.
|
|
228
|
+
|
|
229
|
+
```markdown
|
|
230
|
+
Use ruby:`Object.new` to create an object.
|
|
231
|
+
```
|
|
232
|
+
|
|
233
|
+
This renders as:
|
|
234
|
+
|
|
235
|
+
Use ruby:`Object.new` to create an object.
|
|
236
|
+
|
|
237
|
+
The language prefix enables syntax highlighting. When the code matches a definition in your project's documentation, `utopia-project` also links it to that definition. For example, `` ruby:`MyProject::MyClass` `` can link to the class documentation.
|
|
238
|
+
|
|
239
|
+
Use plain backticks for text that does not need a language, such as file paths and command names: `config/serve.rb` or `bundle`.
|
|
240
|
+
|
|
236
241
|
### Contextual Examples
|
|
237
242
|
|
|
238
243
|
Every code example should demonstrate a realistic scenario, not abstract operations:
|
|
@@ -283,7 +288,7 @@ Following `utopia-project` guidelines, each guide should:
|
|
|
283
288
|
1. **Start with clear purpose**: "This guide explains how to use X to solve Y problem"
|
|
284
289
|
2. **Provide user context**: Explain why users would need this feature
|
|
285
290
|
3. **Include practical examples**: Working code samples that demonstrate real scenarios
|
|
286
|
-
4. **Follow consistent structure**: Problem → Use Cases → Implementation
|
|
291
|
+
4. **Follow consistent structure**: Problem → Use Cases → Implementation
|
|
287
292
|
5. **Cross-reference appropriately**: Use ruby:`ClassName` for internal references
|
|
288
293
|
6. **Include error handling**: Show how to handle common failure scenarios
|
|
289
294
|
7. **Provide troubleshooting**: Common issues and solutions
|
|
@@ -296,5 +301,4 @@ Before publishing a guide section, verify:
|
|
|
296
301
|
- [ ] Provides concrete use cases.
|
|
297
302
|
- [ ] Shows realistic code examples.
|
|
298
303
|
- [ ] Includes proper error handling.
|
|
299
|
-
- [ ] Mentions when NOT to use the feature.
|
|
300
304
|
- [ ] References related concepts appropriately.
|
data/lib/utopia/project/base.rb
CHANGED
|
@@ -107,12 +107,12 @@ module Utopia
|
|
|
107
107
|
# @parameter definition [Decode::Definition] The definition to load documentation for.
|
|
108
108
|
# @returns [Document | Nil] The supplemental document, if it exists.
|
|
109
109
|
def document_for(definition)
|
|
110
|
-
document_path = File.join("lib", definition.lexical_path.map{|_| _.to_s.downcase}) + ".md"
|
|
110
|
+
document_path = File.join(@root, "lib", definition.lexical_path.map{|_| _.to_s.downcase}) + ".md"
|
|
111
111
|
|
|
112
112
|
if File.exist?(document_path)
|
|
113
113
|
document = self.document(File.read(document_path), definition)
|
|
114
114
|
|
|
115
|
-
if document.first_child
|
|
115
|
+
if document.first_child&.type == :header
|
|
116
116
|
document.first_child.delete
|
|
117
117
|
end
|
|
118
118
|
|
|
@@ -33,12 +33,12 @@ module Utopia
|
|
|
33
33
|
end
|
|
34
34
|
|
|
35
35
|
# Extract the leading heading as the document title.
|
|
36
|
-
# @returns [String | Nil] The title, if the document starts with a heading.
|
|
36
|
+
# @returns [String | Nil] The title, if the document starts with a non-empty heading.
|
|
37
37
|
def title
|
|
38
38
|
child = self.root.first_child
|
|
39
39
|
|
|
40
40
|
if child && child.type == :header
|
|
41
|
-
return child.first_child
|
|
41
|
+
return child.first_child&.to_plaintext
|
|
42
42
|
end
|
|
43
43
|
end
|
|
44
44
|
|
|
@@ -61,7 +61,7 @@ module Utopia
|
|
|
61
61
|
header = child
|
|
62
62
|
|
|
63
63
|
# We found the matched header:
|
|
64
|
-
if header.first_child
|
|
64
|
+
if header.first_child&.to_plaintext&.include?(name)
|
|
65
65
|
# Now subsequent children:
|
|
66
66
|
current = header.next
|
|
67
67
|
|
data/lib/utopia/project/guide.rb
CHANGED
|
@@ -44,32 +44,11 @@ module Utopia
|
|
|
44
44
|
metadata[:order]
|
|
45
45
|
end
|
|
46
46
|
|
|
47
|
-
# Compare guides by
|
|
47
|
+
# Compare guides by order (defaulting to zero) and then by name.
|
|
48
48
|
# @parameter other [Guide] The other guide to compare.
|
|
49
49
|
# @returns [Integer] The comparison result.
|
|
50
50
|
def <=> other
|
|
51
|
-
|
|
52
|
-
if other_order = other.order
|
|
53
|
-
if order < other_order
|
|
54
|
-
return -1
|
|
55
|
-
elsif order > other_order
|
|
56
|
-
return 1
|
|
57
|
-
end
|
|
58
|
-
else
|
|
59
|
-
# If we have order, but the other doesn't, we come first:
|
|
60
|
-
return -1
|
|
61
|
-
end
|
|
62
|
-
end
|
|
63
|
-
|
|
64
|
-
if name = self.name
|
|
65
|
-
if other_name = other.name
|
|
66
|
-
return name <=> other_name
|
|
67
|
-
else
|
|
68
|
-
return -1
|
|
69
|
-
end
|
|
70
|
-
end
|
|
71
|
-
|
|
72
|
-
return 0
|
|
51
|
+
[self.order || 0, self.name] <=> [other.order || 0, other.name]
|
|
73
52
|
end
|
|
74
53
|
|
|
75
54
|
README = "readme.md"
|
|
@@ -93,7 +72,7 @@ module Utopia
|
|
|
93
72
|
child = document.first_child
|
|
94
73
|
|
|
95
74
|
if child&.type == :header
|
|
96
|
-
@title = child.first_child
|
|
75
|
+
@title = child.first_child&.string_content
|
|
97
76
|
|
|
98
77
|
@description = child.next
|
|
99
78
|
child.delete
|
data/license.md
CHANGED
data/pages/guides/controller.rb
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
3
|
# Released under the MIT License.
|
|
4
|
-
# Copyright, 2020-
|
|
4
|
+
# Copyright, 2020-2026, by Samuel Williams.
|
|
5
5
|
|
|
6
6
|
prepend Actions
|
|
7
7
|
|
|
@@ -12,5 +12,7 @@ on "**/*/index" do |request, path|
|
|
|
12
12
|
guide.name == name
|
|
13
13
|
end
|
|
14
14
|
|
|
15
|
+
respond! Utopia::Response[404] unless @guide
|
|
16
|
+
|
|
15
17
|
path.components = ["show"]
|
|
16
18
|
end
|
data/pages/index.xnode
CHANGED
|
@@ -3,12 +3,12 @@
|
|
|
3
3
|
if document = self[:document]
|
|
4
4
|
child = document.first_child
|
|
5
5
|
|
|
6
|
-
if child
|
|
6
|
+
if child&.type == :header
|
|
7
7
|
header = child
|
|
8
8
|
child.delete
|
|
9
9
|
title = header.first_child
|
|
10
10
|
|
|
11
|
-
case title
|
|
11
|
+
case title&.type
|
|
12
12
|
when :text
|
|
13
13
|
?><content:heading>#{title.string_content}</content:heading><?r
|
|
14
14
|
when :image
|
|
@@ -35,4 +35,4 @@
|
|
|
35
35
|
<?r
|
|
36
36
|
end
|
|
37
37
|
?>
|
|
38
|
-
</content:page>
|
|
38
|
+
</content:page>
|
data/public/_static/site.css
CHANGED
|
@@ -30,7 +30,7 @@ html {
|
|
|
30
30
|
}
|
|
31
31
|
|
|
32
32
|
p code {
|
|
33
|
-
padding: 0 0.
|
|
33
|
+
padding: 0 0.2em;
|
|
34
34
|
}
|
|
35
35
|
|
|
36
36
|
p code:first-child, p code:last-child {
|
|
@@ -145,8 +145,8 @@ header .header-actions {
|
|
|
145
145
|
header .sections a {
|
|
146
146
|
text-decoration: none;
|
|
147
147
|
color: var(--main-color);
|
|
148
|
-
padding: 0.
|
|
149
|
-
border-radius: 0.
|
|
148
|
+
padding: 0.25em 0.5em;
|
|
149
|
+
border-radius: 0.25em;
|
|
150
150
|
white-space: nowrap;
|
|
151
151
|
}
|
|
152
152
|
|
|
@@ -220,8 +220,8 @@ header .sections a:focus-visible,
|
|
|
220
220
|
display: flex;
|
|
221
221
|
align-items: center;
|
|
222
222
|
flex-wrap: nowrap;
|
|
223
|
-
gap: 0.
|
|
224
|
-
padding: 0.
|
|
223
|
+
gap: 0.125em;
|
|
224
|
+
padding: 0.25em 0.5em;
|
|
225
225
|
border-bottom: 1px solid var(--underlay-color);
|
|
226
226
|
font-size: 0.9em;
|
|
227
227
|
overflow-x: auto;
|
|
@@ -232,8 +232,8 @@ header .sections a:focus-visible,
|
|
|
232
232
|
.subnav a {
|
|
233
233
|
text-decoration: none;
|
|
234
234
|
color: var(--main-color);
|
|
235
|
-
padding: 0.
|
|
236
|
-
border-radius: 0.
|
|
235
|
+
padding: 0.15em 0.5em;
|
|
236
|
+
border-radius: 0.25em;
|
|
237
237
|
white-space: nowrap;
|
|
238
238
|
}
|
|
239
239
|
|
|
@@ -248,8 +248,8 @@ header .sections a:focus-visible,
|
|
|
248
248
|
|
|
249
249
|
.subnav.breadcrumb a + a::before {
|
|
250
250
|
content: "::";
|
|
251
|
-
margin-left: -0.
|
|
252
|
-
margin-right: 0.
|
|
251
|
+
margin-left: -0.5em;
|
|
252
|
+
margin-right: 0.5em;
|
|
253
253
|
opacity: 0.4;
|
|
254
254
|
}
|
|
255
255
|
|
|
@@ -347,13 +347,13 @@ main {
|
|
|
347
347
|
}
|
|
348
348
|
|
|
349
349
|
.sidebar nav a {
|
|
350
|
-
padding: 0.
|
|
350
|
+
padding: 0.4em 0.75em;
|
|
351
351
|
font-size: 0.9rem;
|
|
352
352
|
border-left: 3px solid transparent;
|
|
353
353
|
color: var(--main-color);
|
|
354
354
|
text-decoration: none;
|
|
355
355
|
display: block;
|
|
356
|
-
border-radius: 0.
|
|
356
|
+
border-radius: 0.25em;
|
|
357
357
|
transition: background-color 0.15s, border-color 0.15s, color 0.15s;
|
|
358
358
|
}
|
|
359
359
|
|
|
@@ -510,7 +510,7 @@ pre {
|
|
|
510
510
|
details {
|
|
511
511
|
margin: 1rem;
|
|
512
512
|
border: 1px solid #aaa;
|
|
513
|
-
border-radius: 0.
|
|
513
|
+
border-radius: 0.5em;
|
|
514
514
|
|
|
515
515
|
padding: .5em .5em 0;
|
|
516
516
|
}
|
|
@@ -522,18 +522,17 @@ summary > * {
|
|
|
522
522
|
|
|
523
523
|
summary {
|
|
524
524
|
font-weight: bold;
|
|
525
|
-
margin: -.
|
|
526
|
-
padding: .
|
|
525
|
+
margin: -.5em -.5em 0;
|
|
526
|
+
padding: .5em;
|
|
527
527
|
cursor: pointer;
|
|
528
528
|
}
|
|
529
529
|
|
|
530
530
|
details[open] {
|
|
531
|
-
padding: .
|
|
531
|
+
padding: .5em;
|
|
532
532
|
}
|
|
533
533
|
|
|
534
534
|
details[open] summary {
|
|
535
535
|
border-bottom: 1px solid #aaa;
|
|
536
|
-
/* margin-bottom: .5rem; */
|
|
537
536
|
}
|
|
538
537
|
|
|
539
538
|
figure {
|
|
@@ -557,6 +556,9 @@ figure.youtube-wrapper iframe {
|
|
|
557
556
|
}
|
|
558
557
|
|
|
559
558
|
table {
|
|
559
|
+
display: block;
|
|
560
|
+
overflow-x: auto;
|
|
561
|
+
|
|
560
562
|
width: 100%;
|
|
561
563
|
margin: 1rem;
|
|
562
564
|
|
|
@@ -564,6 +566,14 @@ table {
|
|
|
564
566
|
width: calc(100% - 2rem);
|
|
565
567
|
}
|
|
566
568
|
|
|
569
|
+
table th, table td {
|
|
570
|
+
padding: 0.1em 0.4em;
|
|
571
|
+
}
|
|
572
|
+
|
|
573
|
+
table th:nth-child(even), table td:nth-child(even) {
|
|
574
|
+
background-color: color-mix(in srgb, var(--main-color) 2%, transparent);
|
|
575
|
+
}
|
|
576
|
+
|
|
567
577
|
table thead {
|
|
568
578
|
background-color: var(--header-color);
|
|
569
579
|
border-bottom: 0.2rem solid var(--accent-color);
|
|
@@ -591,13 +601,13 @@ ul.pragmas li {
|
|
|
591
601
|
border-radius: 0.5em;
|
|
592
602
|
|
|
593
603
|
box-shadow: 0 0 2px #eee;
|
|
594
|
-
padding: 0.
|
|
604
|
+
padding: 0.1em 0.2em;
|
|
595
605
|
|
|
596
606
|
display: inline-block;
|
|
597
607
|
}
|
|
598
608
|
|
|
599
609
|
ul.pragmas li + li {
|
|
600
|
-
margin-left: 0.
|
|
610
|
+
margin-left: 0.5em;
|
|
601
611
|
}
|
|
602
612
|
|
|
603
613
|
ul.pragmas li.public {
|
|
@@ -671,8 +681,8 @@ ul.pragmas li.asynchronous {
|
|
|
671
681
|
color: var(--main-color);
|
|
672
682
|
text-decoration: none;
|
|
673
683
|
display: block;
|
|
674
|
-
padding: 0.
|
|
675
|
-
border-radius: 0.
|
|
684
|
+
padding: 0.25em 0.5em;
|
|
685
|
+
border-radius: 0.25em;
|
|
676
686
|
transition: background-color 0.15s, border-color 0.15s, color 0.15s;
|
|
677
687
|
}
|
|
678
688
|
|
|
@@ -730,13 +740,13 @@ ul.pragmas li.asynchronous {
|
|
|
730
740
|
|
|
731
741
|
.sidebar nav a,
|
|
732
742
|
.sidebar details nav a {
|
|
733
|
-
padding: 0.
|
|
743
|
+
padding: 0.4em 0.75em;
|
|
734
744
|
font-size: 0.9rem;
|
|
735
745
|
border-left: 3px solid transparent;
|
|
736
746
|
color: var(--main-color);
|
|
737
747
|
text-decoration: none;
|
|
738
748
|
display: block;
|
|
739
|
-
border-radius: 0.
|
|
749
|
+
border-radius: 0.25em;
|
|
740
750
|
transition: all 0.2s ease;
|
|
741
751
|
}
|
|
742
752
|
|
|
@@ -746,7 +756,7 @@ ul.pragmas li.asynchronous {
|
|
|
746
756
|
}
|
|
747
757
|
|
|
748
758
|
.sidebar nav.compact a {
|
|
749
|
-
padding: 0.
|
|
759
|
+
padding: 0.25em 0.5em;
|
|
750
760
|
font-size: 0.85rem;
|
|
751
761
|
line-height: 1.3;
|
|
752
762
|
}
|
|
@@ -787,7 +797,7 @@ ul.pragmas li.asynchronous {
|
|
|
787
797
|
.sidebar nav a:focus-visible {
|
|
788
798
|
outline: 2px solid var(--accent-color);
|
|
789
799
|
outline-offset: 2px;
|
|
790
|
-
border-radius: 0.
|
|
800
|
+
border-radius: 0.25em;
|
|
791
801
|
}
|
|
792
802
|
|
|
793
803
|
/* Brief click feedback */
|
data/readme.md
CHANGED
|
@@ -33,6 +33,17 @@ Please see the [project documentation](https://socketry.github.io/utopia-project
|
|
|
33
33
|
|
|
34
34
|
Please see the [project releases](https://socketry.github.io/utopia-project/releases/index) for all releases.
|
|
35
35
|
|
|
36
|
+
### v0.46.0
|
|
37
|
+
|
|
38
|
+
- Manage releases through GitHub pull requests and publish signed gems with RubyGems Trusted Publishing and attestations.
|
|
39
|
+
- Sort guides by order (defaulting to zero), then name.
|
|
40
|
+
- Fix supplemental documentation paths and missing guide/reference responses.
|
|
41
|
+
- Handle empty READMEs and guides without descriptions when rendering pages and generating agent context.
|
|
42
|
+
- Treat empty Markdown headings as missing titles and preserve the following content when rendering pages or updating documentation.
|
|
43
|
+
- Cover all Ruby, task, and rendered template lines, and exercise the generated site in Chromium at mobile and desktop widths in light and dark mode.
|
|
44
|
+
- Add padding to documentation table cells and allow tables to scroll whenever they exceed the available width.
|
|
45
|
+
- Scale table, inline code, badge, navigation link, and disclosure spacing with the local font size.
|
|
46
|
+
|
|
36
47
|
### v0.45.0
|
|
37
48
|
|
|
38
49
|
- [Web Packages](https://socketry.github.io/utopia-project/releases/index#web-packages)
|
|
@@ -72,10 +83,6 @@ Please see the [project releases](https://socketry.github.io/utopia-project/rele
|
|
|
72
83
|
|
|
73
84
|
- Fix schema for `index.yaml` context file.
|
|
74
85
|
|
|
75
|
-
### v0.34.0
|
|
76
|
-
|
|
77
|
-
- Introduce `bake utopia:project:agent:context:update` command to update the agent context from the guides in the project.
|
|
78
|
-
|
|
79
86
|
## See Also
|
|
80
87
|
|
|
81
88
|
- [Utopia](https://github.com/socketry/utopia) — The website framework which powers this web application.
|
|
@@ -101,12 +108,14 @@ $ bundle exec sus
|
|
|
101
108
|
|
|
102
109
|
### Making Releases
|
|
103
110
|
|
|
104
|
-
To
|
|
111
|
+
To prepare a release pull request:
|
|
105
112
|
|
|
106
113
|
``` bash
|
|
107
|
-
$ bundle exec bake gem:release:patch # or minor or major
|
|
114
|
+
$ bundle exec bake gem:github:release:patch # or minor or major
|
|
108
115
|
```
|
|
109
116
|
|
|
117
|
+
See [bake-gem-github](https://github.com/socketry/bake-gem-github) for setup and publishing details.
|
|
118
|
+
|
|
110
119
|
### Developer Certificate of Origin
|
|
111
120
|
|
|
112
121
|
In order to protect users of this project, we require all contributors to comply with the [Developer Certificate of Origin](https://developercertificate.org/). This ensures that all contributions are properly licensed and attributed.
|
data/releases.md
CHANGED
|
@@ -1,5 +1,16 @@
|
|
|
1
1
|
# Changes
|
|
2
2
|
|
|
3
|
+
## v0.46.0
|
|
4
|
+
|
|
5
|
+
- Manage releases through GitHub pull requests and publish signed gems with RubyGems Trusted Publishing and attestations.
|
|
6
|
+
- Sort guides by order (defaulting to zero), then name.
|
|
7
|
+
- Fix supplemental documentation paths and missing guide/reference responses.
|
|
8
|
+
- Handle empty READMEs and guides without descriptions when rendering pages and generating agent context.
|
|
9
|
+
- Treat empty Markdown headings as missing titles and preserve the following content when rendering pages or updating documentation.
|
|
10
|
+
- Cover all Ruby, task, and rendered template lines, and exercise the generated site in Chromium at mobile and desktop widths in light and dark mode.
|
|
11
|
+
- Add padding to documentation table cells and allow tables to scroll whenever they exceed the available width.
|
|
12
|
+
- Scale table, inline code, badge, navigation link, and disclosure spacing with the local font size.
|
|
13
|
+
|
|
3
14
|
## v0.45.0
|
|
4
15
|
|
|
5
16
|
### Web Packages
|
data.tar.gz.sig
CHANGED
|
Binary file
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: utopia-project
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.
|
|
4
|
+
version: 0.46.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Samuel Williams
|
|
@@ -12,32 +12,28 @@ bindir: bin
|
|
|
12
12
|
cert_chain:
|
|
13
13
|
- |
|
|
14
14
|
-----BEGIN CERTIFICATE-----
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
JkxfQWC+jBVeG9ZtPhQgZpfhvh+6hMhraUYRQ6XGyvBqEUe+yo6DKIT3MtGE2+CP
|
|
38
|
-
eX9i9ZWBydWb8/rvmwmX2kkcBbX0hZS1rcR593hGc61JR6lvkGYQ2MYskBveyaxt
|
|
39
|
-
Q2K9NVun/S785AP05vKkXZEFYxqG6EW012U4oLcFl5MySFajYXRYbuUpH6AY+HP8
|
|
40
|
-
voD0MPg1DssDLKwXyt1eKD/+Fq0bFWhwVM/1XiAXL7lyYUyOq24KHgQ2Csg=
|
|
15
|
+
MIIEFDCCAnygAwIBAgIBATANBgkqhkiG9w0BAQsFADAwMREwDwYDVQQKDAhTb2Nr
|
|
16
|
+
ZXRyeTEbMBkGA1UEAwwSU29ja2V0cnkgUnVieSBHZW1zMB4XDTI2MDkyMTA3NTgx
|
|
17
|
+
NFoXDTI3MDkyMTA3NTgxNFowMDERMA8GA1UECgwIU29ja2V0cnkxGzAZBgNVBAMM
|
|
18
|
+
ElNvY2tldHJ5IFJ1YnkgR2VtczCCAaIwDQYJKoZIhvcNAQEBBQADggGPADCCAYoC
|
|
19
|
+
ggGBAM/QgjVgDzDo/xJEQoFvAzcVFP7msnswkhPJB2UDsbxXCZmers5jV512TM5s
|
|
20
|
+
NwLHfzJiC4DcI5ax9ZYKM9Q+dS21YYagNqjtg3YPyDqR6phoibEA0VoMuInUQW68
|
|
21
|
+
i5OkCJzYKGD2pYYVZnuFNqyM2ECUvXh/fBmvPoHbncAHhWPaCBH8mQJ8sRNc6+RV
|
|
22
|
+
SoZZu1Yo/aW1zQ+SpZwad7s1ZmigfDNHKhJ22KwZHk+/5Zw1QXVfcajjswV0Mm2P
|
|
23
|
+
irgjKN3fyNVkwlly63EBlR4VydT+g9QtJtqh7ee0ThhI+v4wYovf4dbLNcEBTHu1
|
|
24
|
+
x1pGbXGx/2fBAST5eVwaXIx1V8VU22AJcBk1H2o5/1F0HfbD2HQjmFOA112KUwBW
|
|
25
|
+
9TtspZD3g6rCQFX53XvL9h6j2y1ukl7s5AdEzOe/x6r1MO8tSDtgcYoF89wgF/88
|
|
26
|
+
Q/Eski0FckQ+znfESZcFcpzs2sPDoYW6SNVX4tZcNty85Y6WBHfHKio14x63PeyC
|
|
27
|
+
CG1gMwIDAQABozkwNzAJBgNVHRMEAjAAMAsGA1UdDwQEAwIEsDAdBgNVHQ4EFgQU
|
|
28
|
+
SuMc0x24Xshtaa8SQVkBr2Z5WzIwDQYJKoZIhvcNAQELBQADggGBABI62ey5lDWm
|
|
29
|
+
j8jsTQaNBMBb7LbKS3XkBwyL1UNGEwlicp399rJDeuNgVSHqBCZ/nE4yleNjgW9Y
|
|
30
|
+
N6DKdxXCvXmFUoHvUINeAvThHxmlEGhSfXl1x55xHEig0rEP4jgdjnYdQI4fqeOM
|
|
31
|
+
zIDN0F3ruArke4Y62SQgWVN7vspdAA41hBIRl1vsvs0KWG8DIVQ8cmR+TG6zjOmK
|
|
32
|
+
iUiUZGNPnStV1O1xW83c+Ba4Am0krP6/forxDPhRvTehqkVYvMdPfYcICNb5IM58
|
|
33
|
+
5vaYvuj5AtfZuZWN0F/0KtSphhNC17rh6h8QmuYdMJ1clvlrkiEaO1UjPVwjgtxC
|
|
34
|
+
x/ARh5X6q0/YTXl4r7EfSJEeqW7qhgu9EUj3mGIPHYdX0Dqih/NgK20F3GvQtTfB
|
|
35
|
+
7sse0duKBHXONYVwKAsceUVvqtCfyF608bCilCkbhw3QaInRj+BkRQKJ5Tuj2PZR
|
|
36
|
+
76a/hwaV2wWn5RtAFBaUQzQdo/xTqJ7IkwaFjOZe/QyvyoRjCK9Rdg==
|
|
41
37
|
-----END CERTIFICATE-----
|
|
42
38
|
date: 1980-01-02 00:00:00.000000000 Z
|
|
43
39
|
dependencies:
|
|
@@ -430,7 +426,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
430
426
|
- !ruby/object:Gem::Version
|
|
431
427
|
version: '0'
|
|
432
428
|
requirements: []
|
|
433
|
-
rubygems_version: 4.0.
|
|
429
|
+
rubygems_version: 4.0.21
|
|
434
430
|
specification_version: 4
|
|
435
431
|
summary: A project documentation tool based on Utopia.
|
|
436
432
|
test_files: []
|
metadata.gz.sig
CHANGED
|
Binary file
|