The hardware and bandwidth for this mirror is donated by METANET, the Webhosting and Full Service-Cloud Provider.
If you wish to report a bug, or if you are interested in having us mirror your free-software or open-source project, please feel free to contact us at mirror[@]metanet.ch.
earthUI 0.8.0
Per-project settings: save /
restore
- Model configuration is now keyed by (project,
purpose) — the data file is no longer part of the key. A
project’s several input files (a small test extract, the full dataset)
share one variable/parameter configuration, so switching files keeps the
setup.
get_project_settings() and
set_project_settings() lost their
file_basename argument accordingly.
- Button-only save. The “Save current as default”
buttons are the save mechanism: the section 3 button
saves the target, effective date, and predictor configuration; the
section 4 button saves the earth call parameters and
the Allowed Interactions matrix. Each button updates only its own half
(read-merge), so they never clobber each other. Fit no longer
auto-saves — you can fit experimentally without overwriting
your saved default. There is no on-change auto-save.
- Save and restore are server-side and
DB-authoritative: configuration is written to / read from
projects.sqlite directly from the inputs at the render and
click, with no localStorage round-trip. This removes a class of restore
races and a JSON double-encoding bug that could corrupt a saved row on
the next save.
- The Effective Date field is shown in all purposes
(general/CMA and market values have an effective date too, not just
USPAP/IVS appraisals); it is still only used to compute
sale_age in appraisal/market modes.
Database durability
projects.sqlite opens in WAL
journaling mode where supported, for crash-safe writes and non-blocking
reads.
- The settings-table schema migration runs in a single
transaction with crash recovery: an interrupted upgrade rolls
back to the original table (no orphaned
_old, no
half-copied data), and a previously-stranded _old table is
restored on the next connect. Legacy per-file rows are collapsed to one
row per (project, purpose), keeping the most recent.
Bug fixes
- Predicting on raw data with a Date column as a model
predictor no longer errors (“subscript out of bounds” /
column-count mismatch). Newdata is now aligned to the trained frame
(
align_to_training_): date columns are coerced to the
model’s numeric encoding and factor levels are matched. Affects the
Intermediate Output and RCA exports.
fit_earth() drops a non-zero
newvar.penalty (with a message) when case weights are
present, since earth does not support that combination — previously it
errored mid-fit (notably in market/appraisal mode where a skipped row is
encoded as a zero weight).
- Character date columns are parsed with the same multi-format set as
validate_types(), so any column that validates as a date
also coerces (no more silent failures on MM/DD/YYYY and
similar).
Project model (regProj)
- New first-class project concept replaces the old
per-file workflow. A project is a stable, named entity at a fixed
location in the regProj tree
(
<root>/<purpose>/<flat_segment>/<os>_in/...
and <os>_out_<method>/...), holding all input
files, outputs, and settings together. Files within a project travel as
a unit.
- Top-of-sidebar Project picker with sort (Recent / A-Z) and a New
Project wizard that captures purpose, country, and admin-level cascade
with country-specific terminology.
- Path layout is flat:
<purpose>/<country>_<state>_<county>_<city>_<project>/<os>_in/<file>.
All admin levels concatenated into one segment via _.
Reduces depth from 13 to 8 directories under the regProj root. Encoded
by regproj_flat_segment(), decoded by
regproj_parse_flat().
- Cross-OS multi-leaf scaffold: every project gets
mac_in, mac_out_*, ubuntu_in,
ubuntu_out_*, win11_in,
win11_out_* siblings.
- Active-project model drives output paths automatically. The legacy
Output Folder field and Project Location cascade are gone — output
folder is set from the active project at session time.
- Section “Import Data” reads from the active project’s
<os>_in/; files added manually are picked up via
Refresh.
Geo data + variable-depth
admin schema
- New
geo.sqlite (in regProj root) replaces the old
.regproj-index.json. Two tables: countries and
admin_entries with variable depth via
(country, level, parent_codes) index. Supports any number
of admin levels per country.
- Comprehensive shipped data:
- US: 51 states, 3,076 counties, ~21,000 incorporated
places (Census).
- GB / DE / IT / FR / SE: full GeoNames-derived state
/ county / city data (~45,000 entries combined).
- SG: 1-level (planning area) data for
Singapore.
- Total ~70,000 admin entries shipped; users can add more via the
cascade’s “create new” path.
regproj_index_get/put API
unchanged for callers, just SQLite-backed now.
- DE specifically uses
admin3_code (Kreis) instead of
GeoNames’ admin2_code (Regierungsbezirk), matching how
German appraisers think about administrative geography.
Per-project settings
(projects.sqlite)
- New
projects.sqlite in regProj root replaces the
user-level settings.sqlite for project model settings.
Keyed by (flat_segment, file_basename), separate JSON
columns for earth, glmnet, and mgcv
settings/variables/interactions.
- Public API:
get_project_settings() and
set_project_settings() — read/write project settings
programmatically without launching the Shiny UI. Designed for ValEngr
integration and batch automation.
- Settings now travel with the regProj tree (sync, backup, share with
colleagues — all settings come too). User-level
settings.sqlite retained only for locale defaults.
Quarto report split:
Generate + Convert
- Section 9 — “Generate Quarto Report”: writes a
self-contained
.qmd bundle (source + plot assets +
reference.docx) under
<project>/mac_out_earth/<base>_qmd/. No Quarto
rendering happens at this step.
- Section 10 — “Convert Quarto Report”: file picker +
format checkboxes (HTML / Word / PDF). Renders any
.qmd
file (not just earthUI-generated) to selected formats. Useful for
combining reports across projects via Quarto’s
{{< include >}}.
- New exports:
generate_quarto_report(),
convert_quarto_file().
report_data.rds is now a lean ~hundreds-of-KB asset
(down from hundreds of MB) — the bulky earth model object is no longer
saved since the qmd reads pre-generated plots from disk.
- Quarto
.qmd template now self-renders against a sibling
report_data.rds when no params are passed, so
quarto preview Appraisal_1.qmd works standalone.
Settings tab
- New “regProj Root Folder” config in the Settings dropdown — set the
location of the regProj tree per machine. Persisted in the per-OS prefs
file at
R_user_dir("earthUI", "config")/prefs.json.
- Resolution order:
REGPROJ_ROOT env var → prefs file →
per-OS default (~/regProj Mac/Linux,
C:/regProj Win).
Other
- Server startup extends
PATH with
/usr/local/bin, /opt/homebrew/bin, and TinyTeX
bin paths so Quarto / pandoc / latex are findable from the Shiny session
even when launched from a stripped-PATH context.
- Per-session DB connections (one geo, one projects) — eliminates
per-render connection overhead.
- Sales Comparison Grid now exported as
build_sales_grid() from the package (extracted from the old
inst/app/sales_grid.R). Available to batch scripts and ValEngr.
earthUI 0.7.0
Per-Purpose Settings
- Switching purpose (General / Appraisal / Market) now fully clears
all state: imported data, model results, tabs, variable configuration,
and earth parameters. The app resets to a clean default state.
- Settings are now stored per purpose. localStorage keys include a
purpose suffix (
_general, _appraisal,
_market), so each purpose maintains independent variable
configuration, earth parameters, and interaction matrices for each
imported file.
- SQLite backup keys encode purpose (
filename||purpose),
so settings persist across browser sessions per purpose+file
combination.
- When a file is imported after a purpose switch, previously saved
settings for that file+purpose combination are automatically
restored.
- Backward-compatible migration detects old-format localStorage keys
(without purpose suffix) and copies them to the correct purpose-suffixed
key on first load.
Fitting Modal Auto-Dismiss
- The fitting modal and backdrop now auto-dismiss 1.5 seconds after
tabs finish rendering, preventing the overlay from blocking sidebar
sections.
- On error, the backdrop is removed immediately while the modal stays
visible with the close button so the user can read the error.
earthUI 0.6.0
Nord Theme Overhaul
- Navbar, sidebar, and all UI elements now use Bootstrap CSS variables
(
var(--bs-body-bg), var(--bs-body-color),
var(--bs-border-color)) instead of hardcoded colors, so
light and dark modes adapt correctly.
- Theme toggle button redesigned as a circular icon matching the
glmnetUI and mgcvUI style.
- Custom
data-eui-theme attribute replaces
data-bs-theme to avoid conflicts with Bootstrap 5’s
built-in color mode system.
- Consistent Nord palette usage across earthUI, glmnetUI, and
mgcvUI.
Predictor Settings Table
- Column headers “Include”, “Factor”, and “Linear” now render
vertically (rotated text), saving horizontal space.
- Checkbox columns grouped together (Include, Factor, Linear) with the
Special dropdown moved after them.
- Header row uses
position: sticky with a solid
theme-aware background so it stays fixed while scrolling the variable
list.
- Shows “Select a target variable above to configure predictors.” when
no target is selected, instead of an empty bordered bar.
Data Tab Fix
- Appraisal mode data preview now shows all columns on initial load
when no target or predictors are selected yet. Previously only the “row”
column was visible.
Section Info Icons
- Blue “?” info icons added to section headers (Sections 1-4, 6-9)
with Bootstrap popovers describing each section’s purpose.
- Info icons are right-justified within the sidebar using absolute
positioning. Popovers open to the left to avoid overflow.
Purpose Mode Improvements
- Switching purpose (General / Appraisal / Market) now clears all
model results, RCA state, and report assets to prevent stale data.
- Purpose radio selection saved back to localStorage for
persistence.
- Buttons updated to use Frost-palette classes
(
btn-primary, btn-outline-secondary) instead
of Aurora classes (btn-success, btn-danger)
per the shared UI conventions.
earthUI 0.2.0
3D Interaction Plot Fix
- Fixed plotly surface transposition bug —
add_surface()
uses z[i,j] at (x[j], y[i]), the transpose of
base R persp(). Data point dots now correctly align with
the surface in interaction contribution graphs.
Report Rendering
- New
prepare_report_assets() function pre-generates all
plots (PNG + PDF) and pre-computes all data, so
render_report() only runs Quarto/pandoc format
conversion.
render_report() gains assets_dir parameter
to accept pre-generated assets for faster multi-format rendering.
- Report rendering now runs asynchronously via
callr::r_bg() with a modal dialog showing elapsed time and
Quarto progress. The app stays responsive.
- HTML reports now use KaTeX instead of MathJax for faster math
rendering.
- Word reports now include “Page X of Y” page numbers in the
footer.
Post-Fit UX
- Results tabs appear immediately with “Waiting for processing to
complete.” messages while the model is fitting. The RCA Adjustments tab
shows “7. Calculate RCA Adjustments & Download must first be
initiated and completed.”
- The Data tab persists across fits — same output IDs used before and
after fitting, so the data table is never destroyed and recreated.
- Tab content renders on-demand (only the active tab computes).
auto_export_for_mgcv_() (saveRDS) now runs in a
background process to avoid blocking the UI after fit completion.
- Fit log and mgcv auto-export deferred via
session$onFlushed() and callr::r_bg() so tabs
appear instantly.
Event Logging
- New session event log:
<filename>_earthui_log.txt
in the output folder records start/end timestamps and elapsed times for
Model Fit, Download Output, RCA Adjustments, Sales Grid generation, and
Report rendering. One file per data file, appended to across
operations.
Testing
- 71 new tests (1026 total):
eval_g_function_() direct unit tests for all component
types (17 tests)
- Plotly surface transposition verification (15 tests)
prepare_report_assets() and
render_report() with assets_dir (15
tests)
- Expanded export report error handling tests
earthUI 0.1.3
Locale & Regional Settings
- Country-based locale system with 31 country presets controlling CSV
separator, decimal mark, thousands separator, date format ordering, and
paper size.
- Country dropdown with individual override dropdowns for Paper, CSV
sep, Decimal, and Date format.
- Global locale defaults saved via “Save as my default” (SQLite
persistence), independent of per-file settings.
- Number formatting on plot axes and slope labels adapts to locale
(e.g., German uses period thousands, Finnish uses space, Swiss uses
apostrophe).
- CSV import uses locale-aware separator and decimal mark.
- PDF reports respect locale paper size (Letter or A4).
- Date parsing tries locale-preferred format order first (MDY for US,
DMY for Europe, YMD for Sweden/Japan).
- Currency symbols removed from all outputs — earthUI is now
currency-agnostic.
earthUI 0.1.2
Sales Comparison Grid
(Appraisal Mode)
- New Sales Comparison Grid output for appraisal workflows — generates
multi-sheet Excel workbooks with subject and up to 30 comps (3 per
sheet).
- Auto-recommended comp selection based on gross adjustment percentage
(< 25%), sorted by gross adjustment.
- Sale Price / Concessions / Net SP row with formula-based Net
SP.
- Grouped rows for Location (longitude, latitude, area), Site Size
(lot_size, site_dimensions), and Age (actual_age, effective_age) with
combined value contributions.
- CQA|Residual row with formula-based remaining residual that
auto-decreases as the appraiser fills in residual feature
breakdowns.
- Adjusted Sale Price formula: Net SP + all adjustments above Total VC
row.
- Sheet protection with locked formulas and data cells; unlocked
residual feature input cells for appraiser entry.
- Haversine-based subject proximity calculation for each comp.
Special Column Types
- Added new special column types:
dom,
concessions, actual_age,
effective_age, lot_size,
site_dimensions, area.
- Special type badges displayed next to variable names in predictor
settings.
- Single-assignment enforcement: only one column per special type
(except
display_only which allows multiple).
- Ranking columns (
residual_sf, cqa_sf,
residual, cqa) moved to leftmost position in
the Step 6 download for easier CQA evaluation.
- Excel number formatting:
residual_sf as currency (2
dp), residual as currency (0 dp), cqa_sf and
cqa as numeric (2 dp).
UI Improvements
- Fit Earth Model button always visible (no longer inside collapsible
section).
- Minimum sidebar width (500px) to prevent predictor settings column
overlap.
- Wider notification popups (450px) with word-wrapping for long file
paths.
Bug Fixes
- Cross-validated R-squared now uses
model$cv.rsq
directly instead of parsing cv.rsq.tab.
earthUI 0.1.0
Core
- Shiny GUI for interactive earth (MARS) model building.
- Data import from CSV and Excel files with automatic snake_case
column naming.
- Variable configuration with include, factor, and linear-only
controls.
- Full exposure of all
earth() parameters through the GUI
with inline help popovers.
- Cross-validation automatically enabled for interaction and variance
models.
- Settings persistence via
localStorage across browser
sessions.
- Light/dark mode toggle.
Allowed Interactions
- Allowed interaction matrix for constraining degree >= 2
models.
- CSS sticky headers — top row and left column stay visible while
scrolling.
- Click variable name to toggle all its interactions (symmetric
toggle).
- Allow All / Clear All buttons.
Multivariate Models
- Multi-response model support: select multiple target variables to
fit
cbind() earth models.
- Per-response equation display, summary metrics, and ANOVA
decomposition.
- All plot functions accept
response_idx to select which
response to visualize.
- Observation weights via the
weights parameter in
fit_earth().
Model Fitting
- Asynchronous background fitting via
callr::r_bg() with
real-time trace display and elapsed timer.
- Automatic
nfold/ncross adjustment for
variance models.
- Synchronous fallback when callr is unavailable.
Visualization
- Variable importance bar charts.
- Per-variable contribution plots with piecewise-linear slope labels
and knot markers.
- g-function plots: 1D line, interactive 3D surface (plotly), static
3D perspective (
persp()), and filled contour.
- Correlation matrix heatmap.
- Diagnostic plots: residuals vs fitted, Q-Q, actual vs
predicted.
- Adaptive axis formatting — 3 decimal places for lat/long-scale data,
commas for large values.
- Slope labels scaled to axis range (
/0.001 for
small-range, /unit for large-range variables).
Model Equation
- LaTeX equation with g-function notation rendered via MathJax in the
app and native LaTeX in PDF reports.
- Full LaTeX special character escaping (
_,
$, %, &,
#).
Report Export
- Publication-quality HTML, PDF, and Word reports via Quarto.
- Both 3D perspective and contour plots for degree-2 groups in static
reports.
- Earth model summary, ANOVA decomposition, and raw earth output
sections.
These binaries (installable software) and packages are in development.
They may not be fully stable and should be used with caution. We make no claims about them.