WIP: feat/moderation #11

Closed
starsetbyte wants to merge 26 commits from feat/moderation into main
Owner
No description provided.
Covers ModerationEngine (FilterResult sealed class), data layer
(ModerationRepository, LabelerRepository, new Room entities), UI layer
(PostCard ghost rows + warning cards + overflow menu, per-labeler
content filtering screens, mute words chip cloud), and like/repost
consistency fix for SearchScreen.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Replaces MVP_IMPLEMENTATION_PLAN.md. Reflects current status (phases 0-6,
search, and feed sync complete), adds moderation as the next active phase
with pointers to the spec and plan, removes Play Store as a hard gate,
and adds muteActor/block/labeler lexicon facts to the AT Protocol reference.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Move Label from NotificationModels to FeedModels (same package, no import change needed)
- Add Label.neg field for negation support
- Add labels: List<Label> to Author and PostView
- Add blocking: String? to ViewerState (AT-URI of own block record)
- Add LabelersPref + LabelerPrefItem to PreferenceModels with serializer case
- Create LabelerModels.kt: LabelBehavior enum, LabelDefinition, LabelLocale, LabelerView, LabelerPolicies, GetLabelerServicesResponse
- Create MuteWord.kt: text + expiresAt (epoch millis, null = permanent)
- Add labelsJson: String? to PostEntity (DB version bump deferred to Task 2)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- LabelsBottomSheet: ModalBottomSheet listing all labels with advisory/normal
  icon distinction and labeler attribution
- PostOverflowMenu: Dropdown with mute/unmute and block/unblock toggles
- PostCard: new label bubble (tag emoji + count) in PostHeader row that opens
  LabelsBottomSheet; PostOverflowMenu added at end of PostActions row
- New PostCard params (all defaulted): onMute, onBlock, labelerNameFor
- FeedViewModel, CustomFeedViewModel, ThreadViewModel, SearchViewModel, ProfileViewModel: inject ModerationEngine + LabelerRepository, add checkModeration/labelerNameFor/muteAccount/blockAccount
- FeedRoute, ThreadScreen, SearchScreen, FeedHostScreen: pass filterResult and moderation lambdas to PostCard, skip Blocked items
LabelerRepository.init fires at app startup before OAuth session exists.
syncFromServer() calls getPreferences() → 401 → swallowed by runCatching.
Default labeler subscribed locally but labeler views never loaded.

Fix:
- Inject SessionManager, collect authState flow
- Wait for Authenticated state before making any network calls
- After subscribing default labeler, pre-load getLabelerViews() so
  label definitions (descriptions, severity, blurs) are available
  for content filtering immediately
- Add diagnostic logging (LabelerRepo, DpopInterceptor, PdsRouting)
- Add testOptions.returnDefaultValues for android.util.Log in tests
fix(postcard): align overflow icon with the other four action buttons
All checks were successful
peregrine-ci / assembleDebug Build succeeded (1m5s)
03486c3e2a
PostOverflowMenu used Material3's IconButton (40.dp default touch target),
while reply/repost/like/share in PostActions are a custom Row+clickable+
padding(6.dp) wrapping an 18.dp icon — a visibly smaller box. That size
mismatch made the overflow icon the only one of the five not lined up.
Rebuilt it with the same Box+clickable+padding(6.dp)+size(18.dp) pattern.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Author
Owner

this is still a work in progress and is not ready to commit. labels do not work as intended currently and do not apply consistently

this is still a work in progress and is not ready to commit. labels do not work as intended currently and do not apply consistently
starsetbyte changed title from feat/moderation to WIP: feat/moderation 2026-06-17 00:00:14 +00:00
Author
Owner

Triage review — reconstruction required before content review

This draft is not reviewable against current main: it is 294 commits behind and Forgejo reports mergeable=false. A real synthetic merge against current origin/main confirms conflicts across the build configuration, schema, API models/services, data layer, navigation, feed/profile/search surfaces, and moderation UI/tests.

Please rebase/reconstruct from current main and split the current intent into mergeable slices before requesting code review. Reviewing the present 6,858-line diff would not give a trustworthy merge verdict.

## Triage review — reconstruction required before content review This draft is not reviewable against current `main`: it is **294 commits behind** and Forgejo reports `mergeable=false`. A real synthetic merge against current `origin/main` confirms conflicts across the build configuration, schema, API models/services, data layer, navigation, feed/profile/search surfaces, and moderation UI/tests. Please rebase/reconstruct from current `main` and split the current intent into mergeable slices before requesting code review. Reviewing the present 6,858-line diff would not give a trustworthy merge verdict.
Author
Owner

Closing as abandoned. This was reference material only and was never to be merged — recorded as such in CLAUDE.md. Moderation shipped separately and completely via PRs #53–54, #57–66. Both feat/moderation and worktree-feat+moderation are retained as reference; neither has been deleted.

Reconciled in docs/reviews/2026-07-25-branch-pr-reconciliation.md, which landed on main via #103.

Closing as abandoned. This was reference material only and was never to be merged — recorded as such in `CLAUDE.md`. Moderation shipped separately and completely via PRs #53–54, #57–66. Both `feat/moderation` and `worktree-feat+moderation` are **retained** as reference; neither has been deleted. Reconciled in `docs/reviews/2026-07-25-branch-pr-reconciliation.md`, which landed on `main` via #103.
starsetbyte closed this pull request 2026-07-26 03:22:34 +00:00
All checks were successful
peregrine-ci / assembleDebug Build succeeded (1m5s)
Required
Details

Pull request closed

Sign in to join this conversation.
No description provided.