Releases: usagizmo/webapp-template
v2.15.0 - Store Architecture Refactoring & Type Safety Improvements
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 tostores/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
LocalCountertoCounterLocalStorefor consistent naming convention (15de7bb) - Updated LocalStores purpose description to include logic encapsulation (4e69199)
- Removed composables directory and exports from shared package (07b759c, 7c97a10)
- Renamed
-
Type Safety Enhancements
- Fixed type safety issues for navigation href in HeaderNavigation component (fb476aa)
- Enabled type checking without build requirement for
@repo/sharedpackage (#850) - Changed types field in exports from
disttosrcfor 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
-
Performance & UX
Cleanup
- Dependency Cleanup
Full Changelog: v2.14.0...v2.15.0
v2.14.0 - Test Framework Migration & Dependency Updates
What's Changed
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 testcommand - Improved test execution performance with Bun's native test runner
- Migrated from Vitest to Bun's built-in 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
- Updated core dependencies to latest versions:
-
Type Safety Improvements
- Added route path type definitions (
apps/web/src/lib/types/routes.ts) - Defined
RoutePathandNavItemtypes for improved route type safety - Removed
anytypes and used appropriate type assertions - Added
@types/bunfor Bun test module type declarations - Migrated sveltekit-superforms adapter to zod4 for Zod v4 compatibility
- Added route path type definitions (
-
Project Structure
- Moved test files:
apps/web/src/index.test.ts→apps/web/src/tests/index.test.ts - Removed Vitest-related settings from Vite configuration
- Improved code organization and maintainability
- Moved test files:
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
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
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
What's Changed
🔧 Build & Development Improvements
- 🔧 Fixed Turborepo cache invalidation for
lintandformattasks (#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
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 testcommand 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 validationapps/api/supabase/tests/auth_and_rls.sql- Authentication and RLS policies testingapps/api/supabase/tests/crud_operations.sql- CRUD operations testingapps/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 packageFull Changelog: v2.12.0...v2.12.1
v2.12.0 - Shared Package & Type System Improvements
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/sharedpackage 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.tstotypes.ts - Adopted standard package imports for clearer dependency management
📋 Changes
Package Structure
- New package: Added
packages/sharedwith 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-typestoapi/types - UI component import paths changed to
@repo/shared
📝 Migration Guide
- Run
pnpm installto update dependencies - Run
pnpm generateto regenerate types - Update import paths as needed
Full Changelog: v2.11.0...v2.12.0
v2.11.0 - Realtime Support & Store Architecture Improvements
What's Changed
✨ New Features
- Realtime Support: Added realtime subscription for profile updates with automatic UI synchronization across browser tabs
- Status Command: Added new
pnpm statuscommand 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 execprefix 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
♻️ 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
$derivedfor better reactivity (#829) - Auth Navigation: Replaced
window.location.reload()with SvelteKit'sinvalidate('supabase:auth')for smoother auth state changes (#830) - Smart Auto-save for Profile Form: Implemented superForm's
resetForm: falseoption 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
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
fetchUserProfilemethod 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.svelteto use Store method instead of direct Helper import - Example Composable: Added
useCounter.svelte.tsas 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.