generated from john/python-template
ui/homepage_store.py was the only storage path in the codebase derived from Path(__file__).parents[3] rather than from Settings. That made it the one storage root the operator could not relocate, and it resolved incorrectly outside a source checkout - an installed distribution would have written homepage content into the package directory in site-packages. - config.py: add homepage_dir, defaulting to ./data/homepage so the location is unchanged for anyone launching from the repository root. - homepage_store.py: resolve the directory and markdown path from Settings, with an optional settings parameter on every function so callers and tests can override without patching module constants. HOME_PAGE_DIR and HOME_PAGE_MARKDOWN_PATH constants are replaced by homepage_dir() and homepage_markdown_path(). - tests/ui/test_homepage_store.py: covers the setting being honored, markdown round-tripping, image storage and listing, and two configurations not sharing storage. Note: the default is now CWD-relative, matching artifact_dir and upload_dir, rather than anchored to the repository root. Verification: ruff check src tests clean; 292 passed, 4 skipped. Co-authored-by: Copilot App <[email protected]>