Commit graph

19 commits

Author SHA1 Message Date
h3p
0945b23b01 Improve editor UX across iOS, iPadOS, and macOS
iOS
- Keep compact, phone-appropriate toolbar behavior
- Improve toolbar/menu responsiveness and action access consistency
- Include mobile editor parity fixes (syntax highlighting and line-number visibility)

iPadOS
- Make toolbar width adaptive to device/screen size
- Keep toolbar height compact (matching iPhone-style vertical density)
- Distribute toolbar controls across available width
- Promote key overflow actions to visible toolbar buttons when space allows
  (open/save, sidebar toggles, find/replace, wrap, completion), with overflow fallback
- Use active UIWindowScene screen bounds for width calculation (deprecation-safe)

macOS
- Keep full toolbar + menubar action coverage aligned
- Preserve desktop toolbar behavior while iOS/iPadOS layouts diverge
- Retain platform-specific toolbar/menu polish without regressions
2026-02-07 11:51:52 +01:00
h3p
16c12e74bc `feat(editor): add tab strip with unsaved-close flow and refine sidebar/window controls
- Add open-file tab strip below toolbar with tab selection and close buttons
- Track per-tab dirty state in TabData (`isDirty`)
- Mark tabs dirty on content change and clear dirty flag on successful save/save as
- Add close-confirmation dialog for unsaved tabs:
  - Save
  - Don't Save
  - Cancel
- Implement close helpers in ContentView actions:
  - requestCloseTab
  - saveAndClosePendingTab
  - discardAndClosePendingTab
- Keep tab open when Save As is cancelled
- Fix left sidebar toolbar icon to always use left-sidebar symbol
- Keep right sidebar toggle separate and unchanged
- Continue using blank-window toolbar action for new windows`
2026-02-06 20:20:03 +01:00
h3p
2371c48bf1 refactor(editor): split ContentView and improve window/sidebar/search UX
- Split large ContentView into focused files:
  - ContentView+Toolbar.swift
  - ContentView+Actions.swift
  - EditorTextView.swift
  - SyntaxHighlighting.swift
  - SidebarViews.swift
  - PanelsAndHelpers.swift
- Fix markdown highlighting over-coloring by tightening markdown regex patterns
- Add true blank-window flow:
  - New Window scene with isolated EditorViewModel
  - Wire Cmd+N/system New to open blank window
  - Add toolbar New Window button
- Add right-side project structure panel:
  - Default disabled
  - Open Folder + recursive folder tree browsing
  - Open file from tree and refresh tree actions
- Add toolbar toggle for right project structure sidebar
- Upgrade find/replace:
  - Regex mode
  - Case-sensitive mode
  - Find Next / Replace / Replace All status feedback
- Apply translucent window background behavior consistently across windows and side panels
- Resolve post-refactor access-control/build issues:
  - Expose cross-file ContentView action methods
  - Expose NSRange.toOptional() for action extensions`
2026-02-06 19:59:53 +01:00
h3p
38e5911220 Fix line number ruler scrolling and translucency
- Move LineNumberRulerView into its own file
- Fix line number updates while scrolling
- Preserve window translucency by avoiding opaque ruler drawing
- Remove unused textContainer binding
2026-02-06 17:06:34 +01:00
h3p
77b402044f Improve editor behavior and UI options
- Fix Swift code being misclassified as C# by unifying language detection
- Remove conflicting AI-based language detection on paste
- Route paste, open, and edit events through LanguageDetector
- Add toggle for translucent editor background
- Persist translucency preference across sessions
- Minor cleanup of conflicting or redundant editor logic
2026-02-06 14:29:34 +01:00
h3p
94493cb498 Improve AppleFM Foundation Models integration and fix streaming issues
• Add robust availability checks for Apple Intelligence (iOS 18 / macOS 15) before using system language model
• Implement health check via LanguageModelSession to validate model responsiveness (“ping” -> “pong”)
• Provide synchronous completion API appleFMComplete(prompt:) returning model response text
• Implement streaming completion API appleFMStream(prompt:) that yields incremental deltas
• Fix optional handling in streaming: unwrap partial.content.text safely and remove force unwraps
• Correct delta computation using unwrapped current string and maintain last state
• Add graceful fallback to single-shot completion if streaming fails
• Provide stubbed implementations when USE_FOUNDATION_MODELS is disabled to ensure build stability across configs
2026-02-05 22:30:21 +01:00
h3p
c141478814 feat(ui): remove custom hover popovers and rely on native macOS tooltips
• Remove HoverPopoverModifier and all .hoverPopover usages from toolbar
• Use .help(...) for OS-native tooltips on all toolbar items
• Ensure help strings are complete and descriptive (e.g., “Find & Replace”)
• Keep click-driven AI Model popover intact; only hover tooltips removed
• Prevents first-click dismissal behavior and avoids duplicate tooltips
2026-02-04 17:48:50 +01:00
h3p
09d6b8f435 Implement Grok and Gemini for inline code completion; fix exhaustive switch
- Wire up Grok (xAI) and Gemini (Google) API calls inside generateModelCompletion(...)
  - Grok: POST https://api.x.ai/v1/chat/completions with OpenAI-style messages
  - Gemini: POST v1beta/models/<model>:generateContent with contents/parts payload
  - Reuse existing prompt and sanitizeCompletion(_:) to keep output concise
  - Respect missing/empty tokens by short‑circuiting to no-op
- Ensure these providers are only used by inline completion, already gated by isAutoCompletionEnabled

- AIClientFactory: make switch exhaustive by adding `.anthropic` case (returns nil for now)
  - Anthropic is handled directly in ContentView’s inline completion path

Notes:
- No changes to other features or UI flows
- OpenAI and Anthropic implementations remain as previously added
- Gemini model used: gemini-1.5-flash-latest
- Grok model used: grok-2-latest

Testing:
- Toggle code completion with the toolbar button; when disabled, no API calls occur
- With tokens set, select Grok/Gemini and type to trigger suggestions
- Verify suggestions insert without duplication and are trimmed via sanitizeCompletion
- Build to confirm AIClientFactory switch error is resolved
2026-02-04 14:11:28 +01:00
h3pdesign
8a83a31c29 minor fix 2026-01-25 14:11:15 +01:00
h3pdesign
e4bf47fa08 Further changes to Complete rework of the AI selector. Added OpenAI and Gemini. Drag & Drop files to App Window. Added Tooltips on hover for the Toolbar. Added clean window button. Added AI Model API settings. 2026-01-25 13:46:33 +01:00
h3pdesign
9183d941e3 Removed top comment 2026-01-23 14:43:59 +01:00
h3pdesign
ed2ee4cfe8 added bash and zsh as langauge, added function for opening all files 2026-01-23 12:49:52 +01:00
Rodric Krogh
05c7677443 Fixed line numbering 2026-01-21 00:46:04 +01:00
Rodric Krogh
70cfffaafc added autimatic language selection with Apple fm model 2026-01-17 13:04:11 +01:00
Rodric Krogh
a21b27466d UI changes. Fixed Sidebar 2026-01-17 12:25:50 +01:00
Rodric Krogh
39ce3f3443 Adjustments for the rewrite code. Text field adjustments 2026-01-15 18:48:06 +01:00
Rodric Krogh
0faaff61cb Adjustments to tabbar approach and syntax highlighting of text code 2025-08-27 13:34:59 +02:00
Rodric Krogh
d3bd921823 First build 2025-08-26 11:49:52 +02:00
Rodric Krogh
ab543db75b Initial Commit 2025-08-25 09:39:12 +02:00