Commit Graph

8 Commits

Author SHA1 Message Date
Kyle Fang
bbf30d8b34 wip: refactor spa-hooks to use useSyncExternalStore and immer
- Replace context-based state management with useSyncExternalStore
- Add immer for immutable state updates
- Implement selector-based API for better performance
- Add TgProvider to track current chat context
- Strong typing support with TgGlobalState interface

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-08 22:59:38 +08:00
Kyle Fang
9729c1a829 feat: add message persistence support to MtcuteAdapter
- Add MessagePersistenceOptions interface with getPreviousMessageId/setPreviousMessageId callbacks
- Add optional MtcuteAdapterOptions parameter to constructor
- Make containerId stable using chatId and optional key instead of timestamp
- Implement message ID persistence logic to edit existing messages after bot restarts
- Handle MESSAGE_ID_INVALID errors gracefully by creating new messages
- Simplify initialization by removing unnecessary messageIdInitialized flag

feat: implement message persistence in persist-todo-bot example

- Create MessageIdStorage class for managing message IDs on disk
- Store message IDs in separate file (message-ids.json)
- Wire up message persistence callbacks in the adapter
- Update documentation to reflect message persistence feature

BREAKING CHANGE: sendReactMessage now strictly accepts chatId as number (not number | string)

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-08 00:36:03 +08:00
Kyle Fang
926559540d feat: add persistent todo bot example and improve adapter API
- Add comprehensive persistent todo bot example with MobX state management
- Implement custom storage layer with FileStorage and MemoryStorage
- Add TodoStore with full CRUD operations and persistence
- Create unified PersistentTodoBot component with single /start command
- Add comprehensive test suite with Vitest

BREAKING CHANGE: Simplify MtcuteAdapter API
- Remove botToken from config (now passed to start() method)
- Constructor accepts either TelegramClient or config object directly
- start() method now requires botToken parameter
- Update all examples to use the new cleaner API

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-07 16:20:58 +08:00
Kyle Fang
06e9bd0b79 feat: add React Router example with MemoryRouter
- Install react-router-dom dependency
- Create react-router-experiment.tsx demonstrating React Router usage
- Implement navigation with Routes, nested routes, and navigation hooks
- Add example pages: Homepage, BlogsIndex, and BlogPage with params
- Use MemoryRouter for in-memory routing suitable for Telegram bots

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-03 10:26:33 +08:00
Kyle Fang
ce93835833 feat: add tetris... 2025-07-02 22:36:29 +08:00
Kyle Fang
9c85277f85 feat: add useeffect-interval hook implementation 2025-07-01 11:33:00 +08:00
Kyle Fang
2d57a7c9c9 fix: resolve GitHub Actions workflow failures
- Add README.md to packages/examples for docs workflow
- Fix CI workflow bun filter commands and add test env vars
- Add security permissions for SARIF upload in security workflow
- Document NPM_TOKEN requirement in release workflow

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-01 10:22:16 +08:00
Kyle Fang
457f933273 refactor: reorganize into monorepo with Bun workspaces
- Split project into three packages:
  - @react-telegram/core: Core React reconciler
  - @react-telegram/mtcute-adapter: MTCute Telegram adapter
  - @react-telegram/examples: Example bots (private)
- Add <br /> tag support for line breaks
- Update all examples to use <br /> instead of {'\n'}
- Configure Bun workspaces for better package management
- Update imports to use package names instead of relative paths
- Update README with new installation instructions
- Remove test files (moved to separate testing setup)

BREAKING CHANGE: Package names changed from react-telegram to @react-telegram/*

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-01 09:58:46 +08:00