Skip to content

Commit 2ab2df9

Browse files
committed
feat: Add Go 1.27 release overview and automated rendering.
1 parent 18740f1 commit 2ab2df9

11 files changed

Lines changed: 828 additions & 0 deletions

File tree

Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
name: Render release-note slides
2+
3+
on:
4+
pull_request:
5+
paths:
6+
- "go*/overview*.html"
7+
- "go*/slide.*"
8+
- "scripts/render-slides.mjs"
9+
- "package.json"
10+
- "package-lock.json"
11+
- ".github/workflows/render-slides.yml"
12+
push:
13+
branches:
14+
- main
15+
paths:
16+
- "go*/overview*.html"
17+
- "go*/slide.*"
18+
- "scripts/render-slides.mjs"
19+
- "package.json"
20+
- "package-lock.json"
21+
- ".github/workflows/render-slides.yml"
22+
23+
permissions:
24+
contents: read
25+
26+
jobs:
27+
render:
28+
runs-on: ubuntu-latest
29+
timeout-minutes: 10
30+
steps:
31+
- name: Check out repository
32+
uses: actions/checkout@v4
33+
34+
- name: Set up Node.js
35+
uses: actions/setup-node@v4
36+
with:
37+
node-version: 24
38+
cache: npm
39+
40+
- name: Install dependencies
41+
run: npm ci
42+
43+
- name: Install Chromium
44+
run: npx playwright install --with-deps chromium
45+
46+
- name: Render and validate slides
47+
run: npm run render
48+
49+
- name: Verify committed PNG files
50+
run: git diff --exit-code -- go1.27/overview.png go1.27/overview-ko.png
51+
52+
- name: Upload rendered slides
53+
uses: actions/upload-artifact@v4
54+
with:
55+
name: go1.27-slides
56+
path: |
57+
go1.27/overview.png
58+
go1.27/overview-ko.png
59+
if-no-files-found: error

.gitignore

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,3 +23,6 @@ go.work.sum
2323

2424
# env file
2525
.env
26+
27+
# Node.js dependencies
28+
node_modules/

go1.27/overview-ko.html

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
<!DOCTYPE html>
2+
<html lang="ko">
3+
<head>
4+
<meta charset="UTF-8" />
5+
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
6+
<meta
7+
name="description"
8+
content="Go 1.27의 주요 변경사항을 소개하는 홍보용 개요입니다."
9+
/>
10+
<title>Go 1.27 주요 변경사항</title>
11+
<link rel="stylesheet" href="./slide.css" />
12+
</head>
13+
<body>
14+
<main class="slide" aria-label="Go 1.27 릴리스 개요">
15+
<div class="specs-grid" data-slide-grid></div>
16+
</main>
17+
<script src="./slide.js"></script>
18+
</body>
19+
</html>

go1.27/overview-ko.png

199 KB
Loading

go1.27/overview.html

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
<!DOCTYPE html>
2+
<html lang="en">
3+
<head>
4+
<meta charset="UTF-8" />
5+
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
6+
<meta
7+
name="description"
8+
content="A promotional overview of the headline changes in Go 1.27."
9+
/>
10+
<title>Go 1.27 Overview</title>
11+
<link rel="stylesheet" href="./slide.css" />
12+
</head>
13+
<body>
14+
<main class="slide" aria-label="Go 1.27 release overview">
15+
<div class="specs-grid" data-slide-grid></div>
16+
</main>
17+
<script src="./slide.js"></script>
18+
</body>
19+
</html>

go1.27/overview.png

177 KB
Loading

go1.27/slide.css

Lines changed: 198 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,198 @@
1+
@import url("../node_modules/pretendard/dist/web/variable/pretendardvariable.css");
2+
3+
:root {
4+
color-scheme: light;
5+
font-family: "Pretendard Variable", Pretendard, -apple-system, BlinkMacSystemFont,
6+
"Segoe UI", sans-serif;
7+
background: #f5f5f7;
8+
color: #1d1d1f;
9+
}
10+
11+
* {
12+
box-sizing: border-box;
13+
margin: 0;
14+
padding: 0;
15+
}
16+
17+
body {
18+
min-width: 320px;
19+
min-height: 100vh;
20+
padding: 24px;
21+
background: #dfe8ec;
22+
}
23+
24+
.slide {
25+
width: 100%;
26+
max-width: 1152px;
27+
margin: 0 auto;
28+
}
29+
30+
.specs-grid {
31+
display: grid;
32+
grid-template-columns: repeat(4, minmax(0, 1fr));
33+
grid-auto-rows: 178px;
34+
gap: 18px;
35+
}
36+
37+
.spec-card {
38+
min-width: 0;
39+
padding: 22px;
40+
overflow: hidden;
41+
position: relative;
42+
isolation: isolate;
43+
border: 1px solid rgba(255, 255, 255, 0.84);
44+
border-radius: 22px;
45+
background: rgba(255, 255, 255, 0.58);
46+
box-shadow:
47+
0 14px 34px rgba(28, 45, 56, 0.12),
48+
inset 0 1px 0 rgba(255, 255, 255, 0.94),
49+
inset 1px 0 0 rgba(255, 255, 255, 0.5),
50+
inset 0 -1px 0 rgba(255, 255, 255, 0.3);
51+
-webkit-backdrop-filter: blur(18px) saturate(150%) brightness(1.04);
52+
backdrop-filter: blur(18px) saturate(150%) brightness(1.04);
53+
display: flex;
54+
flex-direction: column;
55+
justify-content: center;
56+
}
57+
58+
.spec-card::after {
59+
content: "";
60+
position: absolute;
61+
z-index: -1;
62+
inset: 1px;
63+
pointer-events: none;
64+
border: 1px solid rgba(255, 255, 255, 0.32);
65+
border-radius: 20px;
66+
box-shadow:
67+
inset 0 2px 1px rgba(255, 255, 255, 0.45),
68+
inset 0 -2px 1px rgba(70, 100, 116, 0.06);
69+
}
70+
71+
.spec-card.wide {
72+
grid-column: span 2;
73+
padding-inline: 28px;
74+
}
75+
76+
.spec-card.featured {
77+
border-color: rgba(222, 249, 255, 0.94);
78+
background: rgba(224, 247, 255, 0.68);
79+
}
80+
81+
.eyebrow {
82+
margin-bottom: 9px;
83+
color: #0077a8;
84+
font-size: 11px;
85+
font-weight: 750;
86+
letter-spacing: 0.09em;
87+
line-height: 1;
88+
text-transform: uppercase;
89+
}
90+
91+
.title {
92+
color: #1d1d1f;
93+
font-size: 20px;
94+
font-weight: 720;
95+
letter-spacing: -0.025em;
96+
line-height: 1.16;
97+
}
98+
99+
.wide .title {
100+
font-size: 27px;
101+
}
102+
103+
.subtitle {
104+
margin-top: 9px;
105+
color: #6e6e73;
106+
font-size: 15px;
107+
font-weight: 470;
108+
letter-spacing: -0.012em;
109+
line-height: 1.43;
110+
text-wrap: pretty;
111+
}
112+
113+
html:lang(ko) .title,
114+
html:lang(ko) .subtitle {
115+
word-break: keep-all;
116+
overflow-wrap: break-word;
117+
}
118+
119+
.subtitle code {
120+
color: #424245;
121+
font: inherit;
122+
font-weight: 650;
123+
}
124+
125+
.spec-card.center {
126+
grid-column: span 2;
127+
align-items: center;
128+
justify-content: center;
129+
padding: 28px;
130+
border-color: rgba(255, 255, 255, 0.28);
131+
background: rgba(22, 35, 43, 0.86);
132+
box-shadow:
133+
0 16px 38px rgba(18, 30, 38, 0.24),
134+
inset 0 1px 0 rgba(255, 255, 255, 0.28),
135+
inset 0 -1px 0 rgba(255, 255, 255, 0.08);
136+
text-align: center;
137+
}
138+
139+
.go-text {
140+
color: #ffffff;
141+
font-size: 44px;
142+
font-weight: 760;
143+
letter-spacing: -0.04em;
144+
line-height: 1;
145+
}
146+
147+
.release-text {
148+
margin-top: 11px;
149+
color: #64d2ff;
150+
font-size: 26px;
151+
font-weight: 680;
152+
letter-spacing: -0.025em;
153+
line-height: 1.1;
154+
}
155+
156+
@media (max-width: 900px) {
157+
body {
158+
padding: 18px;
159+
}
160+
161+
.specs-grid {
162+
grid-template-columns: repeat(2, minmax(0, 1fr));
163+
grid-auto-rows: minmax(178px, auto);
164+
gap: 14px;
165+
}
166+
167+
.spec-card.wide,
168+
.spec-card.center {
169+
grid-column: span 2;
170+
}
171+
}
172+
173+
@media (max-width: 560px) {
174+
body {
175+
padding: 12px;
176+
}
177+
178+
.specs-grid {
179+
grid-template-columns: 1fr;
180+
grid-auto-rows: minmax(168px, auto);
181+
gap: 12px;
182+
}
183+
184+
.spec-card,
185+
.spec-card.wide,
186+
.spec-card.center {
187+
grid-column: span 1;
188+
padding: 22px;
189+
}
190+
191+
.wide .title {
192+
font-size: 24px;
193+
}
194+
195+
.go-text {
196+
font-size: 38px;
197+
}
198+
}

0 commit comments

Comments
 (0)