Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
638 commits
Select commit Hold shift + click to select a range
8bd695b
💄 Update text color in download modal description
mlbrgl Feb 20, 2026
51291c8
🐛🤖 disable CF cacheEverything for R2 and propagate config fetch error…
danyx23 Feb 20, 2026
8fec13c
Adjust z-indices (#6126)
rakyi Feb 20, 2026
f3308e7
✨ hide continent in scatter and marimekko tooltips
sophiamersmann Feb 23, 2026
91dac2a
🧹 Remove gt-create-pr-branch skill
mlbrgl Feb 23, 2026
0c0a61a
Fix race condition on multi-dim data page (#6129)
rakyi Feb 23, 2026
babeb7c
Merge pull request #6134 from owid/hide-continent-in-tooltip
sophiamersmann Feb 23, 2026
a9d2c63
chore(deps): update @aws-sdk/client-s3
marcelgerber Feb 23, 2026
dbda99b
🐛 Fix duplicate tag in search autocomplete (exact case match) (#6130)
mlbrgl Feb 24, 2026
e844445
🔨 (svg test) add chart type dropdown
sophiamersmann Feb 16, 2026
fec15c4
🔨 (svg test) add chart type dropdown (#6100)
sophiamersmann Feb 24, 2026
2c9c75f
🔨 clarify variable names
sophiamersmann Jan 27, 2026
cb179fb
🔨 improve regions provider code (#6022)
sophiamersmann Feb 24, 2026
d0da23e
chore(deps): update to eslint 10 (#6140)
marcelgerber Feb 24, 2026
724cbbb
🎉 add info icon next to region providers
sophiamersmann Feb 3, 2026
99e7bba
✨ add info icon next to region provider suffix (#6090)
sophiamersmann Feb 24, 2026
54cd547
🎉 (region dods) add support for income groups
sophiamersmann Feb 18, 2026
8b8e56b
🎉 add region tooltip for income groups (#6092)
sophiamersmann Feb 24, 2026
e86b957
🎉 add tooltip for region providers
sophiamersmann Feb 18, 2026
a0604b7
🎉 add region provider tooltips (#6091)
sophiamersmann Feb 24, 2026
8ec5be9
🎉 (region dods) add support for more providers
sophiamersmann Feb 19, 2026
547f8ae
🔨 require region descriptions for the tooltip
sophiamersmann Feb 19, 2026
a26b5fd
✨ support all region data providers in tooltips (#6120)
sophiamersmann Feb 24, 2026
bf9d78c
🔨 use iframes to render charts on test pages
sophiamersmann Feb 20, 2026
5f57504
🔨 use chart iframes on test pages (#6124)
sophiamersmann Feb 24, 2026
00617e6
✨ add color palette for categorical maps
sophiamersmann Feb 20, 2026
9ef45dc
✨ (admin) show categorical map colors as presets
sophiamersmann Feb 23, 2026
ae3b2e4
✨ Add categorical map color palette (#6121)
sophiamersmann Feb 24, 2026
db57990
🔨 improve typesafety of regions
sophiamersmann Feb 20, 2026
860f044
🔨 improve typesafety of regions (#6123)
sophiamersmann Feb 24, 2026
fbca505
🔨 split LineLegend into state class and render component
sophiamersmann Feb 24, 2026
402d487
🔨 refactor LineLegend (#6141)
sophiamersmann Feb 25, 2026
e43c0d2
🔨 drop unused stack modes from chart configs
sophiamersmann Feb 25, 2026
8eb529b
🔨 rename figma id utility function
sophiamersmann Feb 25, 2026
e844a2d
🔨 rename `makeIdForHumanConsumption` to `makeFigmaId` (#6143)
sophiamersmann Feb 25, 2026
37450ed
Merge pull request #6147 from owid/drop-unused-stack-modes
sophiamersmann Feb 25, 2026
2db2fe7
test: add search autofocus tests
mlbrgl Jan 14, 2026
1617ebb
tests: patch DNS resolution on staging servers
mlbrgl Jan 23, 2026
216dc9b
🎉 Add comprehensive search autocomplete scenarios and improve test IDs
mlbrgl Feb 25, 2026
d800921
Update download options affordance on static viz (#6119)
mlbrgl Feb 26, 2026
dfb84a2
✨ (admin) vertically align chart tab toggles
sophiamersmann Jan 21, 2026
cf8df70
🐛 fix chart type validation with projected indicators
sophiamersmann Feb 26, 2026
55a3599
🎉 add scatter as secondary chart type
sophiamersmann Jan 19, 2026
eab4a08
🔨 (admin) clean up editor features
sophiamersmann Feb 23, 2026
2674680
✨ (admin) redesign Tabs section
sophiamersmann Feb 23, 2026
4b0bb40
✨ (admin) rename Xaxis to Yaxis for discrete bar charts
sophiamersmann Feb 26, 2026
514e1fa
Merge pull request #6046 from owid/scatter-as-chart-tab
sophiamersmann Feb 26, 2026
90a0971
Merge pull request #6135 from owid/editor-features
sophiamersmann Feb 26, 2026
d99b3da
Merge pull request #6136 from owid/admin-tabs
sophiamersmann Feb 26, 2026
98a8e55
Merge pull request #6152 from owid/fix-valid-chart-types-projected
sophiamersmann Feb 26, 2026
f6a9967
🔨 update default x-axis for scatters
sophiamersmann Feb 26, 2026
27ac78f
✨ update chart title for scatters
sophiamersmann Feb 26, 2026
43dbe16
feat(search): add comprehensive autocomplete test coverage (#6142)
mlbrgl Feb 26, 2026
8933c51
Merge pull request #6154 from owid/update-scatter-x-default
sophiamersmann Feb 26, 2026
dbc7cdf
Merge pull request #6153 from owid/scatter-title
sophiamersmann Feb 26, 2026
013d769
Initial plan
Copilot Feb 17, 2026
dc15ce0
fix: use getIndexName for all SearchIndexName.Pages references in que…
Copilot Feb 17, 2026
e5b744d
refactor: use PAGES_INDEX constant instead of getIndexName calls
Copilot Feb 17, 2026
bcc0dd4
refactor: use PAGES_INDEX and CHARTS_INDEX constants throughout codebase
Copilot Feb 17, 2026
5537604
🔨 Refactor replace remaining direct access to SearchIndexName enums
mlbrgl Feb 26, 2026
37a2813
🤖 style: prettify code
mlbrgl Feb 26, 2026
c564b66
✅🤖 Fix flaky BDD test for search country extraction
mlbrgl Feb 26, 2026
5f49ba0
Refactor: Consolidate index name constants; fix missing prefix in que…
mlbrgl Feb 26, 2026
10bad18
feat: replace markdown conversion with direct plaintext extraction fo…
mlbrgl Feb 16, 2026
68994b8
🐛🤖 Hydrate gdoc attachments in bulk Algolia indexing
mlbrgl Feb 19, 2026
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
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
25 changes: 21 additions & 4 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,8 +74,8 @@ jobs:
with:
runPostinstallScripts: false

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

eslint:
runs-on: ubuntu-latest
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"
]
}
12 changes: 0 additions & 12 deletions .prettierignore

This file was deleted.

6 changes: 4 additions & 2 deletions .vscode/extensions.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,10 @@
"recommendations": [
"dbaeumer.vscode-eslint",
"editorconfig.editorconfig",
"esbenp.prettier-vscode",
"oxc.oxc-vscode",
"mrmlnc.vscode-scss",
"vitest.explorer"
"vitest.explorer",
"ms-playwright.playwright",
"cucumberopen.cucumber-official"
]
}
22 changes: 16 additions & 6 deletions .vscode/settings.json
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,9 @@
"editor.insertSpaces": true,
"editor.tabSize": 4,
"editor.detectIndentation": false,
"editor.defaultFormatter": "esbenp.prettier-vscode",
"editor.defaultFormatter": "oxc.oxc-vscode",

"oxc.fmt.configPath": ".oxfmtrc.json",
"files.insertFinalNewline": false,
"search.exclude": {
".yarn": true,
Expand All @@ -20,10 +22,18 @@
"typescript.preferences.importModuleSpecifierEnding": "js",
"javascript.preferences.importModuleSpecifierEnding": "js",
"[sql]": {
"editor.defaultFormatter": "inferrinizzard.prettier-sql-vscode"
"editor.defaultFormatter": "ReneSaarsoo.sql-formatter-vsc"
},
"Prettier-SQL.keywordCase": "upper",
"Prettier-SQL.SQLFlavourOverride": "mysql",
"Prettier-SQL.expressionWidth": 80,
"prettier.semi": false
"SQL-Formatter-VSCode.denseOperators": true,
"SQL-Formatter-VSCode.linesBetweenQueries": 1,
"SQL-Formatter-VSCode.insertSpacesOverride": true,
"SQL-Formatter-VSCode.ignoreTabSettings": true,
"SQL-Formatter-VSCode.tabSizeOverride": 2,
"SQL-Formatter-VSCode.dialect": "mysql",
"[typescriptreact]": {
"editor.defaultFormatter": "oxc.oxc-vscode"
},
"[typescript]": {
"editor.defaultFormatter": "oxc.oxc-vscode"
}
}
2 changes: 2 additions & 0 deletions .yarnrc.yml
Original file line number Diff line number Diff line change
Expand Up @@ -9,8 +9,10 @@ logFilters:
nodeLinker: node-modules
npmMinimalAgeGate: 1440 # 24 hours
npmPreapprovedPackages:
- "@typescript/*"
- react
- react-dom
- typescript
- vite
- vitest
enableScripts: false
10 changes: 6 additions & 4 deletions CLAUDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,13 +2,13 @@

- 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

When you have completed implementing a big set of changes, run `yarn typecheck` and fix any errors you have.
When you have completed implementing a big set of changes, run `yarn fixFormatChanged > /dev/null 2>&1 && yarn typecheck` and fix any errors you have.

When you want to create a git commit, refer to docs/agent-guidelines/commit-messages.md for instructions.

Expand Down Expand Up @@ -37,14 +37,16 @@ Some key directories, going roughly along the dependency chain from the most sta
- ./baker - code that "bakes" our website by rendering React to static HTML
- ./adminSiteServer - internal API for our admin
- ./adminSiteClient - client UI of the admin
- ./bespoke - self-contained custom data viz components embedded in articles via Shadow DOM. Each project under bespoke/projects/ has its own build. See bespoke/readme.md for details.
- ./devTools - various utilities
- ./functions - CloudFlare Functions. Most of our website is static but all our charts under https://ourworldindata.org/grapher/* are behind CF functions. These handle dynamic thumbnail generation, data downloads for end users etc.

# Database documentation

Our main datastore is a mysql 8 database. The documentation for this lives in db/docs - there is README.md file which is a good overview and starting point, then one TABLE-NAME.yml file per table describing the table in more detail. ALWAYS list the directory db/docs/ to understand which tables are available and read the relevant table description files before constructing a query or writing a migration.
When creating a new migration, make sure to read the [database README](./db/readme.md).

You can run (read only) queries against the database with `yarn query "QUERY TEXT"` - e.g. if you need to understand the contents of a table of the cardinality of various tables.
You can run (read only) queries against the database with `yarn query "QUERY TEXT"` - e.g. if you need to understand the contents of a table or the cardinality of various tables. Use `yarn query -s "QUERY TEXT"` to query the staging database for the current git branch (e.g., on branch `images-pageviews` it connects to `staging-site-images-pageviews`).

# Additional documentation

Expand Down
Loading