Production feedback register

Superseded 2026-11-04 as the current authority. Each entry now lives as a feedback item in docs/feedback/items/, listed in the feedback index. This register and its investigations are kept as history; update the item, not this file.

Current tracking authority for the migrated October 21 batch. How to maintain it · Source inventory · Historical triage.

Coverage: 16 actionable entries (11 features, 5 bugs), from a partial import of one thread; not all production feedback. Parent post · Full thread. Sources and estimates below are inherited; migration does not certify current code or production behavior. Each heading is a permanent ID and each dated F/B alias maps back to its original inventory row.

Older inventories not yet reconciled: October 18 and imported requests. Their IDs/status remain historical. Non-actionable/external context remains in the October 21 source inventory. Do not infer those inventories are duplicate-free or fully represented here.

Workflow and delivery evidence are independent. No entry is closed by this migration; local implementations await production checks. “Blocked” here means awaiting deployment/verification, not proof of a technical obstruction. Untriaged means current scope/approval/evidence still needs review; inherited workflow recommendations remain visible.

Request index

RequestOutcomeWorkflow stateDelivery evidence
PF-20261021-F01Reply focusblockedLocal browser evidence; physical phone/deployment pending
PF-20261021-F02Identity-ready noticeblockedLocal only; deployment pending
PF-20261021-F03Text-entry macrosuntriagedUnverified
PF-20261021-F04Simple recent activityblockedLocal verification; deployment pending
PF-20261021-F05QR appearanceuntriagedUnverified
PF-20261021-F06LCD color choicesblockedLocal only; deployment pending
PF-20261021-F07Default port fallbackuntriagedUnverified
PF-20261021-F08View query coverageuntriagedUnverified
PF-20261021-F09Compact query buttonsuntriagedUnverified
PF-20261021-F10Query-dialog improvementsuntriagedUnverified
PF-20261021-F11Easy-op discoveryuntriagedUnverified
PF-20261021-B01Composer jumpinguntriagedUnverified
PF-20261021-B02Textarea edge alignmentuntriagedUnverified
PF-20261021-B03Saved draft starts collapsedblockedLocal only; deployment pending
PF-20261021-B04Slow reply feedbackuntriagedUnverified
PF-20261021-B05QDB temporarily busyuntriagedUnverified
PF-20261103-F01Retitle thread by reply; visible likes/flagsblocked (implemented locally; deployment pending)Locally verified; deployment and production acceptance pending

Proposed next work

Recommendations only; confirm current behavior and authorization before starting.

  • F07: bounded default-port fallback could remove local startup friction at low inherited effort (0.2); verify it is still missing.

  • F09: compact query controls are a small consistency improvement (0.15), after confirming surfaces and overlap with F08.

  • B05: move availability investigation ahead of polish if QDB is currently unavailable; cause and scope remain uncertain (0.75). No fresh live check was performed.

Coordinate F01/B01/B02/B04 with existing reply work before scoping. F08/F09/F10 share a report but have different completion checks.

<a id="pf-20261021-f01"></a>

PF-20261021-F01 — Reply focus

Current item: PF-20261021-F01. The fields below are history from the migration.

  • Alias: 2026-10-21/F01 (Feature 01); workflow state: blocked awaiting physical phone acceptance and deployment; delivery evidence: locally verified desktop/automated phone flow, 2026-10-23. Production behavior remains unverified. Implementation evidence and limits.

  • Request: Keep the reply entry field focused after posting, ready for another reply. Reports: reply-20261021175726-73beca3d. Inherited estimate: 0.15 (October 21 feedback-only); recommended workflow: Railspike (not approval). Historical triage.

  • Done when: Desktop immediately displays the pending reply and retains usable writing focus; phone reveals it with one-tap re-entry. Independent failure/retry preserves captured content and the newer draft, with no duplicate posts. Next action: Complete the linked iPhone Safari/Firefox checklist, then separately deploy and verify consecutive sends and failure/retry in production. No source-comment reply is authorized.

  • Recorded evidence/context: Open — the new reply continuation cycle implements immediate signed text/image replies on both standard routes, desktop consecutive writing, phone reading/one-tap re-entry and independent recovery. Local browser evidence does not establish physical phone or production acceptance. The earlier source investigation below describes the pre-change baseline. Related reply-focus/layout implementation reached local handoff, with physical iPhone acceptance pending; it is no longer accurately described as paused. Its approved boundary explicitly preserves existing navigation/update, so it does not complete F01. Source (source unavailable).

F01 investigation — 2026-10-23

User selected immediate desktop consecutive writing and phone return-to-reading with visible sent reply and one-tap composer re-entry. Reply continuation Step 1 assessment and Step 2 requirements were explicitly approved; Step 3 development plan was also explicitly approved and Step 4 records local implementation and verification. Physical phone and production acceptance remain pending.

Historical pre-change source inspection

submitOptimisticReply() and submitSignedReplyAndNavigate() both call navigateToCanonicalReply() after success; image replies use the same navigation helper. That helper performs window.location.assign() to a URL anchored at the created post. The document/editor is replaced, so retaining the current editor's focus requires a change to this success lifecycle. Entry-time focus in inline_reply_form.js does not address it.

Existing browser checks (tests/browser/reply_compose_focus.mjs and tests/browser/reply_viewport_flow.mjs) expect the canonical #post- navigation. They provide historical coverage for retained drafts, recoverable failures and exactly one persisted reply, but do not assert usable focus for a second reply after success. These checks were inspected, not rerun in this investigation.

Recommended next scope: keep the standard inline composer ready after a confirmed post, with the accepted reply visible and the next reply's parent explicit in the design. Resolve how the dedicated reply page continues before choosing the implementation; include attachments, draft clearing only for the accepted submission, pending duplicate protection, failure/retry and phone keyboard behavior. Forte and anonymous/no-script paths need explicit compatibility boundaries. This is investigation only: no new plan approval, application change, deployment or dependency delta. The inherited 0.15 estimate is unchanged historical feedback, not a source-informed implementation projection.

<a id="pf-20261021-f02"></a>

PF-20261021-F02 — Identity-ready notice

Current item: PF-20261021-F02. The fields below are history from the migration.

  • Alias: 2026-10-21/F02 (Feature 02); workflow state: blocked; delivery evidence: locally verified; deployment/production acceptance pending. Reviewed 2026-10-23 from existing documents, no runtime audit.

  • Request: Remove the “browser identity ready” message. Reports: reply-20261021175826-902c5145. Inherited estimate: 0.03 (October 21 feedback-only); separate source-informed total 0.10 retained; recommended workflow: One-shot (not approval). Historical triage.

  • Done when: No ready notice or empty gap; pending/error and Account results remain useful. Next action: Verify deployment and the reported notice in production; source-comment reply remains pending and requires authorization.

  • Recorded evidence/context: Implemented and locally verified — checks and limitations; deployment and source-comment reply pending. Triage context: Completed shared status cleanup; no new interface needed. Source (source unavailable).

<a id="pf-20261021-f03"></a>

PF-20261021-F03 — Text-entry macros

Current item: PF-20261021-F03. The fields below are history from the migration.

  • Alias: 2026-10-21/F03 (Feature 03); workflow state: untriaged; delivery evidence: unknown; production report not reproduced by this migration. Reviewed 2026-10-23 from existing documents, no runtime audit.

  • Request: Brainstorm text-entry macros for prompts, the current date, the current commit, and similar insertions. Reports: reply-20261021180225-ffc44b89. Inherited estimate: 0.5 (October 21 feedback-only); recommended workflow: Railspike (not approval). Historical triage.

  • Done when: Agree a small macro set; insertion preserves surrounding text, selection, and undo. Next action: Agree the smallest macro set and entry points before planning insertion/undo behavior.

  • Recorded evidence/context: Open — resolution not verified. Triage context: Insertion rules, selection handling, and intended entry points are undefined. Source (source unavailable).

<a id="pf-20261021-f04"></a>

PF-20261021-F04 — Simple recent activity

Current item: PF-20261021-F04. The fields below are history from the migration.

  • Alias: 2026-10-21/F04 (Feature 04); workflow state: blocked; delivery evidence: locally verified, deployment and production acceptance pending. Updated 2026-10-30.

  • Request: Provide a simple, nontechnical “most recent activity” page. Reports: reply-20261021180354-1a31022c. Inherited estimate: 0.5 (October 21 feedback-only). Historical triage.

  • Delivered locally: Recent navigation, individual thread/reply previews, exact-post links and bounded native paging. Approved cycle and verification.

  • Next action: Deploy the code, rebuild/republish the configured instance and verify ordinary navigation on the reported phone/environment. Local browser tests cover 13 themes at phone/desktop widths, keyboard/no-JavaScript and reconnect recovery. No production claim; the separate Activity latency issue remains separate.

<a id="pf-20261021-f05"></a>

PF-20261021-F05 — QR appearance

Current item: PF-20261021-F05. The fields below are history from the migration.

  • Alias: 2026-10-21/F05 (Feature 05); workflow state: untriaged; delivery evidence: unknown; production report not reproduced by this migration. Reviewed 2026-10-23 from existing documents, no runtime audit.

  • Request: Make QR codes stand out slightly while matching the site theme; explore a background roughly 20% lighter than the page background (prefer lighter over darker). Reports: reply-20261021180542-57b8fc3f. Inherited estimate: 0.25 (October 21 feedback-only); recommended workflow: One-shot (not approval). Historical triage.

  • Done when: QR stands out across themes and phone/desktop; quiet zone and scanning still work. Next action: Confirm the reported QR surface, then scope visual and scan checks.

  • Recorded evidence/context: Open — resolution not verified. Triage context: Invitation QR currently draws black on white; first confirm the reported QR surface, then bound the visual change. Source (source unavailable).

<a id="pf-20261021-f06"></a>

PF-20261021-F06 — LCD color choices

Current item: PF-20261021-F06. The fields below are history from the migration.

  • Alias: 2026-10-21/F06 (Feature 06); workflow state: blocked; delivery evidence: locally verified; deployment/production acceptance pending. Reviewed 2026-10-23 from existing documents, no runtime audit.

  • Request: Explore adding a few color choices to the LCD theme. Reports: reply-20261021181124-47b0956c. Inherited estimate: 0.4 (October 21 feedback-only); recommended workflow: Railspike (not approval). Historical triage.

  • Done when: Chosen palettes remain readable; selection persists and existing themes work. Next action: Verify deployment and palette behavior in production; retain local browser/contrast evidence.

  • Recorded evidence/context: Implemented and locally verified — Railspike summary; deployment pending. Triage context: LCD has a fixed palette; choose palette scope and preference behavior before adding controls. Source (source unavailable).

F06 evidence reconciliation

Reviewed 2026-10-23: the historical mini-triage describes LCD palette selection as future work. The later source summary links the local implementation record, which reports browser/persistence/contrast checks. Local implementation is recorded here; deployment and production acceptance remain pending. This is document reconciliation, not a new test.

<a id="pf-20261021-f07"></a>

PF-20261021-F07 — Default port fallback

Current item: PF-20261021-F07. The fields below are history from the migration.

  • Alias: 2026-10-21/F07 (Feature 07); workflow state: untriaged; delivery evidence: unknown; production report not reproduced by this migration. Reviewed 2026-10-23 from existing documents, no runtime audit.

  • Request: Make local ./v3 start try a few successive ports after 8000 before giving up by default. Reports: reply-20261021180905-9bf88f1f. Inherited estimate: 0.2 (October 21 feedback-only); recommended workflow: One-shot (not approval). Historical triage.

  • Done when: Occupied default ports advance within a fixed range; actual URL, exhaustion, and shutdown behave correctly. Next action: Confirm current default/explicit port behavior, then scope bounded fallback and exhaustion checks.

  • Recorded evidence/context: Open — resolution not verified. Triage context: Startup selects one address; bounded retries can preserve explicit-address behavior. Source (source unavailable).

<a id="pf-20261021-f08"></a>

PF-20261021-F08 — View query coverage

Current item: PF-20261021-F08. The fields below are history from the migration.

  • Alias: 2026-10-21/F08 (Feature 08); workflow state: untriaged; delivery evidence: unknown; production report not reproduced by this migration. Reviewed 2026-10-23 from existing documents, no runtime audit.

  • Request: Expand “View query” availability to more pages; assess coverage for every page that includes database data. Reports: reply-20261021181111-3d37d8d5. Inherited estimate: 0.6 (October 21 feedback-only); recommended workflow: Railspike (not approval). Historical triage.

  • Done when: Coverage and exclusions are documented; each added control opens the correct read-only query. Next action: Inventory database-backed pages and explicit exclusions before choosing additions.

  • Recorded evidence/context: Open — resolution not verified. Triage context: Broad audit across database-backed pages; stage the inventory and bounded additions. Source (source unavailable).

<a id="pf-20261021-f09"></a>

PF-20261021-F09 — Compact query buttons

Current item: PF-20261021-F09. The fields below are history from the migration.

  • Alias: 2026-10-21/F09 (Feature 09); workflow state: untriaged; delivery evidence: unknown; production report not reproduced by this migration. Reviewed 2026-10-23 from existing documents, no runtime audit.

  • Request: Use the same small square “View query” button as /tools/codebase. Reports: reply-20261021181111-3d37d8d5. Inherited estimate: 0.15 (October 21 feedback-only); recommended workflow: One-shot (not approval). Historical triage.

  • Done when: Consistent square buttons retain accessible names and open the correct query across affected themes. Next action: Agree surfaces using compact controls; coordinate with F08 without conflating outcomes.

  • Recorded evidence/context: Open — resolution not verified. Triage context: Shared query partial already supports compact buttons; reuse it on agreed surfaces. Source (source unavailable).

<a id="pf-20261021-f10"></a>

PF-20261021-F10 — Query-dialog improvements

Current item: PF-20261021-F10. The fields below are history from the migration.

  • Alias: 2026-10-21/F10 (Feature 10); workflow state: untriaged; delivery evidence: unknown; production report not reproduced by this migration. Reviewed 2026-10-23 from existing documents, no runtime audit.

  • Request: Improve the “View query” dialog; review its current problems before defining the changes. Reports: reply-20261021181111-3d37d8d5. Inherited estimate: 0.75 (October 21 feedback-only); recommended workflow: Railspike (not approval). Historical triage.

  • Done when: Record reproduced problems and verify their fixes, including keyboard, phone layout, and recovery. Next action: Collect specific dialog failures before selecting changes; coordinate with F08/F09.

  • Recorded evidence/context: Open — resolution not verified. Triage context: The report does not identify specific dialog failures; reproduce before choosing changes. Source (source unavailable).

<a id="pf-20261021-f11"></a>

PF-20261021-F11 — Easy-op discovery

Current item: PF-20261021-F11. The fields below are history from the migration.

  • Alias: 2026-10-21/F11 (Feature 11); workflow state: untriaged; delivery evidence: unknown; production report not reproduced by this migration. Reviewed 2026-10-23 from existing documents, no runtime audit.

  • Request: Make it easy to discover how to enable “easy-op” via its flag file, including the button that elevates the operator to approved. Reports: reply-20261021181246-675f949e. Inherited estimate: 0.25 (October 21 feedback-only); recommended workflow: Railspike (not approval). Historical triage.

  • Done when: Identify the intended flag; expose one useful discovery path while preserving approval restrictions. Next action: Identify the intended easy-op flag and authority model before proposing discovery changes.

  • Recorded evidence/context: Open — resolution not verified. Triage context: An Account approval button and .test-self-approval exist, but their equivalence to “easy-op” is unconfirmed. Source (source unavailable).

<a id="pf-20261021-b01"></a>

PF-20261021-B01 — Composer jumping

Current item: PF-20261021-B01. The fields below are history from the migration.

  • Alias: 2026-10-21/B01 (Bug 01); workflow state: untriaged; delivery evidence: unknown; production report not reproduced by this migration. Reviewed 2026-10-23 from existing documents, no runtime audit.

  • Request: Investigate the multiple causes of the home-page post form intermittently jumping up and down; use a rubber-duck root-cause review. Reports: reply-20261021175826-902c5145. Inherited estimate: 0.75 (October 21 feedback-only); recommended workflow: Railspike (not approval). Historical triage.

  • Done when: Reproduce each jump and verify corrected geometry through loading, focus, drafts, and recovery. Next action: Reproduce each jump and distinguish focus, loading and expansion causes before scoping.

  • Recorded evidence/context: Open — resolution not verified. Triage context: Several causes are reported; existing focus and expansion paths need a reproducible root-cause review. Source (source unavailable).

<a id="pf-20261021-b02"></a>

PF-20261021-B02 — Textarea edge alignment

Current item: PF-20261021-B02. The fields below are history from the migration.

  • Alias: 2026-10-21/B02 (Bug 02); workflow state: untriaged; delivery evidence: unknown; production report not reproduced by this migration. Reviewed 2026-10-23 from existing documents, no runtime audit.

  • Request: Keep the textarea’s top, left, and right edges fixed when the composer expands. Reports: reply-20261021175826-902c5145. Inherited estimate: 0.25 (October 21 feedback-only); recommended workflow: One-shot (not approval). Historical triage.

  • Done when: Top/left/right edges stay fixed during expansion across phone/desktop themes; other content does not overflow. Next action: Measure composer edges in compact/expanded states before choosing a bounded fix.

  • Recorded evidence/context: Open — resolution not verified. Triage context: Compact and expanded states use different CSS geometry; start with measured board-composer bounds. Source (source unavailable).

<a id="pf-20261021-b03"></a>

PF-20261021-B03 — Saved draft starts collapsed

Current item: PF-20261021-B03. The fields below are history from the migration.

  • Alias: 2026-10-21/B03 (Bug 03); workflow state: blocked; delivery evidence: locally verified; deployment/production acceptance pending. Reviewed 2026-10-23 from existing documents, no runtime audit.

  • Request: Keep the composer collapsed on page load, even when the textarea contains saved text. Reports: reply-20261021180138-eddd96a4. Inherited estimate: 0.15 (October 21 feedback-only); recommended workflow: One-shot (not approval). Historical triage.

  • Done when: Restored draft stays compact until focus, preserving text, selection, warnings, and retry. Next action: Verify deployment and saved-draft behavior in production; preserve home-page-only evidence.

  • Recorded evidence/context: Home-page fix implemented and locally verified — checks and limits; deployment pending. Triage context: Completed bounded state change; draft text no longer implies initial engagement. Source (source unavailable).

<a id="pf-20261021-b04"></a>

PF-20261021-B04 — Slow reply feedback

Current item: PF-20261021-B04. The fields below are history from the migration.

  • Alias: 2026-10-21/B04 (Bug 04); workflow state: untriaged; delivery evidence: unknown; production report not reproduced by this migration. Reviewed 2026-10-23 from existing documents, no runtime audit.

  • Request: Investigate and reduce the many-second delay before a posted reply produces a visible response on the live site. Reports: reply-20261021175854-431cbb06. Inherited estimate: 1.5 (October 21 feedback-only); recommended workflow: Railspike (not approval). Historical triage.

  • Done when: Measure the delay, improve the identified stage, and verify prompt feedback plus one accepted reply and retry. Next action: Measure the live delay by stage and reconcile historical latency reports before choosing a slice.

  • Recorded evidence/context: Open — resolution not verified. Triage context: Reply preparation, signing, finalization, and navigation are separate stages; the live bottleneck is unknown. Source (source unavailable).

<a id="pf-20261021-b05"></a>

PF-20261021-B05 — QDB temporarily busy

Current item: PF-20261021-B05. The fields below are history from the migration.

  • Alias: 2026-10-21/B05 (Bug 05); workflow state: untriaged; delivery evidence: unknown; production report not reproduced by this migration. Reviewed 2026-10-23 from existing documents, no runtime audit.

  • Request: Investigate and fix QDB returning “temporarily busy.” Reports: reply-20261021180434-90201f38. Inherited estimate: 0.75 (October 21 feedback-only); recommended workflow: Railspike (not approval). Historical triage.

  • Done when: Identify the failing route and cause; verify ordinary QDB use and controlled recovery without hiding errors. Next action: Confirm the failing QDB route and current availability; collect evidence for the 503 cause.

  • Recorded evidence/context: Open — resolution not verified. Triage context: FrontController has several 503 paths; the reported production cause has not been reproduced. Source (source unavailable).

B04 and F01 overlap earlier slow-reply/focus reports, including October 18 Feature 09/Bug 04. These are relationships, not confirmed duplicates or closures. October 18 Feature 33 concerns different browser-identity wording from F02. Same-day composer reports outside the October 21 snapshot are not silently added; review them as new intake. Older inventories and excluded external Codex feedback remain outside this register's 16-entry coverage.

<a id="pf-20261103-f01"></a>

PF-20261103-F01 — Retitle thread by reply; visible likes and flags

Current item: PF-20261103-F01. The fields below are history from the migration.

  • Alias: none (direct intake 2026-11-03, outside the October 21 batch); workflow state: blocked — Steps 1–3 approved and all eight stages implemented on feat/reply-title-directive (Step 4 summary); awaiting merge, deployment and the production retry; delivery evidence: locally verified 2026-11-03 (PHP suites, Chromium replay of the maintainer's flow, 16-theme signals check), deployment and production acceptance pending.

  • Request: Comment title: some text here and, with authority, change the thread's title; roll it into the same visibility layer as likes and flags, which should be visible and currently are not really. Reports: thread-20261103051304-2fa9fbd6 (root post, no replies at intake). Inherited estimate: none; source-informed Step 1 projection 0.80 (recommended Option B), recorded in the effort ledger. Recommended workflow: staged Railspike (not approval).

  • Done when: An authorized reply with a title: line changes the thread title everywhere it is shown; an unauthorized one posts unchanged with no effect; readers see likes, flags and title changes on the thread without being signed in. Next action: Merge and deploy feat/reply-title-directive; the maintainer replies title: … on an own zenmemes.com thread with flags at defaults and confirms the new title on the thread, board and Recent plus Title set by ilyag on the root card. Both flags are on the Feature Flags page (Forum experience). Follow-ups: suggested titles from unauthorized repliers; static tag pages are not invalidated on retitle (same as label writes today).

  • Recorded evidence/context: Existing records/thread-subjects/ family is system-only and fills empty subjects only; reaction counts exist in the read model but are not rendered on cards. Write path (source unavailable) · Root card (source unavailable).