Today was about getting the platform to production cleanly. Most of it was CI/CD plumbing.
Replaced the appleboy/ssh-action step with a native SSH heredoc — fewer moving parts, easier to debug when the deploy fails. Worked through a chain of fixes: the deploy path needed to be ~/marufsheikh, then $HOME/marufsheikh because the absolute path was wrong, then realised the deploy path was being interpolated through script instead of envs (YAML structure was wrong). Added script_stop and pwd to surface failures earlier.
Then git fetch was not updating origin/master tracking ref — the deploy would silently use a stale commit. Switched from git pull to git fetch + git reset --hard. Added git clean after the reset to drop any leftover files. Logged the deployed commit so I can see exactly what is live.
Two product changes today: contact page info is now dynamic (admin can edit address, hours, phone from settings) and a small SQLite fix — dropColumn is skipped in migration down() on SQLite3 because SQLite cannot drop columns in older versions.