Constraint: Keep projects page in a 3-column grid while reducing line-wrap pressure in card metadata/action areas
Rejected: Keeping metadata and actions split into side-by-side columns | caused unstable wrapping and noisy visual rhythm
Confidence: high
Scope-risk: narrow
Directive: Keep project-card internals on project-specific classes and preserve one metadata row per semantic purpose
Tested: npm run build; ./scripts/deploy-homepage.sh
Not-tested: Manual cross-browser visual checks beyond current deployed environment
Constraint: Keep the change scoped to shares card internals without altering logs/projects card structures
Rejected: Showing project_repo as a separate row | duplicated ownership context and hurt visual hierarchy
Confidence: high
Scope-risk: narrow
Directive: Keep shares card metadata compact and action-oriented; prefer tags left and time/action right
Tested: npm run build
Not-tested: Manual cross-device visual QA in browser after commit
Constraint: Commit only the cleaned JSON manifests and the root AGENTS.md without bundling unrelated local changes
Rejected: Folding in the other modified .codex files | unrelated workspace churn
Confidence: high
Scope-risk: narrow
Directive: Keep generated or synced content formatted with stable JSON indentation to reduce noisy diffs
Tested: node -e "JSON.parse(require('fs').readFileSync('src/content/projects/index.json','utf8')); JSON.parse(require('fs').readFileSync('src/content/static-assets/index.json','utf8')); console.log('json-ok')"; npm run build
Not-tested: Push/deploy after this content-and-docs-only commit
Constraint: Keep the change scoped to /logs list rendering and reuse existing log frontmatter
Rejected: Changing shared .card-grid behavior | would affect projects and home sections
Confidence: high
Scope-risk: narrow
Directive: Keep future log-list experiments on logs-specific classes unless other list pages are intentionally redesigned
Tested: npm run build; ./scripts/deploy-homepage.sh
Not-tested: Local browser-only manual narrow-screen visual pass in this session
Add a prominent homepage notice for the current reverse-proxy redirect problem and tighten the Gitea activity presentation so the landing page stays readable while users navigate around the temporary deployment constraint.
Constraint: Temporary Nginx reverse-proxy redirects can drop :2000 from navigation URLs and cause 502 responses
Rejected: Move the warning into secondary pages only | Users need the fix before they leave the homepage
Confidence: high
Scope-risk: narrow
Directive: Remove or rewrite the homepage warning once the备案-backed domain setup eliminates the redirect mismatch
Tested: npm run build
Not-tested: Live browser verification against the current reverse-proxy deployment
Constraint: Current deployment expects the homepage on port 2000 and project cards should reflect the latest showcased repos
Rejected: Leave placeholder project seeds and old port default | mismatched with current runtime and presentation
Confidence: high
Scope-risk: narrow
Directive: Keep project seed paths stable with synced static asset filenames and revisit only when automated asset naming lands
Tested: npm run build; docker compose config
Not-tested: Live container restart against production host
Constraint: Static images need to come from remote sources before log sync and build
Rejected: Per-file source mapping | directory-grouped manifests are easier to maintain
Confidence: high
Scope-risk: narrow
Directive: Prefer grouped target_dir manifests and keep page-facing paths stable
Tested: npm run assets:sync; npm run build; bash -n scripts/deploy-homepage.sh; npx tsc --noEmit --pretty false --project tsconfig.json
Not-tested: Real Seafile download against production URLs
Use the project root as the anchor so the homepage sticker gallery survives Astro build and still randomizes from public/images/gallery.
Constraint: Keep behavior unchanged except for build-time discovery.
Rejected: import.meta.url-based directory lookup | it failed in production build.
Confidence: high
Scope-risk: narrow
Directive: Preserve the gallery scan as a static build-time concern unless the deployment model changes.
Tested: npm run build; verified dist/index.html contains corner-gallery and gallery image paths
Not-tested: browser repaint timing in a live session