Skip to content

Releases: usagizmo/webapp-template

v2.15.0 - Store Architecture Refactoring & Type Safety Improvements

17 Nov 08:36

Choose a tag to compare

What's Changed

  • 🐛 Fix type safety for navigation href (fb476aa)
  • ♻️ Refactor store architecture (#848)
  • 🚚 Rename LocalCounter to CounterLocalStore (15de7bb)
  • ✨ Prioritize local Noto Sans JP font over web fonts (b2dcf2a)
  • 🔥 Remove vitest from dependencies and documentation (#849)
  • 🔥 Remove composables directory from shared package (07b759c)
  • ✏️ Fix incorrect path in README (c763109)
  • 🧑‍💻 Enable type checking without build for @repo/shared (#850)
  • 🔥 Remove composables export from @repo/shared (7c97a10)
  • 📝 Update LocalStores purpose description to include logic encapsulation (4e69199)
  • 🔧 Add TypeScript common rules to Svelte TypeScript files configuration (9be706a)
  • 🔧 Include .github directory in cspell check (#851)
  • 🔧 Add architecture rule to prevent Helpers/Utility layers from depending on Stores layer (#852)

Improvements

  • Store Architecture Refactoring

    • Renamed composables/ directory to stores/local/ for clearer component-scoped state management (#848)
    • Added comprehensive documentation for Global/Local store patterns with directory structure (#848)
    • Improved code organization and maintainability with clearer separation of concerns (#848)
    • Renamed LocalCounter to CounterLocalStore for consistent naming convention (15de7bb)
    • Updated LocalStores purpose description to include logic encapsulation (4e69199)
    • Removed composables directory and exports from shared package (07b759c, 7c97a10)
  • Type Safety Enhancements

    • Fixed type safety issues for navigation href in HeaderNavigation component (fb476aa)
    • Enabled type checking without build requirement for @repo/shared package (#850)
    • Changed types field in exports from dist to src for TypeScript files (#850)
    • Improved developer experience by allowing TypeScript to infer types directly from source files (#850)
    • Added TypeScript common rules to Svelte TypeScript files configuration (9be706a)
  • Architecture Rules

    • Added ESLint rule to prevent Helpers/Utility layers from depending on Stores layer (#852)
    • Enforced pure function pattern by requiring values to be passed as arguments (#852)
    • Updated README files to document the new architecture rule (#852)
    • Improved code quality and maintainability through architectural constraints (#852)
  • Code Quality & Tooling

    • Included .github directory in cspell check for better spell checking coverage (#851)
    • Removed Vitest from dependencies and documentation (#849)
    • Cleaned up unused composables directory from shared package (07b759c, 7c97a10)
    • Updated README files with correct paths and improved documentation (c763109)
  • Performance & UX

    • Prioritized local Noto Sans JP font over web fonts for improved loading performance (b2dcf2a)
    • Reduced external font dependencies (b2dcf2a)

Cleanup

  • Dependency Cleanup
    • Removed Vitest from packages/shared/package.json devDependencies (#849)
    • Removed Vitest references from documentation (#849)
    • Removed Vitest links from HTML files and test configurations (#849)

Full Changelog: v2.14.0...v2.15.0

v2.14.0 - Test Framework Migration & Dependency Updates

01 Nov 21:34

Choose a tag to compare

What's Changed

  • ♻️ Replace vitest with bun:test in #842
  • 🔧 Fix: Update dependencies and improve type safety in #846

Improvements

  • Test Framework Migration

    • Migrated from Vitest to Bun's built-in test runner (bun:test)
    • Removed Vitest dependencies and configuration
    • Updated test scripts to use bun test command
    • Improved test execution performance with Bun's native test runner
  • Dependency Updates

    • Updated core dependencies to latest versions:
      • SvelteKit: 2.28.0 → 2.48.4
      • Svelte: 5.38.1 → 5.43.2
      • Supabase: Updated SSR and JS client libraries
      • Tailwind CSS: 4.1.11 → 4.1.16
      • Zod: 3.25.76 → 4.1.12 (major version upgrade)
    • Updated UI libraries and utilities:
      • bits-ui: 2.9.2 → 2.14.2
      • tailwind-variants: 1.0.0 → 3.1.1
      • Various ESLint plugins and development tools
  • Type Safety Improvements

    • Added route path type definitions (apps/web/src/lib/types/routes.ts)
    • Defined RoutePath and NavItem types for improved route type safety
    • Removed any types and used appropriate type assertions
    • Added @types/bun for Bun test module type declarations
    • Migrated sveltekit-superforms adapter to zod4 for Zod v4 compatibility
  • Project Structure

    • Moved test files: apps/web/src/index.test.tsapps/web/src/tests/index.test.ts
    • Removed Vitest-related settings from Vite configuration
    • Improved code organization and maintainability

Breaking Changes

  • Zod v4 Migration
    • Zod has been upgraded from v3 to v4
    • sveltekit-superforms adapter has been migrated to zod4
    • Ensure your Zod schemas are compatible with v4 API

Full Changelog: v2.13.1...v2.14.0

v2.13.1 - Bun Migration Cleanup

20 Oct 13:00
d2d2d67

Choose a tag to compare

What's Changed

  • 🔧 Update configuration for bun and Tailwind CSS IntelliSense in #839
  • 🔧 Fix deploy script echo to enable escape sequence interpretation 37828ae
  • 🔧 Clean up Node.js references after migration to Bun in #841

Improvements

  • Clean up Node.js references after migration to Bun
    • Removed legacy Node.js references from configuration files
    • Updated documentation to reflect Bun migration
  • Update configuration for bun and Tailwind CSS IntelliSense
    • Improved IDE support for Bun environment
    • Enhanced Tailwind CSS IntelliSense configuration

Bug Fixes

  • Fix deploy script echo to enable escape sequence interpretation

Full Changelog: v2.13.0...v2.13.1

v2.13.0 - Blazing Fast with Bun

19 Aug 05:26

Choose a tag to compare

What's Changed

  • 🔖 Update version to 2.13.0
  • 🔧 Fix deploy script to use absolute path for public directory (b487258)
  • 🚀 Migrate from pnpm to bun package manager (#838)

Major Changes

  • Migrated from pnpm to bun package manager (#838)
    • Significantly faster dependency installation
    • Better performance for monorepo operations
    • Native TypeScript support
    • Removed pnpm-lock.yaml, added bun.lock

Bug Fixes

  • Fixed deploy script to use absolute path for public directory

Full Changelog: v2.12.2...v2.13.0

v2.12.2 - Build Process Improvements

08 Aug 03:32

Choose a tag to compare

What's Changed

🔧 Build & Development Improvements

  • 🔧 Fixed Turborepo cache invalidation for lint and format tasks (#837)
    • Resolves issues with stale cache preventing proper task execution
    • Ensures lint and format tasks always run with fresh dependencies
  • 💄 Improve GitHub Actions workflow step names formatting (14b9f9e)
    • Reformat step names to use emoji-first format for better readability and consistency

Full Changelog: v2.12.1...v2.12.2

v2.12.1 - Database Testing & Performance Improvements

01 Aug 10:50

Choose a tag to compare

What's Changed

  • 🧪 Add Supabase database testing functionality in #835
  • ⚡ Optimize Turborepo configuration and improve documentation in #836

✨ New Features

  • Database Testing Suite: Added comprehensive SQL test files with 39 test cases covering database schema, authentication, RLS policies, CRUD operations, and triggers
  • Enhanced API Documentation: Streamlined development workflow documentation with clearer setup instructions

⚡ Performance & Developer Experience

  • Turborepo Optimization: Improved build pipeline configuration with better task dependencies and caching strategies
  • Documentation Improvements: Enhanced project setup guide with clearer pnpm filter usage patterns and port configurations

🔧 Technical Improvements

  • Added pnpm test command for running Supabase database tests
  • Simplified API package scripts and removed unused commands
  • Updated CSpell configuration to support PostgreSQL terminology
  • Optimized GitHub Actions workflow with proper test filtering

📁 New Files

  • apps/api/supabase/tests/database_basics.sql - Basic connectivity and schema validation
  • apps/api/supabase/tests/auth_and_rls.sql - Authentication and RLS policies testing
  • apps/api/supabase/tests/crud_operations.sql - CRUD operations testing
  • apps/api/supabase/tests/functions_and_triggers.sql - Database functions and triggers testing

🛠️ Usage

# Run database tests
cd apps/api
pnpm start  # Start Supabase locally
pnpm test   # Run all database tests

# Optimized development commands
pnpm dev --filter=web      # Start web app
pnpm build --filter=pages  # Build specific package

Full Changelog: v2.12.0...v2.12.1

v2.12.0 - Shared Package & Type System Improvements

26 Jul 13:56

Choose a tag to compare

What's Changed

  • ♻️ Refactor type imports to use workspace package exports in #833
  • ♻️ Extract shared components and utilities to @repo/shared package in #834

📦 Shared Package Introduction

  • Created @repo/shared package to centralize common components, types, and utilities
  • Migrated all UI components (shadcn-svelte) to the shared package
  • Improved code reusability across the entire monorepo

🔧 Type Import Improvements

  • Changed Supabase type exports from path alias to workspace package exports
  • Renamed generated type file from supabase-types.ts to types.ts
  • Adopted standard package imports for clearer dependency management

📋 Changes

Package Structure

  • New package: Added packages/shared with proper build configuration
  • Component migration: Moved all UI components to shared package
  • Resource consolidation: Centralized types, constants, utilities, and styles

Import Method Changes

// Before
import type { Database } from '$api-generated/supabase-types';

// After
import type { Database } from 'api/types';

💔 Breaking Changes

  • Import path change from $api-generated/supabase-types to api/types
  • UI component import paths changed to @repo/shared

📝 Migration Guide

  • Run pnpm install to update dependencies
  • Run pnpm generate to regenerate types
  • Update import paths as needed

Full Changelog: v2.11.0...v2.12.0

v2.11.0 - Realtime Support & Store Architecture Improvements

25 Jul 00:04

Choose a tag to compare

What's Changed

  • ♻️ Refactor Supabase integration and add realtime support by @usagizmo in #832

✨ New Features

  • Realtime Support: Added realtime subscription for profile updates with automatic UI synchronization across browser tabs
  • Status Command: Added new pnpm status command to Supabase API package for checking service status

♻️ Improvements

  • Store Architecture: Refactored stores to use Supabase client directly, resulting in cleaner and more maintainable API
  • Command Execution: Added pnpm exec prefix to all Supabase commands for proper execution in monorepo environment

🏗️ Architecture Changes

  • Simplified store implementation by removing intermediate helper functions
  • Direct Supabase client usage in stores for better performance and clarity
  • Improved realtime subscription handling with automatic cleanup

📦 Dependencies

  • No major dependency updates in this release

Full Changelog: v2.10.2...v2.11.0

v2.10.2 - Svelte 5 Modernization & Performance Optimizations

19 Jul 19:54

Choose a tag to compare

♻️ Major Refactoring

  • Schema Naming Convention: Refactored all schema names from camelCase to PascalCase for consistency (e4269fb)
  • Reactive State Management: Migrated all store getter methods to Svelte 5's $derived for better reactivity (#829)
  • Auth Navigation: Replaced window.location.reload() with SvelteKit's invalidate('supabase:auth') for smoother auth state changes (#830)
  • Smart Auto-save for Profile Form: Implemented superForm's resetForm: false option with change detection (#831)
    • Prevent form data reset after submission
    • Only submit when values actually change
    • Automatic submission on blur event

🔧 Configuration

  • Environment Management: Improved environment variable handling and gitignore patterns (#828)
    • Better organization of environment files
    • Enhanced security for sensitive configurations

🎯 Developer Experience

  • Consistent naming conventions across the codebase
  • Modern Svelte 5 patterns for better performance
  • Seamless page transitions during authentication flows

Full Changelog: v2.10.1...v2.10.2

v2.10.1 - Layer Communication Rules & ESLint Enforcement

09 Jul 07:45

Choose a tag to compare

What's Changed

  • 📝 Improve helpers and utils directory descriptions in apps/web/README.md 7a48f26
  • 🏷️ Add Database type to Supabase server client in hooks.server.ts c582e1c
  • 🔧 Move @markuplint/ml-config to devDependencies and update packageManager 3a2447c
  • 🏗️ Implement layer communication rules with ESLint enforcement by @usagizmo in #827

Full Changelog: v2.10.0...v2.10.1


🏗️ Architecture Improvements

This release introduces layer communication rules to enforce architectural constraints and improve code maintainability.

✨ New Features

  • Layer Communication Rules: Implemented strict architectural constraints between Components, Stores/Composables, and Helpers layers
  • ESLint Enforcement: Added ESLint rules to automatically prevent architectural violations
  • Enhanced UserStore: Added fetchUserProfile method to provide proper Helper access via Store layer

📚 Documentation

  • Layer Communication Rules: Added comprehensive documentation of architectural constraints to README.md
  • Directory Structure: Updated project structure documentation to include composables/ directory

🔧 Code Changes

  • ESLint Configuration: Added rules to prohibit direct Helper imports from Components layer
  • Layout Component: Updated +layout.svelte to use Store method instead of direct Helper import
  • Example Composable: Added useCounter.svelte.ts as an example of composables implementation

🎯 Benefits

  • Improved Architecture: Clear separation of concerns between layers
  • Better Testability: Easier to test components in isolation
  • Maintainability: Reduced coupling between components and business logic
  • Developer Experience: ESLint catches architectural violations during development

🚀 Migration Guide

If you have existing code that directly imports Helpers from Components:

// ❌ Before (will now cause ESLint error)
import { fetchUserProfile } from '$lib/helpers/supabaseHelpers';

// ✅ After (use Store method)
import { userStore } from '$lib/stores';
await userStore.fetchUserProfile(userId);

📋 Technical Details

Layer Communication Rules:

  • Components: Must access Helpers via Stores/Composables layer
  • Stores/Composables: Can directly access Helpers for business logic execution

These rules are now automatically enforced by ESLint to prevent architectural violations.