Skip to content

Releases: ryanbcommits/shopping-list-app

v1.4.0 Quantity Controls

Choose a tag to compare

@ryanbcommits ryanbcommits released this 17 Jul 02:27

Quantity Controls

Each shopping list item now has an adjustable quantity.

  • Set a quantity when adding an item
  • Adjust it anytime with + and - buttons, synced in real time
  • Minimum of 1 β€” items can't drop to zero
  • Redesigned controls grouped into a single, compact unit

Full technical details in the CHANGELOG.

v1.3.0 β€” Search & Filtering

Choose a tag to compare

@ryanbcommits ryanbcommits released this 19 May 02:17

What's New

Search Feature

  • Real-time search filters the list as you type
  • Case-insensitive matching against item names
  • Search and category filter work simultaneously
  • Clear button (X) appears when search field has text
  • "No results" message when search returns zero matches

Full Changelog

See CHANGELOG.md for complete details.

v1.2.0

Choose a tag to compare

@ryanbcommits ryanbcommits released this 13 Mar 02:15

Changelog

All notable changes to this project will be documented in this file.

The format is based on Keep a Changelog,
and this project adheres to Semantic Versioning.

[Unreleased]

In Progress

  • Category filter bar styling
    • Attempted to use categoryButton.id = value for CSS targeting, but IDs
      cannot contain spaces β€” broke on "Frozen Food" and "Fish / Seafood"
    • Solution: switch to categoryButton.classList.add("category-btn") so all
      filter buttons share one class regardless of their label text
    • Active button highlight still needed (requires adding/removing a second
      class like "active" via JavaScript on click)

Known Issues

  • Adding an item while a category filter is active appends it to the
    visible list regardless of whether it matches the current filter
  • User is not logged out after alotted time after hitting ok on the alert button.
  • Session timeout alert does not reliably log the user out β€” clicking OK
    on the alert triggers the document click listener, resetting the
    inactivity timer. Needs a custom modal to fix properly.

[1.2.0] - 2026-03-03

Added

  • Category system for shopping list items
  • Category dropdown in add-item form (Dairy, Produce, Grocery, Meat, Frozen Food, Fish / Seafood)
  • Category field saved to Firestore with each item
  • Category badge displayed on each list item with color coding
  • Category filter buttons generated dynamically from CATEGORIES array
  • currentFilter state variable to track active category selection
  • Category filter buttons dynamically filter the shopping list on click

Changed

  • Updated saveItemToDatabase function to accept category parameter
  • Updated addToList function to display category data
  • Updated loadUserData to pass category from Firestore to addToList
  • Refactored loadUserData() into a three-stage collect β†’ filter β†’ display pipeline
  • Stage 3 now renders from filtered array, not raw Firestore data

[1.1.0] - 2025-12-11

Added

  • Complete inline edit functionality for shopping list items
  • Edit/Save/Cancel workflow with proper state management
  • Dynamic UI updates based on data-edit-mode attribute
  • Timestamp updates when items are edited
  • Cancel button that appears only during edit mode
  • Google Sign-In button following official branding guidelines

Changed

  • Status badge updated from "beta" to "stable"
  • Edit button now toggles between "Edit" and "Save" modes
  • Delete button hidden during edit mode to prevent accidental deletions
  • Improved event listener architecture (defined at component level)

Fixed

  • Cancel button event listener scope issues
  • UI state inconsistencies when canceling without changes
  • Double-click requirement bug in cancel functionality
  • Edit mode state properly resets on cancel action

[1.0.0] - 2025-08-27

Added

  • Initial production release
  • User authentication (Email/Password)
  • Google OAuth sign-in
  • Shopping list CRUD operations (Create, Read, Delete)
  • Real-time data synchronization with Firestore
  • Soft delete functionality
  • Rate limiting (1 second cooldown)
  • Session timeout (15 minutes)
  • XSS protection via textContent
  • Password complexity validation
  • HTTPS/SSL certificate
  • Favicon

Security

  • Environment variables for Firebase config
  • Input sanitization
  • Session management
  • Password policy enforcement

[0.9.0-beta] - 2025-08-24

Added

  • First public beta deployment
  • Core shopping list functionality
  • Firebase integration
  • Basic authentication flow

Known Issues

  • Mobile compatibility issues on iOS Chrome (resolved in 1.0.0)

[0.1.0] - 2025-06-09

Added

  • Initial project setup
  • Basic HTML structure
  • Firebase connection testing
  • DOMContentLoaded implementation

Version History Summary

  • 1.2.0 - Category system with filter buttons and collect β†’ filter β†’ display pipeline
  • 1.1.0 - Full CRUD operations with inline editing
  • 1.0.0 - First stable release with production deployment
  • 0.9.0-beta - Public beta with core features
  • 0.1.0 - Initial development

Edit Functionality Complete! ✏️

Choose a tag to compare

@ryanbcommits ryanbcommits released this 12 Dec 01:33

πŸŽ‰ What's New

This release marks a significant milestone with the completion of full CRUD operations. Users can now edit their shopping list items inline with a smooth, intuitive workflow.

✨ New Features

Complete Edit Functionality

  • Inline Editing: Click "Edit" to modify any item without leaving the list
  • Save/Cancel Options: Full control over your edits with dedicated save and cancel actions
  • Smart UI Updates: Delete button automatically hides during edit mode to prevent accidents
  • Timestamp Tracking: Edited items update their timestamps in the database

Improved User Experience

  • State Management: Robust state tracking using data-edit-mode attribute
  • Visual Feedback: Clear indication when in edit mode
  • Error Prevention: Single-click cancel functionality (fixed double-click bug)
    -Google Branding: Sign-in button updated to meet Google's official guidelines

πŸ› Bug Fixes

  • Fixed cancel button event listener scope issues
  • Resolved UI state inconsistencies when canceling edits
  • Corrected the double-click requirement for cancel button
  • Ensured proper state reset when exiting edit mode

πŸ“Š Technical Improvements

  • Event listeners now properly defined at component creation level
  • Implemented loadUserData() refresh strategy for UI consistency
  • Added timestamp updates for edited items
  • Improved code organization and commenting

πŸš€ Deployment

The latest version is live at: https://app.ryanbcommits.com

πŸ“ Development Notes

This release represents approximately 6 weeks of incremental development (Nov 15 - Dec 11, 2024), with a focus on:

  • Learning proper state management patterns
  • Understanding event listener scope
  • Implementing user-friendly edit workflows
  • Ensuring database consistency

πŸ”„ What's Next

  • Special character validation
  • Enhanced mobile UI
  • Categories/tags for items
  • Shopping list sharing capabilities

πŸ“¦ Installation

bash

git clone https://github.com/ryanbcommits/shopping-list-app.git
cd shopping-list-app
npm install
npx vite

πŸ™ Thanks

Special thanks to everyone who tested the beta version and provided feedback!

Full Changelog: v1.0.0...v1.1.0

v1.0.0 - MVP Shopping List

Choose a tag to compare

@ryanbcommits ryanbcommits released this 24 Aug 23:44

Shopping List App v1.0.0 - MVP Release

✨ Features

  • User authentication (Email/Password and Google Sign-In)
  • Add/delete shopping list items
  • Real-time data sync with Firebase
  • Auto-logout after 15 minutes of inactivity
  • Rate limiting and security features

πŸ”§ Technical Stack

  • Frontend: Vanilla JavaScript with Vite
  • Database: Firebase Firestore
  • Authentication: Firebase Auth

πŸ“ Known Issues

  • UI needs styling improvements
  • No edit functionality yet
  • Mobile responsiveness needs work

πŸš€ Next Release Plans

  • Edit items functionality
  • Categories for items
  • Improved UI/UX

πŸ“¦ Installation

  1. Clone the repository
  2. Run npm install
  3. Create .env file with Firebase config
  4. Run npx vite for development

Note: You'll need to provide your own Firebase configuration.
See .env.example for required environment variables.


Note: This is an MVP release for testing and feedback.

Authentication & CRUD Operations

Pre-release

Choose a tag to compare

@ryanbcommits ryanbcommits released this 24 Aug 23:44

πŸŽ‰ What's New

  • βœ… Complete user authentication (login/registration)
  • βœ… User-specific data storage and retrieval
  • βœ… Dynamic list management with soft delete
  • βœ… Real-time database synchronization
  • βœ… Personalized user experience

πŸ› οΈ Technical Improvements

  • Modular JavaScript architecture (firebase-config, login.js, index.js)
  • Proper authentication state management
  • Soft delete pattern for data preservation
  • Template literals for dynamic content
  • Error handling and user feedback

πŸ› Known Issues

  • UI needs styling improvements
  • Form validation limited to password field
  • No edit functionality yet

πŸš€ What's Next

  • Shopping list functionality
  • Enhanced UI/UX
  • Additional form validation