Releases: chaunceygardiner/weewx-skyfield
Release list
Release v1.16
weewx-skyfield 1.16
Two things in this release: a concerted effort to compute everything
natively in Skyfield — after 1.16, everything astronomical the built-in
PyEphem almanac ever answered is computed natively, and what remains in
the fallback is bookkeeping and deprecated names — and a complete
Spanish translation (Beta, awaiting native-speaker review — corrections
and reviewers very welcome). Drop-in upgrade from any 1.x — install
over it, no config changes; nothing on the page changes. The one
caveat: a template that read ha or hlon through the PyEphem
fallback now gets decimal degrees, not radians — drop any
math.degrees() conversion.
What's new
-
Everything astronomical, natively. PyEphem is now needed for
nothing of substance. Added in 1.16:$almanac.<body>.ha— the local apparent hour angle, for every
body and named star ($almanac.rigel.ha). A plain float in
signed decimal degrees like the almanac's other coordinates: 0° at
transit, negative east of the meridian — the standard convention.
(PyEphem'shais radians, usually wrapped to 0–2π — hence the
caveat above.)$almanac.<body>.hour_angle— its unit-aware sibling: a
ValueHelper honoring the report's unit settings and formatting,
besideazimuth,altitudeandhlongitude.$almanac.<body>.hlon— PyEphem's own spelling ofhlong, in
decimal degrees, the XEphem sun-reports-Earth convention included.$almanac.moon.subsolar_lat— the selenographic latitude of the
point where the sun is overhead, the natural partner ofcolong
and computed from the same Meeus ch. 53 machinery. Like the
librations it is a radians float matching PyEphem's scale, and
carries the same answer in decimal degrees as
$almanac.moon.subsolar_lat.degrees.$almanac.moon.moon_phase— PyEphem's raw 0–1 illuminated
fraction (exactlyphase/100; the top-level$almanac.moon_phase
— the phase name — is unchanged).
What still falls through to PyEphem, deliberately:
a_epoch— the epoch stamp of PyEphem's astrometric coordinates;
data plumbing, not astronomy.rise_time,rise_az,transit_time,transit_alt,set_time,
set_az— PyEphem's own deprecated Body attributes;rise,
set,transitand friends are the supported, native vocabulary.
With PyEphem installed these still work through the fallback; without
it they are per-tag errors, never a broken report. -
Spanish ships (Beta).
lang/es.confis a complete translation:
the page prose, every panel string, the body names and all 88
constellation names, which follow the Spanish Wikipedia's
Anexo:Constelaciones
(the IAU standardizes only the Latin names). The moon phases and
compass points are as in WeeWX's own Spanish lang file, so a Spanish
station reads consistently across skins — west is O, the SSW compass
point SSO. One line turns it on:[StdReport] [[SkyfieldReport]] lang = esBeta until a native speaker has reviewed it — corrections are very
welcome as issues or pull requests. Tests keep the Spanish complete
the same way they keep the German, French and Dutch: new strings
cannot ship untranslated.And single-column, as a tablet or phone sees it:
Requirements
- Python 3.9 or later
- WeeWX 5.2 or later
- Skyfield (1.47 or later) and NumPy in WeeWX's Python environment (see the
README); PyEphem is NOT required
Installing/upgrading
Download weewx-skyfield.zip from this release, then:
weectl extension install weewx-skyfield.zip
Restart WeeWX. No weewx.conf changes are needed when upgrading from
1.x. Note that upgrading replaces the bundled skin (skins/Skyfield/,
including its lang/ files) — if you have edited an installed lang file
(trying out corrections, say), save a copy or send the corrections
upstream first; local additions such as extra star names survive
upgrades best as [[[Almanac]]] entries in weewx.conf (see the
manual).
Release v1.15
weewx-skyfield 1.15
A theme and a translation release: the Sky page gains a theme option —
dark (the default), light, or auto, which follows the sun at generation
time; a complete Dutch translation ships (Beta, awaiting native-speaker
review — corrections and reviewers very welcome); the French
translation, its review now complete, drops its Beta label; and every
radians-valued almanac angle now also answers in decimal degrees
($almanac.moon.parallactic_angle.degrees). Drop-in upgrade from any
1.x — install over it, no config changes; at the default theme the page
looks as before (one caption is reworded, see below).
What's new
-
The Sky page has a theme.
theme = dark | light | autoin the
[[SkyfieldReport]]section ofweewx.conf:darkis the night
plate the page has always had and stays the default;lightrenders
the whole page — panels included — on the paper-atlas plate the
embeddable panels have offered since 1.5;autopicks light while
the sun is up at the moment the page is generated and dark otherwise.
The page regenerates every report cycle, so the auto flip follows
sunrise and sunset within one archive interval — the colors are baked
in at generation time, still with no JavaScript. Asked for by a
Belchertown user whose skin switches themes the same way (issue #3).[StdReport] [[SkyfieldReport]] theme = autoWith the light plate in play, the Rise & Set caption no longer names
its tick's color — "the tick across each bar is the transit" — since
the tick is ivory only on the dark plate. Reworded in all languages. -
Dutch ships (Beta).
lang/nl.confis a complete translation:
the page prose, every panel string, the body names and all 88
constellation names, which follow the Dutch Wikipedia's
Lijst van sterrenbeelden
(the IAU standardizes only the Latin names). The moon phases and
compass points are as in WeeWX's own Dutch lang file, so a Dutch
station reads consistently across skins. One line turns it on:[StdReport] [[SkyfieldReport]] lang = nlBeta until a native speaker has reviewed it — corrections are very
welcome as issues or pull requests. Tests keep the Dutch complete
the same way they keep the German and French: new strings cannot
ship untranslated. -
French is out of Beta. The native-speaker review is complete and
confirmed the translation as shipped. -
Degrees on every radians angle. The PyEphem-shaped angles —
parallactic_angle, the moon'slibration_lat/libration_long/
colong, Jupiter'scmlI/cmlII, Saturn'searth_tilt/sun_tilt,
and$almanac.separation(...)— now carry the same answer in decimal
degrees: append.degrees($almanac.moon.parallactic_angle.degrees);
.radiansnames the value itself. The values are unchanged plain
floats in radians, matching PyEphem's numeric scale, so existing
templates — including themath.degrees($...)idiom and the
PyEphem-style explicit call$almanac.venus.parallactic_angle()—
keep working. The parens-freeparallactic_anglenow also resolves
outside Cheetah, so loopdata almanac fields can read
almanac.moon.parallactic_angle.degrees. Asked for by a user. -
Docs: where Earth's coordinates live. The body lists now say
explicitly that there is no$almanac.earth— Earth is the observer,
not a served body (PyEphem has no Earth body either) — and point to
$almanac.sun.hlongitude/hlatitude, which report Earth's
heliocentric coordinates per the XEphem convention.
Requirements
- Python 3.9 or later
- WeeWX 5.2 or later
- Skyfield (1.47 or later) and NumPy in WeeWX's Python environment (see the
README); PyEphem is NOT required
Installing/upgrading
Download weewx-skyfield.zip from this release, then:
weectl extension install weewx-skyfield.zip
Restart WeeWX. No weewx.conf changes are needed when upgrading from
1.x. Note that upgrading replaces the bundled skin (skins/Skyfield/,
including its lang/ files) — if you have edited an installed lang file
(trying out corrections, say), save a copy or send the corrections
upstream first; local additions such as extra star names survive
upgrades best as [[[Almanac]]] entries in weewx.conf (see the
manual).
Release v1.14
weewx-skyfield 1.14
A fix and a translation release: on stations with a report-wide
duration unit preference, every duration on the Sky page rendered as
0h 00m — now fixed. A complete French translation of the Sky page
ships (Beta, awaiting native-speaker review — corrections and reviewers
very welcome), and the German translation, its review now complete,
drops its Beta label. Drop-in upgrade from any 1.x — install over it,
no config changes; an English or German page looks exactly as before.
What's fixed
-
Durations rendered as 0h 00m under a unit-group preference. If a
report's[Units] [[Groups]]set a duration preference (e.g. a
station-widegroup_deltatime = hour, a customization some popular
skins suggest), the Daylight line, the almanac table's Up for
column and the timeline tooltips all showed0h 00m(reported from
the field — thank you). A WeeWX ValueHelper converts to the report's
preferred units when it is built, so its raw value honors those
preferences; the panels' arithmetic assumed seconds. The page now
pins the unit at every raw read (durations to seconds, times to unix
epoch — closing the same latent hazard for stations preferring
unix_epoch_ms), so the panels render identically whatever the
report's unit preferences. Formatted times already honored them and
are unchanged, and skins embedding the panels get the fix for free. -
Test suite on older PyEphem. The moon's magnitude-parity test now
skips on PyEphem before 4.2 (e.g. Debian bookworm's python3-ephem
4.1.x), whose cruder lunar magnitude model failed the comparison; the
moon's own regression value stays pinned independently of PyEphem.
What's new
-
French ships (Beta).
lang/fr.confis a complete translation:
the page prose, every panel string, the body names and all 88
constellation names, which follow the French Wikipedia's
Liste des constellations
(the IAU standardizes only the Latin names). The moon phases and
compass points are as in WeeWX's own French lang file, so a French
station reads consistently across skins. One line turns it on:[StdReport] [[SkyfieldReport]] lang = frBeta until a native speaker has reviewed it — the file notes the
judgment calls a reviewer may weigh, and corrections are very welcome
as issues or pull requests. Tests keep the French complete the same
way they keep the German: new strings cannot ship untranslated. -
German is out of Beta. The native-speaker review is complete and
confirmed the translation as shipped, including the constellation
names; the alternatives noted inde.confstay as notes for future
contributors.
Requirements
- Python 3.9 or later
- WeeWX 5.2 or later
- Skyfield (1.47 or later) and NumPy in WeeWX's Python environment (see the
README); PyEphem is NOT required
Installing/upgrading
Download weewx-skyfield.zip from this release, then:
weectl extension install weewx-skyfield.zip
Restart WeeWX. No weewx.conf changes are needed when upgrading from
1.x. Note that upgrading replaces the bundled skin (skins/Skyfield/,
including its lang/ files) — if you have edited an installed lang file
(trying out corrections, say), save a copy or send the corrections
upstream first; local additions such as extra star names survive
upgrades best as [[[Almanac]]] entries in weewx.conf (see the
manual).
Release v1.13
weewx-skyfield 1.13
This release makes the constellations speak your language.
$almanac.<body>.constellation still renders the Latin name it always
has — but the value now carries the other views of the same answer as
attributes: .abbr the IAU abbreviation, .label the report's
translated display name, .name the Latin name again. The German
translation gains all 88 constellation names, and the Sky page's planet
chips use them ("im Sternbild Löwe"). Drop-in upgrade from any 1.x —
install over it, no config changes; existing tags render exactly as
before in every language.
What's new
-
Constellations are translatable. Add an
[[Constellations]]
subsection to the report's[Almanac]section, keyed by IAU
abbreviation (Psc = Fische), and
$almanac.saturn.constellation.labelrenders the translated name;
an untranslated constellation falls back to the Latin. Works for
every body and named star, follows each report's own language, and
needs no PyEphem. The Sky page's planet chips render it, and the
English reference dictionary (lang/en.conf) ships the full Latin
set as the key list for translators. -
The constellation tag is a richer value — with nothing breaking.
The tag is the same Latin-name string it has been since 1.9:
templates that compare it (== 'Leo') and weewx-loopdata fields
that publish it see exactly what they always have, in every
language. The attributes ride along:.abbr,.labeland.name
work both as report tags and as loopdata almanac fields
(almanac.mars.constellation.labelrenders in the language of
loopdata's target report).$almanac.<body>.constellation_abbr
remains as a legacy alias for.abbr. -
German: all 88 constellations (Beta). The names follow the
German Wikipedia's
Liste der Sternbilder
(the IAU standardizes only the Latin names), verified name-by-name
and cited inde.conf, which now also records the sources of the
1.12 body names. Beta with the rest of the German: where usage has
two common forms (Delphin/Delfin, Indianer/Inder, ...) the file
notes the alternatives, and corrections from German speakers remain
very welcome.
Requirements
- Python 3.9 or later
- WeeWX 5.2 or later
- Skyfield (1.47 or later) and NumPy in WeeWX's Python environment (see the
README); PyEphem is NOT required
Installing/upgrading
Download weewx-skyfield.zip from this release, then:
weectl extension install weewx-skyfield.zip
Restart WeeWX. No weewx.conf changes are needed when upgrading from
1.x; German pages pick up the constellation names automatically on the
first report cycle after the restart. Note that upgrading replaces the
bundled skin (skins/Skyfield/, including its lang/ files) — if you
have edited the installed de.conf (trying out corrections, say), save
a copy or send the corrections upstream first; local additions such as
extra star names survive upgrades best as [[[Almanac]]] entries in
weewx.conf (see the manual).
Release v1.12
weewx-skyfield 1.12
This release makes the Sky page speak your language: every string it
renders is now translatable through WeeWX's own lang-file mechanisms, a
complete German translation ships with the skin (Beta), and a new
$almanac.<body>.label tag gives every body a translatable display name.
It also fixes the analemma's month labels, which silently vanished on
stations running a non-English OS locale. Drop-in upgrade from any 1.x —
install over it, no config changes; English pages render exactly as
before.
What's new
-
The Sky page is translatable — entirely through WeeWX's own
mechanisms; nothing new to learn if you have translated a WeeWX skin
before. Every string the page renders (captions, panel labels,
tooltips, chips, table headers, the footer) is a gettext-style
[Texts]key: the English string is the key, and a report falls
back to English one string at a time, so a partial translation is
fine and can never blank a panel. Body names follow the[Almanac]
section, compass cardinals the report's[Units][[Ordinates]]
directions, hemisphere letters[Labels]— the core-standard
sources. The skin ships its reference dictionary atlang/en.conf,
and a test keeps it exact in both directions: a rendered string
missing from the dictionary fails, and so does a dictionary entry
nothing renders. Details, including how skins that embed the panels
pick up translations, in the manual:
Translating the Sky page. -
German included (Beta).
lang/de.confis a complete translation,
kept complete by a test, so new strings cannot ship untranslated. Turn
it on per report inweewx.conf:[StdReport] [[SkyfieldReport]] lang = deBeta means the words, not the machinery: the translation awaits
native-speaker review, and a clumsy phrase is the worst it can do.
Corrections from German speakers are very welcome — as are further
languages: a lang file is a self-contained, no-code contribution. -
New tag
$almanac.<body>.label— the body's display name,
translated by the skin. Add the tag name to the report's[Almanac]
section (the same section that holdsmoon_phases), e.g.moon = Mond, and the tag renders "Mond"; untranslated bodies fall back to
the English name. Works for every body and named star, follows each
report's own language, and needs no PyEphem. weewx-loopdata almanac
fields (e.g.almanac.moon.label) render in the language of
loopdata's target report. -
FIX: analemma month labels on non-English locales. The months to
label (Jan, Mar, Jun, Sep, Nov) were picked by comparing
strftime('%b')output against the English abbreviations, so on a
station running a German, French, ... OS locale every label silently
vanished. Months are now picked by number, and the labels render in
the station's own locale — as the panel's dates always did. -
Skins embedding the panels: nothing changes for English skins. A
non-English skin brings the translations along the same way it brings
the CSS — the panels read[Texts]and[Almanac]from your
report, not from the bundled skin. The copy/merge recipe is in the
manual's
embedding section;
an out-of-date copied dictionary degrades gracefully (new strings
render in English), unlike out-of-date CSS.
Requirements
- Python 3.9 or later
- WeeWX 5.2 or later
- Skyfield (1.47 or later) and NumPy in WeeWX's Python environment (see the
README); PyEphem is NOT required
Installing/upgrading
Download weewx-skyfield.zip from this release, then:
weectl extension install weewx-skyfield.zip
Restart WeeWX. No weewx.conf changes are needed when upgrading from 1.x;
to put the bundled Sky page in German, add lang = de to the
[[SkyfieldReport]] section of weewx.conf — or put it under
[StdReport] [[Defaults]] to switch every skin that ships German
(Seasons included) in one line. Note that upgrading
replaces the bundled skin (skins/Skyfield/, now including its lang/
files) — if you customized it, save a copy first; local additions such as
extra star names survive upgrades best as [[[Almanac]]] entries in
weewx.conf (see the manual).
Release v1.11
weewx-skyfield 1.11
This release puts moonrise, moonset and transit times on the Sun's Path
panel's moon curve, and marks the curve's open ends — the answer to a
user's bug report about a gap in the moon's path. Drop-in upgrade from
any 1.x — install over it, no config changes.
What's new
- Times on the moon's path. The Sun's Path panel now labels moonrise,
moonset and the transit on the moon's dashed curve, in your skin's time
format, each with a hover tooltip. And where the curve is open — the
moon's 24-hour track never quite closes, because a lunar day runs about
50 minutes longer than a calendar day — the two ends now get dots
labeled 00 and 24: they are the moon's positions at the two midnights
bounding the day. A user spotted that opening at the top of the arc
near full moon (the moon transits around midnight then, which parks the
break at the apex) and reasonably read it as a bug. It is not a bug.
The moon genuinely does not cross those azimuths that day — and the
panel now says so: the endpoint dots' tooltips and the caption explain
the open curve. If your own skin embedssunpath_svgwith hand-copied
CSS rules, note the labels use a new class,moonlab— copy its rule
fromsky.css.
Requirements
- Python 3.9 or later
- WeeWX 5.2 or later
- Skyfield (1.47 or later) and NumPy in WeeWX's Python environment (see the
README); PyEphem is NOT required
Installing/upgrading
Download weewx-skyfield.zip from this release, then:
weectl extension install weewx-skyfield.zip
Restart WeeWX. No weewx.conf changes are needed when upgrading from 1.x.
Note that upgrading replaces the bundled skin (skins/Skyfield/) — if you
customized it, save a copy first.
Release v1.10
weewx-skyfield 1.10
This release fixes a startup failure on Skyfield 1.53 — the version Debian
trixie packages — that silently cost affected stations the whole Skyfield
almanac, and makes the Sky page footer report truthfully what computed the
page. Drop-in upgrade from any 1.x — install over it, no config changes.
What's fixed
- The almanac now starts on Skyfield 1.53. On 1.53 the in-memory
ephemeris kernel (the 1.6 SIGBUS guard) failed at startup with
'InMemorySpiceKernel' object has no attribute 'codes'and the almanac
declined to register. Reports then fell through to the built-in
PyEphem/weeutil almanac — planets and rise/set times still looked right,
but named stars,hip_*tags, Proxima Centauri, eclipses and
constellations were gone, which was easy to misread as a star-catalog
problem. The kernel now reuses Skyfield's own initialization verbatim
over the in-memory ephemeris bytes, so it tracks any Skyfield release's
internals exactly (verified against 1.53 and 1.54; 1.47 remains the
minimum).
What's new
- The Sky page footer is now a diagnostic. The full "Skyfield and the
JPL DE421 ephemeris · IAU-CSN star names · Hipparcos star data Credit:
ESA" credit was previously static text — it appeared even when the
almanac had failed (as with the 1.53 bug above, where a user quoted it
as evidence the star catalog had loaded). It is now generated from what
actually computed the page: the full credit only when the Skyfield
almanac is registered and its star catalog loaded;star catalog unavailable — see the weewxd logwhen stars are enabled but the catalog
failed;star catalog disabledunderstars = false; and when
weewx-skyfield never registered at all, the footer credits the built-in
almanac and points at the log.
Requirements
- Python 3.9 or later
- WeeWX 5.2 or later
- Skyfield (1.47 or later) and NumPy in WeeWX's Python environment (see the
README); PyEphem is NOT required
Installing/upgrading
Download weewx-skyfield.zip from this release, then:
weectl extension install weewx-skyfield.zip
Restart WeeWX. No weewx.conf changes are needed when upgrading from 1.x.
Note that upgrading replaces the bundled skin (skins/Skyfield/) — if you
customized it, save a copy first.
Release v1.9.1
weewx-skyfield 1.9.1
A markup-only patch release for the bundled Sky page: the page is now clean
under the current Nu Html Checker (v.Nu), whose living ruleset asks that
every <section> carry a heading. The almanac engine is untouched — every
tag behaves exactly as in 1.9 — and the page renders pixel-identically. It
is a drop-in upgrade: no weewx.conf changes, no new dependencies. If you
don't validate your generated HTML and haven't customized the skin, there
is nothing here you need.
What's new
- The Sky page's card titles are real headings. Each card's title
("The Sky Now · looking up", "Rise & Set · today", ...) was a styled
<p class="eyebrow">; it is now an<h2 class="eyebrow">, so every
card<section>carries the heading the HTML spec wants and the page
outlines cleanly (h1, then h2 per card, no skipped levels). This is
also a small accessibility win: screen readers and outline navigation
now see the cards as sections with names. - No visual change. The
.eyebrowrule gainsfont-weight:400, so
the titles keep their exact non-bold small-caps look. If you maintain a
customizedsky.css, addfont-weight:400to your.eyebrowrule when
you pick up this release'sindex.html.tmpl.
Requirements
- Python 3.9 or later
- WeeWX 5.2 or later
- Skyfield (1.47 or later) and NumPy in WeeWX's Python environment (see the
README); PyEphem is NOT required
Installing/upgrading
Download weewx-skyfield.zip from this release, then:
weectl extension install weewx-skyfield.zip
Restart WeeWX. No weewx.conf changes are needed when upgrading from 1.x.
Release v1.9
weewx-skyfield 1.9
This release adds two almanac tag families with no PyEphem counterpart — eclipses
visible from your station, and the constellation every body currently stands in — and
puts both on the Sky page. It is a drop-in upgrade: no weewx.conf changes, no new
dependencies, nothing downloaded at run time, and every existing tag behaves exactly
as before.
What's new
- Eclipse tags.
$almanac.next_lunar_eclipseand$almanac.next_solar_eclipse
(withprevious_counterparts) give the time of maximum of the nearest eclipse
visible from your station — the eclipsed body must be above the horizon at
maximum, so an eclipse on the other side of the world is skipped. Each has a
_typecompanion:penumbral/partial/totalfor lunar, and for solar the type
as seen from your location (partial/annular/total) — a station that catches
only the penumbra of a total eclipse reportspartial, which is what an observer
there will see. When a skin just wants "the next eclipse, whichever kind",
$almanac.next_eclipsepicks the sooner, with_kind(lunar/solar) and
_typecompanions. The time tags are ordinary formattable ValueHelpers; the next
visible eclipse can be years out, so include the year when formatting dates. - Constellation tags. Every body — planets, sun, moon, and every star — reports
the IAU constellation it stands in, judged from your station's topocentric view
against the official boundaries:$almanac.saturn.constellation("Pisces"),
$almanac.saturn.constellation_abbr("Psc"). The boundary map ships inside the
Skyfield library, so nothing is downloaded. - The Sky page shows both. The countdown row gains a chip for the next eclipse
visible from your station (lunar or solar, whichever comes sooner, with its locally
seen type), and each planet chip names the constellation the planet stands in. - The README explains the ephemeris choice. A new section, "Why the DE421
ephemeris (and not DE440)?", documents why the bundled DE421 is the right trade.
Requirements
- Python 3.9 or later
- WeeWX 5.2 or later
- Skyfield (1.47 or later) and NumPy in WeeWX's Python environment (see the
README); PyEphem is NOT required
Installing/upgrading
Download weewx-skyfield.zip from this release, then:
weectl extension install weewx-skyfield.zip
Restart WeeWX. No weewx.conf changes are needed when upgrading from 1.x.
Note that upgrading replaces the bundled skin (skins/Skyfield/) — if you
customized it, save a copy first.
Release v1.8
weewx-skyfield 1.8
The Sky page now lays out correctly on phones and tablets, and WeeWX can no
longer fail to shut down if the stop signal arrives during the almanac's
startup load. Nothing else changes: no weewx.conf edits, no tag changes.
This is a drop-in upgrade.
What's new
- The Sky page's single-column layout is fixed. Below 1160 px (phones
and most iPads) the page no longer shrinks every section to its content
width: the sky dome, timelines and table now fill the viewport as
intended. (The grid rule'salign-items:startcarried over into the
flex-column fallback; the fallback now setsalign-items:stretch.) - Shutdown can no longer be swallowed at startup. WeeWX stops by
raising an exception from its TERM signal handler, inside whatever code
is running when the signal lands. If that was the almanac engine's
startup — loading the ephemeris and star catalog — its log-and-continue
error handlers swallowed the exception and weewx failed to stop. They
now hand it back to WeeWX. (Report-time tag evaluation runs in WeeWX's
report thread and was never affected.)
Requirements
- Python 3.9 or later
- WeeWX 5.2 or later
- Skyfield (1.47 or later) and NumPy in WeeWX's Python environment (see the
README); PyEphem is NOT required
Installing/upgrading
Download weewx-skyfield.zip from this release, then:
weectl extension install weewx-skyfield.zip
Restart WeeWX. No weewx.conf changes are needed when upgrading from 1.x.
Note that upgrading replaces the bundled skin (skins/Skyfield/) — if you
customized it, save a copy first.


