Skip to content

feat(go): v0.2.1 — markdown tables, attachments, resizable input, icon polish#371

Merged
zomux merged 7 commits into
openagents-org:developfrom
baryhuang:fix/go-markdown-and-input
May 7, 2026
Merged

feat(go): v0.2.1 — markdown tables, attachments, resizable input, icon polish#371
zomux merged 7 commits into
openagents-org:developfrom
baryhuang:fix/go-markdown-and-input

Conversation

@baryhuang
Copy link
Copy Markdown
Collaborator

Brings the active feat/go-ui-revamp Swift line into develop, including the v0.2.0 polish commits that landed after PR #369 plus the new v0.2.1 features. Already released as go-v0.2.1.

v0.2.1 (new)

  • Markdown tables — GFM | --- | tables render inline in chat bubbles via SwiftUI Grid. Last column is flex so "label / description" tables fill the bubble width with proper text wrap.
  • File attachments — paperclip button (NSOpenPanel on macOS, .fileImporter on iOS), image/file paste on macOS via .onPasteCommand. Pending-attachment chips above the input; on send, files are uploaded multipart to POST /v1/files and spliced into the outgoing message as markdown links.
  • Resizable input box — drag handle on the composer; height clamped to ≤ ½ of chat-history height via GeometryReader + preference key.
  • Shift+Enter newline — unified .onKeyPress handler — plain Return sends, Shift+Return inserts a newline. macOS + iOS hardware keyboards.
  • Wide-content bubble layout — fixed-width opposite-side spacer + GeometryReader-driven explicit bubble width when a message contains a table/code block, instead of flex distribution that was splitting space with the Spacer.
  • Mac-style app icon — regenerated all 10 Mac icon sizes at 77% body / 22.5% corner radius for a squircle dock appearance.
  • MARKETING_VERSION0.2.1.

v0.2.0 polish (already on feat/go-ui-revamp)

iPad orientations + UILaunchScreen for App Store upload, iPhone re-tap-to-reopen, encryption-exempt declaration, opaque app icons, original macOS Shift+Return fix, tertiary URL placeholder on iPhone, iPhone-target polish.

Test plan

  • macOS Release build clean under Swift 6 strict concurrency
  • iOS Simulator build clean
  • DMG installed locally; chat with table renders, paperclip + paste tested, Shift+Enter behaviour verified
  • iOS smoke test on device

baryhuang added 3 commits May 3, 2026 23:46
The thread list's selection binding silently dropped nil writes, but
iPhone's compact NavigationSplitView writes nil to the binding when the
detail is popped via Back. With currentSessionId still pinned to that
thread, the row stayed 'selected' and re-tapping triggered no change —
visible only with a single thread, since multiple threads let you break
out by tapping a different row. selectSession now accepts String? and
clears state on nil so the next tap re-pushes.
Universal-bundle validation (TARGETED_DEVICE_FAMILY=1,2) was failing on
two pre-existing gaps: missing UISupportedInterfaceOrientations (iPad
multitasking requires all four) and missing UILaunchScreen (iOS 14+
requires a launch storyboard or UILaunchScreen dict). Adding both to
project.yml and Info.plist; bundling the Xcode-applied DEVELOPMENT_TEAM
+ .app product rename that came along during archiving.
…n polish

- Markdown table rendering: GFM `| --- |` parsing in MarkdownSegmenter,
  Grid-based TableView with last-column flex so label/description tables
  fill the bubble width with proper wrap.
- File attachments in chat input: paperclip → NSOpenPanel (macOS) /
  fileImporter (iOS); paste images/file URLs via .onPasteCommand on macOS;
  pending-attachment chip strip; multipart POST /v1/files in WorkspaceAPI;
  uploaded files spliced into the outgoing message as markdown links.
- Resizable input box: drag handle adjusts inputHeight, clamped to ≤ 50%
  of chat height via GeometryReader + ChatHeightKey preference.
- Shift+Enter newline: unified onKeyPress handler — plain Return sends,
  Shift+Return inserts newline, on macOS and iOS hardware keyboards.
- Wide-content bubble layout: HStack uses fixed-width opposite-side spacer
  + GeometryReader-driven explicit bubble width when a message contains a
  table/code block, instead of relying on flex distribution that was
  splitting space with the Spacer.
- Mac dock icon: regenerated all 10 sizes at 77% body / 22.5% radius for
  a Mac-style rounded squircle with breathing room.
- Bump MARKETING_VERSION to 0.2.1.
@vercel
Copy link
Copy Markdown

vercel Bot commented May 7, 2026

@baryhuang is attempting to deploy a commit to the Raphael's projects Team on Vercel.

A member of the Team first needs to authorize it.

@vercel
Copy link
Copy Markdown

vercel Bot commented May 7, 2026

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
openagents-workspace Ready Ready Preview, Comment May 7, 2026 6:36am

Request Review

- iOS paperclip now presents `PhotosPicker` (images only, max 10) instead
  of `.fileImporter([.item])`. Documents/PDFs aren't a primary use case
  for chat-style attachment on phone — photos are the natural default.
- Photo bytes are loaded via `loadTransferable(type: Data.self)` and fed
  into the same PendingAttachment pipeline as macOS pasted/picked files.
- iOS-only minor version bump to 0.3.0 via platform-conditional build
  setting (`MARKETING_VERSION[sdk=iphone*]`). macOS stays at 0.2.1 — no
  point re-versioning the platform we just shipped.
….3.0

Per-platform version mismatch (iOS 0.3.0 vs macOS 0.2.1) is more confusing
than useful — the codebase ships from one tag and one tree. Drop the
`MARKETING_VERSION[sdk=iphone*]` conditional and let both platforms share
0.2.1 again. PhotosPicker change from the previous commit stays.
…ptions

Tap paperclip on iPhone now opens a Menu with two choices:
- Photo Library → PhotosPicker (images, max 10)
- Files       → fileImporter (any file via the Files app)

Both options feed into the same PendingAttachment chip + multipart upload
pipeline. macOS path is unchanged (single NSOpenPanel button). The
paperclip itself is now factored into a `paperclipControl` view to keep
the per-platform branching contained.
@baryhuang baryhuang force-pushed the fix/go-markdown-and-input branch from 5cfe583 to b1359df Compare May 7, 2026 07:14
@zomux zomux merged commit 9a2e38e into openagents-org:develop May 7, 2026
3 checks passed
@baryhuang baryhuang deleted the fix/go-markdown-and-input branch May 7, 2026 08:47
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.

2 participants