Commit graph

133 commits

Author SHA1 Message Date
h3p
db43757005 Prepare App Store security and distribution for v0.4.1-beta 2026-02-07 23:56:52 +01:00
h3p
6fc11927f2 Add New Tab toolbar action and stabilize detached window editor state
- Add a dedicated “New Tab” toolbar button across iOS/iPadOS/macOS
- Keep toolbar behavior aligned with existing menubar New Tab action
- Refactor “New Window” scene to use a per-window @StateObject EditorViewModel
- Prevent detached window state resets that could surface as sidebar toggles/text loss after paste
- Preserve existing shared error bindings and window sizing behavior
2026-02-07 19:46:08 +01:00
h3p
50c53d7856
Merge pull request #1 from nickustinov/fix/duplicate-file-menu
Fix duplicate File menu in menu bar
2026-02-07 17:44:56 +01:00
Nick Ustinov
e4597b069c Fix duplicate File menu in menu bar
Replace the separate CommandMenu("File") with CommandGroup placements
that inject items into the existing macOS File menu, eliminating the
duplicate menu.
2026-02-07 14:34:37 +00:00
h3p
d81d99193b
Update README.md 2026-02-07 12:30:55 +01:00
h3p
0c79da941f 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:55:39 +01:00
h3p
2a58b8c5c0 Merge remote-tracking branch 'refs/remotes/origin/main' 2026-02-07 11:52:34 +01:00
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
48adbdfa4d
README.md aktualisieren 2026-02-07 07:57:34 +01:00
h3p
1736888047
Update README.md 2026-02-06 20:42:08 +01:00
h3p
eb7c829640
Update README.md 2026-02-06 20:36:12 +01:00
h3p
9d53c5f7ce
Add files via upload 2026-02-06 20:35:21 +01:00
h3p
94642b2a3d
Delete NeonVisionEditorApp.png 2026-02-06 20:34:48 +01:00
h3p
09fa0c029a
Update README.md
What's new section
2026-02-06 20:34:10 +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
685f5345f7 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:07 +01:00
h3p
b2e043fd91
Update README.md 2026-02-06 15:10:41 +01:00
h3p
47edba109c
Update README.md 2026-02-06 15:10:12 +01:00
h3p
4823fa44c9
Update README.md 2026-02-06 15:05:50 +01:00
h3p
eed73f3b61
Update README.md 2026-02-06 15:03:33 +01:00
h3p
0b47491d3f
Update README.md 2026-02-06 14:56:13 +01:00
h3p
9a63afcb0f
Update README.md 2026-02-06 14:44:13 +01:00
h3p
8b76d38398
Delete NeonVisionEditor.png 2026-02-06 14:43:40 +01:00
h3p
8de93999c6
Add files via upload 2026-02-06 14:43:23 +01:00
h3p
88b93c1c55
Add files via upload 2026-02-06 14:41:47 +01:00
h3p
48d2deac61
Delete NeonVisionEditor.png 2026-02-06 14:41:13 +01:00
h3p
e07ac9c5fb
Update README.md 2026-02-06 14:40:50 +01:00
h3p
4b607f7398
Update README.md 2026-02-06 14:40:11 +01:00
h3p
b4ab307250
Rename Neon Vision Editor.png to NeonVisionEditor.png 2026-02-06 14:39:14 +01:00
h3p
8660c6a76b
Delete NeonVisionEditor.png 2026-02-06 14:38:58 +01:00
h3p
7e7cb512e3
Add files via upload
New app Screenshot
2026-02-06 14:38:21 +01:00
h3p
663f979272
Rename NeonVision Editor.png to NeonVisionEditorIcon.png 2026-02-06 14:37:19 +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
229d14ec47 Merge remote-tracking branch 'refs/remotes/origin/main' 2026-02-06 14:29:04 +01:00
h3p
7d3be2f279 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:28:43 +01:00
h3p
6b1f4f3d91
Update README.md
- Automatic applied syntax highlighting for common languages
2026-02-06 11:32:18 +01:00
h3p
30ef96c8a8
Update README.md
**X** No code intelligence (LSP, refactors) but simple autocomplete
2026-02-06 11:29:59 +01:00
h3p
09f3784a37
Update README.md
adjusted release version number
2026-02-06 11:27:22 +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
b3d82b06ab 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:27:11 +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
d500380fb1 Add broad language support + Find/Replace panel; minor helpers
Languages:
- Extend picker, detection, TOC, and syntax highlighting for:
  swift, python, javascript, typescript, java, kotlin, go, ruby, rust, sql,
  html, css, c, cpp, objective-c, json, xml, yaml, toml, ini, markdown,
  bash, zsh, powershell, plain

Editor:
- Add Find/Replace sheet with Find Next, Replace, Replace All
- New toolbar button (magnifying glass) to open Find/Replace
- Implement find/replace helpers operating on the active NSTextView
- Small NSRange helper for cleaner optional handling

Syntax highlighting:
- Add lightweight regex patterns for Java, Kotlin, Go, Ruby, Rust, TypeScript,
  Objective‑C, SQL, XML, YAML, TOML, INI
- Keep performance-friendly patterns consistent with existing approach

TOC:
- Add TOC generation for Java, Kotlin, Go, Ruby, Rust, TypeScript, Objective‑C

Detection:
- Extend heuristics for XML, YAML, TOML/INI, SQL, Go, Java, Kotlin, TypeScript,
  Ruby, Rust, Objective‑C, INI

Testing:
- Verify language picker shows all new entries and switching updates highlighting
- Paste snippets of each language; ensure heuristics pick a sensible default
- Open Find/Replace; test Find Next, Replace, Replace All; verify selection/scroll
- Check large files still perform acceptably with lightweight patterns
2026-02-04 16:21:56 +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
h3p
9ce5b2a38a Merge remote-tracking branch 'refs/remotes/origin/main' 2026-02-04 13:16:08 +01:00
h3p
39189c3bb6 Fix API Settings sheet clipping and improve layout
- Remove hard-coded sheet width so content can size naturally
- Add padding and a sensible minimum width to APISupportSettingsView
- Make SecureField inputs expand horizontally to avoid text truncation
- Use SwiftUI’s @Environment(\.dismiss) to close the sheet properly
- Keep existing bindings and persistence behavior intact

UI/UX:
- Prevents cut-off placeholders and clipped fields
- Improves readability and touch targets with consistent padding
- Updated App Icon for Dark & Light mode

Testing:
- Open API Settings sheet and verify all three fields are fully visible
- Resize window; fields should remain legible and expand as expected
- Press “Close” to confirm the sheet dismisses without warnings
2026-02-04 13:15:33 +01:00
h3p
5bae0e2fbf
README.md aktualisieren 2026-02-02 23:39:33 +01:00
h3p
125649d289
Update README.md
new Screenshot file
2026-01-31 14:37:09 +01:00
h3p
699dc54d08
Delete NeonVisionEditor App.png 2026-01-31 14:36:18 +01:00