Skip to content

Commit 5103348

Browse files
committed
fix(locales): update GitHub links to include HTTPS in English and French locales
style(typst): adjust margins, leading, and spacing for improved layout in CV refactor(typst): streamline project and mission sections in CV for better readability
1 parent 6b8f9ca commit 5103348

File tree

8 files changed

+34
-42
lines changed

8 files changed

+34
-42
lines changed

build-pdf-typst.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,8 @@ const ROOT = __dirname;
3333
const TYPST_DIR = path.join(ROOT, 'typst');
3434
const FONT_DIR = path.join(ROOT, 'fonts', 'Inter', 'extras', 'otf');
3535
// OUTPUT_DIR env var allows build.js / CI to redirect output (e.g. dist/pdf/short)
36-
const OUT_DIR = process.env.OUTPUT_DIR || path.join(ROOT, 'dist', 'pdf');
36+
// Always resolve to absolute path — Typst runs with cwd=typst/ so relative paths break
37+
const OUT_DIR = path.resolve(process.env.OUTPUT_DIR || path.join(ROOT, 'dist', 'pdf'));
3738
const TEMPLATE = path.join(TYPST_DIR, 'cv.typ');
3839
const CV_URL = 'https://etiennelescot.github.io/cv/';
3940

dist/pdf/cv-en-dark.pdf

-2.51 KB
Binary file not shown.

dist/pdf/cv-en-light.pdf

-2.52 KB
Binary file not shown.

dist/pdf/cv-fr-dark.pdf

-2.62 KB
Binary file not shown.

dist/pdf/cv-fr-light.pdf

-2.64 KB
Binary file not shown.

locales/en.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,7 @@ exp-fractional-opensource-n8n: |
6565
exp-fractional-opensource-n8n-stack: |
6666
Stack: n8n, VS Code extension, AI workflow generation
6767
exp-fractional-opensource-n8n-link: |
68-
github.com/EtienneLescot/n8n-as-code
68+
https://github.com/EtienneLescot/n8n-as-code
6969
exp-fractional-missions-heading: |
7070
CTO & Co‑founding Missions
7171
exp1-title: |

locales/fr.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,7 @@ exp-fractional-opensource-n8n: |
6565
exp-fractional-opensource-n8n-stack: |
6666
Stack : n8n, VS Code extension, AI workflow generation
6767
exp-fractional-opensource-n8n-link: |
68-
github.com/EtienneLescot/n8n-as-code
68+
https://github.com/EtienneLescot/n8n-as-code
6969
exp-fractional-missions-heading: |
7070
Missions CTO & Cofondations
7171
exp1-title: |

typst/cv.typ

Lines changed: 30 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@
5959
// =============================================================================
6060
#set page(
6161
paper : "a4",
62-
margin: (x: 7mm, y: 7mm),
62+
margin: (x: 8mm, y: 8mm),
6363
fill : t.page-fill,
6464
)
6565

@@ -73,8 +73,8 @@
7373

7474
#set par(
7575
justify : true,
76-
leading : 0.62em,
77-
spacing : 0.75em,
76+
leading : 0.65em,
77+
spacing : 0.82em,
7878
)
7979

8080
// Disable automatic heading numbering
@@ -121,11 +121,11 @@
121121
stroke : 0.5pt + t.section-stroke,
122122
radius : 6pt,
123123
inset : (x: 11pt, y: 10pt),
124-
below : 7pt,
124+
below : 8pt,
125125
breakable: true,
126126
)[
127127
#section-heading(title)
128-
#v(7pt)
128+
#v(8pt)
129129
#body
130130
]
131131
}
@@ -137,7 +137,7 @@
137137
fill : t.contact-fill,
138138
radius : 6pt,
139139
inset : (x: 11pt, y: 10pt),
140-
below : 7pt,
140+
below : 8pt,
141141
)[
142142
// Title (white on blue, no bar)
143143
#text(size: 8.5pt, weight: "bold", fill: t.contact-text, tracking: 1.5pt)[#upper(d.titles.contact)]
@@ -153,7 +153,7 @@
153153
column-gutter: 4pt,
154154
align : (center + top, left + top),
155155
bullet,
156-
block(above: 0pt, below: 3.5pt, content),
156+
block(above: 0pt, below: 4pt, content),
157157
)
158158
}
159159

@@ -166,24 +166,24 @@
166166

167167
// ── Sub-section label (h4 equivalent, muted uppercase) ───────────────────────
168168
#let sub-label(content) = {
169-
v(5pt)
169+
v(6pt)
170170
text(size: 7.5pt, weight: "semibold", fill: t.muted, tracking: 0.8pt)[#upper(content)]
171-
v(3pt)
171+
v(4pt)
172172
}
173173

174174
// ── Horizontal rule between experience items ──────────────────────────────────
175175
#let exp-divider = {
176-
v(5pt)
176+
v(6pt)
177177
line(length: 100%, stroke: 0.4pt + t.divider)
178-
v(4pt)
178+
v(5pt)
179179
}
180180

181181
// =============================================================================
182182
// DOCUMENT CONTENT
183183
// =============================================================================
184184

185185
// ── HEADER — Name + Tagline ───────────────────────────────────────────────────
186-
#block(below: 8pt)[
186+
#block(below: 10pt)[
187187
#text(
188188
size : 25pt,
189189
weight : "extrabold",
@@ -205,7 +205,7 @@
205205
#grid(
206206
columns : (1fr, 1fr),
207207
column-gutter: 14pt,
208-
row-gutter : 4pt,
208+
row-gutter : 5pt,
209209
..d.contact.map(item => {
210210
set text(fill: t.contact-text, size: 8.5pt)
211211
let val = if "url" in item {
@@ -243,32 +243,27 @@
243243

244244
#exp-title(exp0.title)
245245
#muted(exp0.subtitle)
246-
247-
// Open Source projects
246+
#v(2pt)
248247
#sub-label(exp0.opensource.heading)
249248
#for proj in exp0.opensource.items {
250-
grid(
251-
columns : (1fr, auto),
252-
column-gutter: 8pt,
253-
align : (left + top, right + top),
254-
[#text(weight: "semibold")[#proj.title]#h(6pt)#muted(proj.stack)],
255-
muted(proj.link),
256-
)
257-
block(above: 2pt, below: 5pt)[#muted(proj.desc)]
249+
v(3pt)
250+
text(weight: "semibold")[#proj.title]
251+
linebreak()
252+
muted(proj.stack)
253+
h(10pt)
254+
muted(proj.link)
255+
v(2pt)
256+
block(above: 2pt, below: 7pt)[#muted(proj.desc)]
258257
}
259258

260259
// CTO Missions
261260
#sub-label(exp0.missions.heading)
262261
#for (i, mission) in exp0.missions.items.enumerate() {
263-
if i > 0 { v(4pt) }
264-
grid(
265-
columns : (1fr, auto),
266-
column-gutter: 8pt,
267-
align : (left + top, right + top),
268-
text(weight: "semibold")[#mission.title],
269-
muted(mission.sector),
270-
)
271-
v(2pt)
262+
if i > 0 { v(6pt) }
263+
text(weight: "semibold")[#mission.title]
264+
linebreak()
265+
muted(mission.sector)
266+
v(3pt)
272267
for pt in mission.points {
273268
cv-item(parse-rich(pt))
274269
}
@@ -278,13 +273,9 @@
278273
#for exp in d.experiences.slice(1) {
279274
exp-divider
280275

281-
grid(
282-
columns : (1fr, auto),
283-
column-gutter: 8pt,
284-
align : (left + top, right + top),
285-
exp-title(exp.title),
286-
block(above: 4pt)[#muted(exp.sector)],
287-
)
276+
exp-title(exp.title)
277+
muted(exp.sector)
278+
v(4pt)
288279

289280
for pt in exp.points {
290281
cv-item(parse-rich(pt))

0 commit comments

Comments
 (0)