refactor(learn): drop em dashes from the course content - #107
Merged
Conversation
Reader-facing prose only: the nine unit.mdx files, quiz.ts prompts and explanations, and the running copy in page.tsx, setup-note.tsx and progress-note.tsx. No mechanical find-replace. Each instance is read in context and repunctuated for what that sentence is actually doing: a colon where one clause explains the one before it, a comma where a conjunction already carried the relation and the dash was redundant, parentheses where the text was a true aside, or a period splitting two independent clauses. Which is also why the fix is not uniform: the same construction gets different punctuation depending on what the surrounding sentence needs. Left alone, deliberately: - Code comments (JSDoc-style, prefixed with `*`) — not something a learner reads, and this repo's own comment style already leans on the dash for asides throughout the codebase - The "Label — value" UI convention (spine.tsx, gate.tsx, exam.tsx, quiz.tsx, start-link.tsx, lookup.tsx) — a deliberate, consistent design pattern for compact status strings, not prose - lookups.spec.ts's own explanatory comments 134 changes across 19 content/component files. Verified: 70/70 apps/learn specs pass, workspace build/lint/check/test all clean, and the heading-match guard in curriculum.spec.ts (which reads unit.mdx off disk) still holds since no heading text was touched.
There was a problem hiding this comment.
Your trial has ended. Reactivate Greptile to resume code reviews.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Em dashes are one of the more reliable AI-writing tells, and the course content had 175 of them across the nine units and their quizzes. This removes all of them from reader-facing text.
Scope
In: the nine
unit.mdxfiles, everyquiz.tsprompt and explanation, and the running prose inpage.tsx,setup-note.tsx, andprogress-note.tsx.Out, deliberately:
Label — valueUI convention:Unit 00 — locked(gate.tsx),Run this — auth(lookup.tsx),Next — {title}(quiz.tsx), and the same shape in spine.tsx, exam.tsx, start-link.tsx. That's a deliberate, consistent design pattern for compact status strings, not prose with an AI tic. Changing it would be a design decision, not a writing fix.lookups.spec.ts's own explanatory comments, same reasoning as the first point.How, not just what
No mechanical find-and-replace. A uniform substitution is its own tell — real writing doesn't reach for the same punctuation mark every time. Each instance was read in its sentence and repunctuated for what that sentence is actually doing:
and,so,but,which) already carried the logical relation and the dash was doing nothingExample of the range, from unit 6:
Three different fixes for three different sentences, because they needed different things.
What I checked
grep -rc '—' apps/learn/src/content --include=*.mdx→ 0grep -rc '—' apps/learn/src/content --include=*.ts→ 0 outsidelookups.spec.tscommentscurriculum.spec.tsreadsunit.mdxheadings off disk and matches them against the declared curriculum; no heading text was touched, so that guard still holdspnpm --filter @propgate/learn buildand the fullpnpm --filter @propgate/learn vitest run(70/70)pnpm lint,pnpm check,pnpm test --force— 12/12 tasks, nothing cached134 changes across 19 files, all 1:1 line replacements — no prose restructuring beyond the punctuation itself, no new claims, nothing added or removed in substance.