Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
703 commits
Select commit Hold shift + click to select a range
36ffbb0
🐛🤖 Fix HTML table cells dropping non-list text during search indexing
mlbrgl Feb 20, 2026
16206fd
🔨🤖 Generalize getPreprocessedIndexableText to accept profile gdocs
mlbrgl Feb 26, 2026
1fb8dc5
✅🤖 Improve search indexing tests for chart and prominent-link blocks
mlbrgl Feb 26, 2026
f3b05fb
feat: replace markdown conversion with direct plaintext extraction fo…
mlbrgl Feb 26, 2026
f7addc4
feat: add plain text preview mode to index preview
mlbrgl Feb 13, 2026
8600d5d
feat: add plain text preview mode to index preview (#6085)
mlbrgl Feb 26, 2026
0c1b103
Fix flaky BDD test for search country extraction (#6156)
mlbrgl Feb 26, 2026
10da5c5
enhance: add none as peerCountryStrategy
sophiamersmann Feb 27, 2026
afa3815
Merge branch 'master' into copilot/test-datasetproducers-searchableat…
mlbrgl Feb 27, 2026
fa5819f
Autofocus search input only when it's empty (#6155)
rakyi Feb 27, 2026
eeb0703
trigger staging build
mlbrgl Feb 27, 2026
136fa12
Merge pull request #6161 from owid/add-peer-strategy-none
sophiamersmann Feb 27, 2026
fcdbd4b
Add containerTitle to charts search index (#6158)
rakyi Feb 27, 2026
a95a9ea
build(deps): bump rollup from 4.46.2 to 4.59.0 (#6167)
dependabot[bot] Mar 2, 2026
662b289
build(deps): bump multer from 2.0.2 to 2.1.0 (#6168)
dependabot[bot] Mar 2, 2026
ba9ca3d
Add option to force a chart to be a datapage (#6164)
rakyi Mar 2, 2026
296ae6b
🐛 fix prominent links in key insight blocks
ikesau Mar 2, 2026
9070d3d
Migrate from prettier to oxfmt (#6146)
rakyi Mar 2, 2026
eee06f6
Allow previewing chart with forceDatapage
rakyi Mar 2, 2026
301f421
chore(deps): update algolia
marcelgerber Mar 3, 2026
13e3dcd
chore(deps): update sentry
marcelgerber Mar 3, 2026
f879aba
chore(deps): update typeorm, dayjs
marcelgerber Mar 3, 2026
2759cb1
chore(deps): update glob
marcelgerber Mar 3, 2026
152958d
chore(deps): update node-gyp
marcelgerber Mar 3, 2026
c46d8b1
chore(deps): update google packages
marcelgerber Mar 3, 2026
aaee256
build(deps): bump minimatch from 3.1.2 to 3.1.5 (#6173)
dependabot[bot] Mar 3, 2026
03a3fab
chore(deps): update mysql2
marcelgerber Mar 3, 2026
36fe098
chore(deps): update typescript native preview
marcelgerber Mar 3, 2026
6ef0eca
chore: fix tsgo issues
marcelgerber Mar 3, 2026
34d3ead
chore(deps): update legacy typescript, and resolve its errors
marcelgerber Mar 3, 2026
bc1f6db
🐛 fix linked chart previews not working on the /latest page
ikesau Feb 27, 2026
177a577
🔨 (svg tester) skip large files
sophiamersmann Mar 3, 2026
2c92bdd
Merge pull request #6176 from owid/svg-tester-skip-large-files
sophiamersmann Mar 3, 2026
160f849
Replace origin URL text input with autocomplete dropdown (#6151)
lucasrodes Mar 3, 2026
266eab2
✨ indexing profiles in algolia
ikesau Feb 3, 2026
2146b9e
✨ profiles in search results
ikesau Feb 3, 2026
c7b9513
✨ profiles in search: all+country+query
ikesau Feb 12, 2026
b1886b4
✨ profiles in search: all+country+topic+query
ikesau Feb 13, 2026
1c745fc
✨ profiles in search: country
ikesau Feb 12, 2026
327f7d4
✨ profiles in search: all+country+topic
ikesau Feb 13, 2026
8be8b12
✨ profiles in search: writing+country+topic
ikesau Feb 13, 2026
3b9dbfb
✨ profiles in search: writing+country+topic+query
ikesau Feb 13, 2026
b03a775
✨ profiles in search: writing+country
ikesau Feb 13, 2026
ea4518c
✨ profiles in search: writing+country+query
ikesau Feb 13, 2026
21b0cff
🔨🤖 split AlgoliaSource into pages/charts and exclude profiles
ikesau Feb 13, 2026
b909b85
✨ profiles in search: autocomplete
ikesau Feb 13, 2026
4157c81
✨ data profiles in search PR review comments
ikesau Feb 26, 2026
3cf8596
🎉 add country profile linking functionality
ikesau Feb 19, 2026
82c640b
🔨 profile linking PR fixes
ikesau Mar 3, 2026
2d41222
🎉 country-profile-selector component
ikesau Feb 19, 2026
04923e2
🐝 separate archieMlComponents.ts
ikesau Feb 27, 2026
6dd688e
🤖 style: format code
ikesau Mar 3, 2026
8babb96
🔨 split hideLegend into hideLegend/hideSeriesLabels
sophiamersmann Feb 25, 2026
7716840
🔨 drop hideLegend
sophiamersmann Feb 26, 2026
58a21eb
Merge pull request #6145 from owid/refactor-hide-legend
sophiamersmann Mar 4, 2026
1ad6bfb
🔨 (svg tester) add thumbnails
sophiamersmann Jan 19, 2026
e9eff35
🔨 (svg tester) add focus mode
sophiamersmann Jan 14, 2026
2e9bef8
🔨 (svg tester) assert analytics table have been populated
sophiamersmann Mar 3, 2026
2701312
Merge pull request #5933 from owid/svg-tester-focus
sophiamersmann Mar 4, 2026
620bd6b
Merge pull request #5934 from owid/svg-tester-thumbnails
sophiamersmann Mar 4, 2026
aedf9e4
fix: run oxfmt API with format options
marcelgerber Mar 4, 2026
20d6795
🐛 use uniq instead of a set
sophiamersmann Mar 4, 2026
96d6683
Merge pull request #6181 from owid/fix-regions-set
sophiamersmann Mar 4, 2026
faf00b1
🔨 refactor defaultSourcesLines
sophiamersmann Feb 27, 2026
3f1b5b9
✨ make sources line specific to the active tab
sophiamersmann Feb 27, 2026
8471210
🔨 use GrapherState for callout tables
sophiamersmann Mar 2, 2026
a286fbd
🎉 hide entity labels in scatters
sophiamersmann Feb 25, 2026
b36bb1d
🐝 oxfmt vscode settings
ikesau Mar 4, 2026
18ca3b2
🔨 (entity selector) add todo for switching to actual column slugs
sophiamersmann Mar 4, 2026
a2d9e1f
build(deps): bump immutable from 4.3.6 to 4.3.8 (#6187)
dependabot[bot] Mar 5, 2026
9dbd17f
chore(deps): resolve dependabot alerts
marcelgerber Mar 5, 2026
7bd3814
chore(deps): update aws s3 client
marcelgerber Mar 5, 2026
6a2d989
🎉 add region dod support for owid continents
sophiamersmann Mar 3, 2026
3b34e92
Merge pull request #6178 from owid/add-continent-region-icons-tooltips
sophiamersmann Mar 5, 2026
b235854
Merge pull request #6149 from owid/hide-entity-labels-in-scatters
sophiamersmann Mar 5, 2026
4437428
Merge pull request #6159 from owid/multi-tab-sources-line
sophiamersmann Mar 5, 2026
8ffcc94
🎉 enable focus mode for more chart types
sophiamersmann Jan 30, 2026
aaea4b9
enhance: clear focus state on hovering
sophiamersmann Feb 27, 2026
d89eab5
🔨 add svgtest commands for each suite
sophiamersmann Mar 5, 2026
d25f8f3
Merge pull request #6190 from owid/add-svgtest-make-commands
sophiamersmann Mar 5, 2026
3b840cd
Merge pull request #6032 from owid/more-focus-modes
sophiamersmann Mar 5, 2026
04f6b8c
✨ country profile selector touchups
ikesau Mar 5, 2026
ece498d
🔨 (svg tester) only log when verbose
sophiamersmann Mar 5, 2026
4851e5b
Merge pull request #6193 from owid/svg-tester-verbose-logging
sophiamersmann Mar 5, 2026
c015f2a
🐛 fix gdoc slug collisions
ikesau Mar 5, 2026
908b545
🐛 fix checkIfSlugCollides
ikesau Mar 5, 2026
94a072f
✨ improve profile redirect creation
ikesau Mar 5, 2026
60cc981
🐛 update profile citationText url
ikesau Mar 5, 2026
d15feb6
chore(deps): update multer
marcelgerber Mar 6, 2026
b68b37c
chore(deps): update tar
marcelgerber Mar 6, 2026
ca2c50c
🎉🤖 Move country detection from owid.io to ourworldindata.org
mlbrgl Mar 4, 2026
96979cb
📜🤖 Document the /api/detect-country route in functions README
mlbrgl Mar 4, 2026
c10da33
refactor: stacked area/bar rendering and hover state
sophiamersmann Feb 27, 2026
fcd9828
refactor: stacked area/bar rendering and hover state (#6160)
sophiamersmann Mar 6, 2026
835ea57
refactor: Add emphasis state to chart components
sophiamersmann Feb 27, 2026
c59d8c0
refactor: add emphasis type (#6172)
sophiamersmann Mar 6, 2026
8607301
feat(stacked discrete bar): add support for focus mode
sophiamersmann Mar 2, 2026
ec0a5ed
feat(stacked discrete bar): add support for focus mode (#6174)
sophiamersmann Mar 6, 2026
654ddf4
refactor: drop unused classnames
sophiamersmann Mar 3, 2026
be22c44
cleanup: resolve temporary todos
sophiamersmann Mar 3, 2026
e5ec8ee
🔨 add guidelines for chart components
sophiamersmann Mar 5, 2026
6450057
🔨 remove unused CSS classes and clean up chart components (#6175)
sophiamersmann Mar 6, 2026
ba37fa0
🐛 fix entity selector sort column after switching mdims
sophiamersmann Mar 5, 2026
18fa29e
🐛 show at least 2 labelled ticks for log axis
sophiamersmann Mar 6, 2026
0a47b32
Merge pull request #6192 from owid/fix-mdim-entity-selector-sort
sophiamersmann Mar 6, 2026
a6b4806
🐛🤖 switch grapher config CF functions to R2 bindings and remote dev b…
danyx23 Feb 20, 2026
4f89742
🔨🤖 remove dead grapher config URL vars and shouldCache plumbing
danyx23 Mar 6, 2026
1481fd4
Use R2 bindings for grapher config CF functions (follow-up to #6132) …
danyx23 Mar 6, 2026
ea94e6a
✅🤖 add grapher config endpoint e2e tests with local R2
danyx23 Mar 6, 2026
2c4a241
✅🤖 address follow-up review comments on grapher r2 e2e tests
danyx23 Mar 6, 2026
9fa52f3
✅🤖 add grapher config endpoint e2e tests with local R2 (#6196)
danyx23 Mar 6, 2026
d4abc6d
Merge pull request #6197 from owid/axis-log-labelled-ticks-fix
sophiamersmann Mar 6, 2026
8cb8b34
🔨 refactor isDisplayedAlongsideComplementaryTable
sophiamersmann Feb 25, 2026
227d342
🔨 refactor isDisplayedAlongsideComplementaryTable (#6150)
sophiamersmann Mar 6, 2026
0a490fa
🔨 extract line chart tooltip
sophiamersmann Mar 6, 2026
efb74c9
Merge pull request #6198 from owid/extract-line-chart-tooltip
sophiamersmann Mar 6, 2026
428005f
Move country detection from owid.io to ourworldindata.org (#6186)
mlbrgl Mar 6, 2026
ce88817
🎉🤖 Add Wikipedia archive: strip GTM and rewrite URLs from archived pages
mlbrgl Mar 5, 2026
b8d56c9
🎉 Add Wikipedia archive: strip GTM and rewrite URLs from archived pag…
mlbrgl Mar 6, 2026
ae92c77
🔧 Enhance backpop wiki rclone commands with retry logic for improved …
mlbrgl Mar 6, 2026
8b293f5
:test_tube: Experiment: all charts vs featured metrics block on data …
bnjmacdonald Feb 23, 2026
bca29e1
fix: all charts block class on wrong element
bnjmacdonald Feb 23, 2026
19d4ec1
:hammer: experiment: update arm fractions and paths
bnjmacdonald Feb 23, 2026
46fe8c0
:hammer: FeaturedMetrics: add `id` prop
bnjmacdonald Feb 24, 2026
346d233
:hammer: AllCharts: add `id` prop
bnjmacdonald Feb 24, 2026
d85359c
:hammer: experiment: move `addClassNamesToBody` logic to experiment m…
bnjmacdonald Feb 24, 2026
d693316
:hammer: experiment: add topic pages
bnjmacdonald Feb 24, 2026
1ee2874
:hammer: experiment: implement on topic pages
bnjmacdonald Feb 24, 2026
485b0de
:hammer: experiment: fix display logic on data pages
bnjmacdonald Feb 24, 2026
e84b711
:hammer: experiment: move css to `experiments.scss`
bnjmacdonald Feb 24, 2026
ef0491b
:hammer: remove experiment data-page-insight-btns-2
bnjmacdonald Feb 24, 2026
2400f13
:hammer: experiment: increase replaysSessionSampleRate on treatment
bnjmacdonald Feb 24, 2026
a7fca5a
:hammer: remove unused imports
bnjmacdonald Feb 24, 2026
1104596
:hammer: experiment: update included data pages
bnjmacdonald Feb 24, 2026
2afde1b
:hammer: fix AllCharts block link on pages outside experiment
bnjmacdonald Feb 24, 2026
37da767
:hammer: experiment: move experimentState to shared file
bnjmacdonald Mar 5, 2026
96cba8e
:hammer: experiment: skip non-html responses
bnjmacdonald Mar 5, 2026
811c567
:scroll: experiments: add comment re all charts id swapping
bnjmacdonald Mar 5, 2026
3d2697f
:hammer: experiments: add `window !== 'undefined' check to FeaturedMe…
bnjmacdonald Mar 5, 2026
02ad75a
:test_tube: experiment: update expires and replay sampling
bnjmacdonald Mar 7, 2026
d541cca
Revert ":hammer: experiment: move experimentState to shared file"
bnjmacdonald Mar 7, 2026
97115b6
:bug: experiment: redefine `isPageInExperiment` to be experiment-spec…
bnjmacdonald Mar 7, 2026
0c0a468
Merge pull request #6137 from owid/experiment-all-charts-block
bnjmacdonald Mar 7, 2026
6542339
build(deps): bump dompurify from 3.3.1 to 3.3.2 (#6200)
dependabot[bot] Mar 9, 2026
76be2fc
Add datasetProducers to searchableAttributes in Algolia charts index …
mlbrgl Mar 9, 2026
e08e5b3
🎉 Update Makefile and README to include Wikipedia archive commands an…
mlbrgl Mar 9, 2026
1bc0c5a
chore(archive): add script to check R2 & db discrepancies
marcelgerber Mar 9, 2026
f80998e
🐛 fix DI data-callout CSS
ikesau Mar 9, 2026
d8f5509
🐛 fix ArticleBlock typechecking
ikesau Mar 9, 2026
33f085f
🔨 redirect /countries to search
ikesau Mar 6, 2026
dee1ad9
🔨 stop baking country index pages
ikesau Mar 6, 2026
bf4a7a8
🔨 remove dead country index page code
ikesau Mar 6, 2026
7e07cfe
🔨 drop unused country_latest_data table
ikesau Mar 6, 2026
f617673
🐛 fix lint
ikesau Mar 9, 2026
b2e2f57
fix(db): move db migration to correct directory
marcelgerber Mar 10, 2026
4f777c8
🔨 update alt text generation prompt
ikesau Mar 6, 2026
5e0aa0f
Improve HTML semantics (#6185)
rakyi Mar 10, 2026
509addc
refactor: better handling of gdocs layout
marcelgerber Mar 10, 2026
c039d49
🐛 fix top charts
ikesau Mar 10, 2026
ba117cd
🔨🤖 Make Playwright archive dirs environment-aware for staging
mlbrgl Mar 10, 2026
4a39cb7
🔨🤖 Rewrite legacy detect-country.owid.io URLs in backpopulate script
mlbrgl Mar 10, 2026
60bda74
Rewrite legacy detect-country.owid.io URLs in Wikipedia archive backp…
mlbrgl Mar 10, 2026
6e0f738
build(deps): bump simple-git from 3.16.1 to 3.32.3 (#6215)
dependabot[bot] Mar 11, 2026
62151db
build(deps): bump tar from 7.5.10 to 7.5.11 (#6216)
dependabot[bot] Mar 11, 2026
f2a096f
feat: add gdocs component for bespoke viz (#6050)
marcelgerber Mar 11, 2026
bf82f1c
🐛🤖 Sanitize admin test comparisonUrl before iframe rendering (#6214)
rakyi Mar 11, 2026
c7469ba
Fix typo
rakyi Mar 11, 2026
7eb8304
chore(deps): update typescript
marcelgerber Mar 12, 2026
03e15e6
🎉🤖 Support author roles in byline (e.g. "Hannah Ritchie (writing)")
edomt Mar 12, 2026
5bd3e7d
🤖 style: format code
edomt Mar 12, 2026
37c0dfe
🐛🤖 escape embedded JSON for inline script safety (#6213)
rakyi Mar 12, 2026
a18d117
🐛🤖 Block inactive superuser API key impersonation (#6224)
rakyi Mar 12, 2026
bed8366
docs(bespoke): add docs for bespoke components
marcelgerber Mar 12, 2026
deac7b9
Fix autocomplete dropdown position (#6228)
rakyi Mar 13, 2026
44a2894
feat(bespoke): dev server and example project (#6230)
marcelgerber Mar 13, 2026
6889177
✨ (scatter) add 'Time vs Time' suffix
sophiamersmann Mar 6, 2026
97616dc
✨ (scatter) only add time suffix if the same indicator is plotted on …
sophiamersmann Mar 12, 2026
9e91373
Merge pull request #6202 from owid/scatter-title-year-vs-year
sophiamersmann Mar 13, 2026
b6ed546
🔨better author roles handling
ikesau Mar 13, 2026
8c6d165
Merge pull request #6221 from owid/author-roles-in-byline
edomt Mar 13, 2026
99c12e9
🐛 Don't report invalid topic search errors to Sentry (#6238)
Marigold Mar 16, 2026
d97897f
✨ drop leading zero for datelines
ikesau Mar 11, 2026
55f54d3
🐛 fix author roles on baked pages
ikesau Mar 16, 2026
6cbab13
chore(bespoke): use Lato for bespoke demo
marcelgerber Mar 16, 2026
9638d71
chore(deps): update vitest
marcelgerber Mar 16, 2026
51f2767
Migrate from ESLint to Oxlint (#6220)
marcelgerber Mar 17, 2026
ce86cb3
chore(oxlint): enable a few more rules
marcelgerber Mar 16, 2026
a6e9eae
chore(oxlint): enable `typescript/no-unnecessary-type-assertion`
marcelgerber Mar 16, 2026
294a564
chore(oxlint): enable more rules
marcelgerber Mar 16, 2026
648036c
chore(oxlint): enable `unicorn/prefer-array-some`
marcelgerber Mar 16, 2026
f6e4199
chore(oxlint): enable `typescript/await-thenable`
marcelgerber Mar 16, 2026
b42349f
Merge pull request #6242 from owid/oxlint-new-rules
marcelgerber Mar 17, 2026
8465760
chore: remove eslint extension recommendation
marcelgerber Mar 17, 2026
8e255ee
chore(deps): update oxfmt & oxlint
marcelgerber Mar 17, 2026
3b24f70
chore(deps): update wrangler
marcelgerber Mar 18, 2026
434ff40
chore(deps): update react
marcelgerber Mar 18, 2026
a11e299
chore(deps): update workerpool
marcelgerber Mar 18, 2026
02500dc
chore(deps): update types packages
marcelgerber Mar 18, 2026
ee2038a
chore(deps): update multiple dependencies
marcelgerber Mar 18, 2026
9060468
chore(deps): update cheerio & entities
marcelgerber Mar 18, 2026
85c58ea
chore(deps): update testing-library
marcelgerber Mar 18, 2026
30a8c02
🎉 (admin) add refresh DIs button
sophiamersmann Mar 13, 2026
41496fa
Merge pull request #6232 from owid/admin-refresh-dis
sophiamersmann Mar 18, 2026
5140472
fix(iframe): display left & right borders in iframe (#6250)
marcelgerber Mar 18, 2026
84a790d
fix(grapher): account for border in `captionedChartBounds`
marcelgerber Mar 18, 2026
844b8da
refactor(tooltip): slight refactor of positioning code
marcelgerber Mar 18, 2026
46f5570
fix(tooltip): prevent overflows stemming from tooltip contents growing
marcelgerber Mar 18, 2026
ff7e783
refactor(tooltip): simplify tooltip properties
marcelgerber Mar 18, 2026
e975999
fix(tooltip): fix iframe overflows caused by tooltip contents (#6251)
marcelgerber Mar 18, 2026
ce30424
✨ suppress hydration warning on dateline
ikesau Mar 18, 2026
d11f43f
🎉 add extractedText column to images table
ikesau Mar 6, 2026
3548b6a
🎉 extract text from images on upload
ikesau Mar 6, 2026
efa3c8b
🎉 add backfill script for image text extraction
ikesau Mar 6, 2026
09270dc
🎉 dynamic RSS functions
ikesau Mar 4, 2026
aba010f
✨ pages-chronological incremental updates
ikesau Mar 5, 2026
23cf4b6
✨ custom RSS on topic pages
ikesau Mar 5, 2026
73459e6
🔨 refactor sorting by sortConfig
sophiamersmann Mar 9, 2026
d591ef9
🔨 refactor sorting by sortConfig (#6207)
sophiamersmann Mar 19, 2026
1e744d8
🔨 replace react-move with react-spring
sophiamersmann Mar 9, 2026
a00a971
🔨 replace react-move with react-spring for bar chart animations (#6208)
sophiamersmann Mar 19, 2026
ee1f397
🔨 rename GrapherTooltipAnchor options
sophiamersmann Mar 16, 2026
285fa85
🔨 make TooltipValue component more flexible
sophiamersmann Mar 16, 2026
83bcaf1
🔨 extract sparkline component
sophiamersmann Mar 16, 2026
f71c490
🔨 extract sass variables
sophiamersmann Mar 16, 2026
db2cd1a
🔨 split tooltip components into separate files
sophiamersmann Mar 17, 2026
9c820ba
🔨 drop NO_DATA_LABEL import from ColorScale
sophiamersmann Mar 17, 2026
fd646c1
🔨 move makeAxisLabel to AxisUtils file
sophiamersmann Mar 17, 2026
2502f22
🔨 split tooltip components into more files
sophiamersmann Mar 17, 2026
0b9cbc1
🔨 grapher code changes needed for bespoke viz (#6240)
sophiamersmann Mar 19, 2026
acb6431
🔨 drop mobx from TextWrap
sophiamersmann Mar 17, 2026
2874bfd
🔨 drop mobx from MarkdownTextWrap
sophiamersmann Mar 17, 2026
6d4a7ba
🔨 separate state and rendering for TextWraps
sophiamersmann Mar 17, 2026
54dca31
🔨 separate state and rendering for MarkdownTextWrap
sophiamersmann Mar 17, 2026
5d0cbd6
🔨 use default options object for TextWrap classes
sophiamersmann Mar 17, 2026
5f8a422
🔨 introduce shared TextWrap interface
sophiamersmann Mar 17, 2026
bfa0399
🔨 drop unnecessary eslint-disable
sophiamersmann Mar 17, 2026
0e2bf51
🔨 change TextWrap extension to ts
sophiamersmann Mar 17, 2026
a6be8fb
🔨 refactor TextWrap and MarkdownTextWrap (#6246)
sophiamersmann Mar 19, 2026
1b4b2fa
✨ add dropdown component to example bespoke project
sophiamersmann Mar 16, 2026
c1ddf29
✨ add dropdown component to example bespoke project (#6241)
sophiamersmann Mar 19, 2026
f43be59
🎉 add shared bespoke hooks
sophiamersmann Mar 17, 2026
15ef71e
🎉 (bespoke) add shared components and example chart
sophiamersmann Mar 17, 2026
1af9436
🔨 improve type safety
sophiamersmann Mar 17, 2026
e50dde1
🔨 improve type safety
sophiamersmann Mar 19, 2026
a261999
🐛 fix cc tooltip in the footer
sophiamersmann Mar 19, 2026
5d0aa24
🎉 (bespoke) add shared components and example chart (#6247)
sophiamersmann Mar 19, 2026
b18d0d3
Fix invalid Algolia autocomplete CSS vars (#6258)
rakyi Mar 19, 2026
fe7d858
🔨🤖 forward env vars to tmux subshells in Makefile
mlbrgl Mar 20, 2026
635cbbf
Merge pull request #6260 from mlbrgl/makefile-forward-env-vars-to-tmux
mlbrgl Mar 20, 2026
788aada
✨ country-profile-selector anchor tag
ikesau Mar 20, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
2 changes: 1 addition & 1 deletion .bundlemonrc.json
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
"files": [
{
"path": "owid.mjs",
"maxSize": "820kB",
"maxSize": "840kB",
"maxPercentIncrease": 5
},
{
Expand Down
8 changes: 0 additions & 8 deletions .claude/commands/commit.md

This file was deleted.

18 changes: 18 additions & 0 deletions .claude/skills/create-migration/SKILL.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
---
name: create-migration
description: Create a new database migration file for the OWID MySQL database. Use when the user needs to create a database schema change or migration.
---

# Create Database Migration

Create a new database migration file for the OWID MySQL 8 database.

## Steps

1. Run `yarn createDbMigration db/migration/<NewMigrationName>` where `<NewMigrationName>` is a descriptive name for the migration
2. The generated filename will contain a timestamp prefix, so scan the `db/migration/` directory to find the actual path of the new file
3. Report the new file path to the user

## Naming Guidelines

Choose a descriptive name for the migration that clearly indicates what schema change is being made (e.g., `AddUserEmailIndex`, `CreateAuditLogTable`, `RemoveDeprecatedColumns`).
4 changes: 2 additions & 2 deletions .clinerules/GENERAL-RULES.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,8 @@

- yarn typecheck: runs the typescript typechecker across all files
- yarn testLintChanged: run eslint on changed files
- yarn testPrettierChanged: run prettier on changed files
- yarn fixPrettierChanged: attempt to fix prettier issues on changed files
- yarn testFormatChanged: check formatting on changed files
- yarn fixFormatChanged: fix formatting on changed files
- yarn test run --reporter dot: run unit tests. Uses vitest, can take one or more test filenames to only run a subset.
- make migrate: apply migrations
- make dbtest: run database and api tests
Expand Down
1 change: 1 addition & 0 deletions .codex/skills
2 changes: 1 addition & 1 deletion .devcontainer/devcontainer.json
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@
// },

// Add the IDs of extensions you want installed when the container is created.
"extensions": ["dbaeumer.vscode-eslint", "esbenp.prettier-vscode"],
"extensions": ["dbaeumer.vscode-eslint", "oxc.oxc-vscode"],

// Use 'forwardPorts' to make a list of ports inside the container available locally.
// "forwardPorts": [3000, 27017],
Expand Down
2 changes: 1 addition & 1 deletion .editorconfig
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ charset = utf-8
indent_size = 4
indent_style = space
trim_trailing_whitespace = true
insert_final_newline = true # somehow required for prettier to add a new line at the end of composer.json
insert_final_newline = true

[*.md]
trim_trailing_whitespace = false
1 change: 1 addition & 0 deletions .env.archive
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
IS_ARCHIVE=true
ARCHIVE_BASE_URL=https://archive.ourworldindata.org
WIKIPEDIA_ARCHIVE_BASE_URL=https://wikipedia-archive.ourworldindata.org
ENVIRONMENT=production
BAKED_BASE_URL=
GRAPHER_DYNAMIC_THUMBNAIL_URL=
3 changes: 0 additions & 3 deletions .env.devcontainer
Original file line number Diff line number Diff line change
@@ -1,8 +1,5 @@
TZ=utc

# Essential settings
SECRET_KEY='fejwiaof jewiafo jeioa fjieowajf isa fjidosajfgj'

GRAPHER_DB_NAME=grapher
GRAPHER_DB_USER=grapher
GRAPHER_DB_PASS=grapher
Expand Down
4 changes: 1 addition & 3 deletions .env.example-full
Original file line number Diff line number Diff line change
@@ -1,8 +1,5 @@
TZ=utc

# Essential settings
SECRET_KEY='fejwiaof jewiafo jeioa fjieowajf isa fjidosajfgj'

# Instance configuration (for running multiple parallel dev environments)
TMUX_SESSION_NAME=grapher # optional; tmux session name to avoid conflicts
COMPOSE_PROJECT_NAME=owid-grapher # optional; docker compose project name for isolated volumes
Expand Down Expand Up @@ -69,6 +66,7 @@ DATA_API_URL= # optional

SLACK_BOT_OAUTH_TOKEN= # optional
SLACK_DI_PITCHES_CHANNEL_ID= # optional; #data-insight-pitches channel id
SLACK_ALGOLIA_INDEXING_CHANNEL_ID= # optional; channel for Algolia indexing failure reports

# for remote dev on tailscale without localhost + port forwarding
ADMIN_SERVER_HOST= # optional; e.g: YOURMACHINE.TAILXXX.ts.net (find this in the tailscale admin panel)
Expand Down
3 changes: 0 additions & 3 deletions .env.example-grapher
Original file line number Diff line number Diff line change
@@ -1,8 +1,5 @@
TZ=utc

# Essential settings
SECRET_KEY='fejwiaof jewiafo jeioa fjieowajf isa fjidosajfgj'

# Instance configuration (for running multiple parallel dev environments)
TMUX_SESSION_NAME=grapher # optional; tmux session name to avoid conflicts
COMPOSE_PROJECT_NAME=owid-grapher # optional; docker compose project name for isolated volumes
Expand Down
3 changes: 1 addition & 2 deletions .github/pull_request_template.md
Original file line number Diff line number Diff line change
Expand Up @@ -27,10 +27,9 @@ Step-by-step instructions on how to test this change

If DB migrations exists:

- [ ] If columns have been added/deleted, all necessary views were recreated
- [ ] If columns have been added/deleted, all necessary views were recreated and ETL and Analytics team members have been informed of the incoming changes
- [ ] The DB type definitions have been updated
- [ ] The DB types in the ETL have been updated
- [ ] If tables/views were added/removed, the Datasette export has been updated to take this into account
- [ ] Update the documentation in db/docs

### After merging
Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/check-default-grapher-config.yml
Original file line number Diff line number Diff line change
Expand Up @@ -47,8 +47,8 @@ jobs:
yarn tsx --tsconfig tsconfig.tsx.json devTools/schema/generate-default-object-from-schema.ts $json.name --save-ts packages/@ourworldindata/grapher/src/schema/defaultGrapherConfig.ts })
shell: nu {0}

- name: Run prettier
run: yarn fixPrettierAll
- name: Run formatter
run: yarn fixFormatAll

- uses: stefanzweifel/git-auto-commit-action@v7
with:
Expand Down
32 changes: 24 additions & 8 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -1,5 +1,9 @@
name: CI
on: [push, pull_request]
on:
pull_request:
push:
branches:
- master

jobs:
# Checks for prettify errors, TypeScript errors and runs vitest tests.
Expand Down Expand Up @@ -45,8 +49,21 @@ jobs:

- name: Run typecheck
run: yarn typecheck
typecheck-legacy:
runs-on: ubuntu-latest

steps:
- name: Clone repository
uses: actions/checkout@v5

- uses: ./.github/actions/setup-node-yarn-deps
with:
runPostinstallScripts: false

- name: Run typecheck (legacy)
run: yarn tsc -b

prettier:
format:
runs-on: ubuntu-latest

steps:
Expand All @@ -57,10 +74,10 @@ jobs:
with:
runPostinstallScripts: false

- name: Run prettier
run: yarn testPrettierAll
- name: Check formatting
run: yarn testFormatAll

eslint:
oxlint:
runs-on: ubuntu-latest

steps:
Expand All @@ -71,9 +88,8 @@ jobs:
with:
runPostinstallScripts: false

- name: Run eslint
# the --max-warnings makes eslint exit with non-zero exit code even for warnings
run: yarn testLint --max-warnings=0
- name: Run oxlint
run: yarn testLint

# Runs `bundlemon` on the code to see if our Vite build assets exceed a given file size.
bundlemon:
Expand Down
12 changes: 6 additions & 6 deletions .github/workflows/prettify.yml → .github/workflows/format.yml
Original file line number Diff line number Diff line change
@@ -1,15 +1,15 @@
name: Prettify
name: Format
on:
push:
branches: [master]
pull_request:
branches: [master]

# Runs `prettier` on a pull request so everything is nice and pretty!
# Runs `oxfmt` on a pull request so everything is nice and formatted!
# If something's wrong, a new commit fixing the issues will automatically be pushed to the PR branch.

jobs:
prettify:
format:
runs-on: ubuntu-latest

steps:
Expand All @@ -22,9 +22,9 @@ jobs:
with:
runPostinstallScripts: false

- name: Run prettier
run: yarn fixPrettierAll
- name: Run formatter
run: yarn fixFormatAll

- uses: stefanzweifel/git-auto-commit-action@v7
with:
commit_message: "🤖 style: prettify code"
commit_message: "🤖 style: format code"
3 changes: 1 addition & 2 deletions .github/workflows/update-regions.yml
Original file line number Diff line number Diff line change
Expand Up @@ -40,13 +40,12 @@ jobs:
Automated update of regions data

TODOs:
- [ ] Update the [owid-detect-country worker](https://github.com/owid/cloudflare-workers/tree/main/workers/owid-detect-country) using its update script
- [ ] Check if there were any country renames, and if so:
- [ ] Create redirects from old to new slugs
- [ ] Take extra care :)
branch: "bot/update-regions-${{ steps.date.outputs.date }}"
base: "master"
add-paths: "packages/@ourworldindata/utils/src/regions.json"
add-paths: "packages/@ourworldindata/utils/src/regions/regions.data.ts"

permissions:
contents: write
Expand Down
15 changes: 12 additions & 3 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,9 @@ logs/
db.sqlite3
.sublime*
.nova/
.yarn/*
!.yarn/patches
!.yarn/releases
**/.yarn/*
!**/.yarn/patches
!**/.yarn/releases
yarn-error.log
.vscode/tags
.awcache
Expand Down Expand Up @@ -46,6 +46,15 @@ dist/
cfstorage/
vite.*.mjs
archive/*
wikipedia-archive/*

# Playwright
test-results/
**/.features-gen/**/*.spec.js
playwright-report/

# Sentry Config File
.env.sentry-build-plugin

# Claude
.claude/settings.local.json
2 changes: 1 addition & 1 deletion .gitpod.yml
Original file line number Diff line number Diff line change
Expand Up @@ -46,4 +46,4 @@ github:
vscode:
extensions:
- dbaeumer.vscode-eslint
- esbenp.prettier-vscode
- oxc.oxc-vscode
22 changes: 22 additions & 0 deletions .oxfmtrc.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
{
"$schema": "./node_modules/oxfmt/configuration_schema.json",
"printWidth": 80,
"semi": false,
"tabWidth": 4,
"trailingComma": "es5",
"ignorePatterns": [
".tscache",
"/bakedSite",
"/localBake",
"datasetsExport",
"itsJustJavascript",
"package.json",
"coverage",
"packages/@ourworldindata/*/dist/",
"dist/",
"grapherData/",
".vscode/",
".claude/settings.local.json",
"*.handlebars"
]
}
Loading