A3 පර්යාය ඉවත්කර, ගොඩනැගීමේ වාඩු සහ අනෙක් වැඩිදුර සවිස්තර#2
Closed
imabdulazeez wants to merge 69 commits into
Closed
A3 පර්යාය ඉවත්කර, ගොඩනැගීමේ වාඩු සහ අනෙක් වැඩිදුර සවිස්තර#2imabdulazeez wants to merge 69 commits into
imabdulazeez wants to merge 69 commits into
Conversation
… a git repo are detected Previously isGitRepository only checked cwd/.git, so opening t3code at a sub-package of a monorepo (e.g. apps/server) was treated as non-git, silently disabling checkpoints and the diff panel. Walk up to the filesystem root to match git's own behavior. Fixes pingdotgg#2441
Apply review suggestion: collapse the parent-walk into a single while loop using the dirname-equals-self termination check, and drop the redundant parse(cwd).root guard. Behavior is unchanged for every cwd the codebase actually passes in (always a sub-path of the repo).
The previous while-loop form advanced current to its parent in the loop condition before the existsSync check ran, so the input directory was never tested. Calling isGitRepository on a path that itself contains .git returned false. Switch to do...while so the check runs before the advance, without duplicating the existsSync call.
- Update product names and titles across web and desktop - Add "AA" to DesktopAppStageLabel type
- Add client setting `autoCreatePrOnPush` (default on) - Downgrade feature-branch quick actions to commit/push only when off - Expose toggle in General settings
- Update dialog titles and descriptions to use "branch" - Clarify progress messages: "feature ref" → "feature branch" - Update error messages and hints for consistency - Change test expectations to match new terminology
- Allow users to choose monospace fonts from system fonts - Fonts persist in settings and apply to diff view - Uses Local Font Access API with common fonts fallback - Grant local-fonts permission in Electron
- Generalize DiffFontPicker to FontPicker for reuse - Add terminalFontFamily setting to contracts schema - Apply custom font selection in TerminalViewport
- Rename General to Appearance for UI-related settings (fonts, theme, diff display) - Move chat/task settings to Threads & tasks section - Move project config to Projects section - Move git settings to Version control section
Adds default value for new setting to keep tests passing
Brings in: server CLI submodule split (pingdotgg#2545), process/trace diagnostics views (pingdotgg#2532), JetBrains editor support (pingdotgg#2475), MessagesTimeline render optimizations (pingdotgg#2527, pingdotgg#2498), git/terminal test stabilization (pingdotgg#2540), keybindings settings editor (pingdotgg#2533), and provider update advisories (pingdotgg#2312). Conflict resolutions: - packages/contracts/src/settings.ts: kept aa's diffFontFamily and terminalFontFamily alongside upstream's dismissedProviderUpdateNotificationKeys. - apps/desktop/src/clientPersistence.test.ts: same shape, fixture mirrors the schema. - apps/web/src/components/settings/SettingsPanels.tsx: kept both import groups (FontPicker from aa, ProviderUpdateLaunchNotification.logic from upstream). - apps/web/src/localApi.test.ts: extended both fixtures with diffFontFamily and terminalFontFamily so the merged ClientSettings shape typechecks against the strict desktop bridge contract. Pre-existing aa typecheck issues fixed at the root so the merge commit is green: - apps/desktop/src/electron.d.ts: declaration-merge "local-fonts" into Electron's Session.setPermissionRequestHandler permission union (the Electron 40 typings omit it even though the runtime supports it). - apps/web/src/components/DiffPanel.tsx: conditionally spread style on Virtualizer instead of passing undefined, satisfying exactOptionalPropertyTypes.
Extend the Electron permission allowlist so navigator.clipboard.writeText
calls from the renderer ("Copy" buttons in messages, sidebar, etc.) work
in production. Without this, the permission handler installed alongside
the local-fonts grant denied clipboard-sanitized-write, surfacing
"Failed to copy" toasts. Dev mode was unaffected.
- Adds formatBuildTimestamp utility for UTC YYYYMMDD-HHMM format - Updates artifactName to include timestamp in builds - Helps distinguish builds for debugging
- Add chatImageAttachmentsToComposerImages helper to restore images - Track user messages by ID for lookup during revert - Make onRevertToTurnCount async and return success status - Populate composer draft with reverted message content and attachments
- Reorganize flat source tree into modular architecture (app/, backend/, electron/, ipc/, etc.) - Implement proper dependency injection using Effect Context services - Consolidate app lifecycle, configuration, and environment management - Update electron to v41.5.0 and add Effect language service support - Move desktop-specific .gitignore entries to root
Adds a heuristic to detect and capture plan-like text when Claude completes a plan-mode turn without calling ExitPlanMode. This makes the Implement button appear for structured text plans that don't explicitly use the SDK tool. The fallback gates on all of: - Turn ran in plan mode - No ExitPlanMode already captured - No pending user input request - Turn completed successfully The heuristic checks for: - Text length >= 200 chars (filters trivial responses) - Structural markers (headings, bullet/numbered lists) - Not starting with refusal stems - Either 3+ total list items OR a plan-related heading keyword Captures via the same emitProposedPlanCompleted path, with rawMethod "claude/text-fallback" for observability. Deduplication prevents double-firing when ExitPlanMode already captured the turn. No web/client changes required—the capture flows through existing turn.proposed.completed → activeProposedPlan → Implement button path.
- Store currentInteractionMode in context to properly reflect plan/default mode - Use tracked mode instead of input-based derivation for resolvedInteractionMode - Add null safety check for text block access - Support claude.sdk.text-fallback event source
- Adds 5-second timeout (SHUTDOWN_EXIT_TIMEOUT_MS) to shutdown sequence - Uses Promise.race() to ensure app exits even if shutdown effect hangs - Properly manages timeout handle cleanup - Prevents indefinite app hang on quit
Add check for pending user inputs before allowing plan promotion to Claude, ensuring users cannot promote a plan while unsent messages await.
- Change formatBuildTimestamp to use local time getters - Remove -u flag from date command in release workflow - Update test expectations and comments
- New "Implement in a new thread (don't send)" menu option - Draft threads track source plan references - New useStartImplementationDraftFromPlan hook for creating implementation drafts
Adds "Implement in a new thread (don't send)" composer menu option that lands the implementation prompt in a draft thread, preserving sourceProposedPlan linkage on the first send. Conflicts resolved in ComposerPrimaryActions/ChatComposer (kept both the new menu item and the existing Revert plan item) and ChatView (kept both the promote/revert plan handlers and the new draft helper).
- Sanitize PR body generation to unwrap JSON envelopes from LLM responses - Support reimplementing already-implemented plans with updated UI labels - Add hasReimplementableProposedPlan to determine plan eligibility
- Add full thread diff support with optimized context lookups - Extract process execution to injectable ProcessRunner dependency - Remove open package dependency and add externalLauncher - Update test infrastructure for dependency injection patterns
Change user-facing text from "ref" to "branch" for clarity. Updates branch selector labels, placeholders, error messages, and related test selectors.
- Introduces changedFilesExpandedByDefault user setting - Updates UI state store to track overrides vs default state - Adds toggle in Settings panel to control expansion behavior
Workspace protocol deps (workspace:*) are internal monorepo references and should not be included in the standalone desktop artifact
- Sample server and child processes every 5 seconds with CPU/memory tracking - Aggregate historical data into configurable time windows (5m-1h) - Visualize CPU usage with charts and per-process summaries - Add exponential backoff for VCS remote refresh failures - Export diagnostic utilities for improved testability
- New setting to hide disabled/coming-soon providers from sidebar - Includes UI toggle in provider settings panel
# Conflicts: # apps/web/src/components/chat/ModelPickerContent.tsx
- Enable cross-fork PR creation by specifying head repository - Add headRepository parameter to createChangeRequest - Add repository parameter to getDefaultBranch across providers - Include GitHub CLI tests for new parameter
- Add settings UI for editing commit message, PR, and branch name instructions - Extract default instructions to contracts and wire through text generation pipeline - Instructions override built-in defaults when provided, enabling users to customize AI behavior
- Pass --repo flag to GitHub CLI when repository is specified - Use headContext.headRepositoryNameWithOwner for fork/cross-repo PRs - Enables PR queries scoped to head repository
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Note
Rebrand desktop app from Alpha to A3 and add proposed plan promote/revert commands
Alpha/T3 Code (Alpha)toA3/T3 Code (A3)across desktop and web.buildTimestampto desktop versioning: resolved from env varT3CODE_BUILD_TIMESTAMP, then packagedpackage.json, then current time; propagated intodisplayVersionshown in Electron's about panel.thread.proposed-plan.promoteandthread.proposed-plan.revertorchestration commands with full pipeline: contracts, decider, projector, DB migration (revertedAtcolumn), and client store.autoCreatePrOnPush,diffFontFamily,terminalFontFamily,hideUnavailableProviders,changedFilesExpandedByDefault, and per-operation prompt instruction overrides (commit, PR, branch); a newFontPickercomponent loads system fonts viaqueryLocalFonts.Claude,Codex,Cursor,OpenCode) now acceptinstructionsOverrideand sanitize PR body viasanitizePrBodyto unwrap JSON-wrapped responses.headRepositoryandrepositoryfor cross-repo PR creation and default-branch resolution.MakeDesktopEnvironmentInputand many test harnesses now requirebuildTimestamp; before-quit handler races shutdown against a 5 s timeout and callsprocess.exit(0)directly rather thanapp.quit().Macroscope summarized e352e1c.