Skip to content

v2.2.0 - Bug and template fixes and structural improvements

Latest

Choose a tag to compare

@barbaracalderon barbaracalderon released this 06 Jul 02:14

πŸŽ‰ Release Notes for Version 2.2.0

πŸ“… Release Date: July 2026

πŸ› Critical Bug Fixes

βœ… Runtime & Memory Issues Resolved

  • Removed duplicate <router-outlet> from HeaderComponent β€” every routed page was being rendered twice, doubling DOM elements and lifecycle calls
  • Fixed setTimeout memory leak in HomeComponent β€” the recursive typing animation timer now stores its ID and is properly cancelled in ngOnDestroy, preventing background timer accumulation after navigation
  • Added implements OnInit to FooterComponent β€” lifecycle hook is now enforced at compile time instead of relying on duck typing

πŸ”§ Important Fixes

βš™οΈ Configuration & Providers

  • Removed conflicting animation providers β€” provideAnimations() and provideAnimationsAsync() were both registered; only the modern async variant is kept

🎨 UI & Template Fixes

  • Fixed duplicate class attribute on header brand link β€” navbar-brand and text-light classes were being silently discarded by the browser
  • Fixed invalid Pydantic tag color β€” double ## in the CSS color value caused the tag to render with no background
  • Removed duplicate Tag.LOMBOK entries in two portfolio project tag arrays (Tutor Mate API, Library Manager API)
  • Fixed missing px unit on card min-width β€” unitless value was ignored by the browser; constraint moved to component CSS
  • Fixed @for track expression in CardComponent β€” was tracking by parent array reference; now tracks by individual tag item
  • Added Portfolio heading to the portfolio section for visual consistency with other pages

πŸ”’ Security

  • Added rel="noopener noreferrer" to all target="_blank" external links across header, footer, contact, and modal templates β€” prevents tabnapping attacks

β™Ώ Accessibility & HTML Validity

  • Replaced <button><a> anti-pattern in home, about, and contact templates with properly styled standalone <a> elements β€” fixes invalid HTML nesting and broken keyboard navigation
  • Updated contact image alt text from "Contact Image" to "Barbara Calderon"

πŸ–₯️ Modal Component

  • Replaced global document.querySelector with @ViewChild('swiperRef') β€” component no longer queries outside its own DOM, fixing a fragile global selector

πŸ—οΈ Structural Improvements

πŸ“‚ Code Organisation

  • Extracted project data from PortfolioComponent into src/app/data/projects.data.ts β€” component now holds presentation logic only; data is independently readable and maintainable
  • Renamed Skills β†’ Education across the codebase β€” route path (/skills β†’ /education), component class (SkillsComponent β†’ EducationComponent), files, selector, and nav link now all match the displayed content
  • Removed unused customClass property from AccordionComponent
  • Removed empty providers: [] from PortfolioComponent decorator

🧹 Minor Cleanup

  • Updated <title> in index.html from the default Angular scaffold value to "Barbara Calderon | Software Engineer"
  • Fixed typo "Brazillian" β†’ "Brazilian" in accordion content

πŸ§ͺ Testing & Quality

πŸ†• New Spec Files

  • card.component.spec.ts β€” 5 tests covering component creation, card.name rendering, card.summary rendering, tag chip count, and modal dialog opening on button click
  • modal.component.spec.ts β€” 6 tests covering component creation, MAT_DIALOG_DATA assignment, title/description/tag rendering, and close button behaviour

βœ… All Tests Pass

  • 33 tests across 6 spec files β€” all passing

πŸ“ˆ What This Release Demonstrates

  • βœ… Correct Angular lifecycle management β€” no dangling timers or unimplemented interfaces
  • βœ… Secure external linking β€” all target="_blank" anchors protected
  • βœ… Valid, accessible HTML β€” no illegal element nesting, descriptive alt text
  • βœ… Separation of concerns β€” data, presentation, and routing are cleanly separated
  • βœ… Meaningful test coverage β€” key components verified with real assertions