Releases: tindotdev/append
v0.6.0: Phase 5 - Custom Buckets & Hono RPC
What's New
Phase 5: Custom User Buckets & Hono RPC
Phase 5A: Hono RPC for type-safe API calls
- Replace manual fetch with
hc<AppType>client - End-to-end type safety from API to frontend
Phase 5B: Bucket table for user-owned custom buckets
- New
buckettable with user ownership - Default buckets seeded on user creation
Phase 5C: Bucket CRUD API
- Full create/read/update/delete operations
- Drag-drop reordering support
Phase 5D: Bucket manager UI
- Settings page with bucket management
- Drag-drop reordering with optimistic updates
Bug Fixes
- Fix ambiguous column name in
listBucketssubquery - Add runtime bucket validation to
updateCandidate
Maintenance
- Documentation refresh for Phase 5
- Dependency updates
v0.5.0: Phase 4 Parallel Suggestion Generation
Phase 4: Parallel Suggestion Generation
Key Features
- Parallel Streaming: Implement concurrent suggestion generation with concurrency limit of 10, achieving ~10x speedup (from ~100s to ~10s for 20 terms)
- Progress Tracking: Real-time progress indicator showing "Generating X/Y..." during generation
- Local Development Support: Fixed local development to work without Secrets Store access
Implementation Details
Parallel Streaming Utility
- New
parallelStream()async generator inpackages/api/src/platform/parallel.ts - Respects concurrency limits while yielding results immediately as tasks complete
- Supports error isolation using
PromiseSettledResult
Suggestion Generation Updates
- Updated
generateSuggestions()to use parallel streaming instead of sequential processing - Results stream to client as each LLM call completes for responsive UI
Progress Tracking
- Enhanced
BatchDetailPageandBatchHeadercomponents - Tracks completion progress with ref-based guard to prevent duplicate API calls
- Displays precise progress feedback to users
Local Development Improvements
- Added
getSecretValue()helper supporting dual-mode secrets - Cloudflare Secrets Store bindings now production-only
- Local
.dev.varsseamlessly supports development workflows
What's Fixed
- Local development environment now works independently of remote Secrets Store access
- Removed unused AI binding that caused connection issues
Commits Included
4141809: feat(api,web): implement parallel suggestion generation (Phase 4)c2a6db5: fix(api): support local dev without Secrets Store access
Related Issues
Closes implementation of Phase 4 from project roadmap
v0.4.0 - shadcn/ui + TanStack Form Migration
What's New
This release completes Phase 3 of the roadmap by migrating the UI to shadcn/ui components and implementing TanStack Form with Valibot validation.
Features
- shadcn/ui components: Button, DropdownMenu, Input, Label, Select, Textarea
- TanStack Form integration: New
field.tsxcomponent for form fields with shadcn styling - ProtectedLayout: Migrated dropdowns to shadcn DropdownMenu (fixes click-outside behavior)
- BatchNewPage: Migrated to TanStack Form with Valibot schema validation
- CandidateInputs/CandidateActions: Migrated to shadcn components
Fixes
- Resolved Biome lint errors from migration
- Disabled noExplicitAny rule (too noisy for Cloudflare Workers code)
- Added justified suppressions for cognitive complexity warnings
v0.3.2: Accept All Button + UX Improvements
What's New in v0.3.2
This release completes Phase 1 (Critical Bug Fix) and Phase 2 (Quick UX Wins) from the roadmap.
Phase 1: Critical Bug Fix ✅
Fixed the "Accept All" flow - Users can now accept entire batches and see their terms in bucket pages.
- ✅ Added Accept All button to batch detail page
- ✅ Fixed bucket pages showing no items (issue #6)
- ✅ Fixed export showing empty list (issue #8)
- ✅ Improved error handling with better ApiRequestError details
Phase 2: Quick UX Wins ✅
Made the app more flexible and user-friendly
- ✅ Lowered minimum terms from 20 to 1 (issue #1) - you can now capture single terms!
- ✅ Collapsed accepted candidates into details section (issue #5) - cleaner UI during review
Also Included
- Added deployment scripts to package.json for easier deployments
Full Changelog: v0.3.1...v0.3.2
v0.3.1 - AI Gateway Authentication Fixes
Fixes
- AI Gateway Authentication: Properly configure CF_ACCOUNT_ID and CF_AIG_TOKEN for authenticated AI Gateway requests
- SSE Streaming: Fix bucket conflict test to properly consume SSE streams
- CI Linting: Resolve Biome linting errors
Documentation
- Add ADR for Cloudflare Secrets Store integration
Full Changelog
v0.3.0 - Vertical Slice Architecture
What's Changed
Architecture
- Vertical slice refactoring - Migrated both API and Web to vertical slice architecture for better feature isolation
- ESLint boundaries - Added
eslint-plugin-boundariesfor enforcing feature isolation - Shared contracts - New
@append/contractspackage for shared types and validators
Features
- SSE streaming - Real-time streaming for batch suggestion generation
- Cloudflare Secrets Store - Integrated for secure OpenAI API key management
- AI Gateway Lab - New package for LLM experimentation with batch mode
API Improvements
- Migrated all routes to feature-based structure (
/features/{feature}/) - Added proper idempotency key handling
- Improved test isolation and compatibility
Web Improvements
- TanStack Router integration with proper route organization
- Feature-based component and API structure
- Improved protected layout and navigation
Infrastructure
- Added Biome for formatting/linting with pre-commit hooks
- Updated CI workflows
- Fixed vitest-pool-workers peer dependencies
🤖 Generated with Claude Code
v0.2.3
What's Changed
- Update actions/setup-node action to v6 by @renovate[bot] in #11
- Update actions/checkout action to v6 by @renovate[bot] in #10
- Update dependency @cloudflare/workers-types to v4.20251224.0 by @renovate[bot] in #7
- Update dependency @tanstack/react-devtools to v0.8.6 by @renovate[bot] in #3
- Update dependency better-auth to v1.4.9 by @renovate[bot] in #4
- Update pnpm to v10.26.2 by @renovate[bot] in #5
- Update dependency @cloudflare/vitest-pool-workers to ^0.11.0 by @renovate[bot] in #6
- chore(deps): update tanstack-router monorepo to v1.143.4 by @renovate[bot] in #16
- chore(deps): update vitest monorepo to v4 (major) by @renovate[bot] in #17
New Contributors
Full Changelog: v0.2.2...v0.2.3
v0.2.2: Cloudflare AI Gateway Unified Billing
Changes
- Unified Billing: Migrate from direct OpenAI API key to Cloudflare AI Gateway Unified Billing
- Replace
OPENAI_API_KEYsecret withCF_AIG_TOKEN - Use
cf-aig-authorizationheader instead ofAuthorization - Single billing through Cloudflare credits
- Replace
Configuration
Required Worker secret:
pnpm wrangler secret put CF_AIG_TOKENPrerequisites:
- Load credits in Cloudflare Dashboard → AI → AI Gateway → Credits
- Create Cloudflare API token with AI Gateway permissions
- Ensure AI Gateway
append-gatewayexists
Files Changed
packages/api/src/lib/suggestions.ts- Auth header and config interfacepackages/api/src/routes/batch.ts- Bindings and validationdocs/adr/0006-openai-gpt-5-mini-via-ai-gateway.md- Updated to Unified Billingdocs/vertical-slice.md- Updated Step 3 config
v0.2.1: CI/CD Test Integration
CI/CD Enhancement
This release adds automated testing to the deployment pipeline and documents the testing strategy.
What's New
CI/CD Integration
- Tests and typecheck now run before every deployment to production
- Deployment workflow updated to catch issues earlier in the pipeline
- Prevents broken code from reaching production
Testing Strategy Documentation
- Comprehensive testing strategy documented in
docs/testing.md - Covers unit, integration, and E2E testing approaches
- Includes guidance for D1 database testing, auth mocking, and deployment verification
Housekeeping
- Cleaned up temporary task files post-Step 2
- Added testing documentation to docs index
Previous Features (v0.2.0)
Step 2: Batch Input - Complete
- Domain schema:
Term,TermSense,Bucketwith duplicate handling - Batch API: Parse multiline input, create buckets, accept terms
- Web routes: Batch input UI with protected authentication
- Comprehensive test coverage for batch operations
Step 1: Single-term flow - Complete (v0.1.0)
- Google SSO authentication with allowlist
- Single term input and bucket creation
- D1 schema with migrations
Full Changelog: v0.2.0...v0.2.1
v0.2.0
What's Changed
- WIP: step2-batch-input by @tindotdev in #1
New Contributors
- @tindotdev made their first contribution in #1
Full Changelog: v0.1.0...v0.2.0