when-am-i / commit
data: correct Boston calendars (Julian until 1752) + Massachusett coexistence
README.md | 44 ++++++------- screenshots/app/01-landing.png | Bin 340620 -> 341291 bytes screenshots/app/02-boston-1650.png | Bin 0 -> 1571824 bytes screenshots/app/02-boston-1700.png | Bin 1666312 -> 0 bytes screenshots/app/03-boston-1800.png | Bin 1664908 -> 1573476 bytes .../boston/01-algonquian-lunar-calendar.png | Bin 0 -> 1430463 bytes screenshots/calendars/boston/01-gregorian.png | Bin 1660225 -> 0 bytes .../boston/02-algonquian-lunar-calendar.png | Bin 1661597 -> 0 bytes screenshots/calendars/boston/02-julian.png | Bin 0 -> 1430040 bytes screenshots/calendars/boston/03-gregorian.png | Bin 0 -> 1429997 bytes scripts/generate-screenshots.mts | 8 +-- src/data/calendars/SCHEMA.json | 1 + src/data/calendars/SCHEMA.md | 12 ++++ src/data/calendars/boston.json | 69 +++++++++++---------- 14 files changed, 77 insertions(+), 57 deletions(-) diff --git a/README.md b/README.md index 6a80449..e92fb0d 100644 --- a/README.md +++ b/README.md @@ -86,7 +86,11 @@ crashes, the error report additionally includes the error message and stack. Calendar region and era data is stored as flat JSON files in `src/data/calendars/`. Each file describes a region (using GeoJSON geometry) and its calendar eras over time. -### Example: `src/data/calendars/boston.json` +### Example (abbreviated): based on `src/data/calendars/boston.json` + +Note how eras can **overlap in time** — the Massachusett and colonial calendars +both apply in 1650s Boston, so the app returns both answers. (The real file also +has a "New Style (Gregorian)" era from 1752 onward.) ```json { @@ -96,35 +100,33 @@ Each file describes a region (using GeoJSON geometry) and its calendar eras over "type": "Polygon", "coordinates": [ [ - [-71.1912, 42.2279], - [-71.1912, 42.3967], - [-70.9860, 42.3967], - [-70.9860, 42.2279], - [-71.1912, 42.2279] + [-71.30, 42.25], + [-71.05, 42.50], + [-70.92, 42.41], + [-71.12, 42.22], + [-71.30, 42.25] ] ] } }, "eras": [ { - "name": "Common Era (AD)", - "start": "1750-01-01", + "name": "Massachusett reckoning", + "start": null, "end": null, - "calendar": "Gregorian", - "description": "Used after British colonization.", - "sources": [ - "https://en.wikipedia.org/wiki/Gregorian_calendar" - ] + "calendar": "Algonquian lunar calendar", + "usedBy": "the Massachusett people", + "description": "Lunar and seasonal reckoning of the Massachusett, the Algonquian people of the Boston area.", + "sources": ["https://en.wikipedia.org/wiki/Massachusett"] }, { - "name": "Pre-Colonial", - "start": null, - "end": "1750-01-01", - "calendar": "Algonquian lunar calendar", - "description": "Used by indigenous peoples before colonization.", - "sources": [ - "https://en.wikipedia.org/wiki/Algonquian_peoples" - ] + "name": "Colonial (Old Style)", + "start": "1630-09-17", + "end": "1752-09-14", + "calendar": "Julian", + "usedBy": "English colonists", + "description": "English colonists used the Julian calendar ('Old Style') until the 1752 reform.", + "sources": ["https://en.wikipedia.org/wiki/Old_Style_and_New_Style_dates"] } ] } diff --git a/screenshots/app/01-landing.png b/screenshots/app/01-landing.png index cd22e0c..ac6a6da 100644 Binary files a/screenshots/app/01-landing.png and b/screenshots/app/01-landing.png differ diff --git a/screenshots/app/02-boston-1650.png b/screenshots/app/02-boston-1650.png new file mode 100644 index 0000000..f3b6617 Binary files /dev/null and b/screenshots/app/02-boston-1650.png differ diff --git a/screenshots/app/02-boston-1700.png b/screenshots/app/02-boston-1700.png deleted file mode 100644 index 83a4c59..0000000 Binary files a/screenshots/app/02-boston-1700.png and /dev/null differ diff --git a/screenshots/app/03-boston-1800.png b/screenshots/app/03-boston-1800.png index 3ce776f..7c9378b 100644 Binary files a/screenshots/app/03-boston-1800.png and b/screenshots/app/03-boston-1800.png differ diff --git a/screenshots/calendars/boston/01-algonquian-lunar-calendar.png b/screenshots/calendars/boston/01-algonquian-lunar-calendar.png new file mode 100644 index 0000000..2400e16 Binary files /dev/null and b/screenshots/calendars/boston/01-algonquian-lunar-calendar.png differ diff --git a/screenshots/calendars/boston/01-gregorian.png b/screenshots/calendars/boston/01-gregorian.png deleted file mode 100644 index 81d39b6..0000000 Binary files a/screenshots/calendars/boston/01-gregorian.png and /dev/null differ diff --git a/screenshots/calendars/boston/02-algonquian-lunar-calendar.png b/screenshots/calendars/boston/02-algonquian-lunar-calendar.png deleted file mode 100644 index f841f78..0000000 Binary files a/screenshots/calendars/boston/02-algonquian-lunar-calendar.png and /dev/null differ diff --git a/screenshots/calendars/boston/02-julian.png b/screenshots/calendars/boston/02-julian.png new file mode 100644 index 0000000..63c16a1 Binary files /dev/null and b/screenshots/calendars/boston/02-julian.png differ diff --git a/screenshots/calendars/boston/03-gregorian.png b/screenshots/calendars/boston/03-gregorian.png new file mode 100644 index 0000000..7eaeb49 Binary files /dev/null and b/screenshots/calendars/boston/03-gregorian.png differ diff --git a/scripts/generate-screenshots.mts b/scripts/generate-screenshots.mts index 575af46..80710cb 100644 --- a/scripts/generate-screenshots.mts +++ b/scripts/generate-screenshots.mts @@ -14,13 +14,13 @@ const OUT_DIR = path.join(REPO_ROOT, 'screenshots', 'app'); const STATES = [ { name: '01-landing', query: '', desc: 'Landing (default 1700, no pin)' }, { - name: '02-boston-1700', - query: '?lat=42.30&lng=-71.06&zoom=10&year=1700&month=6&day=15', - desc: 'Boston, 1700 — Algonquian (descriptive-only)', + name: '02-boston-1650', + query: '?lat=42.32&lng=-71.06&zoom=10&year=1650&month=6&day=15', + desc: 'Boston, 1650 — coexistence (Massachusett + colonial Julian)', }, { name: '03-boston-1800', - query: '?lat=42.30&lng=-71.06&zoom=10&year=1800&month=6&day=15', + query: '?lat=42.32&lng=-71.06&zoom=10&year=1800&month=6&day=15', desc: 'Boston, 1800 — Gregorian', }, ]; diff --git a/src/data/calendars/SCHEMA.json b/src/data/calendars/SCHEMA.json index d5e9b0a..9d01be8 100644 --- a/src/data/calendars/SCHEMA.json +++ b/src/data/calendars/SCHEMA.json @@ -12,6 +12,7 @@ "start": "YYYY-MM-DD|null (start date, null for earliest)", "end": "YYYY-MM-DD|null (end date, null for present)", "calendar": "string (calendar system name)", + "usedBy": "string (optional — whose calendar this is, e.g. 'English colonists')", "description": "string (optional)", "sources": [ "string (URL or citation)" diff --git a/src/data/calendars/SCHEMA.md b/src/data/calendars/SCHEMA.md index a511bf7..9ab39db 100644 --- a/src/data/calendars/SCHEMA.md +++ b/src/data/calendars/SCHEMA.md @@ -20,9 +20,21 @@ Each file describes a region and its calendar eras. "start": "YYYY-MM-DD|null (start date, null for earliest)", "end": "YYYY-MM-DD|null (end date, null for present)", "calendar": "string (calendar system name)", + "usedBy": "string (optional — whose calendar this is, e.g. 'English colonists')", "description": "string (optional)", "sources": ["string (URL or citation)"] } ] } ``` + +## Notes + +- Dates (`start`/`end`) are **proleptic Gregorian** `YYYY-MM-DD`. They are + compared as half-open intervals `[start, end)`; `null` means open-ended. +- **Eras may overlap in time.** Parallel calendars coexisting at the same place + and time is supported — each is shown as a separate answer (e.g. the + Massachusett and colonial calendars both apply in 1650s Boston). +- `usedBy` labels whose answer it is, shown as "Ask <usedBy>: …". +- A calendar with no continuous numeric year (e.g. an observational lunar + calendar) is shown descriptively rather than converted to a number. diff --git a/src/data/calendars/boston.json b/src/data/calendars/boston.json index 98af870..c1d8c75 100644 --- a/src/data/calendars/boston.json +++ b/src/data/calendars/boston.json @@ -5,50 +5,55 @@ "type": "Polygon", "coordinates": [ [ - [ - -71.1912, - 42.2279 - ], - [ - -71.1912, - 42.3967 - ], - [ - -70.9860, - 42.3967 - ], - [ - -70.9860, - 42.2279 - ], - [ - -71.1912, - 42.2279 - ] + [-71.30, 42.25], + [-71.25, 42.46], + [-71.05, 42.50], + [-70.92, 42.41], + [-70.95, 42.28], + [-71.12, 42.22], + [-71.30, 42.25] ] ] } }, "eras": [ { - "name": "Common Era (AD)", - "start": "1750-01-01", + "name": "Massachusett reckoning", + "start": null, "end": null, - "calendar": "Gregorian", - "description": "Used after British colonization.", + "calendar": "Algonquian lunar calendar", + "usedBy": "the Massachusett people", + "description": "Lunar and seasonal reckoning of the Massachusett, the Algonquian people of the Boston area. Their society was devastated by the 1616–1619 epidemic and colonization, but the Massachusett endure and their reckoning remains a valid way to answer the question.", "sources": [ - "https://en.wikipedia.org/wiki/Gregorian_calendar" + "https://en.wikipedia.org/wiki/Massachusett", + "https://en.wikipedia.org/wiki/Algonquian_peoples", + "https://en.wikipedia.org/wiki/King_Philip%27s_War" ] }, { - "name": "Pre-Colonial", - "start": null, - "end": "1750-01-01", - "calendar": "Algonquian lunar calendar", - "description": "Used by indigenous peoples before colonization.", + "name": "Colonial (Old Style)", + "start": "1630-09-17", + "end": "1752-09-14", + "calendar": "Julian", + "usedBy": "English colonists", + "description": "After Boston's founding in 1630, English colonists used the Julian calendar ('Old Style'), as in Britain, until the 1752 calendar reform.", "sources": [ - "https://en.wikipedia.org/wiki/Algonquian_peoples" + "https://en.wikipedia.org/wiki/Boston", + "https://en.wikipedia.org/wiki/Old_Style_and_New_Style_dates", + "https://en.wikipedia.org/wiki/Julian_calendar" + ] + }, + { + "name": "New Style (Gregorian)", + "start": "1752-09-14", + "end": null, + "calendar": "Gregorian", + "usedBy": "British colonists, then Americans", + "description": "Britain and its colonies adopted the Gregorian calendar in 1752: Wednesday 2 September (Julian) was followed by Thursday 14 September (Gregorian).", + "sources": [ + "https://en.wikipedia.org/wiki/Calendar_(New_Style)_Act_1750", + "https://en.wikipedia.org/wiki/Gregorian_calendar" ] } ] -} \ No newline at end of file +}