Clicking a movement opens ArtistFilterModal to choose artists before the gallery. Large halls no longer permanently blank frames when texture loads exceed the overlay deadline; fall back thumb to full to on-demand API.
Co-authored-by: Cursor <cursoragent@cursor.com>
Staff accounts use admin/curator roles and fine-grained flags; transitions connect source-to-target with color gradients and stream cutout masks so overlaps stay seamless.
Co-authored-by: Cursor <cursoragent@cursor.com>
Add Inputs/gariff_influential_painters_influences.xlsx for curator import, document Inputs/Output conventions, and let non-overlapping movements share horizontal lanes on the timeline.
Co-authored-by: Cursor <cursoragent@cursor.com>
Prod env files now win over root .env so harmonize:db can open gallery_prod after gallery_dev; tour_stops gains updated_at; halls no longer block the overlay on every painting texture. Docs cover the fixes and one-artist image pull from prod; Duccio painting assets synced from TrueNAS.
Co-authored-by: Cursor <cursoragent@cursor.com>
Keep Loading gallery until Environment and gl.compileAsync finish (with timeouts), GPU-upload painting textures before dismiss, and drop Canvas shadow maps.
Co-authored-by: Cursor <cursoragent@cursor.com>
Paintings get editable curator notes with brass plates in the 3D hall, and visit order now uses the far/end wall between left and right.
Co-authored-by: Cursor <cursoragent@cursor.com>
Document the inverted InfluencePictureLamp mount so link indicators match the intended fixture orientation.
Co-authored-by: Cursor <cursoragent@cursor.com>
Visitors walk published tours in a 3D hall with stop notes; curators edit drafts via Tour editor. All galleries (artist, movement, tour) place the first work left of the entrance view and the last on the right.
Co-authored-by: Cursor <cursoragent@cursor.com>
CSV/JSON/XLSX mapping wizard expands artist-level rows to all paintings, blocks duplicate file/data imports via content and payload hashes, and documents the workflow in influence-import.md.
Co-authored-by: Cursor <cursoragent@cursor.com>
UI chrome via react-i18next, catalog text in entity_translations with ru.wikipedia seeding, locale-aware search, and Translations page for publish workflow.
Co-authored-by: Cursor <cursoragent@cursor.com>
Schema migrates dev to prod only; catalog rows merge by updated_at and images by mtime with union merge and conflict reporting.
Co-authored-by: Cursor <cursoragent@cursor.com>
Public GET /api/search over artists, movements, and paintings with a debounced header bar on the timeline; Back to Timeline resets zoom and gallery session.
Co-authored-by: Cursor <cursoragent@cursor.com>
Uploads and fixes now bust browser cache via file-mtime keys in API
responses. Debug upload shows a centered loading overlay and blocks search
while uploading. Prod DB restore skips curator_audit_log.
Co-authored-by: Cursor <cursoragent@cursor.com>
Add Invoke-Git with safe external command execution and stop using prod LAN URL for dev validateBuild checks.
Co-authored-by: Cursor <cursoragent@cursor.com>
Display Loading gallery and Loading paintings in the canvas area while the WebGL scene initializes and wall textures resolve, and document the behavior.
Co-authored-by: Cursor <cursoragent@cursor.com>
restore-db-data.js: fall back to multi-pass insert when the DB role cannot set session_replication_role, and parse multi-line INSERT values (bios) as whole statements. sync-images-to-prod.ps1: fix SMB root variable typo and fail fast with guidance when the share is not mapped. Document SMB mapping, non-superuser restore, and a troubleshooting table in the release runbook.
Co-authored-by: Cursor <cursoragent@cursor.com>
Collapse doubled underscores/spaces in thumbnail filenames to single underscores, drop stale oversized originals, and add artist/painting/influence source datasets under Inputs/.
Co-authored-by: Cursor <cursoragent@cursor.com>
Align package.json scripts and their references across scripts/, infra/, and db/ SQL with the dev-first workflow naming scheme.
Co-authored-by: Cursor <cursoragent@cursor.com>
Update basics.md for the new loading indicators, 3D WebGL context-loss recovery, and the corrected movement-visibility rule (span overlap plus any catalogued artist). Refresh remaining docs and config for the current dev-first workflow and npm script names.
Co-authored-by: Cursor <cursoragent@cursor.com>
- Show loading markers while the catalog, portrait thumbnails, and 3D
halls load so users know loading is still in progress.
- Recover the 3D hall from a lost WebGL context by remounting the canvas
with a fresh context instead of leaving a permanent dark window, and
guard the HDR environment map behind an error boundary.
- Show movement streams whose span overlaps the view even when their
artists lived outside the visible time range.
Co-authored-by: Cursor <cursoragent@cursor.com>