- Files
- 0
- Added
- +0
- Removed
- −0
Every step,
from the first commit.
A complete build timeline of Grainstash taking shape—from early sequencer experiments to the product it is today.
- Commits
- 1,543
- Since
- 2024
- Through
- 2026
Showing 501–550 of 1,543
Page 11 of 31
feat(sharing): Replace raw audio elements with Waveform component in share page
Commit notes
- Update share page to use Waveform component for audio preview - Add play/pause controls with visual waveform display - Show sample metadata (duration, BPM, key) inline - Improve overall styling to match SampleEditDrawer design - Add resource type icons and user info display - Better password-protected share UI Co-authored-by: armin.naimi <[email redacted]>
- Files
- 1
- Added
- +247
- Removed
- −86
style: Apply Biome linting fixes to sharing components
Commit notes
Co-authored-by: armin.naimi <[email redacted]>
- Files
- 2
- Added
- +262
- Removed
- −244
feat(sharing): Add share button to library grid and redesign shares page as timeline
Commit notes
- Add SharePopover component with inline share link creation - Add share button column to LibrarySampleGrid for quick sample sharing - Redesign shares page from create-link form to activity timeline view - Add quick filter sidebar to filter activity by share link - Add getAllShareActivity API endpoint for unified activity feed - Support filtering activity by specific share link - Display share link status (active, expired) and resource names Co-authored-by: armin.naimi <[email redacted]>
- Files
- 9
- Added
- +11657
- Removed
- −83
- Files
- 0
- Added
- +0
- Removed
- −0
Fix backend lint/typecheck issues uncovered by CI
Commit notes
Co-authored-by: armin.naimi <[email redacted]>
- Files
- 7
- Added
- +120
- Removed
- −101
Remove DigitalOcean deployment config and CI deploy
Commit notes
Co-authored-by: armin.naimi <[email redacted]>
- Files
- 8
- Added
- +38
- Removed
- −958
refactor: update sample pack and workspace schemas for slug uniqueness
Commit notes
- Modified samplePacks schema to enforce unique slugs within projects and for users without projects. - Updated sample pack routes to validate slug uniqueness based on project context during creation and updates. - Removed slug from workspace schema as it is no longer required. - Adjusted workspace setup logic to simplify slug generation for new projects. - Updated frontend to use workspace IDs instead of slugs for better consistency.
- Files
- 7
- Added
- +154
- Removed
- −134
chore: update dependencies and enhance AI service configurations
Commit notes
- Added @ai-sdk/openai version 3.0.12 and ai version 6.0.39 to dependencies. - Updated @ai-sdk/gateway and related packages to their latest versions. - Enhanced AI service functions to include provider options for reasoning effort in ai-copywriting, ai-tagging, and audio-analysis services. - Updated bun.lock and package.json files to reflect these changes.
- Files
- 6
- Added
- +51
- Removed
- −8
Merge pull request #248 from arminnaimi/cursor/flux-pack-name-embedding-3d02
Commit notes
FLUX pack name embedding
- Files
- 0
- Added
- +0
- Removed
- −0
feat(ai-cover): add pack name text embedding support for FLUX.1 schnell
Commit notes
- Add embedPackName option to GenerateCoverRequest interface - Implement buildTextEmbeddingPrompt function for style-specific text rendering - Update buildCoverPrompt to append text embedding when enabled - Add output_format and guidance_scale parameters per FLUX.1 API schema - Update routes to accept and pass embedPackName parameter - Update frontend API client and query hooks with embedPackName option - Add UI toggle in AICoverGenerator for embedding pack name as visible text The pack name can now be embedded as visible typography in the generated cover image, with style-specific rendering for abstract, photographic, and illustrated styles. Co-authored-by: armin.naimi <[email redacted]>
- Files
- 5
- Added
- +93
- Removed
- −10
- Files
- 0
- Added
- +0
- Removed
- −0
docs: Update AGENTS.md with comprehensive documentation
Commit notes
- Add missing backend routes: dashboard, mollie-connect, earnings, payouts - Add missing backend services: ai-cover-generation, mollie-connect, workspace-setup - Expand frontend components section with categorized tables: - Sequencer components (14 components) - Sample & library components (7 components) - Workspace & project components (4 components) - UI components (9 components) - User & subscription components (2 components) - Add Frontend Routes section with SvelteKit page documentation - Add Library Page Components subsection - Add API Client section documenting frontend/src/lib/api functions - Update monorepo structure to reflect dashboard and pack detail routes Co-authored-by: armin.naimi <[email redacted]>
- Files
- 1
- Added
- +188
- Removed
- −81
docs: Add comprehensive live migration strategy guide
Commit notes
- Create LIVE_MIGRATION_STRATEGY.md with detailed production migration guidance - Add PRE_DEPLOY migration job to .do/app.yaml for automatic migrations - Update DEPLOYMENT.md with improved migration documentation - Update AGENTS.md with new db:check and db:mark-applied commands - Fix missing 0015_mollie_connect entry in migration journal This guide covers: - Zero-downtime migration strategies - Breaking vs non-breaking changes - 3-phase deploy patterns for column changes - Rollback procedures - First-time deployment vs db:push transition Co-authored-by: armin.naimi <[email redacted]>
- Files
- 5
- Added
- +374
- Removed
- −24
- Files
- 0
- Added
- +0
- Removed
- −0
feat: Add pack name/description toggles to AI cover generator
Commit notes
- Add packName, packDescription, and projectName props to AICoverGenerator - Add toggle switches to include/override pack name and description - Show actual values when toggles are on, show input fields when off - Update API client and query hooks to pass override parameters - Update backend routes to accept packName, packDescription, projectName - Include project name in custom prompt when provided Co-authored-by: armin.naimi <[email redacted]>
- Files
- 5
- Added
- +256
- Removed
- −30
- Files
- 0
- Added
- +0
- Removed
- −0
feat: add AI-powered pack cover generation with 3 style options
Commit notes
- Add ai-cover-generation service using FAL.ai for image generation - Implement 3 cover styles: abstract, photographic, illustrated - Add routes for generating, refining, and applying AI covers - Create AICoverGenerator component with iterative refinement UI - Integrate AI cover generator into PackEditDrawer - Support custom prompts for influencing generation - Allow users to regenerate individual styles - Add FAL_KEY to config schema for FAL.ai integration Co-authored-by: armin.naimi <[email redacted]>
- Files
- 10
- Added
- +1466
- Removed
- −15
- Files
- 0
- Added
- +0
- Removed
- −0
feat: add pack cover image preview and upload in Pack Editor Drawer
Commit notes
- Add uploadPackCover API function to frontend/src/lib/api/packs.ts - Add createUploadPackCoverMutation hook to frontend/src/lib/query/hooks/packs.ts - Export the new mutation from frontend/src/lib/query/index.ts - Update PackEditDrawer.svelte with: - Cover image preview display (shows current cover or fallback gradient) - Click-to-upload functionality with camera icon overlay on hover - File type validation (JPEG, PNG, WebP) - File size validation (max 10MB) - Upload progress spinner indicator - Error handling and display - Reset state when pack changes Co-authored-by: armin.naimi <[email redacted]>
- Files
- 20
- Added
- +474
- Removed
- −131
fix(LibrarySampleGrid): optimize duplicate indicator rendering logic
Commit notes
Refactor the duplicate indicator logic to improve performance and readability. The duplicate color and count are now conditionally defined within the if block, ensuring they are only computed when necessary.
- Files
- 1
- Added
- +3
- Removed
- −3
- Files
- 0
- Added
- +0
- Removed
- −0
feat(audio-analysis): improve BPM, key, and loop detection accuracy
Commit notes
Major improvements to audio analysis algorithms: BPM Detection: - Replace first-order RC filters with 2nd-order Butterworth biquad filters (-12dB/octave) - Add beat tracking using Ellis-style dynamic programming for tempo verification - BPM detection only applied to detected loops (per design) Key Detection: - Implement proper HPSS (Harmonic-Percussive Source Separation) using median filtering - Add tuning detection for non-A440 audio with sub-bin frequency accuracy - Implement segment-wise key detection with majority voting for longer samples - Use ensemble of Krumhansl-Kessler and Temperley profiles Loop Detection: - Increase start/end comparison window from 50ms to 150ms - Add circular cross-correlation for phase-invariant matching - Add spectral continuity check at loop boundaries - Add amplitude discontinuity detection at loop points Feature Extraction: - Integrate Meyda.js for improved MFCC and spectral feature extraction - More accurate spectralCentroid, spectralSpread, spectralRolloff, spectralFlatness - More accurate zero-crossing rate calculation Co-authored-by: armin.naimi <[email redacted]>
- Files
- 3
- Added
- +1104
- Removed
- −335
- Files
- 0
- Added
- +0
- Removed
- −0
Improve BPM/key/loop detection accuracy
Commit notes
Co-authored-by: armin.naimi <[email redacted]>
- Files
- 2
- Added
- +612
- Removed
- −156
- Files
- 0
- Added
- +0
- Removed
- −0
- Files
- 0
- Added
- +0
- Removed
- −0
refactor: update share and upload link routes to use 'id' instead of 'token'
Commit notes
- Changed route parameters from 'token' to 'id' in share-comments and upload-links files for consistency. - Updated corresponding function calls to reflect the new parameter naming. - Adjusted frontend API calls to align with the updated route structure.
- Files
- 3
- Added
- +38
- Removed
- −38
- Files
- 0
- Added
- +0
- Removed
- −0
fix: address sharing system code issues
Commit notes
- Remove duplicate ShareDialog import in SampleEditDrawer.svelte - Fix incorrect $derived usage in ShareLinkCard.svelte (was returning function) - Fix incorrect $derived usage in UploadLinkCard.svelte (was returning function) - Remove redundant onMount in SharePermissions.svelte (already handled by $effect) Co-authored-by: armin.naimi <[email redacted]>
- Files
- 4
- Added
- +10
- Removed
- −14
- Files
- 0
- Added
- +0
- Removed
- −0
Implement sharing system
Commit notes
Co-authored-by: armin.naimi <[email redacted]>
- Files
- 35
- Added
- +4640
- Removed
- −89
- Files
- 0
- Added
- +0
- Removed
- −0
Update sharing spec with strategic alignment analysis
Commit notes
- Add section on how sharing fits the all-in-one vision - Map sharing features to producer jobs-to-be-done - Add feature gating by subscription tier (Free/Pro/Label) - Include concrete use cases for music producers - Add competitive positioning analysis - Include risk assessment and final recommendation - Clarify upgrade prompts and revenue alignment Co-authored-by: armin.naimi <[email redacted]>
- Files
- 1
- Added
- +303
- Removed
- −2
Add detailed specification for file and pack sharing system
Commit notes
- Document existing sharing infrastructure (shareLinks, sharePermissions) - Specify upload links feature for receiving files from collaborators - Design comments and annotations system for feedback on shared content - Plan activity tracking and notification system - Outline frontend routes and components needed - Include database migration summary and API routes - Prioritize implementation phases (MVP -> Advanced) Co-authored-by: armin.naimi <[email redacted]>
- Files
- 1
- Added
- +532
- Removed
- −0
docs: add UI design principles and constraints for interface development
Commit notes
- Introduced comprehensive UI design principles focusing on accessibility, interactions, feedback, and performance. - Added opinionated constraints for building better interfaces, including guidelines for stack usage, components, interaction, animation, typography, layout, and design. - Created new documentation files for UI skills to standardize interface development practices across projects.
- Files
- 5
- Added
- +492
- Removed
- −0
feat: highlight duplicate samples within project
Commit notes
- Add contentHash to library API response for duplicate detection - Add duplicate detection state and methods to LibraryState - Add visual highlighting in LibrarySampleGrid: - Colored left border for duplicate sample rows - Duplicate icon indicator in sample row - Header badge showing duplicate set count with toggle - Different duplicate groups use distinct colors for easy identification - Users can toggle duplicate highlighting on/off Co-authored-by: armin.naimi <[email redacted]>
- Files
- 3
- Added
- +169
- Removed
- −13
feat: scope sample similarity search to project
Commit notes
- Add projectId option to SimilaritySearchOptions interface - Update findSimilarSamples to filter by project ID - Update findSimilarSamplesFallback fallback function similarly - When projectId not provided, inherit from source sample's project - Add project_id query parameter to /library/samples/:id/similar endpoint Co-authored-by: armin.naimi <[email redacted]>
- Files
- 2
- Added
- +20
- Removed
- −1
refactor: update Header component for improved navigation and workspace context
Commit notes
- Changed the import statement to include both `resolve` and `resolveRoute` from `$app/paths`. - Refactored the workspace context display logic to improve layout and visibility on desktop. - Adjusted the command palette button to remove the icon and streamline the keyboard shortcut display.
- Files
- 1
- Added
- +14
- Removed
- −12
feat: enhance AI copywriting service and improve waveform component color handling
Commit notes
- Added a system prompt to the AI copywriting service to guide the model in generating sample pack descriptions. - Implemented a function in the waveform component to resolve CSS custom properties for color values, ensuring proper color rendering for waveforms, progress, and cursor indicators.
- Files
- 2
- Added
- +49
- Removed
- −21
- Files
- 2
- Added
- +4
- Removed
- −3
- Files
- 0
- Added
- +0
- Removed
- −0
chore: bump free tier storage to 10GB
Commit notes
Co-authored-by: armin.naimi <[email redacted]>
- Files
- 2
- Added
- +2
- Removed
- −2
feat: update subscription tiers - Free 5GB, Pro 100GB, Team 500GB with 5 seats
Commit notes
- Update storage limits: Free 5GB, Pro 100GB, Team/Label 500GB - Add Team/Label tier with 5 seats support (€29/mo or €290/yr) - Remove fake/misleading features from SubscriptionDrawer - Add accurate feature list: 0% fees for Pro, storage amounts - Update database schema with team_monthly/team_yearly plans - Update subscription service, routes, and API for new tiers - Update frontend stores and query hooks for team plans - Both Pro and Team plans get 0% marketplace fee Co-authored-by: armin.naimi <[email redacted]>
- Files
- 9
- Added
- +316
- Removed
- −175
docs: add business model review with critical findings
Commit notes
Key findings: - Storage claim in UI is misleading (says '50x more' but both tiers get 100GB) - Pro features list includes unimplemented items (priority processing) - Adverse selection economics: power sellers pay flat fee, casual sellers pay % - No monetization path for buyers - Marketplace fee structure is sound Recommendations: - Fix false storage claims (legal risk) - Differentiate storage limits (e.g., 5GB free, 100GB pro) - Consider 5% Pro fee instead of 0% to capture power seller revenue - Add buyer monetization (subscriptions, credits) Co-authored-by: armin.naimi <[email redacted]>
- Files
- 1
- Added
- +231
- Removed
- −0
fix: address critical issues in subscription and marketplace functionality
Commit notes
Critical fixes: 1. OAuth state storage: Move from in-memory Map to Redis for production reliability and horizontal scaling support (mollie-connect.ts) 2. Purchase completion: Wrap status update and earnings credit in a database transaction to ensure atomicity (purchases.ts) 3. Redirect URL validation: Add isValidRedirectUrl() check to subscription checkout and resume endpoints to prevent open redirect attacks (subscription.ts) Medium fixes: 4. Webhook logging: Improve error logging from debug to warn level when no handler processes a webhook, with detailed error information (subscription.ts) 5. Payout race condition: Use transaction for atomic balance update and payout creation, with accurate error messages on failure (purchases.ts) Minor fixes: 6. Structured logging: Replace console.log/error with structured logger in sample-packs.ts for consistent log formatting Co-authored-by: armin.naimi <[email redacted]>
- Files
- 5
- Added
- +280
- Removed
- −186
docs: add comprehensive review of subscription and marketplace functionality
Commit notes
- Identify 3 critical issues: OAuth state in-memory, missing transaction in purchase completion, missing redirect URL validation - Document 2 medium issues: silent webhook error handling, payout race condition - List 3 minor issues: console.log usage, confusing storage logic, missing index - Include positive observations and actionable recommendations - Prioritized action items for remediation Co-authored-by: armin.naimi <[email redacted]>
- Files
- 1
- Added
- +315
- Removed
- −0
- Files
- 0
- Added
- +0
- Removed
- −0
Update analysis doc to reflect implementation status
Commit notes
Co-authored-by: armin.naimi <[email redacted]>
- Files
- 1
- Added
- +9
- Removed
- −2
Fix prettier formatting in frontend files
Commit notes
Co-authored-by: armin.naimi <[email redacted]>
- Files
- 3
- Added
- +10
- Removed
- −10