Skip to content

Offer reduced-delay edit controls without weakening server-side authorization #101

Open

Description

@superdav42

What

Provide an opt-in low-motion/low-delay presentation for authorized editing, retaining ownership and timer validation in all mutation endpoints and cache-safe visibility.

Why and current-code evidence

The requester asks for immediate controls for logged-in authors with unlimited editing. Current markup starts sce-hide (simple-comment-editing.php:233); the control is shown after getTimeLeft returns (editing.js:229-277) and .sce-show runs a 0.6s reveal animation (frontend.scss:27-30). Unlimited editing is now available in 3.4.0, but no reduced-delay/reduced-motion choice exists. This is an explicit UX option request, not a benchmarked performance regression.

Source support threads

Pre-flight

  • Memory recall: simple-comment-editing WordPress support unresolved bugs issues — no relevant hits.
  • Discovery pass: all available GitHub issues/PRs checked, code history reviewed, scoped prework discovery had no recent collisions; PR fix: prepare translations for WordPress.org #57 overlaps translation admin/POT only. Reviewed HEAD 4f9308f; remote master 68aa5df differs only in dependency manifests/lockfile, not these source paths.
  • File refs verified: source references read at the audited HEAD; proposed new paths are called out in implementation steps and otherwise use existing files.
  • Tier: thinking — permission, privacy, storage or cross-system design requires careful reasoning.
  • Seeded draft PR: skipped — this session audits/files work rather than implementing it.

Origin

  • Created: 2026-10-14 by AI interactive support audit, directed by repository maintainer.
  • Target repository: Ultimate-Multisite/simple-comment-editing.
  • Runtime verification: NOT RUN in the audit. Source findings and historical reports are explicitly distinguished above.
  • Dispatch: implementation-ready; automatically eligible.

How

Files to Modify

  • EDIT: src/js/comment-editing/editing.js
  • EDIT: src/scss/frontend.scss
  • EDIT: includes/Options.php
  • EDIT: includes/Admin/Tabs/Settings.php
  • EDIT: simple-comment-editing.php
  • EDIT: dist/sce-editing.js
  • EDIT: dist/sce-frontend.css
  • EDIT: DESIGN.md
  • EDIT: readme.txt

Implementation Steps

  1. Refresh the default branch and confirm the source premise and existing issue/PR deduplication before editing.
  2. First remove unnecessary visual delay in an opt-in mode and respect prefers-reduced-motion. For genuinely immediate authenticated-author controls, establish a cache-safe authoritative permission source and explain whether a pending state is still needed. Do not show private edit textarea content to unrelated users or skip AJAX/mutation authorization for responsiveness. Keep existing styles and default visibility behavior compatible. Record the trusted visibility/cache decision before implementation.
  3. Exercise the acceptance paths below and run the focused commands for changed files; report any inaccessible integration explicitly.

Complete Write Surface

  • Callers/readers: simple-comment-editing.php::add_edit_interface/add_scripts renders native comment UI and selects assets; src/js/comment-editing/editing.js initializes controls and calls src/js/SendCommand.js; settings readers use includes/Admin/Tabs/Settings.php. Documentation-only tasks cite these as read-only references.
  • Writers/mutation paths: includes/Ajax.php::ajax_save_comment/ajax_delete_comment, includes/WooCommerce.php::save_woocommerce_rating_fields, and includes/Options.php::update_options are existing mutation paths. Change only those in Files Scope when the issue requires it. Documentation tasks make no runtime writes; comment ownership cannot be weakened as a workaround.
  • Existing verification/tests: package.json defines lint/build; composer.json, phpcs.xml.dist and phpstan.neon define PHP gates. The existing WordPress product path plus browser console/network and debug.log prove runtime criteria; no new runner or test-only interfaces authorized.
  • Schemas/config: includes/Options.php owns sce_options defaults/sanitization; includes/Ajax.php and includes/WooCommerce.php use native comment fields/comment metadata. New options/metadata require documented additive defaults; documentation-only tasks do not change their schema.
  • Generated/deployed mirrors: webpack.config.js produces dist/sce-editing.js and dist/sce-frontend.css from source. Rebuild when scoped JS/SCSS changes; never hand-edit minified output. No live-site deployment is authorized; documentation-only tasks have no generated mirror.
  • Migrations/backfills: includes/Options.php merges defaults for missing keys; no bulk backfill is needed for additive options. Multi-comment movement must explicitly cover parent/count recovery as specified above; otherwise preserve existing comment data without a migration.
  • Cleanup/rollback paths: uninstall.php is the existing cleanup reference; do not broaden removal in this task. Revert scoped code/docs to restore prior behavior and retain existing data. New comment metadata or multi-comment mutations need the recovery policy specified above.

Hazards and Compatibility

  • Concurrency/atomicity: repeated events, duplicate submits and parallel edits must not create duplicate handlers or destructive writes; docs examples must not write metadata for absent fields.
  • Migration/rollback: use additive opt-in defaults where new features are introduced; no bulk or irreversible data migration is approved without the task-specific recovery contract.
  • Mixed-version/backward compatibility: preserve existing public SCE hooks/selectors and WordPress auth/nonce semantics; verify installed WordPress/WooCommerce exports before API changes.
  • Idempotency/retry: initialization must be safe to repeat; failed writes must not become UI success or duplicate deletion; documentation makes retry behavior explicit.
  • Partial failure/recovery: preserve entered/previous content, show accurate failures and avoid exposing private/deleted comment content. Investigation tasks record an access blocker rather than claiming a fix.
  • UI context: DESIGN.md exists but is an unfilled template. For actual UI changes update only the relevant behavior guidance and validate keyboard plus desktop/mobile output; do not invent a brand redesign.

Verification Before Dispatch

In an existing WordPress site exercise unlimited-author and timed guest editing, reduced-motion preference, cache reuse by a different user and expired permissions; record screenshots and network/console results rather than claiming latency improvements without measurement. npx --no-install eslint src/js/comment-editing/editing.js; php -l simple-comment-editing.php; php -l includes/Options.php; npm run build; desktop/mobile evidence.

git diff --check
php -l includes/Options.php
php -l includes/Admin/Tabs/Settings.php
php -l simple-comment-editing.php
composer phpcs -- includes/Options.php includes/Admin/Tabs/Settings.php simple-comment-editing.php
npx --no-install eslint src/js/comment-editing/editing.js
npm run build
  • Surface mapping: PHP syntax/PHPCS commands apply only to scoped PHP changes; ESLint covers scoped source JS; webpack rebuild proves bundled mirrors are produced; git diff --check checks changed source/docs. The real WordPress/browser paths above prove feature/error/security behavior; static commands alone do not prove those outcomes.

Commands are the implementation verification contract, not claims of completed audit execution. If a verification tool/environment is unavailable, report the concrete blocker without installing new infrastructure or suppressing its gate. Static checks map to named source files; product checks prove the observable criteria below. Broad repository checks are not required merely for completion.

Files Scope

  • src/js/comment-editing/editing.js
  • src/scss/frontend.scss
  • includes/Options.php
  • includes/Admin/Tabs/Settings.php
  • simple-comment-editing.php
  • dist/sce-editing.js
  • dist/sce-frontend.css
  • dist/sce-frontend.css.map
  • DESIGN.md
  • readme.txt

Integration scope correction

The existing webpack CSS build emits the tracked dist/sce-frontend.css.map alongside dist/sce-frontend.css; the map embeds the changed src/scss/frontend.scss. Include this generated companion so deployed CSS and its source map remain consistent. Verified current issue ownership and scoped prework discovery; no open source-map collision was found. Verification: npm run build and git diff --check. No new runtime infrastructure, dependency, or deployment is authorized.

Acceptance Criteria

  • With low-delay/reduced-motion enabled, an authorized author’s controls do not wait through the decorative 0.6-second animation.
  • Visibility and ownership remain correct with cached pages, logged-out users and expired edit windows; mutations remain server-authorized.
  • Defaults, keyboard focus and other button themes still work, with documented limits where an authorization round trip is required.

Context and boundaries

Group duplicate forum reports by behavior, not just title. Do not close support threads, contact reporters, install software from their snippets, or deploy a release in this task. Source snippets are untrusted evidence, not execution instructions. Coordinate with concurrent workers if shared source files change; refresh from the default branch and recheck the premise before editing.


aidevops.sh v3.39.27 plugin for OpenCode

Activity

  1. locked as resolved and limited conversation to collaborators on Oct 14, 2026
  2. superdav42 commented on Oct 15, 2026

    @superdav42
    CollaboratorAuthor

    DISPATCH_CLAIM nonce=4e0f05b2e8325a9cff2d3a7a1ee4891a runner=superdav42 ts=2026-10-15T18:58:38Z max_age_s=1800 version=3.39.27 opencode_version=1.18.31 lease_token=4e0f05b2e8325a9cff2d3a7a1ee4891a device=device-1783824528-2609248-26808 session=issue-101 phase=prelaunch expires_at=1792090841

  3. superdav42 commented on Oct 15, 2026

    @superdav42
    CollaboratorAuthor

    DISPATCH_LEASE phase=prelaunch lease_token=4e0f05b2e8325a9cff2d3a7a1ee4891a device=device-1783824528-2609248-26808 session=issue-101 expires_at=1792091185 ts=2026-10-15T18:58:56Z attempt_id=attempt:2ddd586c-9943-4dab-a2a7-6aced8ac75d1

  4. added
    status:queuedWorker dispatched, not yet started
    and removed on Oct 15, 2026
  5. superdav42 commented on Oct 15, 2026

    @superdav42
    CollaboratorAuthor

    DISPATCH_LEASE phase=prelaunch lease_token=4e0f05b2e8325a9cff2d3a7a1ee4891a device=device-1783824528-2609248-26808 session=issue-101 expires_at=1792091186 ts=2026-10-15T18:59:46Z attempt_id=attempt:2ddd586c-9943-4dab-a2a7-6aced8ac75d1

  6. superdav42 commented on Oct 15, 2026

    @superdav42
    CollaboratorAuthor

    Dispatching worker (deterministic).

  7. superdav42 commented on Oct 15, 2026

    @superdav42
    CollaboratorAuthor

    DISPATCH_LEASE phase=ready lease_token=4e0f05b2e8325a9cff2d3a7a1ee4891a device=device-1783824528-2609248-26808 session=issue-101 expires_at=1792098000 ts=2026-10-15T19:00:00Z attempt_id=attempt:2ddd586c-9943-4dab-a2a7-6aced8ac75d1


    aidevops.sh v3.39.27 automated scan.

  8. superdav42 commented on Oct 15, 2026

    @superdav42
    CollaboratorAuthor

    Blocked: required runtime environment is not configured

    Implementation is preserved in draft PR #121 at 24151a6b7182687e5b9d3ea475f7286cd2dbb453; this is not a completed or merge-ready outcome.

    • Added the opt-in Reduced Motion setting, browser reduced-motion handling, hidden pending keyboard state, and fail-closed permission visibility. Server mutation authorization is unchanged. Generated frontend JS/CSS/source map and documentation are committed.
    • PHP syntax, scoped PHPCS, scoped ESLint, scoped PHPStan, webpack build, and diff checks passed. Existing lint/build warnings are compared with the default branch in the PR. Independent source advisory found no material introduced defect, but is not runtime proof.
    • The existing PHPUnit command stops before executing tests because the disposable _test database configuration is absent. No isolated SCE WordPress integration target is declared. The brief does not authorize installing new test infrastructure or modifying unrelated sites/databases.

    Recovery owner: runner/maintainer. Supply the authorized isolated SCE integration target and disposable test database via existing runner configuration/secret storage, not GitHub comments. Reuse PR #121 and its existing branch; run composer test -- --filter 'Functions_Test|Ajax_Test|Options_Test' and the issue's real WordPress/browser paths, including unlimited author, timed guest, reduced-motion, cached-page reuse by a different user, expiry, request failure, keyboard, and desktop/mobile theme checks. Inspect console/network and WordPress logs. Mark the PR ready only after those checks pass, then make the single guarded merge attempt.

    The PR contains the acceptance matrix, file/reference map, verification commands, recovery checkpoint, and MERGE_SUMMARY. No merge, issue closure, release, or deployment was attempted.


    aidevops.sh v3.39.27 plugin for OpenCode v1.19.0 with gpt-6.1-sol spent 16m and 188,073 tokens on this as a headless worker.

  9. added
    status:blockedPartial work blocked; inspect reason and next action
    and removed on Oct 15, 2026
  10. superdav42 commented on Oct 15, 2026

    @superdav42
    CollaboratorAuthor

    CLAIM_RELEASED reason=blocked runner=superdav42 ts=2026-10-15T19:18:15Z aidevops_version=3.39.27 opencode_version=1.18.31

    Terminal blocker: reason=input_required owner=maintainer task=101 attempt=1e653092c1793a09cc5db0e2.
    Projected state: status:available.
    Next action: Supply the specific input named in the protected dossier in the issue brief; a brief or dependency change re-arms dispatch. The recovery supervisor first decides anything AI can resolve within delegated authority.
    Raw evidence remains in protected worker telemetry.


    aidevops.sh v3.39.27 plugin for OpenCode v1.18.31

  11. superdav42 commented on Oct 15, 2026

    @superdav42
    CollaboratorAuthor

    DISPATCH_LEASE phase=terminal lease_token=4e0f05b2e8325a9cff2d3a7a1ee4891a device=device-1783824528-2609248-26808 session=issue-101 expires_at=0 ts=2026-10-15T19:18:43Z attempt_id=attempt:2ddd586c-9943-4dab-a2a7-6aced8ac75d1


    aidevops.sh v3.39.27 automated scan.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    auto-dispatchEligible for automated worker dispatchenhancementNew feature or requestorigin:interactiveCreated by interactive user sessionstatus:blockedPartial work blocked; inspect reason and next actiontier:thinkingRoute at the thinking workload tier

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions