High priority fixes: - T0: Profile page now filters comments by namespace (was leaking cross-site) - T1: URI hostnames and namespace names normalized to lowercase (was causing duplicate threads and "stock comments" bug). Includes merge script. - T2: Thread detail API now paginated with SQL-side filtering (was 502 on 267+ reply threads) Features: - T3: GDPR account deletion (tombstone user with scrubbed PII) and data export - T4: Customizable button text and comment labels per namespace - T5: Self-service namespace deletion for owners - T6: @mention notifications with profile links - T7: Webmention receiving endpoint with h-card extraction - T8: Configurable max nesting depth and collapse depth per namespace - T9: AJAX thread title search to prevent duplicates - T10: Browser push notification support (VAPID/service worker) Docs and housekeeping: - T11: Documented thread_uri behavior when moving embeds - T12/T13: Drafted community replies for resolved feature requests - Collapse depth defaults to infinite (load-more disabled unless configured) 364 tests pass, 4 skipped.
1.1 KiB
1.1 KiB
T8: Nesting depth settings per namespace
Status: resolved
Priority: low
Source: meta 137101ac-7eb6-11e7-8b77-040140774501
Filed: 2026-02-01
Problem
Namespace owners want to control:
- Maximum nesting depth for replies (currently unlimited)
- The depth at which a "load more" button appears instead of inline display
Proposed Implementation
- Add namespace columns:
max_nesting_depth(default NULL = unlimited),collapse_depth(default NULL = never collapse) - Add fields to namespace settings
- Enforce max depth in reply views (both web and API)
- Add collapse logic in templates
Files
remarkbox/models/namespace.py— add columns- Alembic migration
remarkbox/templates/namespace-settings.j2— add fieldsremarkbox/views/reply_node.py— enforce max depthremarkbox/api/views.py— enforce max depth on API replyremarkbox/templates/show-node.j2— collapse at depth threshold
Acceptance Criteria
- Namespace owners can set max nesting depth
- Replies beyond max depth are rejected
- Deep threads collapse with a "load more" button