Skip to content

Modular pass 1/5: issue references in the chat composer #250

Closed

Description

@tannerpolley

Part of #24; follow the owner direction of 2026-10-28 there. This feature cost the most in the 2026-10-28 sync: 71 of 210 conflict blocks, mostly composerDraftStore.ts.

Done means

  • The composer's issue-reference hunks move out of upstream-owned files into fork-owned modules behind the smallest hook upstream would plausibly accept.
  • No behavior change on web or desktop. Mobile is out of scope.
  • Existing tests pass, and any moved logic keeps its tests.
  • Measured with git merge-tree --write-tree --name-only --no-messages against the latest upstream nightly tag: conflicted files and <<<<<<< blocks before and after, in the PR body.

Out of scope: behavior changes, dropping the feature, and other features.

Activity

  1. tannerpolley commented on Oct 29, 2026

    @tannerpolley
    OwnerAuthor

    T3 Code status: Done

    Issue: #250 Modular pass 1/5: issue references in the chat composer

    Thread: thread:delegated-task:command%3Amcp%3Ad3506335-01b7-4a2c-9b60-c53578fcdb05%3Adelegate-task%3Aissue24-pass1-250-implement-20261029

    Model: gpt-6.1-sol

    Branch: issue-250-modular-pass-1-5-issue-references-in-the

    Updated: 2026-10-29T22:33:16.403Z

  2. tannerpolley commented on Oct 29, 2026

    @tannerpolley
    OwnerAuthor

    T3 Code closeout: done

    Issue: #250 Modular pass 1/5: issue references in the chat composer
    Thread: thread:delegated-task:command%3Amcp%3Ad3506335-01b7-4a2c-9b60-c53578fcdb05%3Adelegate-task%3Aissue24-pass1-250-implement-20261029
    Model: gpt-6.1-sol
    Branch: issue-250-modular-pass-1-5-issue-references-in-the
    Completed: 2026-10-29T22:33:17.486Z

    Implemented #250 and committed locally. Working tree is clean.

    • Starting SHA: 615154bbffe3f2565d1cb3303cefa01298987cdd
    • Final commit: 36149562e9b1778959d96f4de7ad1791393a852d
    • Commit title: refactor(web): extract composer issue reference extensions
    • Affected package: apps/web (@t3tools/web) only; 9 changed files.

    Issue-reference draft validation, persistence, hydration, actions, content detection, resets, and moves now live in components/issues/issueComposerDraft.ts. Editor insertion and undo logic live in issueComposerEditor.ts. Drag payload validation lives in issueComposerDrag.ts, behind an optional MIME-type insertion hook in the shared drag handler. The existing drag tests moved beside that module.

    Store action names, persisted fields, context records, and downstream caller data remain unchanged. The extracted store action bodies match the starting source after ignoring formatting. Menu membership checks, expected-text guards, success-only attachment, malformed-payload handling, rejection reporting, and undo restoration remain intact. Send, clipboard, queued-edit, import, and chip callers continue consuming the same API.

    Verification completed:

    Check Result
    agent-heavy vp run typecheck, run inside apps/web Exit 0
    agent-heavy vp test run on 11 affected test files Exit 0; 157 tests passed
    agent-heavy vp lint on all 9 changed TypeScript files Exit 0
    Scoped formatting and Git whitespace checks Exit 0

    Tests covered the draft store, issue metadata, extracted editor logic, moved drag tests, shared drag behavior, undo, queued-message editing, context presentation, message-context construction, submission, and ChatView.logic. Exact paths and check details are in checks.txt.

    The paired measurement used tag v0.1.6-nightly.20261029.3892, SHA 08a463e29976617134de01e9341f898bc881d0eb, for both commits:

    Measurement Before After
    Conflicted files 10 10
    <<<<<<< blocks 13 13
    Composer issue-reference conflicts 0 0

    Both commands used git merge-tree --write-tree --name-only --no-messages <commit> <tag> and returned exit 1 for conflicts. Block counts came from conflict-marker lines in each conflicted blob in the resulting merge tree. No measured reduction against this nightly. Per-file conflicts are unchanged. Raw evidence: measurement.json, before.merge, after.merge.

    The normal commit hook failed on three pre-existing unused files outside this task: ForkComposerOverlay.ts, icon-review.cjs, and shot.mjs. After scoped checks passed, I committed with VP_GIT_HOOKS=0; those files remain untouched.

    No push, PR, merge, issue mutation, sibling changes, subagents, live-data access, or server/UI launch. Parent delivery and refreshed nightly measurements remain open; no runtime UI verification was performed, as instructed.

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

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions