Community feedback: folder entry creation and reviewer playtime
Verified requests
Read the original production community threads and the discussion using read-only transactions:
- 格鲁曼钢铁厂, thread
36fbb8e6-b98c-4262-b1f8-5cf295cc4502: add an entry directly inside a knowledge-base folder instead of creating it outside and dragging it in. - Markyyy, thread
515a9773-0068-482c-8708-0c816a8cdbe8: distinguish cursory reactions from experienced feedback. Suggested either a message threshold or a playtime tag. The owner requested the tag; no new rating/comment eligibility requirements were added.
Implementation
- Folder headers expose a persistent, keyboard-accessible plus button, including collapsed and empty folders.
- Creation atomically inherits the folder's book and section, preserves example content and section defaults, and adds one undo step. Deleted folders cannot receive entries. The UI clears tag filters, expands the folder, and selects the new entry.
- The shared world comment feed displays each author's current recorded playtime as total hours with one decimal place in English, Simplified/Traditional Chinese, Japanese, and Spanish (owner's follow-up: use hours consistently, including durations under one hour).
- A single parameterized query aggregates the displayed authors' sessions across the same language family as the comment feed. Editor preview sessions and unrelated worlds/users are excluded. Repeated comments do not duplicate the aggregation.
- Zero recorded time displays 0.0 hours. Old API responses without the field omit the label.
The value is the current sum of retained session records, not a snapshot at comment creation. Deleted sessions and time before tracking was introduced cannot be recovered. This does not measure message depth or prove active engagement beyond the existing playtime tracker.
Verification
- Folder scope tests: 6 passed, including atomic creation, undo/redo, Main-book inheritance, and invalid-folder rejection.
- Playtime SQL test: passed against PGlite with the actual Drizzle-generated query, covering multiple sessions, language variants, preview exclusion, unrelated worlds/users, zero/missing records, and parameterization.
- Production read-only check on the world with the most comments: 28 authors, 24 with positive retained playtime; query took approximately 60 ms including the round trip. No production writes.
pnpm build: passed, 6/6 tasks; bundle-size warnings remain.pnpm typecheck: passed, 9/9 tasks.- Full app tests: 668/671 passed. Three failures in
mobile-nav-drawer-layout.test.tsassert different CSS dimensions than the untouchedstyles/globals.csscurrently supplies. - Full server suite: attempted, but remained running after achievement-test output; stopped without a complete result. It used the configured development database, not production.
- No browser opened, per workspace preference.
Release verification
Prepared from production commit 24b986dc9 in an isolated worktree. Only the two features and their tests/translations were transferred; unrelated local edits were excluded.
- Both features' labels were switched through all five UI languages in the browser. Spanish uses the locale's decimal comma (
Total: 3,0 h). - Independent pre-landing review: no actionable issues found.
- Fresh release build: 5/5 tasks passed. Typecheck: 8/8 tasks passed.
- Fresh app suite: 786/791 passed, including all folder scope tests. The five failures are in notification-bell navigation, mobile navigation geometry (three), and reading-page canvas assertions. The tests and their source files are byte-for-byte unchanged from the release baseline.
- Fresh parameterized playtime SQL test passed.
- No database migration is required. Production feedback and playtime validation queries were read-only.
Production deployment authorized by the owner after UI approval.
