Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
21 commits
Select commit Hold shift + click to select a range
a4b1c66
Separate storage namespaces from upstream, unify KV writes, activate …
waonme Feb 15, 2026
3d0fd32
docs: unify agent handoff references to concurrent-arakoshi-world
waonme Feb 15, 2026
08da7fd
docs: add experimental fork requirements and link docs
waonme Feb 15, 2026
1a0f54d
docs: add AGENT_BRIEF minimal handoff requirements
waonme Feb 15, 2026
cec93a3
feat: implement Keep/Library UI/UX with drafts, scheduling, and displ…
waonme Feb 15, 2026
252d654
docs: update handoff progress and review for cec93a33 implementation
waonme Feb 15, 2026
d70f228
fix: address cec93a33 review — watchTargets, cleanup unkeep, schedule…
waonme Feb 15, 2026
af3edad
docs: sync handoff docs with current watchTargets/library changes
waonme Feb 15, 2026
34863c8
feat: optimize display rule lookups, unify Watch/Pin UI, and finalize…
waonme Feb 15, 2026
f3ca96a
docs: record latest implementation review and O(1) lookup delivery
waonme Feb 15, 2026
f2b1be4
feat: draft edit flow, scheduled post guard, unkeep retry, message wa…
waonme Feb 15, 2026
684d0f4
fix: review fixes — watchManaged isolation, Ack/Watch decoupling, i18…
waonme Feb 15, 2026
79b4da3
fix: namespace violation in Migrator + finalize Phase 10/11
waonme Feb 15, 2026
2381d9b
docs: record hard gate automated audit results in progress-map
waonme Feb 15, 2026
eae40fa
docs: record acceptance test execution log (20/20 Pass, code-path audit)
waonme Feb 15, 2026
8f73f15
feat: add inline CCPostEditor to DraftsPage with draft-save flow
waonme Feb 15, 2026
3f5681b
Show library item names for users and communities
waonme Feb 15, 2026
d0507d1
Fix WatchButton crash and blur click handling
waonme Feb 15, 2026
4190cbc
Preserve destination state for draft posts and drafts-page inline com…
waonme Feb 15, 2026
d3084f0
Auto-add created community timeline to library
waonme Feb 15, 2026
8f527fc
Update handoff docs and ignore local env variables
waonme Feb 15, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 8 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -30,5 +30,13 @@ package-lock.yaml
test-results
playwright-report
storybook-static
docs/.obsidian/

dev-dist

# playwright-cli
.playwright-cli/

# Environment variables
.env
.env.*
5 changes: 5 additions & 0 deletions app/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -85,6 +85,9 @@
"@storybook/addon-essentials": "^8.5.3",
"@storybook/react": "^8.5.3",
"@storybook/react-vite": "^8.5.3",
"@testing-library/jest-dom": "^6.9.1",
"@testing-library/react": "^16.3.2",
"@testing-library/user-event": "^14.6.1",
"@types/elliptic": "^6.4.14",
"@types/node-forge": "^1.3.1",
"@types/react": "^18.0.26",
Expand All @@ -94,6 +97,7 @@
"@types/uuid": "^9.0.1",
"@types/ws": "^8.5.4",
"@vitejs/plugin-react-swc": "^3.7.2",
"jsdom": "^28.1.0",
"mdast-util-to-hast": "^13.2.0",
"preset": "link:@storybook/react-vite/preset",
"prop-types": "15.8.1",
Expand All @@ -102,6 +106,7 @@
"unplugin-info": "^1.2.1",
"vite": "^6.0.11",
"vite-plugin-pwa": "^0.21.1",
"vitest": "^4.0.18",
"workbox-precaching": "^7.3.0"
},
"packageManager": "pnpm@8.6.1",
Expand Down
68 changes: 67 additions & 1 deletion app/public/locales/en/translation.json
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@
"fav": "Favorite",
"reaction": "Reaction",
"mutedByWord": "Post muted by word",
"omittedByDisplayRule": "Post hidden by display rule",
"mutedByTimeline": "Post muted by timeline",
"show": "Show",
"followed": "Follows you",
Expand Down Expand Up @@ -122,6 +123,63 @@
"contacts": {
"title": "Contacts"
},
"library": {
"title": "Library",
"users": "Users",
"communities": "Communities",
"messages": "Messages",
"noItems": "No items yet.",
"keep": "Keep",
"unkeep": "Unkeep",
"pin": "Pin",
"pinned": "Pinned",
"mark": "Mark",
"marked": "Marked",
"memo": "Memo",
"edit": "Edit",
"folder": "Folder",
"tags": "Tags",
"display": "Display",
"displayNormal": "Normal",
"displayBlur": "Blur",
"displayOmit": "Omit",
"displayHide": "Hide",
"watch": "Watch",
"unwatch": "Unwatch",
"ack": "Follow",
"unack": "Unfollow",
"manageFolders": "Manage Folders",
"tagRules": "Tag Rules",
"batchMove": "Move to Folder",
"batchTag": "Tag",
"batchSubscribe": "Subscribe",
"batchUnsubscribe": "Unsubscribe",
"cleanupFailed": "Some cleanup operations failed",
"retry": "Retry",
"kept": "Kept",
"addFolder": "Add Folder",
"renameFolder": "Rename Folder",
"deleteFolder": "Delete Folder"
},
"drafts": {
"title": "Drafts",
"noDrafts": "No drafts yet.",
"newDraft": "New Draft",
"schedule": "Schedule",
"scheduledFor": "Scheduled for",
"scheduleFailed": "Failed to send scheduled post",
"scheduleWarning": "Please keep this tab open for scheduled posts to send.",
"delete": "Delete",
"pin": "Pin",
"cancel": "Cancel",
"failed": "Failed",
"saveDraft": "Save",
"composePlaceholder": "Write a new draft..."
},
"list": {
"subtitle": "Your watched timelines",
"goExplore": "Follow communities to get started"
},
"explore": {
"title": "Explore",
"domains": "Domains",
Expand Down Expand Up @@ -322,10 +380,18 @@
"superReaction": "Super reaction",
"translate": "Translate",
"inspect": "Inspect",
"keep": "Keep",
"unkeep": "Unkeep",
"delete": "Delete",
"reallyDelete": "Really delete this message?",
"confirmDelete": "Confirm",
"removeFromStream": "Remove from Stream"
"removeFromStream": "Remove from Stream",
"messageKept": "Message kept",
"watchAuthor": "Watch Author",
"nowWatchingAuthor": "Now watching author",
"keepFailed": "Failed to keep",
"cleanupFailedRetry": "Some cleanup failed. Retry from Library.",
"unkeepFailed": "Failed to unkeep"
},
"emoji": {
"letsAddEmojiPack": "Let's add an emoji package from settings",
Expand Down
68 changes: 67 additions & 1 deletion app/public/locales/ja/translation.json
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@
"fav": "お気に入り",
"reaction": "リアクション",
"mutedByWord": "ワードミュートした投稿",
"omittedByDisplayRule": "表示ルールにより非表示",
"mutedByTimeline": "タイムラインミュートした投稿",
"show": "表示する",
"followed": "フォローされています",
Expand Down Expand Up @@ -106,6 +107,10 @@
"home": {
"title": "ホーム"
},
"list": {
"subtitle": "ウォッチ中のタイムライン",
"goExplore": "コミュニティをフォローして始めましょう"
},
"notifications": {
"title": "通知",
"favorite": "{{ name }}さんがあなたのカレントをお気に入りしました",
Expand All @@ -121,6 +126,59 @@
"contacts": {
"title": "連絡先"
},
"library": {
"title": "ライブラリ",
"users": "ユーザー",
"communities": "コミュニティ",
"messages": "メッセージ",
"noItems": "まだアイテムがありません",
"keep": "キープ",
"unkeep": "キープ解除",
"pin": "ピン留め",
"pinned": "ピン留め中",
"mark": "マーク",
"marked": "マーク中",
"memo": "メモ",
"edit": "編集",
"folder": "フォルダ",
"tags": "タグ",
"display": "表示",
"displayNormal": "通常",
"displayBlur": "ぼかし",
"displayOmit": "省略",
"displayHide": "非表示",
"watch": "ウォッチ",
"unwatch": "ウォッチ解除",
"ack": "フォロー",
"unack": "フォロー解除",
"manageFolders": "フォルダ管理",
"tagRules": "タグルール",
"batchMove": "フォルダに移動",
"batchTag": "タグ",
"batchSubscribe": "購読",
"batchUnsubscribe": "購読解除",
"cleanupFailed": "一部のクリーンアップに失敗しました",
"retry": "再試行",
"kept": "キープ済み",
"addFolder": "フォルダを追加",
"renameFolder": "フォルダ名を変更",
"deleteFolder": "フォルダを削除"
},
"drafts": {
"title": "下書き",
"noDrafts": "下書きはまだありません",
"newDraft": "新しい下書き",
"schedule": "スケジュール",
"scheduledFor": "予定日時",
"scheduleFailed": "予約投稿の送信に失敗しました",
"scheduleWarning": "予約投稿を送信するにはこのタブを開いたままにしてください",
"delete": "削除",
"pin": "ピン留め",
"cancel": "キャンセル",
"failed": "失敗",
"saveDraft": "保存",
"composePlaceholder": "新しい下書きを入力..."
},
"explore": {
"title": "探索",
"domains": "ドメイン",
Expand Down Expand Up @@ -321,10 +379,18 @@
"superReaction": "スーパーリアクション",
"translate": "翻訳",
"inspect": "詳細",
"keep": "キープ",
"unkeep": "キープ解除",
"delete": "削除",
"reallyDelete": "本当にこのメッセージを削除しますか?",
"confirmDelete": "削除",
"removeFromStream": "このStreamから削除"
"removeFromStream": "このStreamから削除",
"messageKept": "メッセージをキープしました",
"watchAuthor": "著者をウォッチ",
"nowWatchingAuthor": "著者をウォッチ中",
"keepFailed": "キープに失敗しました",
"cleanupFailedRetry": "一部のクリーンアップに失敗しました。ライブラリから再試行してください。",
"unkeepFailed": "キープ解除に失敗しました"
},
"emoji": {
"letsAddEmojiPack": "設定から絵文字パッケージを追加しましょう",
Expand Down
70 changes: 69 additions & 1 deletion app/public/locales/ko/translation.json
Original file line number Diff line number Diff line change
Expand Up @@ -7,12 +7,17 @@
"follow": "팔로우",
"following": "팔로잉",
"unfollow": "언팔로우",
"followers": "팔로워"
"followers": "팔로워",
"omittedByDisplayRule": "표시 규칙에 의해 숨김"
},
"pages": {
"home": {
"title": "홈"
},
"list": {
"subtitle": "보고 있는 타임라인",
"goExplore": "커뮤니티를 팔로우하여 시작하세요"
},
"notifications": {
"title": "알림"
},
Expand Down Expand Up @@ -47,6 +52,59 @@
"logoutWarn": "비밀코드 없이는 다시 로그인 못해"
}
},
"library": {
"title": "라이브러리",
"users": "사용자",
"communities": "커뮤니티",
"messages": "메시지",
"noItems": "아직 항목이 없습니다.",
"keep": "보관",
"unkeep": "보관 해제",
"pin": "고정",
"pinned": "고정됨",
"mark": "마크",
"marked": "마크됨",
"memo": "메모",
"edit": "편집",
"folder": "폴더",
"tags": "태그",
"display": "표시",
"displayNormal": "일반",
"displayBlur": "흐림",
"displayOmit": "생략",
"displayHide": "숨기기",
"watch": "구독",
"unwatch": "구독 해제",
"ack": "팔로우",
"unack": "언팔로우",
"manageFolders": "폴더 관리",
"tagRules": "태그 규칙",
"batchMove": "폴더로 이동",
"batchTag": "태그",
"batchSubscribe": "구독",
"batchUnsubscribe": "구독 해제",
"cleanupFailed": "일부 정리 작업이 실패했습니다",
"retry": "재시도",
"kept": "보관됨",
"addFolder": "폴더 추가",
"renameFolder": "폴더 이름 변경",
"deleteFolder": "폴더 삭제"
},
"drafts": {
"title": "임시 저장",
"noDrafts": "아직 임시 저장된 글이 없습니다.",
"newDraft": "새 임시 저장",
"schedule": "예약",
"scheduledFor": "예약 시간",
"scheduleFailed": "예약 게시 전송에 실패했습니다",
"scheduleWarning": "예약 게시를 전송하려면 이 탭을 열어두세요.",
"delete": "삭제",
"pin": "고정",
"cancel": "취소",
"failed": "실패",
"saveDraft": "저장",
"composePlaceholder": "새 초안 작성..."
},
"lists": {
"title": "리스트"
}
Expand Down Expand Up @@ -102,6 +160,16 @@
"user": "유저",
"pin": "고정",
"delete": "삭제"
},
"messageActions": {
"keep": "보관",
"unkeep": "보관 해제",
"messageKept": "메시지를 보관했습니다",
"watchAuthor": "작성자 구독",
"nowWatchingAuthor": "작성자를 구독 중입니다",
"keepFailed": "보관에 실패했습니다",
"cleanupFailedRetry": "일부 정리 작업이 실패했습니다. 라이브러리에서 재시도하세요.",
"unkeepFailed": "보관 해제에 실패했습니다"
}
},
"settings": {
Expand Down
Loading
Loading