🔎
Reset
Previous Version: v1.0.0
✅ Added
  • Dedicated resume request page ( /resume ) for controlled CV distribution.
  • Automated resume delivery via email with PDF attachment.
  • Dual email workflow: who completed the form receives an email + site owner receives an email notification.
  • Contact form auto-reply system confirming message reception.
  • Request metadata capture ( IP, user-agent, referer, timestamp ).
  • Resume request logging system stored in /logs/resume_downloads.log.
  • Email templates for resume delivery and contact confirmation.
  • Markdown link rendering support inside portfolio content ( like [file](url) automatically converted to secure HTML links ).
  • render_md_links_safe() helper for safely transforming Markdown links into external anchors.
  • Optional domain allow-list for rendered links to prevent unsafe external URLs.
🔁 Changed
  • Download Resume CTA now redirects to dedicated /resume request page.
  • Contact form architecture updated to send two separate emails instead of CC.
  • Improved messaging UX for resume and contact interactions.
  • Email headers standardized to use domain sender to avoid SPF/DMARC delivery issues.
  • Portfolio project feature lists now support embedded documentation links ( GitHub files, resources, etc. ).
🛠 Fixed
  • Potential email deliverability issues caused by using visitor email as sender.
  • Edge cases where bots could trigger form submissions without delay validation.
  • Improved robustness of resume file path resolution on production environments.
  • Prevented unsafe HTML rendering in project JSON content by escaping all text before Markdown parsing.
🔒 Security
  • Honeypot trap added to resume request form.
  • Signed time token verification enforced to block instant bot submissions.
  • Silent success responses used for spam attempts to avoid bot feedback loops.
  • Strict protocol validation for rendered links ( http/https only ).
  • Optional domain restrictions added to Markdown link rendering to mitigate XSS injection vectors.
✅ Added
  • Portfolio page with projects & certificates routing.
  • Certificate detail route: /certificate/<slug>.
  • Dedicated Change Logs page with collapsible entries.
  • JSON data source for changelogs: input_data/changelogs_data/data.json.
  • Search across changelogs (title, versions, summary, tags, change notes).
  • Pagination for the changelog list.
  • Core Focus section with 4 portfolio categories (Web, Automation, DevOps, AI) linking to filtered views.
  • Parallax background support for CTA section with overlay for readability.
  • Font Awesome icon system for counters and focus areas.
  • Quote block redesign with author, source link, and accent divider.
🔁 Changed
  • Clean URLs with .htaccess rewrites.
  • Certificate listing uses absolute cover URLs.
  • Introduced a structured changelog schema (meta/access/changelogs keyed by slug).
  • Converted Team grid into capability-driven layout using existing styles.
  • Updated CTA messaging to DevOps-focused call to action.
  • Improved hover behavior for counter icons (glow instead of scale).
  • Enhanced visual hierarchy for quote typography and metadata.
🛠 Fixed
  • Asset URLs now use helper functions consistently.
  • Breadcrumb background uses asset() to prevent 404 on /certificates/.
  • Improved robustness for missing/optional fields via normalization.
  • Alignment issues caused by icon scaling inside rotated counter diamonds.
  • Text readability on bright backgrounds via overlay layer.
  • Inconsistent icon sizing across sections.
🔒 Security
  • Reply-To set to user email; From uses no-reply to avoid DMARC issues.
  • Technical details are visible only for whitelisted IPs.