Skip to content

Develop - #922

Closed
waonme wants to merge 21 commits into
concrnt:developfrom
waonme:develop
Closed

Develop#922
waonme wants to merge 21 commits into
concrnt:developfrom
waonme:develop

Conversation

@waonme

@waonme waonme commented Feb 15, 2026

Copy link
Copy Markdown
Contributor

Related Issue

close #xxx

What

Why

懸念事項 / Concerns

動作確認 / Checks (if needed)

その他 / Additional info (optional)

waonme and others added 21 commits February 15, 2026 16:53
…Library, and refactor editor

- Isolate all storage from concurrent-world: KV keys use `world.concurrent.arakoshi.*`,
  IndexedDB uses `concrnt-arakoshi`, localStorage keys prefixed with `arakoshi:`
- Add shared `useDebouncedKVSync` hook for debounced KV writes with JSON diff check,
  applied to both PreferenceContext and LibraryContext
- Mount LibraryProvider, add /library route and menu entries with i18n (EN/JA)
- Add managed Watch/Ack tracking via `useManagedOperations` hook with auto-cleanup
- Extract `useDraftState`, `usePostAction`, `useMediaUpload` hooks from CCPostEditor

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…ay rules

Add full Keep/Library feature set across 10 phases:
- KeepButton component integrated into Profile, Timeline, and MessageActions
- Kind-specific managed operations (user→ack+watch, timeline→watch)
- KeepPage with inline actions, folder filter, batch operations, and edit drawer
- Partial cleanup failure UX with retry
- DisplayRule rendering (hide/omit/blur/normal) in MessageContainer
- FolderManager and TagRuleManager for library organization
- DraftContext with persistent draft registry and DraftsPage
- Scheduled post runner with datetime picker dialog
- i18n keys added across all 6 locales (en, ja, ko, th, zh-Hans, zh-Hant)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
… post reliability

- Replace Managed.watchSubs with watchTargets (fqid+subId pairs) to fix
  crash when removing user Keep items whose ref lacks fqid
- Route unkeep through removeWithCleanup to properly unsubscribe/unack
- Replace non-deterministic firstSubId with findSubIdFor that prefers
  matching subscriptions
- Remove document.hidden gate and add visibilitychange listener so
  scheduled posts fire on tab resume
- Add retry logic (max 3) for failed scheduled posts instead of
  immediately clearing scheduledAt
- Fix omit display rule showing wrong "muted by word" text

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
… acceptance tests

Add O(1) Map lookups (userByCcid, timelineByFqid, tagRuleByTag) to LibraryContext
and rewrite useDisplayRule to use them instead of O(n) array scans. Add WatchButton
to TimelinePage header, unify KeepPage pin to IconButton+Tooltip matching DraftsPage,
fix ko/th i18n to use Watch vocabulary, add migration logging for watchSubs→watchTargets,
and document 14 manual acceptance test cases.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…tch offer

- Move DraftProvider outside EditorModalProvider so CCPostEditor can
  access useDraftContext and register drafts with draftKey
- Add Edit button to DraftsPage that opens EditorModal with draftKey
- Add inFlightRef dedup guard to useScheduledPostRunner to prevent
  duplicate posts on rapid visibility changes
- Preserve library item on partial unkeep failure with cleanupFailed
  flag and Retry button in KeepPage
- Add Watch Author snackbar action on message keep in useKeepToggle
- Expand manual acceptance tests to 18 cases

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…n, draft cleanup, omit UI

1. [HIGH] watchManaged no longer auto-creates timeline entries; new
   watchManagedFor(itemId) attaches targets to any existing item
2. [HIGH] User Keep fires Ack independently of Watch — subId absence
   no longer blocks user.Ack() / managed.ack recording
3. [MEDIUM] Message Watch Author uses watchManagedFor to record
   watchTargets on the message item, making Unkeep cleanup consistent
4. [MEDIUM] removeDraft now clears draftKey localStorage keys
   (draft/draftEmojis/draftMedias) to prevent stale data
5. [MEDIUM] Omit UI updated to OneLineMessageView-style single-row
   layout with avatar, truncated label, and click-to-restore
6. [LOW] All useKeepToggle snackbar strings use i18n t() via
   ui.messageActions keyPrefix; 6 locale JSON files updated
7. [DOCS] AGENT_BRIEF, manual-acceptance (20 tests), progress-map
   updated to reflect all review fixes

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Fix Migrator.tsx writing to upstream `world.concurrent.preference`
  instead of `${KV_PREFIX}.preference` (hard gate violation)
- Phase 10 verified: Home/Watch naming consistent across 6 locales
- Phase 11 verified: watchSubs migration code clean, no legacy writes,
  no double subscription risk
- Add execution order guide and Pass/Fail log template to
  manual-acceptance.md (20 test cases)
- Add Phase 11 completion criteria to AGENT_BRIEF.md
- Update progress-map.md: Phase 10/11 marked complete

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Add onSaveDraft/submitButtonLabel/submitIcon props to CCPostEditor so
the submit action can be redirected to "save as draft" instead of
posting to the server.  DraftsPage renders the editor at the top with
a draftKey-rotation pattern: on save the key is replaced with a new
UUID, React remounts the editor fresh, and the old draft persists in
localStorage + DraftContext for the list below.  Satisfies Case21.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@waonme

waonme commented Feb 15, 2026

Copy link
Copy Markdown
Contributor Author

すみません間違えました!!

@waonme waonme closed this Feb 15, 2026
@waonme
waonme deleted the develop branch February 15, 2026 14:00
@waonme
waonme restored the develop branch February 15, 2026 14:03
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant