Skip to content

feat: TER-5–46 catalogs, local symbols, note backlinks and GitLab threads - #347

Open
trevormil wants to merge 40 commits into
mainfrom
feat/eng-harness-model-catalog
Open

trevormil wants to merge 40 commits into
mainfrom
feat/eng-harness-model-catalog

Conversation

@trevormil

@trevormil trevormil commented Aug 24, 2026 •

Copy link
Copy Markdown
Owner

Authored by TerMinal Eng (Grok Bot).

Tracks Linear TER-5, TER-6, TER-7, TER-8, TER-9, TER-10, TER-11, TER-12, TER-13, and TER-14.

Also tracks TER-15, TER-16, TER-17, TER-18, TER-19, TER-20, TER-21, TER-22.

Summary

TER-5–42 combines model/provider improvements, local Files tools and Notes, native forge actions, and optional cockpit widgets. Notes now fuzzy-matches built-in and custom templates after /; Findings posts GitHub/GitLab discussion comments; Usage and Context offer clearable burn-rate lookback windows. All optional settings preserve the existing defaults.

This mega PR combines the weekly model-catalog refresh, CI and dependency hygiene, provider-default coverage, a provider-native Linear workflow, tracked-filename quick-open, and a persisted diff-view preference. Existing model IDs, custom-model behavior, all four ticket providers, local as the default, content search, and every diff layout remain intact.

Model catalog (TER-8)

  • Keeps the earlier verified Claude full IDs for Fable 5, Opus 4.8/4.7, Sonnet 5, and Sonnet 4.6, plus locally cached gpt-5.5 for Codex.
  • Adds cursor-grok-4.6-high to the Cursor static fallback while retaining cursor-grok-4.5-high and every existing entry. The ADR-0009 live cursor-agent --list-models path is unchanged.
  • Adds anthropic/claude-fable-5 to Pi's starter hints while keeping its live --list-models catalog primary and preserving all existing Pi Anthropic entries.
  • Adds seven slugs served by the live OpenRouter models API on 2026-09-02, with current price/context metadata: qwen/qwen3.8-flash, z-ai/glm-5.3-flash, deepseek/deepseek-v4-flash-0731, minimax/minimax-m3, x-ai/grok-build-0.1, deepseek/deepseek-v4-pro-0813, and google/gemini-3.6-flash.
  • Adds no GPT-5.4, Gemini CLI, Crush, or other expensive frontier slug to the cheap registry. No requested OpenRouter slug was skipped.

Internal tests (TER-9)

  • Pins the exact Cursor and Pi starter menus without changing custom-model behavior.
  • Proves local remains the unconfigured default and all four provider kinds remain valid: local, github, linear, and webview.
  • Proves Linear's human identifier (TER-11) wins over its UUID for browser and agent references.
  • Proves the bundled TerMinal MCP refuses file_ticket for Linear repos instead of silently writing local markdown.

Linear readiness (TER-10)

  • Settings → Tickets now reports Linear MCP checking, connected, or missing state next to the team selector.
  • The missing/not-checked hint points operators to the existing Advanced MCP command, official Linear MCP endpoint, Teams refresh, and normal Linear sign-in prompt; no TerMinal-only workflow is introduced.
  • Team selection persists both the Linear team name and key when available.

Provider-native Linear IDs and writes (TER-11)

  • Tickets list/detail/agent references use externalKey (for example TER-11) rather than local markdown-style IDs or Linear UUIDs.
  • Agent prompts include the bound Linear team/key and explicitly route status, comments, and write-back through the configured Linear MCP.
  • Solo Linear implementers no longer receive the contradictory local comment_ticket instruction.
  • The bundled local file_ticket path refuses Linear, GitHub, and webview repos before it can create markdown; provider-backed desktop CRUD remains unchanged.
  • Repos without an explicit provider continue to use the local sidecar backlog.

Dependency hygiene (TER-12)

  • Bumps direct Mermaid to patched 11.16.1.
  • Pins PostCSS to patched, supply-chain-aged 8.5.26 instead of adopting same-day 8.5.27/8.5.28 releases.
  • Safely overrides electron-builder's transitive @xmldom/xmldom to patched 0.8.15 without crossing the major-version boundary.
  • Pins transitive DOMPurify to patched 3.4.14, clearing the extra advisories surfaced through Mermaid.
  • bun audit now reports no vulnerabilities; no advisory was skipped or left unverifiable.

Filename quick-open (TER-13)

  • Adds typed files.listTracked IPC/preload/daemon support backed by NUL-delimited git ls-files, including the existing SSH workspace path.
  • Default/files mode in ⌘K fuzzy-ranks tracked paths with the shared fuzzyRank scorer and navigates the selected file into the Files tab.
  • # mode remains distinct content search through the existing files.search / git grep path.
  • Focused tests cover tracked/untracked filtering, spaces in filenames, and non-git workspaces.

Persisted diff layout (TER-14)

  • Remembers unified, split, or structural under gt.diffViewMode and restores the last valid choice across opens.
  • Keeps every mode available instead of forcing a default after the user chooses.
  • Structural output still renders only after difftastic availability is confirmed; an unavailable install safely displays unified output without discarding the remembered structural preference.

CI hygiene (TER-5)

  • Pins transitive tar to patched 7.5.22, fast-uri to patched 3.1.6, and browserslist to patched 4.28.8 through package overrides, with a refreshed bun.lock.
  • The fast-uri and browserslist pins address the high-severity advisories newly surfaced by the 2026-09-02 CI run; the high-severity audit gate remains enabled and passes locally.
  • Applies Prettier only to source/test files reported by CI. Generated vendor files are untouched.

Org ticket workflow (TER-6 / TER-7)

  • Keeps all four per-repo providers: local, github, linear, and webview.
  • Keeps local as the local-first default.
  • Keeps Linear as an optional first-class organization choice in Settings → Tickets and docs/setup.md: Linear stays the system of record, and TerMinal reads and writes the same team issues through Linear MCP without creating a separate TerMinal-only process.
  • Preserves per-repo choice; Linear is never forced.

Verification sources

Needs confirm

  • cursor-grok-4.6-high: Cursor's official catalog confirms Grok 4.6 and its high default effort, but this account's installed cursor-agent --list-models returned no models, so the exact CLI fallback spelling could not be observed locally.
  • gpt-5.2-codex: the exact ID exists in official OpenAI documentation, but the current Codex CLI model cache omits it and the official catalog marks it deprecated. It remains unadded until current CLI acceptance can be confirmed.

Editor and cockpit preferences (TER-15–18)

  • TER-15: guards persisted diff layouts, retaining unified/split/structural choices and safe storage fallback.
  • TER-16: optional Prettier format on save, default off.
  • TER-17: optional Usage/Context warning percentages with Clear; disabled by default.
  • TER-18: optional local Session Timeline widget for Claude/Codex transcript navigation.

Files and cockpit pack (TER-19–22)

  • TER-19: reconciles IDEAS.md done markers for lazy languages, multi-file editing/Cmd+W, project replacement, Git ahead/behind, cockpit ordering, and viewed controls. Dependency re-audit finds zero vulnerabilities; no dependency changes needed.
  • TER-20: adds a persisted Files “Git gutter” toggle, default on. Local git patches show added, modified, and deleted-line anchors vs HEAD in the active CodeMirror editor. Debounced 350 ms after saved-buffer changes, refreshed every five seconds while the window is focused, limited to text buffers up to 500,000 characters and patches up to 1,000,000 characters. Unsaved or disk-mismatched buffers hide markers. Remote editors are excluded.
  • TER-21: adds the optional Open PRs / MRs cockpit plugin, default off, using existing GitHub/GitLab APIs on a one-minute poll. Click navigates to the MRs tab. Missing repo/remote, unsupported forge context, authentication and connection failures have explicit empty states. MVP limit: the existing API returns the latest 100 items across lifecycle states, so a full-page result displays “At least N open,” never an exact repo-wide total.
  • TER-22: adds a compact accessible viewed-progress bar to the diff file-tree header. Existing checkboxes, Mark all / Clear, count text, all diff modes and persistence remain available.

TER-23–26: file actions, optional CI and provider status edits

Tracks TER-23, TER-24, TER-25, and TER-26, alongside TER-5–22 above.

  • TER-23: pin js-yaml 4.3.2 for GHSA-2883-xcg3-v3hh, update lockfile, and mark the shipped Files, CI and ticket-status ideas done. Audit is clean.
  • TER-24: complete existing tree actions with per-folder new-file/new-folder buttons, explicit operation errors, and confirmed recursive deletion. Folder rename/move remaps open descendants and history; pending autosaves settle before the operation. Deletes close descendant buffers so autosave cannot recreate removed files. Existing editor, palette and drag/drop paths remain available.
  • TER-25: add a disabled-by-default CI cockpit plugin using the existing GitHub Actions/GitLab API. Shows the latest repo run, refreshes once per minute and opens its URL. Explicit empty/error copy covers missing repo, unsupported remote, authentication failure and no runs.
  • TER-26: retain provider-backed inline status editing for local markdown and Linear, adding saving/error feedback and duplicate-write protection. Linear MCP tool errors now reject instead of claiming success. Local priority editing remains available; no provider fallback or new ticket creation.

Local tools and hygiene (TER-27–30)

Tracks TER-27, TER-28, TER-29, and TER-30, alongside TER-5–26 above.

  • TER-27: refresh IDEAS done markers; expand Files path-action, CI empty-state rendering, and Linear native status mapping coverage. Audit reports no vulnerabilities; no dependency changes needed.
  • TER-28: Files → Run check discovers local check/typecheck/lint scripts or installed tsc/eslint. The user reviews the command and explicitly runs it against saved files. Main revalidates the plan/repo, limits concurrent checks per repo, bounds time/output, and cleans up the process group. Results show pass/fail and diagnostic output; missing repo/checker states provide guidance. No on-save runs, downloads, LSP, or cloud integration.
  • TER-29: Notes → Path notes adds explicit-save Markdown notes for exact repo-relative file/folder paths, backed by separate local sidecar knowledge files. Files links the open file or selected folder to Notes. Path normalization, expected-repo validation, draft preservation across Notes views, and repeated navigation are covered. Repo/global notes and RAG retain their existing behavior. Notes stay at their original path after renames; save drafts before leaving Notes or closing the session. Local repos only.
  • TER-30: optional AI cost per day cockpit widget, disabled by default. Uses the existing local ledger across repos to estimate today and seven calendar days by run start date. Explicit missing/remote/error copy and a latest-2,000-record cap notice prevent incomplete data from looking like exact billing totals. Subscription usage can have no incremental charge.

Local cockpit and Notes additions (TER-31–34)

Tracks TER-31, TER-32, TER-33, and TER-34, alongside TER-5–30 above.

  • TER-31: refresh IDEAS through TER-34 and re-audit. All five open Mermaid Dependabot alerts identify 11.16.1 as patched; this branch already pins it. Audit is clean; no manifest or lockfile churn.
  • TER-32: optional failing-test count widget, disabled by default. Reads structured test_counts.failed or legacy Test gate counts from the latest local review artifact. Unknown differs from zero; counts are explicitly historical. Clicking opens the review PR. No cloud calls or automatic test execution.
  • TER-33: optional repo disk usage widget, disabled by default. Local allocated disk space includes dependencies and hidden files. Main-process reads have a 60-second cache and five-second du timeout; remote, missing, unreadable and timed-out paths show explicit messages.
  • TER-34: Append template control adds checklist, meeting or decision markdown to Repo/Global items and scratch notes, plus Path notes. Existing text is preserved; normal save behavior applies. TER-36 adds custom local templates alongside these built-ins; TER-42 adds slash matching.

Notes, ticket forge creation, and hygiene (TER-35–38)

Tracks TER-35, TER-36, TER-37, and TER-38, alongside TER-5–34 above.

  • TER-35: sync IDEAS through TER-38 and re-audit: zero vulnerabilities. Mermaid alerts DUMMY — model UX MRs smoke test (close me) #1–5 remain open, but all identify the branch's pinned 11.16.1 as patched. origin/main still pins 11.16.0. No major-version bump or lockfile churn is needed for these alerts.
  • TER-36: optional custom markdown templates in local settings, with named save/delete controls. Available alongside built-ins in scratch notes, markdown knowledge items, and path notes. Appends preserve existing text; failed saves retain the draft.
  • TER-37: Tickets detail creates actual GitHub PRs / GitLab MRs through the existing forge CLI/API seam. Source/target branches, title, and description are editable; current branch and a ticket-derived name are optional defaults. Requires an already-pushed branch. Local tickets receive the created URL; other providers can copy it manually. Missing/unsupported remotes and remote SSH workspaces show explicit availability messages. Creation and local linking stay bound to the originating checkout. No branch creation, push, or merge is triggered by this feature.
  • TER-38: additive mentioned-ticket buttons resolve exact ticket identifiers (TER-37 / #TER-37) and local markdown slugs. Navigation selects local tickets and supports Linear view URLs, including cold tab mounts. Markdown is unchanged. Reverse ticket-to-note mentions are implemented in TER-45 below; graph views remain deferred.

Notes, forge comments, cockpit settings, and hygiene (TER-39–42)

Tracks TER-39, TER-40, TER-41, and TER-42, alongside TER-5–38 above.

  • TER-39: reconcile IDEAS through TER-42 and re-audit: zero vulnerabilities. Dependabot Mermaid alerts DUMMY — model UX MRs smoke test (close me) #1–5 still identify 11.16.1 as patched; this branch pins it while origin/main pins 11.16.0. Registry latest is 12.0.0, but these alerts need no major upgrade. Manifest and lockfile remain unchanged.
  • TER-42: typing / opens a local fuzzy picker across built-in and custom template names in scratch, repo/global markdown items, and path notes. Empty query lists all; Enter chooses the first result, or click a match. Escape/click-away dismisses. Selection removes only the slash command and appends the template body, preserving other text and the existing append-button path.
  • TER-40: Findings now offers an explicit general discussion comment for GitHub PRs and GitLab MRs through existing forge CLIs/APIs, with preserved drafts on failure and success/error feedback. Open review threads leads to existing GitHub thread replies. General comments are also available in Conversation, including when there are no issue comments yet. GitLab thread browsing/replies are implemented in TER-46 below; resolve/unresolve remains deferred. No automatic posts or merges.
  • TER-41: Usage and Context each offer optional 5/15/30-minute or 1/4-hour burn-rate windows, default off and clearable. Preferences persist independently. Local, temporary samples measure observed percentage points per hour while mounted; Usage uses the five-hour quota. Drops reset the baseline, and context session/model changes start fresh. Existing gauges and soft caps remain unchanged.

Local navigation, note backlinks, GitLab threads, and hygiene (TER-43–46)

Tracks TER-43, TER-44, TER-45, and TER-46, alongside TER-5–42 above.

  • TER-43: reconcile IDEAS through TER-46 and re-audit. Zero vulnerabilities. Dependabot alerts DUMMY — model UX MRs smoke test (close me) #1–5 remain open, each naming Mermaid 11.16.1 as patched; origin/main still pins 11.16.0. Retain the patched pin rather than take registry latest 12.0.0; no dependency or lockfile changes.
  • TER-44: Files searches common declarations in the current editor buffer, lists symbols, and selects/scrolls to a chosen definition. Cursor-based lookup and typed search remain available together. Clear misses; no server or network. Cross-file resolution and full LSP remain deferred.
  • TER-45: ticket detail scans saved repo/global knowledge items, scratch and path notes using the TER-38 exact identifier/slug matcher. Hits navigate to their scope/item/path through the existing navigation bus. Explicit loading, empty and error states; unsaved edits are not indexed.
  • TER-46: Findings → Open review threads browses GitLab discussions through the configured glab host, including pagination. Replies target the selected discussion; errors preserve drafts for retry. GitHub replies remain intact. GitLab does not expose GitHub review-submission controls. No automatic comments, approvals, or merges; resolve/unresolve stays deferred.

Verification for the completed pack

  • Focused tests: 44 passed, 0 failed across 8 files.
  • Full bun run test: 3,505 passed, 2 skipped, 0 failed across 292 files (30.53s).
  • Initial full run caught generated IPC map ordering drift; regenerated the map and reran successfully. No tests weakened.
  • bunx tsc --noEmit: passed.
  • bun run lint: 0 errors, 27 existing warnings.
  • bun audit: no vulnerabilities (zero Low/Moderate/High/Critical).
  • bun run build: passed; committed binary artifacts remain current.
  • Focused Electron UX: 5 passed (11.4s), including canary setup/teardown, local symbol jump/miss, ticket backlink empty state/navigation, and GitLab reply failure/draft preservation/successful retry. GitLab UX uses deterministic IPC fixtures, not a live post.
  • UX canary emitted its existing non-strict local warning about concurrent config fingerprint changes; strict isolation was not reverified with the live app stopped. Canary settings remain unchanged.
  • git diff --check: passed.
  • Security scan: dependency audit clean; secret scanning skipped (opt-in); semgrep unavailable.

Continues PR #347 on feat/eng-harness-model-catalog. origin/main was already an ancestor, so no rebase or force push was needed. Three new commits are authored by TerMinal Eng (Grok Bot): ac24856, 33559e8, 25ff437. No .eng-* scratch files are committed. Human review and merge remain required.

TerMinal Eng (Grok Bot) added 5 commits September 2, 2026 11:03
Pin tar to the patched release, apply the CI-reported Prettier fixes, and make Linear’s org source-of-truth workflow explicit while keeping local as the default.\n\nAuthored by TerMinal Eng (Grok Bot).
Authored by TerMinal Eng (Grok Bot).
@trevormil
trevormil force-pushed the feat/eng-harness-model-catalog branch from 640ad20 to a94bb13 Compare September 2, 2026 18:16
@trevormil trevormil changed the title feat(models): weekly harness + picker refresh — authored by TerMinal Eng (Grok Bot) feat(models,tickets): TER-5–11 catalog, CI, and Linear workflows — authored by TerMinal Eng (Grok Bot) Sep 2, 2026
@trevormil trevormil changed the title feat(models,tickets): TER-5–11 catalog, CI, and Linear workflows — authored by TerMinal Eng (Grok Bot) feat: TER-5–14 catalogs, Linear workflows, quick-open, and diff prefs — authored by TerMinal Eng (Grok Bot) Sep 3, 2026
@trevormil trevormil changed the title feat: TER-5–14 catalogs, Linear workflows, quick-open, and diff prefs — authored by TerMinal Eng (Grok Bot) feat: TER-5–22 catalogs, Linear workflows, editor and cockpit improvements Sep 8, 2026
@trevormil trevormil changed the title feat: TER-5–22 catalogs, Linear workflows, editor and cockpit improvements feat: TER-5–30 catalogs, Linear workflows, local tools and cockpit improvements Sep 10, 2026
TerMinal Eng (Grok Bot) added 2 commits September 11, 2026 11:21
GitHub Dependabot alerts 1-5 all identify Mermaid 11.16.1 as the first patched release. This branch already pins 11.16.1; bun audit reports no vulnerabilities. Retain the patched pin without lockfile churn.

Validation: 3479 tests passed, 2 skipped; 100 focused checks and 6 focused UX checks passed. Typecheck and build passed. Lint: 0 errors, 27 existing warnings. UX local canary reported concurrent live-config changes in existing non-strict mode. No tests weakened.
@trevormil trevormil changed the title feat: TER-5–30 catalogs, Linear workflows, local tools and cockpit improvements feat: TER-5–34 catalogs, local tools, cockpit widgets and Notes templates Sep 11, 2026
@trevormil trevormil changed the title feat: TER-5–34 catalogs, local tools, cockpit widgets and Notes templates feat: TER-5–38 catalogs, local Notes templates and ticket PR/MR creation Sep 14, 2026
@trevormil trevormil changed the title feat: TER-5–38 catalogs, local Notes templates and ticket PR/MR creation feat: TER-5–42 catalogs, Notes slash templates, forge comments and cockpit settings Sep 15, 2026
@trevormil trevormil changed the title feat: TER-5–42 catalogs, Notes slash templates, forge comments and cockpit settings feat: TER-5–46 catalogs, local symbols, note backlinks and GitLab threads Sep 17, 2026

This branch has not been deployed

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

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant