From 0a6e7ea76d4013f1025193c4cc1a0787579eee8f Mon Sep 17 00:00:00 2001 From: Chai Pin Zheng Date: Tue, 27 Oct 2026 19:33:35 +0800 Subject: [PATCH 1/3] frontend(feat): group the menu by profile with quota rings MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Rebuild the menu-bar popover around profiles, following the canvas redesign. - Each profile leads a group and its workspaces sit beneath it, pinned first and then by last launch; this replaces the profile filter. Workspaces whose profile is missing follow the groups and name it. - The header is search and the gear. Typing selects the first match so Return's target is visible, and the footer names what Return and Command-Return open. - Clicking a row opens it. Command-Return and Command-click open the other destination; the gear menu's "Return opens in" replaces the ChatGPT/Terminal control and keeps the saved preference. - Rows drop their Open buttons. The actions button shows with the hover or selection plate and stays visible on rows that need repair, which also offer Locate…. Right-click shows the same actions. - Each profile shows its tightest Codex window as a figure and a ring. Low and critical use darker orange and red in light mode so the figure keeps 4.5:1 contrast; the profile's actions list every window with its reset time. - The popover is 360 points wide; previews render at 2x on any display. Tests cover nesting and alignment, search selection, Command-Return, the Return destination, right-click actions, the usage lines and quota colours in both appearances. DESIGN.md, the READMEs, the site copy, llms.txt and the previews are updated. Co-Authored-By: Claude Opus 5.5 --- CHANGELOG.md | 10 + README.md | 22 +- docs/index.html | 4 +- docs/llms.txt | 9 +- macos/CodexProfilesMenu/DESIGN.md | 117 +-- .../Previews/RenderPreview.swift | 4 +- .../CodexProfilesMenu/Previews/menu-dark.png | Bin 112006 -> 78080 bytes .../CodexProfilesMenu/Previews/menu-light.png | Bin 108995 -> 76340 bytes .../CodexProfilesMenu/AccountUsage.swift | 11 +- .../CodexProfilesMenu/WorkspaceMenuView.swift | 749 ++++++++++-------- .../CodexProfilesMenu/WorkspaceModels.swift | 3 + .../CodexProfilesMenu/WorkspaceStore.swift | 23 +- .../MenuInteractionTests.swift | 214 +++-- .../CodexProfilesMenuTests/TestMain.swift | 20 +- macos/README.md | 58 +- 15 files changed, 699 insertions(+), 545 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index c541d14..a0beaf9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,6 +9,16 @@ and this project follows semantic versioning for tagged releases. ### Changed +- Redesigned the macOS menu around profiles. Each profile now leads a group + with its workspaces nested beneath it, replacing the profile filter, and a + search selects its first match so Return's target is visible. Clicking a + row opens it; ⌘Return and ⌘-click open the other destination, and the gear + menu's **Return opens in** replaces the ChatGPT/Terminal control. Rows drop + their Open buttons and reveal actions on hover, selection or right-click. + Each profile shows its tightest Codex window as a figure and ring, in a + darker orange or red when low so the number keeps its contrast, and the + profile's actions list every window with its reset time. The popover is + 360 points wide, and previews render at 2x. - Made the macOS menu-bar app the README's main entry point, with native previews, source installation and menu workflows before the CLI reference. Followed Best-README-Template's project, setup and contributor structure. diff --git a/README.md b/README.md index ace9b73..ad81139 100644 --- a/README.md +++ b/README.md @@ -29,7 +29,7 @@

- Codex Profiles menu bar with personal and work profiles, remaining Codex quota, reset times and pinned project shortcuts. + Codex Profiles menu with default, personal and work profiles, each showing its remaining Codex quota beside a ring, and project shortcuts nested under their profiles.
Actual AppKit view with sample quota values. Light and dark appearance follow macOS. @@ -111,8 +111,9 @@ notarisation, see the [macOS build guide](https://github.com/Ducksss/codex-profi 1. Click the menu bar icon. Existing profiles appear automatically. 2. Choose **New profile…** in the gear menu, or **Create profile…** if the list is empty. Give it a name such as `personal` or `work`. -3. Select **ChatGPT**, click **Open** beside the profile and sign in inside - that window when prompted. Choose **Terminal** to start Codex CLI instead. +3. Click the profile to open it in ChatGPT and sign in inside that window + when prompted. ⌘-click it, or press ⌘Return, to start Codex CLI in + Terminal instead. Different names can stay open side by side. Reopening a name keeps its local data, and `default` opens your normal ChatGPT session. Enable **Open at Login** @@ -120,8 +121,10 @@ in the gear menu to keep the app available after you log in. ### Check quota before opening a profile -**Codex left** shows remaining CLI quota. Low readings turn orange or red -and show their reset time. Hover for details or press **⌘R** to refresh. +Each profile shows the remaining CLI quota of its tightest window beside a +ring. Low readings turn orange or red and show their reset time, and the +profile's ⋯ menu lists every window. Hover for details or press **⌘R** to +refresh. The menu bar icon gains a badge when a profile runs low. Turn on **Low-quota alerts** in the gear menu for a notification when a profile @@ -137,10 +140,10 @@ for supported accounts and troubleshooting. ### Open a project with its profile -Choose **Add workspace…**, select a folder and assign a profile. Pin the -projects you use often, then search and click **Open** to return to them. -The row's actions menu lets you change the profile, repair a moved folder or -remove the shortcut. Bindings are local metadata and do not change project files. +Choose **+**, select a folder and assign a profile. The project appears under +its profile; pin the ones you use often, then search and click one, or press +Return, to open it. The row's ⋯ menu, or a right-click, lets you change the +profile, repair a moved folder or remove the shortcut. Bindings are local metadata and do not change project files.

Keyboard shortcuts and macOS controls @@ -148,6 +151,7 @@ remove the shortcut. Bindings are local metadata and do not change project files | Shortcut | Action | | --- | --- | | ↑ / ↓, then Return | Select and open a profile or project | +| ⌘Return or ⌘-click | Open in the other destination: Terminal, unless the gear menu's **Return opens in** chooses it for Return | | ⌘1–9 | Open the corresponding visible row | | ⌘K | Focus search | | ⌘R | Refresh profiles, projects and quota | diff --git a/docs/index.html b/docs/index.html index db1ddb6..1783ccf 100644 --- a/docs/index.html +++ b/docs/index.html @@ -1371,14 +1371,14 @@

What it does

Codex Profiles.app lists your profiles and project bindings in the menu bar, opens any of them in ChatGPT or Terminal, and shows each profile's remaining Codex quota before you switch.

diff --git a/docs/llms.txt b/docs/llms.txt index 61d2be1..bcd8f56 100644 --- a/docs/llms.txt +++ b/docs/llms.txt @@ -199,16 +199,17 @@ confused with the ChatGPT mode named Work. Since 1.3.0, source checkouts include an optional native menu-bar app for macOS 13 or newer. It creates and opens profiles in ChatGPT or Terminal without requiring a project folder. Workspace bindings are optional project -shortcuts. Search and profile filtering cover both profiles and workspaces. +shortcuts listed under their profile. Search covers both profiles and workspaces. The menu follows macOS appearance, accent, contrast, transparency and Reduce Motion preferences; profile operations use the app's bundled codex-profile. Terminal launches, Codex CLI sign-in and quota readings need the official Codex CLI. CLI discovery supports current and legacy Desktop bundle layouts, including Finder launches without a separately installed Codex CLI on PATH. -Profile rows show remaining Codex CLI quota with compact meters and reported -window durations; a window at 25% or less is highlighted and its reset -countdown replaces the row description. Hover for reset times. Usage is read +Profile rows show the tightest Codex CLI window's remaining percentage, +reported duration and a ring; a window at 25% or less is highlighted and its +reset countdown replaces the row description. The profile's actions menu lists +every window. Hover for reset times. Usage is read through the official app-server method account/rateLimits/read, cached in memory for 60 seconds and refreshed with Command-R; a refresh keeps the previous reading visible. Missing usage does not disable launches. The diff --git a/macos/CodexProfilesMenu/DESIGN.md b/macos/CodexProfilesMenu/DESIGN.md index f406553..4dc1875 100644 --- a/macos/CodexProfilesMenu/DESIGN.md +++ b/macos/CodexProfilesMenu/DESIGN.md @@ -1,53 +1,65 @@ # Native companion -A compact profile and workspace switcher, built with AppKit and the existing +A compact profile and workspace launcher, built with AppKit and the existing Bash CLI. -The single-line header identifies Codex Profiles and offers a gear menu. -Native search matches profile names, project names and paths; a profile filter -and ChatGPT/Terminal segmented control sit immediately below it. Profiles appear -first and open without a folder. Pinned workspaces follow, then other workspaces -ordered by last successful launch. Never call an unopened binding “recent”. +The header is one line: native search and a gear menu. Search matches profile +names, project names and paths. Each profile leads its own group and opens +without a folder; its workspaces sit beneath it, pinned first and then ordered +by last successful launch. Never call an unopened binding “recent”. +Workspaces whose profile is missing follow the groups. A hairline divides +groups; rows within a group have no rules, because the nesting already shows +what belongs together. Nesting and search replace a profile filter. -The 400-point popover uses semantic macOS colours, system type, monochrome +The 360-point popover uses semantic macOS colours, system type, monochrome SF Symbols and the material supplied by NSPopover. The content view has no -additional effect layer. Header, search and filters form one block above a -single rule. One type scale sets the title in 13-point semibold, row names in -13-point medium, details in 11-point secondary text and section headings in -11-point semibold; weight, not size, carries the hierarchy. Each row starts -with a 22-point monochrome mark: a monogram disc for a profile, a rounded -folder or pin tile for a workspace. The header mark and title share the rows' -mark and title columns. Rows show the profile name or project name and path, -a small Open button, and related actions. Every available row is 48 points -high; an unavailable row adds 16 points for its explanation and retains repair -actions. Thin rules divide rows within a group, start at the title column and -hide beside a highlighted row; space above each heading separates groups. -Hover and keyboard selection paint an inset, rounded plate. Rows -remain unselected on opening and after search changes. Arrow-key selection -uses a system accent fill, a semantic outline and an accessibility selected -state. Height follows content up to 500 points; longer lists scroll. Optional -Add Workspace sits in the footer. The empty state offers Create Profile; -creating a profile makes it immediately available without a folder picker. -An inline **Codex left** column aligns beside profile names and before Open. -Each reported window shows its duration, a 4-point capacity meter and a -right-aligned monospaced percentage whose smaller, quieter percent sign keeps -the column reading as figures. Meters use the secondary label colour, -orange at 25% or less and red at 10% or less, where the number also turns red; -the number always carries the value. A low window replaces the row's -destination description with its name and reset countdown. Tooltips and the -row's accessibility label include relative and absolute reset times, -freshness and the Codex CLI sign-in scope. Countdowns stay in English to match -the surrounding text, while clock times follow the user's locale and -12/24-hour setting. Workspace rows do not repeat account quota. -Only explicitly adding a workspace asks for a folder. App-level setup, sign-in, -Open at Login, Low-quota alerts, About and Quit live in the gear menu. +additional effect layer. One type scale sets profile names in 13-point +semibold, workspace names in 13-point regular and details in 11-point +secondary text; weight, not size, carries the hierarchy. A profile row is 46 +points high: a 26-point monochrome monogram tile, the name above a detail +line, and its quota. A workspace row is a single 30-point line starting at +its profile's title column: a pin or folder symbol, the project name and its +path on one baseline. A search result listed without its profile's row starts +under the profile tiles and names its profile instead. A workspace that +cannot open grows to 44 points to explain why on a second line, always shows +its actions and offers Locate… when its folder is missing. +Rows have no Open buttons: clicking a row opens it. The ⋯ actions button +appears with the hover or selection plate, so resting rows stay quiet, and +it stays in the accessibility tree. Right-click and Control-click show the +same actions. Hover and keyboard selection paint an inset, rounded plate. +Rows remain unselected on opening; while searching, the first available match +is selected so Return's target is visible before it is pressed. Arrow-key +selection uses a system accent fill, a semantic outline and an accessibility +selected state. Height follows content up to 500 points; longer lists scroll. +The footer says what Return and Command-Return open, naming the selection, or +reports the latest outcome, beside Add and Refresh buttons. The empty state +replaces search with the app's name and offers Create Profile; creating a +profile makes it immediately available without a folder picker. +Each profile row shows its tightest Codex window: the remaining percentage in +13-point tabular figures with a smaller percent sign, the window's duration +below it, such as “5h left”, and a 20-point ring filled clockwise from the top +with the remaining share. Normal rings use the secondary label colour. At 25% +or less the ring and number turn orange, and at 10% or less red. In light +mode these are darker than systemOrange and systemRed, so a coloured figure +keeps 4.5:1 contrast on the popover and on the hover plate; dark mode uses +lighter tints. The number always carries the value. A low window replaces +the row's destination description with its name and reset countdown. The +profile's actions menu lists every window with its remaining share and reset +clock time, and when it was checked, as disabled information lines. +Tooltips and the row's accessibility label include relative and absolute +reset times, freshness and the Codex CLI sign-in scope. Countdowns stay in +English to match the surrounding text, while clock times follow the user's +locale and 12/24-hour setting. Workspace rows do not repeat account quota. +Only explicitly adding a workspace asks for a folder. App-level setup, +sign-in, the Return destination, Open at Login, Low-quota alerts, About and +Quit live in the gear menu. Apple's [menu-bar guidance](https://developer.apple.com/design/human-interface-guidelines/the-menu-bar#Menu-bar-extras) prefers a menu unless the functionality calls for richer controls. Search, -profile selection and destination switching justify a popover here. Follow the +nested rows and inline quota justify a popover here. Follow the [popover guidance](https://developer.apple.com/design/human-interface-guidelines/popovers) -for related tasks, anchoring, minimal size and dismissal. The monochrome header, -gear, separators and inline Open actions interpret the user's visual reference; -they are not dimensions or a layout mandated by Apple. +for related tasks, anchoring, minimal size and dismissal. The search-first +header, nested rows, quota rings and hover-revealed actions interpret the +user's visual reference; they are not dimensions or a layout mandated by Apple. The app never overrides production appearance. The status icon is a template image; controls, SF Symbols, menus, alerts and NSPopover inherit macOS light, @@ -65,15 +77,17 @@ full label colour and outlines row marks. Native controls retain focus, keyboard behaviour and labelled actions for accessibility clients. Keyboard: search receives focus on opening; arrows select available profiles -or projects. Return launches the selection or the first available match, -Command-1 through Command-9 launch visible rows, Command-K -focuses search, Command-R refreshes, and Escape clears search before closing. +or projects. Return launches the selection or the first available match in +the default destination, and Command-Return launches it in the other one, as +Command-click does for a click. Command-1 through Command-9 launch visible +rows, Command-K focuses search, Command-R refreshes, and Escape clears search +before closing. Successful launches dismiss the popover. Failed launches leave the error visible. Folder pickers and About dismiss the menu before opening; alerts can remain above it. Dialogs and native menus retain their own keyboard handling. Every row's actions open it once in ChatGPT or Terminal without changing the -default destination. Profile actions add a workspace for that profile and offer +default destination, which the gear menu's Return opens in sets. Profile actions add a workspace for that profile and offer optional Codex CLI sign-in. Workspace actions: pin/unpin, reveal in Finder, copy path, change profile, locate a moved folder, and remove only the binding. Menus disable inapplicable items explicitly, because NSMenu's @@ -100,8 +114,7 @@ unavailable and passed resets never imply a restored quota. The UI retains launch actions during reads and failures. A refresh dims the previous reading instead of replacing it with a placeholder. Readings update their rows in place, so hover, keyboard focus and the VoiceOver cursor survive while they -stream in; only structural changes rebuild the list, and the profile filter is -rebuilt only when profiles change. A 60-second memory cache and two +stream in; only structural changes rebuild the list. A 60-second memory cache and two concurrent readers bound the cost; an explicit refresh bypasses the cache. Replies are framed by newline without rescanning buffered bytes, so the 1 MiB output bound is reached in linear time. @@ -167,9 +180,10 @@ The renderer verifies that the exported backdrop matches the system colour, and both appearances run in the native test suite. Quota numbers are sample values. These are layout previews; they do not demonstrate live translucency, system permission prompts or -upstream app behaviour. The AppKit interaction runner checks profile-first -setup, selection, search, dismissal and launch arguments against an isolated -executable. It switches the same open view light → dark → light, checks +upstream app behaviour. Previews render at 2x whatever display draws them. The +AppKit interaction runner checks profile-first setup, nesting and alignment, +selection, search, dismissal, Command-Return, the Return destination and +launch arguments against an isolated executable. It switches the same open view light → dark → light, checks system-colour and accessibility notifications, and verifies opaque selection policies and accessibility state. These checks do not change global OS preferences. Actual preference toggles, VoiceOver announcements and live @@ -177,7 +191,8 @@ popover glass require a manual macOS check. Quota checks cover the official wire contract, multiple buckets, nullable windows, exhaustion, expired resets, caching, concurrency, malformed replies, timeouts and cancellation. The interaction runner also checks in-place usage -updates, refresh dimming, rows being changed, menu enablement after AppKit +updates, refresh dimming, quota colours in both appearances, the usage lines +in profile actions, rows being changed, right-click actions, menu enablement after AppKit validation, one-off destinations and Open at Login through a fake login item. An isolated real CLI integration verifies profile selection and strict workspace-guard handling with a fake app-server. Alert checks cover indicator state and its bounded timer, crossing and diff --git a/macos/CodexProfilesMenu/Previews/RenderPreview.swift b/macos/CodexProfilesMenu/Previews/RenderPreview.swift index bc3ddf4..e9c0083 100644 --- a/macos/CodexProfilesMenu/Previews/RenderPreview.swift +++ b/macos/CodexProfilesMenu/Previews/RenderPreview.swift @@ -23,6 +23,7 @@ struct RenderPreview { ? [] : [ workspace("\(home)/Dev/codex-profiles", profile: "work"), + workspace("\(home)/Dev/billing-api", profile: "work"), workspace("\(home)/Dev/personal-site", profile: "personal"), ] let profiles = CommandLine.arguments.contains("--empty") ? [] : ["default", "personal", "work"] @@ -66,7 +67,8 @@ struct RenderPreview { previewView.needsLayout = true previewView.layoutSubtreeIfNeeded() - let scale = window.backingScaleFactor + // Retina previews, whatever display renders them. + let scale = max(2, window.backingScaleFactor) guard let bitmap = NSBitmapImageRep( bitmapDataPlanes: nil, pixelsWide: Int(size.width * scale), pixelsHigh: Int(size.height * scale), bitsPerSample: 8, samplesPerPixel: 4, hasAlpha: true, isPlanar: false, diff --git a/macos/CodexProfilesMenu/Previews/menu-dark.png b/macos/CodexProfilesMenu/Previews/menu-dark.png index f26c2ac2ec4cc8a00ff5669888b234140d375dc8..29f720f7cece7361bb29fd1d668a06deba25cf4a 100644 GIT binary patch literal 78080 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�c%+C6qY-imi38n)pg;~|fH81{}j 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 bH2?GWMaO-cx_Xu<0}yz+`njxgN@xNAn^~~^ literal 112006 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πlCbV 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 wme~zA{xJ$JA8~<5Xs7Pqm+^n@;?DdcB>B)`?A zAGmev)|XnHUe&d9&N;@Iu2-*GF5r#u;t*n5`jT# zh$++)UQd;tKb+)!Khmtx4N|wTO$H?dyQ>yTgD?x@q-ren8&{ZtEDPh$$fxebFoYeN zD{VLg=aa=~5#FNG*VIF@1AN74$~050f%krOvdh-pi-9UJ)f_&!tFR4M$xKd3>!Fz0 zA2*j=!phk!t9vk?O&cwdPHCX@np=XMkWaDAujy-EG34ex6bFhLS*7y3-E5f1^DLo+QDk)>)R)&dUdO({{7tv4yl4?nv?OLoyQg* zXc6FL4s_f#01R)u+d%E!#<3thY zHNWbsus138De))x;e23MQa!USt}d7Kiov^J;FH5JU1l%SY^eMBfYXksXMU=JGjh(VM5Z(k0Y5eoLN-(jGj zLM@@-{(Fov@cr^H7WllJ^Pg{+9GJh4fEmw${oj7k%b^qGZMDD`lEWJKusAqBT*CIm$iUIrQu@0$r!b(oQi>@Z{4S7;ie=vfD}*;UeV z!Ox>#vEXU8GjQZ&dV-LtnV68jq&#_`j4h?DWGy3!R##WAdSoph?WyWLy18F!6e@q@ zzZEuBriY=X{MQzX6VT|i@RlUpA2IA-8wdt_ya`K20`8xU5(D_nqkXdA|8YJgbg9?B zkCK2pqojn+L}0OH`qy13UoMC6&$WOv{{MWr5hlD23crVSvyrqdv$3qhl;`s?@yCnu zwkM}6`IS`u`}^ZI+fN^`Froju6*0mnrST~2n3pwf-*BWZ7*v~$=uQbkhS-U2^Z0tvq|qY9ixVp|h)F-Nl#B$Q6NT@E z{xcA!xdX<{EzfJdbB|4HFIxKSU_{~8)x2Ez(N42mrYBsUYLi;9MWgBlt)%n^ zXb*Rwf#Ss#MFvpVTPk!u2f$D2Z=GfSil+T%7@-A15&zlA_PY`q6qypBz?z)lTICr1 zzP?jc0+Y5KrVvlxxa#-394{?UZ@b7xgPONa^PA|OQ7y5DhB88HjiyV|l*-!0Hdu`F z4Iekk5=02!!8TB!WBmFO#c~Y z64u~G#C=M>1-U<%shda%?<8cb{@XFAYQtEt)esOz8U`}Y+h~f370LSv ziqTG~mT0LFndaC>vcEd}hWq(*WE~hikUaS5AMYWdfRxiXuAlAq)Of7f@6MOTZ+|3} z`Dqe$Gesa!amjPP)b8$LZ%_2*?80r)cBjd8KS}@75AJY}oV`a&QHfJA<8BBCpJAL_ zwT$#nFs;YYTg896;19L`RTao$$^@)jZ2jz1;3b*~IC*{cg6#^275tTpj&g-0LR<3hy zOE+)6=fC^sUNY?-XubWU7F;!2K19)Dvj%?4-;zIm((0+TUtKZZieUeBf`yDg4*GoO zyh)(z5I_+ZBa*j&qdAx9+Bp+#CdqnXQdmB!2R6h52hk;w~E zDq>GJ#`XJU&389;i@(GQ!=qr8a)feNB8~U*li6;X4-mH)vOt~9r>Q%+u+7%9Wxw2C zuh@!A82H}iUn_t3Ky~GrYMSI2_zI2bwQi@pfUj|lhQ3En=orT@T7C~>9#3As%ikKm zj9*o1``lk$UUzK{#FJqNIRX>cX1iC!jzjI=t}!4tYopx1w$rS)Tm7Wx1DrQ?IR#;f z2S0uglg+6@${7;7-NeaOklRVIE^C|wljV;J-W?t_A74RI%W2B$7Oc>r$N7dNxgw>SyB^(e2j3VfMC% zGjhAdI$NK#>7oXzUA?AhHARogvtAPWhGc!u0oY#~(ZV9Sc5$?kX(S^Er~{#II`^a8 zGf%!LXA0dC=ow>8V~E}4>_peMaU$;m&C26ru+aLu+1-A1*kw%gS|BZtBdst=*GXZq zo7c_G5)*#36|$Z2QJ7kV6^Qv-|;bArcBKsgf@;QIO$7w7rw z()yJ%hzIay&dtZansrRR$u1FFm#p)WZ!Hfpmmm0rT7qv8FLRc5^qPQ<_8bW|{=ZMlhmexXnZFSL8cI_5>S44jA3_7 z?Tq#iYtwG-(TdmcB{?a~c)b7p)BSO?@No-wUR`(idlbm=vis^KLFxh~udvo7cFvVz zQ7jQ2VhD04^VeW99TLUhK~0PQ#CFw2xN#Fi3m$Dj_?k;C9k+SYR!|70$2?%zKAIt| z;?hoGha-H8!}UiYR1638e|{Ewp4#q(-2d+L=CWH*A3a4*4`aN5adf2cy)hgMhz@wX zyDa`4AH`3MHG;_+sA1hAk8GNTlKwnc}E16o-V0h@!Xf&%N&c!t;7Dysu=m9 zr%Wt(YP1_mF*_tZd_)OX$S%kCX&^ zuAS^c=IPLa-juzvuwuP9qD6yLU`^=QRLYhqnApfKp&Qb^YwSm)vkMxxK&IlzG7AAh zo`7Af#esE0>oy4=bf-H9lTG)6d{hB_Z&|{By`}^mmP9FDIt@wp<98N;N6%to+T`rC?bcpjKMOzBu`oIt7|A_5MIypWy| z=%qdizoo*DMgDT#=dz@cqp|N#hn*lemLZg5LEl;c!_k80ks^Jsk_H+&)&CGN*fW>> z&>qT>=*`Tqlt7y9Q;JVaPGAPw7err_=`!uK-PjJ7HRo{YB!W!FEHWgUZblF@TVgwB z+5fTf6g3;hd3a@z>ytVLl` zMuW^EbFbQAF>c%|S!uGaE48$1)lPs(0P#E+N>4m%&9 zN8S78x9W3!JAv>y(6Nh>Ww!y}wv+O4N?CZsKJ=RW+x5fwSfThvxO)O7EVo=-PFLJ= z0*ibF$9GiDt%(a;@pLug@6M#u?c{HQpmq{t7{t=-jUtZQo}Vr(;7Bp*zAFYZ4l+0S z+3t*7<~YfMlnJF}(<0BL?oQASH{(^V@My_DqrUe$sO-D*K>mWGA~G@dq1pGSai@h+ z2nZ#QRl3g|an^>S`L^Pnas40a(9?CB<;gv|Bg~s$iTIHTySXgdR4YX}SGoZIV`Q3n z_zq)+;%W!|2nwdy&wIdHS~>?EC}2qYPhruPQ4e||e?)$-?QBC)Mw6)k_+n_WRX(%uFIn*COff^8)vZ%YXfm zy;={YINIGEwjdFiJrO!;*vM_}ej?{I3MwzEjx%>zYY*5vJZmJ#on=`yA4N~ICo;W1 zWpRvYr}aiRoXA%sSiMV8dS||2aAe*yD*FM;f)Var`h0V4!tJ)Gf-T}K^~-MQ?B^3?k!1l>Ar1;P7-q+)D+t3logG3o2#Xub+wB~ovUAej!^_1G7<8fF!>uE?> zw&9I6^FS4efJ%tDZ)@7$35?N!m^au*F@0F4LnEUcx{ZX1WJ3%)a;PG;o8vc80>L^7 z8V!DWJ0lK4VO>Rz$CHM*>n`Jx2p;c^7b`~3%!dx#H8JPiu1M$VT$Kz%Qo1%scx7fT zXAO=wO7ryJGRf!3$0+ZhZEr?&e${@gFzkA;;A#9MH-8M|0oT_WJQO0yCsgHL$F1(Y z2ys$RxM7i(mhc7nf%VTx(vIJDr@31V1o0jZx{|2zL9xqA&-s zqV*EgTE9V2QLsnCE1`#6xJBQBhwpkgN@XB zujD~nLP*ka>*rf4j9?Mx1C2LCJ-&os`vVGICfnnd^Ju@lN#kq+6N|*Nk|2-C7DOIg zn1YcrA9*|{Uy+S43m05dMj^`{JdNQuU)@DLB$-vs&d|FUcQE^dCdw*0k;TxGHe|XK z-qNLA!$_q|l1Gc2^<$4_Sy7=V|0M`no@+#P`;Rv!N&YH9Dy&x=e}@&;TSV2!Wqs zgT_t4!<0k+3RI27v!vT{(?y)Q%6N%^)%9yBB?Dp6fiyB1H#d?%w4|Sa|MgCf?@~(! zcNdJ4?x>(unDb;|JOfM=0#0S1d-4NKF3~aPC^Ll;^Fx$8vN0k%IUkcaXr>><;|l?V zF1Vo(sn z2{6mKnEm1v?G?E)NJxFWSD1aZ-=H5#?rCwi5?I-@+Z9IWqpjaBj*96NCQ>F}29tJ= z%o&VT7sQWO4i$`-8{+aqz|kNyOQo$#{P~1(s;Sd+?hF-sp<8S?ekV)R>+Zhisw@37 zB-L7xYM?Qe;118B+|lQZQ`5=&EV3wu7>|`ZdZfBn%q+|~`Bo{h>jeGfP98VEAh*0kX&T*VlO^@L>-+ z)&#R(_eU-vE zBwB#(qci2FPQAvG(;D&$7hhr6<(lk}G`{PdWSr&UgtjF@H;}1gNq#MX>4`fE^?DlA z@$D6aRil!`y@bqdu0zk~^0z*ZYR-ACe9DQMEap^8qyQ3oOMYN`?Su?SVXc;%Q{fHb zy*@AtdU_?LUIHYFdvj*`wB40wp%UouEaXJpOj+`g$&NLj`kd+{H>qTDdr>0KI~p9j z)}KIN?mMIvMM7%bu8mO32_ACt^a9+V0wiH3KI2MFaA36M`unLTFhX%a_I?PY zP*pMNTJ%tcWEL<>`EqpEdU*Wk)`XVUFLeMzK~_wJ8>UUej78u@xP^}zj6Er&a2gm! z1vXGujj$Qsu-X!0O?ICf${`{f7t%msNrJFO@`gFFjtEDtbqT!8Jd_D(aF0b`cn$Vf zTAK+>a3@J;C%0A@FbH)U3Na_vTdioy99B~&NG-Rpce)?#dPTpcY&TMgwlL@pHB<$7 zMH#Yh92qFGXG~(7u4oS;Nf}BhLiGEuQ<-Zbzfgcl2(S5O7mfNFR}y$Rs>$!wH4j(H zzMIo+mV3N}04G-GI3bFxEgNO}K@-$(i!za<}CyU{~n%55kaxYL`*nNYe-oawn&) zAoDX*sD?)UlQphkF^|`)tIs{*vmAV>E!{*$l*%I2teyDMETNEj_IHmo>QKI2 zz0El5`9MIoSXD%aOC1+PUvZ)x+8HS@U9?WNMZRF)_Bbge(4=(1uRF(ZgrcHOj5$Gw zhuU19XX&C)s~H45WhfQyj6$62x?snuOxa&YoV&HMBm^$Bzz}* zntBMb3DxB4=sqrzHO8?OWjC%qd9cya`!I=SkhXpWG8q9iywhCZDwrQ#)c<7@f7pT* z{yjW-m|VY(JrOI^iaG-Mw)n1Pu2(0%lr0-oZU zwAQbA=j4lV$p-t;JlB}hg@d7Z5XX$Lr}D((jgoB23}KL$STE$rzVniI6=`gM(Jp z18#Y8C)T{q9S$A%?0s82tjS)cTdmZ1=|_TqL55f*_5|vkgw~eTQPFGNXXUC2US^!v zUa#3-Gg!{|Ira)ixucZ!2!vqHuivM+W13RqInI1wJMkT+uTpf>pWwm48AqgG!({jv zHj(l64cr%~Q`y2w0Srr9OB`u=O<1Ea&B5=HQkiDTPaJIIQe>x*_2J1ptqP}WhG32c zAOn4{MO3EwFJve`{Y z7D$nQ(PQy)EnrjIj5|7}9U{3!9(k^AzR172rHis3)bBH7U>lMmyX1_%i86KoB*cHF zC^y?X(Hr=#Jf>r{Y%Ldsn972_wny9x84S4@m^8Dwtzgxmfn+?kIf8zC++H&ri)w{}oOK8_KhHBP{EUr~*43uZ(jw5%s`PmY zETC^mc4E_6$tAU_B`~+tYWy_#Fu@+meyw(;=5{W>Pjk%5tv$V~ z(K%b_2=m^z3hhy;pN575yfwUAZb;=PKvNXN-7YP*^)o+ln#U13N~aZbJ;1+!Px74m zG$iZ;oP=(X#L~by_NHkVCw@(oC}F*AlCdUVHA}NheuR~vZYlgLg&Liop>xY#OOt|JybB6mDqG+(Tb=} z4UOV~=qmB!Ou>fxm?H8l`N>3pefWKc6VvfUDtHVr(OUbAQ=4?p9J@~K{VPm({|WJ^ zs@9BSYrnM=zi=cA{RYtV0d)^)@r-P{1nDGhR0R1PYVa5S*!Kih&AU8ZTy;$PSjc+| zEljm$knF_oT^_N84FaNyfwAxqbxWtUrBfkSg`R-3s_JN!$lcGJ({%>6AFMR#)dlQZ zP7H&CNcO~^Z&hp+O!Pu`>-SAo+Db@fyO2>V!-RQYCRhxP1s7>zF#`~bZ1gRJ#lG;F z*!3wnz0GPUY|K)>A+)74kY3~Zg5tMS%|{G3hE5#}9wS_BDsz_nuC>F)hd+;l~ExO+GF&xY17LF`E!;iQynPjFbhNYnfmSPHKdIkg$be3AkJx#F}Kn=zI4au z6oC@fX`02Sb*En29lGuck0qKK2QsIAs;4b%JM;746%@BI9iereMQ#lXB6xYG=N6eR z0!z?v!|hwoPmr@hQ|fU{#1uZ}`o1K0_ATlyM|BnO@2drC_VV-HwJ2v;XfobGgU+{m zs!=N&t)GyRG#R9t84(kt&{PQY3GP8~>|*){ktz}Q;`m*7gtPj2zJ@ z7HQ}w?RZv^PLc?cPc{ibHkMiCx>tEOzgC=vY)R)r}0zbEg+`WN5Ta(v*sj{^Y=fQS}c>PW`%8 zIBP}PY%g%E`KZ9Qj$H7VVO=yNgThcILHtVO(`2<8iF+wdz+3vy3&St)T2idyM~Tc8Vx_^k^kzid!gipaF{@1Ri$st$KEZJ(C*q zw&+B8-L{u(eAk~ce?Q|ZUnugtJ!eR^RdXqATr>peTv7rj50D@0QdETJQF}au_wbK%$BjTyl;f%PaF~u!yug{iv~4onq?rluIUf;Au3W1 z2b^!UbnSQWZhNNq2fNl`)NVQt>(6Tasxz3;aQ-IerZM?S>czN|nQ^(KgXt)XtX~x^CRr zVDm)tv=eA1hfk7h7XpYD-6?3JD!r44ckHHI5k>Bkg0F$5R8G7oa;22p)9qLCpKAvV&{Sx~ z%<+{YRtAE@_&C3nhphmrJt>XFTtoyGMimitj^FbWQL$y&njGZ`*{OA|*b<`spR(qo zKVuz9G~HN-84T>MPg2qca>>E_`)LfH;@TgX%NjaSXj?8EvpnT6`)gs%_4TlF=QP5P}J*aZbBt5s``|E9B6?Xe38JoCr4(0O7UUy&~s}fBO!*RapDU z`8bFcD|6`s=p$AZy}zx&5$jQhZV>6tkm#_FzeU|>LlQoobhi;WQ-d|L;Wew$C#tQc zlY@|6Udao5&#@1c1sOSzpj3GwkykrrdmoazKMFN`x>|B5ErL2H;0@AW(m>2x+&WLU zR`BQ!)po#E1$WRW{)+fJ<#mv8U~TYwtz&r`PHc+11^TxhV!?%~^ig?(xlbSflsy## zE01{$$}nk3cMwzU4P7TgG>7Bge@%lpWh$PLv`a1H4i=)^a~>N@)aaWSfsJr@*J&Kg z*sjx!5}P7p^}4-_TQUj`%XS2-y|*jCq431Cm6ww`_jScNr+y2tbXIYknq4|YR7)vV zJS5Kuv2yi}g*&AveOJNCkG~hHkAD^_zn2q;{x;^=%43^up-_clwPPsS^g|uk%o3li z-gG^|7_$LmXnYQ%Hv>bzyy&KCl@IN@)N;GOqq zx^r&bkPi;=&d8fr-b7KMf}@c?l=2qmZWnlT?T2iL%QnPDu71Bc>%2(`D?AZtBxsPw z{GDXrwZcewy5?lRB?N3LN#O0@Ue!9y|+& zL9{o?(hOq9Ll4(`rax7ukn1r)qj z5>ADGi_0tbtD&&L?L?W&VEr;jLNa4oz5}AdbJHiNQ~2>Lp%j9D05P`}KkBPE*Kujq z^>bFbp~09KG$^ygts;Xj3D#B>EDf@bI}|x+Tqlx6lw&5Jzhb^T(>)5N&2BUr1Qh)5 zaS0gG!YZJdoocl|`#&yZb2MQrFtl$O3qjdN_}cGn7H$tz!tjq>S_VX_=VS@=HhUhw z$&>Gq=_DXspyknB%o)dA9z*dE=v%MY3uxz#278~yUetx7ScvrUFwIAP^d zrzLaVf(LXz3Bpyi4l^@^4u&JD6F`eP|8^C1<)e;`g3=EAr33<7c2uHYTvFw1oV`IL zfDpEZeWGpKOiWVI4q{%$Mq6Jq!5RmR`hU(Eagtt>(iA`#x$5SDbg)d{>mEJqgZ@Eb zR8gUM2(?j_@ZGZ5=tpR;>ADju-Uo4)YHcQdQWqlOhf^%Uq2ly63nIbn`_e3C!&h;+ zm68@__V$29X<`dKhrQ3^58*$T!^Eb{n31xcFwrcU>a^Xr&Qe9c6XjJ0)M_1bF$v7# z&S2`RkdBkX>c*`Q6Y8d=zTc-#4DGE(#=;Al<&DRstUyYBMwesGW?;0S4@Zm-Ez)#F zMSX{VGHeW1w$?OPPi<6Uc_rlO*#Nn1BCMtC<{_Il`RDeOF!?kRg_5KxF2p7#U^P?; z)utu>j0BvRfVvMmUpUp^^*^(Hk7E10|F2bQXskEUP}(RX!B@E-H6Vh5brT71>2m}z zIs0ZATyWcbBmRdNNu0usYvNx=Uj5tzOGJn--l>31s7Tj;aN1yJ)Au6oQ08PV zeEauue2xQ5x5)VjqR1E_jm{iG5wglhuNm1K7MQem98Z)K)az0ksq`&fuP)1&sqi0^nPAJHKw+&=>z-y(*mjt z&>7z%&uyqk1ZeT<-ZRw6@G}B(aEuLlVV*mu%o$DeL=I>8k*_=eM)a zoNebN7KY6(D{aFYd4cS2DZc;0T|{vxFFJ>}PieWw5>&KlQp^Do>3RIkwq@PpO(!?H ze2);xx4TpT3aXph4oMaBY3iaGLF-bYeOaUa&lb@84r+(Wh$zOn_*3b$lmQjLbPwV# zBZhTV4t{UT@4=$*d5ZfWUhd)%*{MnUzt4ikDzb+$RBWvM&Rr{RZEOB^zgbFq|Ng6~ zxNi^g?t#_}@jpibH!2c`p?kzOe9TOWX89Xw`HN7?r=o<`BQAUU@n29z&Re865*mBK zzb*ekPW%xQLj2)eEE||U{_Da4Omx8M`2?Q|>Hc+9Rbqfd%U}Pg{=b$7+W%()aC)M? zW@ggg{Rj+G2}{H`63HROYX5K;z_Y3Wr+@S`bk+W6qyV<^|H%g(p;yV$%`YsN`p=U0 z-(9+i)DN2}@*$t`->uREm-diZ#Uv)4nf9+H@JFP5D?z?12AOLf+F+= zAPaE>)#B-uyoH=cc$2H!04B4saVKkWgnLY+%yOzAoK!yiAE)V$sE!dp|C%!`l32-q zU^ta~Ig*IG#X*^}F*jb~%^3fxcbRMizHH&guW;xhClW6tS+>hqmgq9DsFrnOXxFqy zf4$^9*66s=+o)A-)@Yif)f+{~NqxGp8NVjDld+NIu}##b*z9&l>hTx!h6QbP`4r-9PuscCpUx zVt0aQ=t3G`AU$9%%MeeksI!>+vGfDEIstg7?V7sD<9wTUMq}ek1Y1*42#EfBzFO<) zI`5p{^W!qWyglX~EjKp!-A3GP)yMt1hrqz3#17HaMK0u08jhGTz!PsgYzOG%O357QwRjDy>nKSX zoI0$9%0BXaV43$#eLDN@C>b&aYk zr(XC}MfO&nR=X9C9i=gAIXIad5x74iuzGujB=aX5tdz$9`|41qgsnGfK}#ba?E>H+ zzm9FH0I)*H$p5^O)3~?c1=I5~#_Aektts57q;8ddXr0c80#b!JW-HA_@f5Bd+RQ~k>H2}uEdI(sL@B2`6vKQ82X9IlP zw9nQSd3L;DUGDmV5H#p`W}T(qSfcjz0ycO|?tRj6ac9E~FkWCUfYyCysq zfD?c8JIT=ax(?oHNrm)7mgU55NBXsZd$frc0?=z`U&541zue-_1ZP#TpP>@1F4QJ9 zXyoG|HZDvot|dh9j3Xd$O7LH_;|Txif!my6sJ1W`BtPfm{$fgnI}J%8Fl$ww%rzkb z{~!bBi$J>T;ll6ti0OKu_28oyh=#^xjw>C4N0sEcI}WbvSDAk*sUCgHF6}KZ>*12F zVc^5d+F$KTy(w$Np6CMUc=uXJ`_+K;rx!D_!d%mn2k5-tc%L*oS^=_(w~prf=~l9V zGP{9gexeaP8#PHx?YwES-gcJfpV!A0hD4^IrF%SffvrlS=x@yBEt6DhdA-f+QT!_o zB(^o*gr9CU@`{J<(g{xu{2qUUNmBUpaJDnuS1iSi3k4z_HeV>VUz3>4-|)Xm1i=02 zfsIP80F&&fzJ*pg{?mmn%;IK(EfjTeyeghIz&;pX(6Q3$RcIWLxBog;S@cr9e(ej2 zkkB%o5h4hA%O)hnv`F+!5i#tqDK;@l0I=js!{4T~<&PSegQWq>26Vzh}SM0lo= zzV5o!`nhh9sTjo03)94B+y=0-OJ0^3q8Fsz{WLKk$&oNhu;@uUtiA}h%x>HB zt(_kZ04>3;FA(YoNkZD+F>2c=02pcKnxBw-v!Yqn`lU$>C6fBmq;QE}aD!|) zKO`rYCdZ?k*L2^WRwe=?rUQ*sfFlqGj1B-x7v!Hp%A_gHxsesEmJFc-XFW4rXB7MkFU;+Y1Pi*PtGfZhV=A6%B!E-#jN%6 zwndWdaO}*Ot)QIhU)2?@1PbF%XA8#?lu*tSTQ#Kx_`yEHH*was^jDzu@5(+TD!r z&UlTgtx3$nlV#@iGei=#C3d{ffut5N!naD4xIY9~-ib`byo%wb_+mth-twJL|MTFk zMWcvGf2<3FP!&Niry2xmdQ64Vo>*K5_{d85s@MF9@<+GX=}RC zq=mc6Soph{6M0jU^AUdcFrNnM+#e<5cj0}R-@aFQRGiA;Feu9_PksxRpn4gurLl~( z)roZ~KSt>;$hnuWf@P-Bg?1_3Clwfe?~?Yr@pZzV^Yj2i?$fXtA(+$*mljuK-qU2! zZN8xUOcbE|qsP&ZC7wDj=Gk>5lUS8l30~-6D@sfutrF7j@ZU6ztLs;N7wgwjcksYN zTqFa#0}R>24sSAi@AfM57_~en_9hkC4~3&?rb96(j>K-(VB5k4d4YNVL0Q|A=kd25 z&MzDJOP|s~^g-X;sj{56^LiPTLDRQ+@Nv=GEy;wAaPrC-p~T;!piLnb51rQ2jF z-vXVqfE;TfM+`Yu%Ty$6e&_9!F%g*dp26bi>jF@Ik)j+MwT8aQ;o6OlC?0|BJQzkr)> zi>GdwYpB8JYQAr5=ME#_O=$ZIK8a#_)fHiz38xj^Pn!_aGJfhcUG#n>LUHK=n5!J$ z4{mz4c-L=;CXJlGgAa1o`$e7XPCLpVMJSkjz2a3aSBE(PTG_*7#|iKTa>X4*mbqW* zxts?nnmYX`BcB}ck5ooPF8sS~$Ev&$Am%qYtyc@ha-@8H1qzWHa-pk3ZZ`kz2fFqO zS8!=%FY)@=g$O!oP*tl&mfw>{TXYrQ!9m|HVL~f7xHP(jyKdf$q>b2~i}N=j8NvXH z&u79FG{f-1)F&3u_wd(1uLSy7Adn%p-5&`XL{~@0B7}Tol`WJCYW7(1kqh+O#3^^? z4AJn65xqKDv5g+!(Soq^#7~NUyKJKRO!r5r~b`wdpf2+KWUF zP6Y?*P*IefNtTV!drGC%5U7wMVih-UE0d1#VlWO;TX z3o|*eQV}=b=9qE3FY~f$j>Gy4hsqt2Zk+Q_WV$cW?*`DIo}SKd0-0*La!uXZ=LEiW z!cBU0s~f#hise!dT$FyAsz5o<2Q5uJI1c_qWNh~eP;t*4KO=8GPnmR4}`S(YS z5exY4Ml6P;(~}ToqWv2Ujk}%_hNQF>4(i}m_mXpJa_g2h)bOu9X9Em9q)cuGy&mXe z^L(A>y2$qYiKzm8=;S98dGd?vym$c_hzZNEWTm%T2}3L->-lIK!Sks0j2ILnx)Wp4 z<_ZOCJqlThDM&#UH^KS98pVtkdYE)xg|upD7g6v%*BGcjaw~j2DrfrnRd^L1P+onRu$rin)p?i?nt7l~8r; zT+WHe=+5SWQT`?Qb81Za7yrzL6U-v*vVJ*?k1)K86U5FzI_?h*dxjkvyvZ=&!#E5; zzmpdna$#m-%WtWMZ?$)2>Wt44rI3+4DUEriCR}Dqb@(X&oI#!fB=5BU*+$p!RUD?CpjY ze-(6dF^KLdB1vcrM8GIJ<;2fWM%2=loR7v7)+W`;`W_7VJxTXU5cj-JWbgIyjKHzT zEDh72c(J<4VsaR?PZA$=cxX%l1-PFGQ?k;07;}m)vmJYhczfyV9+@5A3cxycN3IeP z@0hNbqNINIsTp7AueA(04JR=S{PGYhjeZKd)7O(0{E%zuEMm3S9Z9v>bqNwjqP@gx+(-kz$XvnMd{u6(|E2U?0vwk`hgVzdc? zP+Qp189*f!-NvIyUqMOkk{6KjaSf{L7%bM5ad9qPzwoN1K`lA}d{10a{$ByU~Y9V$q=c8Uc-tLuIGwNd9)HngUh&&3v>$XwZQio=cY;X?W z>srLQ_~z7wy{DYe5#Wh_NpthNC^bVhE`VT#!q4m}wkR+n%Rovi;e7@aO!+vIjCeYJ z;h$^iWuc-3Wg(SH}lnW(ll>3Lq zp_gf1FV-aCf?2xlwlTQNG>srY0Olie&Y?++@R7i?mdgF(>hn{5h{o&;9+#3@7`~JD z;a`a-;2Y4wp{QI1c%^8r8kf5IPrp^}%G(k$r>l4m$>gxXpz#IemElxhq6$#VWbJt~ z{!i5{qJS|(EZCw%t*P(J=gXnivP8} zm7qM}u^gC{r$}swzL^-u9?CAD#-vldgh|8Ew*UuE?qnVo%kQD_{QYdys$4LRdgTzI zpkx-_kfBVUBwjb(Jh-;vO`l zz1YNGTf>~;1Egg#-wcl*-*qxiBJqwi!S@l%0v9HYT{N}Ua;n$tpLGaE?tlv8HZq|y zV{j?+Z=SNQ&lj*}`9gJ*wl^>D*9LGhY~F8@w9HaN{C>N<`mc^VE`ikTN?22VkaV5^ z5lh3Kt*prKn5-m55BP~c?k!<_bF#iyEXff3%jdqp?54~qJjnQU-3fTJ}e;LHf zJ4&P?o&4_Db#O$q2&s=iIcAi-x*>)D#XPz+dv?oBzcmZsU%WFD+y!85yH~4zety2F zk~sY8WYY6wK!WXvTJyiPlAL#NfG}mdF#S@dOC;ZY`}^m|;z-l{yVFh-c2Ea-!D^GM zHNmxGq65iDgg=%=1-b!^$NWuwKQHx~a8 zzXaNdTDB@K{bZaTQszGMxgA(U42daGQ}76K4Wh7; zI+7V5e5Y4R+XQIt_kD~Ui+0VWtYs;$$!t9wPiIpOfEmOYSRas;a!CXnJ}an*hToTd zCsK!)GMoUf-dvdNyAX6Qw|NPN5*Ot!toIHQAM-6f=M^pbEu8=xiPqXXKq&8&LUZ>JI2u z+trGY#iY9-1>74a76to4r9cV6p+?p!@yNnT>w<-+v3Bxtw5-N>QkI9Gpn_ z@D^(v=$aI9j3aK(c4u++s($LHC+e71&r4*Ljxpz73>gkmQClpZS6_-$FOQZNWexn7 z`hc2q&jVja6pwF*fIQ|{jIAd}bOtDt9$3<*%?TrY!7KLRSrypKU)x{GMf5%Q@`a`( zNcDkvyQ|$xa&N$-72G6AZi^bWEZ za@Q&VU+)8IYCEw$H*yysu}-an4>wKmZ9a|0q33jA@;na2&~Nq zRdovU1t9eS3J2&qpR4F&2FI92-MzTT zVTcpEp8K*ZAZ(m<_A z<|T1MxwJ^rEeA4Ot|rYk*_=->rUc_*?G}9j+RmCC%!z z79Bjbd9kmo$F`?S_RxB!KjEyGNK-5WmwgQ}5I7#lO7}T3bIBS|cfIjEcMX`vwO^3@ zGBCP-)mmixT!oKZ5t(PK?<Π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%0DWowf`FEp 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 A=>Px# literal 108995 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

<(H!v*7NjMf~6q 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%0D>vYS>4@sPZyY--JWg{X`w)d@ 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 P2BN(k+F!vt=oK%xD&mqVFmu=p%-E?C@Z~C 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 JGBxXv{{!JETO0rY diff --git a/macos/CodexProfilesMenu/Sources/CodexProfilesMenu/AccountUsage.swift b/macos/CodexProfilesMenu/Sources/CodexProfilesMenu/AccountUsage.swift index 00836c3..007b859 100644 --- a/macos/CodexProfilesMenu/Sources/CodexProfilesMenu/AccountUsage.swift +++ b/macos/CodexProfilesMenu/Sources/CodexProfilesMenu/AccountUsage.swift @@ -132,10 +132,10 @@ struct UsageState: Equatable { return nil } - /// The window that blocks first, once it is low enough to mention. - func constrainingWindow(at date: Date) -> RateLimitWindow? { + /// The window that blocks first. A passed reset leaves no current figure. + func tightestWindow(at date: Date) -> RateLimitWindow? { limits?.windows - .filter { !$0.hasReset(at: date) && $0.level != .normal } + .filter { !$0.hasReset(at: date) } .min { lhs, rhs in lhs.remainingPercent != rhs.remainingPercent ? lhs.remainingPercent < rhs.remainingPercent @@ -143,6 +143,11 @@ struct UsageState: Equatable { } } + /// The window that blocks first, once it is low enough to mention. + func constrainingWindow(at date: Date) -> RateLimitWindow? { + tightestWindow(at: date).flatMap { $0.level == .normal ? nil : $0 } + } + /// A compact row summary such as "5h limit low · resets in 1h 12m". func summary(at date: Date = Date()) -> String? { guard let window = constrainingWindow(at: date) else { return nil } diff --git a/macos/CodexProfilesMenu/Sources/CodexProfilesMenu/WorkspaceMenuView.swift b/macos/CodexProfilesMenu/Sources/CodexProfilesMenu/WorkspaceMenuView.swift index 43d942e..55f4479 100644 --- a/macos/CodexProfilesMenu/Sources/CodexProfilesMenu/WorkspaceMenuView.swift +++ b/macos/CodexProfilesMenu/Sources/CodexProfilesMenu/WorkspaceMenuView.swift @@ -2,12 +2,18 @@ import AppKit @MainActor final class WorkspaceMenuViewController: NSViewController { + static let width: CGFloat = 360 + private static let headerHeight: CGFloat = 44 + private static let footerHeight: CGFloat = 36 + /// Everything that shapes the list except live usage. Usage updates rows in /// place, so streaming readings keep hover, focus and the VoiceOver cursor. private struct ListModel: Equatable { struct Row: Equatable { let item: LaunchTarget let pinned: Bool + /// Listed under its own profile's row, so it needs no profile name. + let nested: Bool let launching: Bool let changing: Bool let enabled: Bool @@ -27,9 +33,7 @@ final class WorkspaceMenuViewController: NSViewController { private let loginItem: LoginItemControlling private let alerts: QuotaAlertController? private let searchField = NSSearchField() - private let profilePicker = NSPopUpButton() - private let destinationPicker = NSSegmentedControl(labels: ["ChatGPT", "Terminal"], trackingMode: .selectOne, target: nil, action: nil) - private let toolbar = NSStackView() + private let titleLabel = NSTextField(labelWithString: "Codex Profiles") private let contentContainer = NSView() private let footerLabel = NSTextField(labelWithString: "") private let refreshButton = NSButton() @@ -38,10 +42,9 @@ final class WorkspaceMenuViewController: NSViewController { private var scrollView: NSScrollView? private var selectedID: LaunchTarget.ID? private var heightConstraint: NSLayoutConstraint? - private var listTopConstraint: NSLayoutConstraint? + private var headerLeadingConstraint: NSLayoutConstraint? private var destination: OpenDestination private var renderedList: ListModel? - private var renderedProfiles: [String]? var onPreferredContentSizeChange: ((NSSize) -> Void)? var onRequestClose: (() -> Void)? @@ -53,7 +56,7 @@ final class WorkspaceMenuViewController: NSViewController { self.alerts = alerts destination = defaults.string(forKey: "openDestination") == OpenDestination.terminal.rawValue ? .terminal : .chatGPT super.init(nibName: nil, bundle: nil) - preferredContentSize = NSSize(width: 400, height: 260) + preferredContentSize = NSSize(width: Self.width, height: 260) } @available(*, unavailable) @@ -64,7 +67,7 @@ final class WorkspaceMenuViewController: NSViewController { surface.translatesAutoresizingMaskIntoConstraints = false view = surface heightConstraint = surface.heightAnchor.constraint(equalToConstant: 260) - NSLayoutConstraint.activate([surface.widthAnchor.constraint(equalToConstant: 400), heightConstraint!]) + NSLayoutConstraint.activate([surface.widthAnchor.constraint(equalToConstant: Self.width), heightConstraint!]) buildInterface() NotificationCenter.default.addObserver(self, selector: #selector(redrawSystemColours), name: NSColor.systemColorsDidChangeNotification, object: nil) @@ -76,26 +79,27 @@ final class WorkspaceMenuViewController: NSViewController { Task { await store.refreshIfNeeded() } } + /// Opening starts unselected; a search left over from last time selects + /// its first match, so Return's target is visible. func focusSearch() { selectedID = nil - for row in rows { row.isSelectedRow = false } + selectFirstMatch(in: store.filteredTargets) + updateSelection() view.window?.makeKey() if !searchField.isHidden { view.window?.makeFirstResponder(searchField) } } func handleShortcut(_ event: NSEvent) -> Bool { let modifiers = event.modifierFlags.intersection(.deviceIndependentFlagsMask).subtracting([.numericPad, .function]) + let responder = view.window?.firstResponder + let navigatingList = responder === searchField || responder === searchField.currentEditor() || responder is LaunchRowButton + let isReturn = [36, 76].contains(event.keyCode) if modifiers.isEmpty { - let responder = view.window?.firstResponder - let navigatingList = responder === searchField || responder === searchField.currentEditor() || responder is LaunchRowButton if [125, 126, 36, 76].contains(event.keyCode), !navigatingList { return false } switch event.keyCode { case 125: moveSelection(by: 1); return true case 126: moveSelection(by: -1); return true - case 36, 76: - let targets = store.filteredTargets - if let item = targets.first(where: { $0.id == selectedID }) ?? targets.first(where: store.canLaunch) { launch(item) } - return true + case 36, 76: launchSelection(alternate: false); return true case 53: if !store.query.isEmpty { clearSearch() } else { onRequestClose?() } return true @@ -103,6 +107,12 @@ final class WorkspaceMenuViewController: NSViewController { } } guard modifiers == .command else { return false } + // Command-Return opens the selection in the other destination. + if isReturn { + guard navigatingList else { return false } + launchSelection(alternate: true) + return true + } switch event.charactersIgnoringModifiers?.lowercased() { case "k": focusSearch(); return true case "r": refresh(); return true @@ -121,96 +131,58 @@ final class WorkspaceMenuViewController: NSViewController { } private func buildInterface() { - // The mark and title share the rows' avatar and title columns. - let mark = NSImageView(image: NSImage(systemSymbolName: "square.stack.3d.up.fill", accessibilityDescription: nil) ?? NSImage()) - mark.symbolConfiguration = .init(pointSize: 15, weight: .semibold) - mark.contentTintColor = .labelColor - mark.widthAnchor.constraint(equalToConstant: LaunchRowButton.avatarSize).isActive = true - let title = label("Codex Profiles", size: 13, weight: .semibold) + searchField.placeholderString = "Search profiles and workspaces" + searchField.font = .systemFont(ofSize: 13) + searchField.target = self + searchField.action = #selector(searchChanged) + searchField.sendsSearchStringImmediately = true + searchField.stringValue = store.query + searchField.toolTip = "Search profiles, workspaces and folder paths (⌘K)" + searchField.setAccessibilityLabel("Search profile and workspace names or folder paths") + searchField.setContentHuggingPriority(.defaultLow, for: .horizontal) + // The title stands in for search until there is something to search. + titleLabel.font = .systemFont(ofSize: 13, weight: .semibold) + titleLabel.setContentHuggingPriority(.defaultLow, for: .horizontal) let settings = symbolButton("gearshape", title: "Options", action: #selector(showSettingsMenu(_:))) - let header = NSStackView(views: [mark, title, NSView(), settings]) + let header = NSStackView(views: [searchField, titleLabel, settings]) header.orientation = .horizontal header.alignment = .centerY - header.spacing = LaunchRowButton.avatarSpacing + header.distribution = .fill + header.spacing = 6 header.translatesAutoresizingMaskIntoConstraints = false + searchField.heightAnchor.constraint(equalToConstant: 28).isActive = true let listDivider = NSBox() listDivider.boxType = .separator listDivider.translatesAutoresizingMaskIntoConstraints = false - searchField.placeholderString = "Search profiles and workspaces" - searchField.font = .systemFont(ofSize: 12) - searchField.controlSize = .small - searchField.target = self - searchField.action = #selector(searchChanged) - searchField.sendsSearchStringImmediately = true - searchField.stringValue = store.query - searchField.setAccessibilityLabel("Search profile and workspace names or folder paths") - profilePicker.target = self - profilePicker.action = #selector(profileFilterChanged) - profilePicker.controlSize = .small - profilePicker.font = .systemFont(ofSize: 11) - profilePicker.setAccessibilityLabel("Filter profiles and workspaces") - profilePicker.widthAnchor.constraint(equalToConstant: 140).isActive = true - destinationPicker.selectedSegment = destination == .chatGPT ? 0 : 1 - destinationPicker.segmentStyle = .rounded - destinationPicker.controlSize = .small - destinationPicker.target = self - destinationPicker.action = #selector(destinationChanged) - destinationPicker.font = .systemFont(ofSize: 11) - destinationPicker.setAccessibilityLabel("Open in") - destinationPicker.widthAnchor.constraint(equalToConstant: 190).isActive = true - toolbar.orientation = .horizontal - toolbar.alignment = .centerY - toolbar.spacing = 8 - [profilePicker, NSView(), destinationPicker].forEach { toolbar.addArrangedSubview($0) } - let controls = NSStackView(views: [searchField, toolbar]) - controls.orientation = .vertical - controls.alignment = .width - controls.spacing = 8 - controls.translatesAutoresizingMaskIntoConstraints = false - searchField.heightAnchor.constraint(equalToConstant: 24).isActive = true - toolbar.heightAnchor.constraint(equalToConstant: 24).isActive = true - let divider = NSBox() divider.boxType = .separator divider.translatesAutoresizingMaskIntoConstraints = false - let add = addButton - add.title = "Add workspace…" - add.target = self - add.action = #selector(addWorkspace(_:)) - add.image = NSImage(systemSymbolName: "plus", accessibilityDescription: nil) - add.symbolConfiguration = .init(pointSize: 11, weight: .medium) - add.imagePosition = .imageLeading - add.isBordered = false - add.font = .systemFont(ofSize: 12) - add.contentTintColor = .secondaryLabelColor - add.toolTip = "Optional: bind a project folder to a profile" - add.setContentHuggingPriority(.required, for: .horizontal) + configureSymbolButton(addButton, symbol: "plus", title: "Add a workspace", action: #selector(addWorkspace(_:))) footerLabel.font = .systemFont(ofSize: 11) footerLabel.textColor = .secondaryLabelColor footerLabel.lineBreakMode = .byTruncatingTail footerLabel.setContentCompressionResistancePriority(.defaultLow, for: .horizontal) footerLabel.setContentHuggingPriority(.defaultLow, for: .horizontal) configureSymbolButton(refreshButton, symbol: "arrow.clockwise", title: "Refresh profiles, workspaces and Codex usage (⌘R)", action: #selector(refresh)) - let footer = NSStackView(views: [add, NSView(), footerLabel, refreshButton]) + let footer = NSStackView(views: [footerLabel, addButton, refreshButton]) footer.orientation = .horizontal footer.alignment = .centerY - footer.spacing = 8 + footer.distribution = .fill + footer.spacing = 2 + footer.setCustomSpacing(8, after: footerLabel) footer.translatesAutoresizingMaskIntoConstraints = false contentContainer.translatesAutoresizingMaskIntoConstraints = false - // Header, search and filters form one block above a single rule, so - // scrolled rows pass under a clear edge. - [header, controls, listDivider, contentContainer, divider, footer].forEach { view.addSubview($0) } - listTopConstraint = listDivider.topAnchor.constraint(equalTo: controls.bottomAnchor, constant: 10) + // Search and options form one line above a single rule, so scrolled + // rows pass under a clear edge. + [header, listDivider, contentContainer, divider, footer].forEach { view.addSubview($0) } + headerLeadingConstraint = header.leadingAnchor.constraint(equalTo: view.leadingAnchor, constant: 10) NSLayoutConstraint.activate([ header.topAnchor.constraint(equalTo: view.topAnchor), - header.leadingAnchor.constraint(equalTo: view.leadingAnchor, constant: LaunchRowButton.contentInset), - header.trailingAnchor.constraint(equalTo: view.trailingAnchor, constant: -10), - header.heightAnchor.constraint(equalToConstant: 44), - controls.topAnchor.constraint(equalTo: header.bottomAnchor, constant: 2), - controls.leadingAnchor.constraint(equalTo: view.leadingAnchor, constant: LaunchRowButton.contentInset), - controls.trailingAnchor.constraint(equalTo: view.trailingAnchor, constant: -LaunchRowButton.contentInset), - listTopConstraint!, + headerLeadingConstraint!, + header.trailingAnchor.constraint(equalTo: view.trailingAnchor, constant: -8), + header.heightAnchor.constraint(equalToConstant: Self.headerHeight), + listDivider.topAnchor.constraint(equalTo: header.bottomAnchor), listDivider.leadingAnchor.constraint(equalTo: view.leadingAnchor), listDivider.trailingAnchor.constraint(equalTo: view.trailingAnchor), contentContainer.topAnchor.constraint(equalTo: listDivider.bottomAnchor), contentContainer.leadingAnchor.constraint(equalTo: view.leadingAnchor), @@ -219,8 +191,8 @@ final class WorkspaceMenuViewController: NSViewController { divider.leadingAnchor.constraint(equalTo: view.leadingAnchor), divider.trailingAnchor.constraint(equalTo: view.trailingAnchor), divider.bottomAnchor.constraint(equalTo: footer.topAnchor), footer.leadingAnchor.constraint(equalTo: view.leadingAnchor, constant: LaunchRowButton.contentInset), - footer.trailingAnchor.constraint(equalTo: view.trailingAnchor, constant: -10), - footer.bottomAnchor.constraint(equalTo: view.bottomAnchor), footer.heightAnchor.constraint(equalToConstant: 36), + footer.trailingAnchor.constraint(equalTo: view.trailingAnchor, constant: -8), + footer.bottomAnchor.constraint(equalTo: view.bottomAnchor), footer.heightAnchor.constraint(equalToConstant: Self.footerHeight), ]) } @@ -229,15 +201,14 @@ final class WorkspaceMenuViewController: NSViewController { let populated = store.phase == .ready && (!store.profiles.isEmpty || !store.workspaces.isEmpty) let shouldFocusSearch = populated && searchField.isHidden searchField.isHidden = !populated - toolbar.isHidden = !populated - // Without filters, the rule meets the header directly. - listTopConstraint?.constant = populated ? 10 : -2 + titleLabel.isHidden = populated + // The search field's bezel sits slightly outside the text column; the title sits on it. + headerLeadingConstraint?.constant = populated ? 10 : LaunchRowButton.contentInset addButton.isHidden = !populated || store.profiles.isEmpty - footerLabel.stringValue = ["Choose a profile or workspace", "Create a profile to get started"].contains(store.statusMessage) ? "" : store.statusMessage - footerLabel.toolTip = footerLabel.stringValue + addButton.toolTip = store.profiles.count == 1 ? "Add a workspace" : "Add a workspace or profile" refreshButton.isEnabled = !store.isRefreshing && !store.isRefreshingUsage selectedID = targets.first { $0.id == selectedID && store.canLaunch($0) }?.id - updateProfilePicker() + selectFirstMatch(in: targets) let list = store.phase == .ready && !targets.isEmpty ? listModel(for: targets) : nil if let list, list == renderedList, scrollView != nil { @@ -245,6 +216,7 @@ final class WorkspaceMenuViewController: NSViewController { row.isSelectedRow = row.item.id == selectedID if row.item.workspace == nil { row.update(usage: store.usageState(for: row.item.profile)) } } + updateFooter() return } renderedList = list @@ -260,18 +232,22 @@ final class WorkspaceMenuViewController: NSViewController { case .ready where store.profiles.isEmpty && store.workspaces.isEmpty: showState(symbol: "person.crop.circle.badge.plus", title: "Create your first profile", detail: "Open separate ChatGPT windows for work and personal use.", actionTitle: "Create profile…", action: #selector(createProfile)) case .ready where targets.isEmpty: - showState(symbol: "magnifyingglass", title: "No matches", detail: "Try another profile or project name.", actionTitle: "Reset filters", action: #selector(resetFilters)) + showState(symbol: "magnifyingglass", title: "No matches", detail: "Try another profile or project name.", actionTitle: "Clear search", action: #selector(clearSearch)) case .ready: if let list { showLaunchList(list) } } - let contentHeight = scrollView?.documentView?.fittingSize.height - ?? contentContainer.subviews.first.map { $0.fittingSize.height + 32 } ?? 100 - // Header, filters, separators and footer occupy 150 points. - let height: CGFloat = populated ? min(500, max(260, 150 + contentHeight)) : 260 + let chrome = Self.headerHeight + Self.footerHeight + 2 + // A list fits its rows up to 500 points; a message keeps room to breathe. + let height: CGFloat = if let document = scrollView?.documentView { + min(500, chrome + document.fittingSize.height) + } else { + min(500, max(260, chrome + (contentContainer.subviews.first.map { $0.fittingSize.height + 48 } ?? 100))) + } heightConstraint?.constant = height - preferredContentSize = NSSize(width: 400, height: height) + preferredContentSize = NSSize(width: Self.width, height: height) onPreferredContentSizeChange?(preferredContentSize) view.layoutSubtreeIfNeeded() + updateFooter() if shouldFocusSearch, view.window?.isKeyWindow == true { focusSearch() } if let scrollView { let maxY = max(0, (scrollView.documentView?.bounds.height ?? 0) - scrollView.contentView.bounds.height) @@ -281,10 +257,12 @@ final class WorkspaceMenuViewController: NSViewController { } private func listModel(for targets: [LaunchTarget]) -> ListModel { - ListModel(destination: destination, rows: targets.map { item in + let listedProfiles = Set(targets.filter { $0.workspace == nil }.map(\.profile)) + return ListModel(destination: destination, rows: targets.map { item in ListModel.Row( item: item, pinned: item.workspace.map(store.isPinned) ?? false, + nested: item.workspace.map { listedProfiles.contains($0.profile) } ?? false, launching: store.launchingID == item.id, changing: store.isChanging(item), enabled: store.canLaunch(item) && store.launchingID == nil @@ -292,17 +270,35 @@ final class WorkspaceMenuViewController: NSViewController { }) } - /// Rebuilds the filter only when profiles change, so an open filter menu - /// is not replaced while usage readings arrive. - private func updateProfilePicker() { - if renderedProfiles != store.profiles { - profilePicker.removeAllItems() - profilePicker.addItem(withTitle: "All profiles") - for profile in store.profiles { profilePicker.addItem(withTitle: profile) } - renderedProfiles = store.profiles + private var isSearching: Bool { !store.query.trimmingCharacters(in: .whitespacesAndNewlines).isEmpty } + + /// While searching, the first available match is selected so Return's + /// target is visible before it is pressed. + private func selectFirstMatch(in targets: [LaunchTarget]) { + guard selectedID == nil, isSearching else { return } + selectedID = targets.first(where: store.canLaunch)?.id + } + + private func updateSelection() { + for row in rows { row.isSelectedRow = row.item.id == selectedID } + updateFooter() + } + + /// The footer says what Return and Command-Return do until the store has + /// news to report, such as a launch or a refresh failure. + private func updateFooter() { + let idle = ["Choose a profile or workspace", "Create a profile to get started"].contains(store.statusMessage) + let other = "⌘↩ \(destination.alternate.label)" + if !idle { + footerLabel.stringValue = store.statusMessage + } else if let item = rows.first(where: { $0.item.id == selectedID })?.item { + footerLabel.stringValue = "↩ Open \(item.name) in \(destination.label) · \(other)" + } else if !rows.isEmpty { + footerLabel.stringValue = "↩ Open in \(destination.label) · \(other)" + } else { + footerLabel.stringValue = "" } - let index = store.selectedProfile.flatMap { store.profiles.firstIndex(of: $0) }.map { $0 + 1 } ?? 0 - if profilePicker.indexOfSelectedItem != index { profilePicker.selectItem(at: index) } + footerLabel.toolTip = footerLabel.stringValue } private func showLaunchList(_ list: ListModel) { @@ -317,59 +313,36 @@ final class WorkspaceMenuViewController: NSViewController { stack.orientation = .vertical stack.alignment = .width stack.spacing = 0 - stack.edgeInsets = NSEdgeInsets(top: 0, left: 0, bottom: 6, right: 0) + stack.edgeInsets = NSEdgeInsets(top: 6, left: 0, bottom: 6, right: 0) stack.translatesAutoresizingMaskIntoConstraints = false document.addSubview(stack) - func section(of row: ListModel.Row) -> String { - row.item.workspace == nil ? "Profiles" : row.pinned ? "Pinned workspaces" : "Workspaces" + // A profile and the workspaces nested under it form one group; search + // results without their profile row form another. + func group(of row: ListModel.Row) -> String? { + row.item.workspace == nil || row.nested ? row.item.profile : nil } - var previousGroup: String? for (index, model) in list.rows.enumerated() { let item = model.item - let groupTitle = section(of: model) - if previousGroup != groupTitle { - let heading = label(groupTitle, size: 11, weight: .semibold) - heading.textColor = .secondaryLabelColor - let group = NSStackView(views: [heading, NSView()]) - group.spacing = 0 - // Space above a heading separates groups; rules only divide rows within one. - let first = previousGroup == nil - group.edgeInsets = NSEdgeInsets(top: first ? 8 : 12, left: LaunchRowButton.contentInset, bottom: 4, right: 0) - if item.workspace == nil { - let usageHeading = label("Codex left", size: 11, weight: .semibold) - usageHeading.textColor = .secondaryLabelColor - usageHeading.alignment = .right - usageHeading.toolTip = "Remaining Codex CLI quota. ChatGPT may use a different account." - usageHeading.widthAnchor.constraint(equalToConstant: ProfileUsageView.columnWidth).isActive = true - group.addArrangedSubview(usageHeading) - let actionsSpace = NSView() - actionsSpace.widthAnchor.constraint(equalToConstant: LaunchRowButton.actionsWidth).isActive = true - group.addArrangedSubview(actionsSpace) - } - group.heightAnchor.constraint(equalToConstant: first ? 28 : 32).isActive = true - stack.addArrangedSubview(group) - group.widthAnchor.constraint(equalTo: stack.widthAnchor).isActive = true - previousGroup = groupTitle + if index > 0, group(of: model) != group(of: list.rows[index - 1]) { + let divider = GroupDivider() + stack.addArrangedSubview(divider) + divider.widthAnchor.constraint(equalTo: stack.widthAnchor).isActive = true } - let row = LaunchRowButton(item: item, shortcutIndex: index, destination: list.destination, - usage: item.workspace == nil ? store.usageState(for: item.profile) : nil, pinned: model.pinned, + let row = LaunchRowButton(item: item, destination: list.destination, + usage: item.workspace == nil ? store.usageState(for: item.profile) : nil, pinned: model.pinned, nested: model.nested, selected: selectedID == item.id, launching: model.launching, changing: model.changing, enabled: model.enabled, target: self, action: #selector(launchClicked(_:))) row.onShowActions = { [weak self] sender in guard let self else { return } self.actionsMenu(for: item).popUp(positioning: nil, at: NSPoint(x: 0, y: sender.bounds.height), in: sender) } + row.contextMenu = { [weak self] in self?.actionsMenu(for: item) } + row.onLocate = { [weak self] in + if let workspace = item.workspace { self?.chooseFolder(for: workspace.profile, replacing: workspace) } + } rows.append(row) stack.addArrangedSubview(row) row.widthAnchor.constraint(equalTo: stack.widthAnchor).isActive = true - if let rule = rows.dropLast().last?.ruleBelow { rule.below = row; row.ruleAbove = rule; rule.update() } - if index < list.rows.count - 1, section(of: list.rows[index + 1]) == groupTitle { - let rule = RowRule() - rule.above = row - row.ruleBelow = rule - stack.addArrangedSubview(rule) - rule.widthAnchor.constraint(equalTo: stack.widthAnchor).isActive = true - } } scroll.documentView = document scrollView = scroll @@ -389,10 +362,17 @@ final class WorkspaceMenuViewController: NSViewController { guard !available.isEmpty else { return } let current = available.firstIndex { $0.id == selectedID } ?? (offset > 0 ? -1 : available.count) selectedID = available[min(available.count - 1, max(0, current + offset))].id - for row in rows { row.isSelectedRow = row.item.id == selectedID } + updateSelection() if let row = rows.first(where: { $0.item.id == selectedID }) { row.scrollToVisible(row.bounds) } } + /// Return opens the selection, or the first available row without one. + private func launchSelection(alternate: Bool) { + let targets = store.filteredTargets + guard let item = targets.first(where: { $0.id == selectedID }) ?? targets.first(where: store.canLaunch) else { return } + launch(item, in: alternate ? destination.alternate : nil) + } + /// The store explains refusals, such as a missing folder, in the footer. private func launch(_ item: LaunchTarget, in requested: OpenDestination? = nil) { guard store.launchingID == nil else { return } @@ -410,7 +390,7 @@ final class WorkspaceMenuViewController: NSViewController { copy.textColor = .secondaryLabelColor copy.alignment = .center copy.maximumNumberOfLines = 4 - copy.widthAnchor.constraint(lessThanOrEqualToConstant: 300).isActive = true + copy.widthAnchor.constraint(lessThanOrEqualToConstant: 280).isActive = true let stack = NSStackView(views: [icon, heading, copy]) stack.orientation = .vertical stack.alignment = .centerX @@ -439,6 +419,10 @@ final class WorkspaceMenuViewController: NSViewController { let menu = NSMenu() menu.autoenablesItems = false let idle = store.launchingID == nil + if item.workspace == nil { + for line in usageItems(for: store.usageState(for: item.profile)) { menu.addItem(line) } + menu.addItem(.separator()) + } for destination in [OpenDestination.chatGPT, .terminal] { let open = menuItem("Open in \(destination.label)", #selector(openFromMenu(_:)), symbol: destination.symbolName, LaunchRequest(item: item, destination: destination)) @@ -482,6 +466,30 @@ final class WorkspaceMenuViewController: NSViewController { return menu } + /// Every window with its reset time, which the row's single figure leaves + /// out. The lines are information, so they stay disabled. + private func usageItems(for usage: UsageState, now: Date = Date()) -> [NSMenuItem] { + var lines = ["Codex CLI usage"] + if case let .available(limits, checkedAt) = usage.reading { + lines += limits.windows.enumerated().map { index, window in + let name = window.durationLabel ?? "Limit \(index + 1)" + guard !window.hasReset(at: now) else { return "\(name): awaiting a fresh reading" } + let reset = window.resetsAt.map { " · resets \(UsageFormat.clock(Date(timeIntervalSince1970: $0), relativeTo: now))" } ?? "" + return "\(name): \(window.remainingPercent)% left\(reset)" + } + lines.append((usage.isRefreshing ? "Refreshing… " : "") + "Checked \(UsageFormat.clock(checkedAt, relativeTo: now))") + } else if usage.reading == nil || usage.isRefreshing { + lines.append("Checking…") + } else { + lines.append("Unavailable · sign in to Codex CLI, then refresh") + } + return lines.map { line in + let item = NSMenuItem(title: line, action: nil, keyEquivalent: "") + item.isEnabled = false + return item + } + } + func settingsMenu() -> NSMenu { let menu = NSMenu() menu.autoenablesItems = false @@ -493,6 +501,17 @@ final class WorkspaceMenuViewController: NSViewController { login.isEnabled = !store.profiles.isEmpty menu.addItem(login) menu.addItem(.separator()) + // Command-Return and Command-click open the other one. + let returnOpens = NSMenuItem(title: "Return opens in", action: nil, keyEquivalent: "") + let destinations = NSMenu() + destinations.autoenablesItems = false + for choice in [OpenDestination.chatGPT, .terminal] { + let option = menuItem(choice.label, #selector(destinationChosen(_:)), symbol: nil, choice.rawValue) + option.state = choice == destination ? .on : .off + destinations.addItem(option) + } + returnOpens.submenu = destinations + menu.addItem(returnOpens) let openAtLogin = menuItem("Open at Login", #selector(toggleOpenAtLogin), symbol: nil, nil) switch loginItem.status { case .enabled: openAtLogin.state = .on @@ -566,17 +585,20 @@ final class WorkspaceMenuViewController: NSViewController { return button } - @objc private func launchClicked(_ sender: LaunchRowButton) { launch(sender.item) } + /// Clicking opens in the default destination; Command-click opens in the other. + @objc private func launchClicked(_ sender: LaunchRowButton) { + let alternate = NSApp.currentEvent?.modifierFlags.contains(.command) == true + launch(sender.item, in: alternate ? destination.alternate : nil) + } @objc private func openFromMenu(_ sender: NSMenuItem) { guard let request = sender.representedObject as? LaunchRequest else { return } launch(request.item, in: request.destination) } @objc private func refresh() { Task { await store.refresh(); await store.refreshUsage(force: true) } } @objc private func clearSearch() { selectedID = nil; searchField.stringValue = ""; store.query = ""; focusSearch() } - @objc private func resetFilters() { store.selectedProfile = nil; clearSearch() } - @objc private func profileFilterChanged() { selectedID = nil; store.selectedProfile = profilePicker.indexOfSelectedItem == 0 ? nil : profilePicker.titleOfSelectedItem } - @objc private func destinationChanged() { - destination = destinationPicker.selectedSegment == 1 ? .terminal : .chatGPT + @objc private func destinationChosen(_ sender: NSMenuItem) { + guard let value = sender.representedObject as? String, let choice = OpenDestination(rawValue: value) else { return } + destination = choice defaults.set(destination.rawValue, forKey: "openDestination") render() } @@ -603,8 +625,11 @@ final class WorkspaceMenuViewController: NSViewController { } @objc private func addWorkspace(_ sender: NSButton) { guard !store.profiles.isEmpty else { promptForProfile(addingWorkspace: true); return } - if let profile = store.selectedProfile ?? (store.profiles.count == 1 ? store.profiles.first : nil) { chooseFolder(for: profile); return } + if store.profiles.count == 1, let profile = store.profiles.first { chooseFolder(for: profile); return } let menu = NSMenu(title: "Choose profile") + let heading = NSMenuItem(title: "Add a workspace for", action: nil, keyEquivalent: "") + heading.isEnabled = false + menu.addItem(heading) for profile in store.profiles { let item = NSMenuItem(title: profile, action: #selector(profileChosen(_:)), keyEquivalent: "") item.target = self @@ -705,7 +730,6 @@ final class WorkspaceMenuViewController: NSViewController { Task { if await store.createProfile(name) { clearSearch() - store.selectedProfile = name if addingWorkspace { chooseFolder(for: name) } await store.refreshUsage() } @@ -732,48 +756,57 @@ final class WorkspaceMenuViewController: NSViewController { final class FlippedView: NSView { override var isFlipped: Bool { true } } +/// One launchable row. A profile row is 46 points with its quota beside the +/// name; a workspace is a single 30-point line nested under its profile, and +/// grows to two lines only to explain why it cannot open. final class LaunchRowButton: NSButton { - /// Column metrics shared with the header, section headings and rules. + /// Column metrics shared with the header, dividers and nested workspaces. static let contentInset: CGFloat = 14 - static let avatarSize: CGFloat = 22 + static let avatarSize: CGFloat = 26 static let avatarSpacing: CGFloat = 10 + /// Where profile names start. Nested workspace symbols start here too, so + /// each workspace reads as part of the profile above it. static let titleInset = contentInset + avatarSize + avatarSpacing - private static let openWidth: CGFloat = 54 - private static let moreWidth: CGFloat = 20 - private static let usageSpacing: CGFloat = 12 - private static let moreSpacing: CGFloat = 4 - /// From the quota column's trailing edge to the row's trailing edge. - static let actionsWidth = usageSpacing + openWidth + moreSpacing + moreWidth + contentInset + static let symbolSize: CGFloat = 16 + private static let moreWidth: CGFloat = 22 let item: LaunchTarget var onShowActions: ((NSButton) -> Void)? + /// Right-click and Control-click show the same actions as the ⋯ button. + var contextMenu: (() -> NSMenu?)? + var onLocate: (() -> Void)? var isSelectedRow: Bool { didSet { setAccessibilitySelected(isSelectedRow); highlightChanged() } } /// The inset, rounded plate behind hover and keyboard selection. let highlight = RowHighlightView() - /// Rules beside this row, which step aside while its plate shows. - weak var ruleAbove: RowRule? - weak var ruleBelow: RowRule? var showsPlate: Bool { isSelectedRow || isHovered && isEnabled } private var isHovered = false { didSet { highlightChanged() } } private var tracking: NSTrackingArea? private let destination: OpenDestination - private let metadata: NSTextField + private let launching: Bool + private let detail: NSTextField private let profileDetail: String private let usageView: ProfileUsageView? - private let avatar: RowAvatar + private let avatar: RowAvatar? + private let more: NSButton - init(item: LaunchTarget, shortcutIndex: Int, destination: OpenDestination, usage: UsageState?, pinned: Bool, selected: Bool, + init(item: LaunchTarget, destination: OpenDestination, usage: UsageState?, pinned: Bool, nested: Bool, selected: Bool, launching: Bool, changing: Bool, enabled: Bool, target: AnyObject?, action: Selector?) { self.item = item self.destination = destination + self.launching = launching isSelectedRow = selected - profileDetail = destination == .terminal ? "Codex CLI profile" : item.profile == "default" ? "Standard ChatGPT window" : "Separate ChatGPT window" - metadata = NSTextField(labelWithString: item.workspace.map { "\($0.profile) · \($0.displayPath())" } ?? profileDetail) - usageView = item.workspace == nil ? ProfileUsageView(usage: usage ?? UsageState()) : nil - // A monogram gives each profile its own mark; workspaces share a folder tile. - avatar = item.workspace.map { workspace in - RowAvatar(symbol: !workspace.isAvailable ? "questionmark.folder" : pinned ? "pin.fill" : "folder") - } ?? RowAvatar(monogram: item.profile) + let workspace = item.workspace + profileDetail = launching ? "Opening in \(destination.label)…" + : destination == .terminal ? "Codex CLI profile" : item.profile == "default" ? "Standard ChatGPT window" : "Separate ChatGPT window" + let workspaceDetail = workspace.map { workspace in + changing ? "Updating…" : launching ? "Opening in \(destination.label)…" + : workspace.availabilityReason.map { "\($0) · \(workspace.displayPath())" } ?? workspace.displayPath() + } + detail = NSTextField(labelWithString: workspaceDetail ?? profileDetail) + usageView = workspace == nil ? ProfileUsageView(usage: usage ?? UsageState()) : nil + // A monogram tile marks each profile; workspaces carry a bare symbol. + avatar = workspace == nil ? RowAvatar(monogram: item.profile) : nil + more = NSButton(image: NSImage(systemSymbolName: "ellipsis", accessibilityDescription: "Actions for \(item.name)") ?? NSImage(), target: nil, action: nil) super.init(frame: .zero) self.target = target self.action = action @@ -783,86 +816,101 @@ final class LaunchRowButton: NSButton { focusRingType = .none isEnabled = enabled translatesAutoresizingMaskIntoConstraints = false - heightAnchor.constraint(equalToConstant: item.isAvailable ? 48 : 64).isActive = true + let twoLines = workspace == nil || !item.isAvailable + heightAnchor.constraint(equalToConstant: workspace == nil ? 46 : twoLines ? 44 : 30).isActive = true let state = changing ? "Updating" : "Open in \(destination.label)" - setAccessibilityLabel(item.workspace.map { "\($0.name), profile \($0.profile), \($0.path). \($0.availabilityReason ?? state)" } + setAccessibilityLabel(workspace.map { "\($0.name), profile \($0.profile), \($0.path). \($0.availabilityReason ?? state)" } ?? "Profile \(item.profile). \(state)") setAccessibilitySelected(selected) - toolTip = item.workspace.map { "\($0.path)\nProfile: \($0.profile)" } ?? "Open profile \(item.profile) without a project folder" + toolTip = workspace.map { "\($0.path)\nProfile: \($0.profile)" } ?? "Open profile \(item.profile) without a project folder" + let name = NSTextField(labelWithString: item.name) - name.font = .systemFont(ofSize: 13, weight: .medium) + name.font = .systemFont(ofSize: 13, weight: workspace == nil ? .semibold : .regular) name.lineBreakMode = .byTruncatingTail name.toolTip = item.name name.textColor = item.isAvailable ? .labelColor : .secondaryLabelColor - metadata.font = .systemFont(ofSize: 11) - metadata.textColor = .secondaryLabelColor + detail.font = .systemFont(ofSize: 11) + detail.textColor = .secondaryLabelColor // Paths keep both ends readable; prose keeps its beginning. - metadata.lineBreakMode = item.workspace == nil ? .byTruncatingTail : .byTruncatingMiddle - if let workspace = item.workspace { - let metadataText = NSMutableAttributedString(attributedString: metadata.attributedStringValue) - metadataText.addAttribute(.font, value: NSFont.systemFont(ofSize: 11, weight: .medium), - range: NSRange(location: 0, length: (workspace.profile as NSString).length)) - metadata.attributedStringValue = metadataText - } - metadata.toolTip = toolTip - let labels = NSStackView(views: [name, metadata]) - labels.orientation = .vertical - labels.alignment = .leading - labels.spacing = 2 - for value in [name, metadata] { - value.widthAnchor.constraint(equalTo: labels.widthAnchor).isActive = true - value.setContentCompressionResistancePriority(.defaultLow, for: .horizontal) + detail.lineBreakMode = workspace == nil || changing || launching ? .byTruncatingTail : .byTruncatingMiddle + detail.toolTip = toolTip + name.setContentCompressionResistancePriority(.init(260), for: .horizontal) + detail.setContentCompressionResistancePriority(.defaultLow, for: .horizontal) + let labels = NSStackView(views: [name, detail]) + labels.orientation = twoLines ? .vertical : .horizontal + labels.alignment = twoLines ? .leading : .firstBaseline + labels.spacing = twoLines ? 1 : 8 + if twoLines { + for value in [name, detail] { value.widthAnchor.constraint(lessThanOrEqualTo: labels.widthAnchor).isActive = true } } labels.setContentHuggingPriority(.defaultLow, for: .horizontal) labels.setContentCompressionResistancePriority(.defaultLow, for: .horizontal) - if let reason = item.workspace?.availabilityReason { - let warning = NSTextField(labelWithString: reason) - warning.font = .systemFont(ofSize: 11) - warning.textColor = .secondaryLabelColor - warning.lineBreakMode = .byTruncatingTail - labels.addArrangedSubview(warning) - warning.widthAnchor.constraint(equalTo: labels.widthAnchor).isActive = true - warning.setContentCompressionResistancePriority(.defaultLow, for: .horizontal) + + var rowViews: [NSView] = [] + if let avatar { rowViews.append(avatar) } + if let workspace { + let symbol = NSImageView(image: NSImage(systemSymbolName: !workspace.isAvailable ? "questionmark.folder" : pinned ? "pin" : "folder", + accessibilityDescription: nil) ?? NSImage()) + symbol.symbolConfiguration = .init(pointSize: 12, weight: .regular) + symbol.contentTintColor = .secondaryLabelColor + symbol.widthAnchor.constraint(equalToConstant: Self.symbolSize).isActive = true + symbol.setContentHuggingPriority(.required, for: .horizontal) + rowViews.append(symbol) } - let openTitle = launching ? "Opening…" : changing ? "Updating…" : "Open" - let open = NSButton(title: openTitle, target: self, action: #selector(openTarget(_:))) - open.bezelStyle = .rounded - open.controlSize = .small - open.font = .systemFont(ofSize: 11) - open.contentTintColor = .labelColor - open.isEnabled = enabled - open.widthAnchor.constraint(equalToConstant: openTitle == "Open" ? Self.openWidth : 78).isActive = true - open.toolTip = "Open in \(destination.label)" + (shortcutIndex < 9 ? " (⌘\(shortcutIndex + 1))" : "") - open.setAccessibilityLabel("Open \(item.name) in \(destination.label)") - let more = NSButton(image: NSImage(systemSymbolName: "ellipsis", accessibilityDescription: "Actions for \(item.name)") ?? NSImage(), target: self, action: #selector(showActions(_:))) + rowViews.append(labels) + if let workspace, !nested { + // Without its profile's row above, a workspace names its profile. + let tag = NSTextField(labelWithString: workspace.profile) + tag.font = .systemFont(ofSize: 11, weight: .medium) + tag.textColor = .secondaryLabelColor + tag.lineBreakMode = .byTruncatingTail + tag.setContentHuggingPriority(.required, for: .horizontal) + tag.setContentCompressionResistancePriority(.init(255), for: .horizontal) + rowViews.append(tag) + } + if let usageView { rowViews.append(usageView) } + if let workspace, !workspace.pathExists { + let locate = NSButton(title: "Locate…", target: self, action: #selector(locateFolder(_:))) + locate.bezelStyle = .rounded + locate.controlSize = .small + locate.font = .systemFont(ofSize: 11) + locate.isEnabled = !changing + locate.toolTip = "Choose where \(workspace.name) moved" + locate.setContentHuggingPriority(.required, for: .horizontal) + rowViews.append(locate) + } + more.target = self + more.action = #selector(showActions(_:)) more.isBordered = false more.contentTintColor = .secondaryLabelColor - more.toolTip = item.workspace == nil ? "Open elsewhere, add a workspace, or sign in to Codex CLI" : "Open elsewhere, pin, change profile, or remove binding" + more.toolTip = workspace == nil ? "Open elsewhere, add a workspace, or sign in to Codex CLI" : "Open elsewhere, pin, change profile, or remove binding" more.isEnabled = !changing more.widthAnchor.constraint(equalToConstant: Self.moreWidth).isActive = true - more.heightAnchor.constraint(equalToConstant: 24).isActive = true - var rowViews: [NSView] = [avatar, labels] - if let usageView { rowViews.append(usageView) } - rowViews += [open, more] + more.heightAnchor.constraint(equalToConstant: 22).isActive = true + rowViews.append(more) + let row = NSStackView(views: rowViews) row.orientation = .horizontal row.alignment = .centerY row.distribution = .fill row.spacing = 8 - row.setCustomSpacing(Self.avatarSpacing, after: avatar) - if let usageView { row.setCustomSpacing(Self.usageSpacing, after: usageView) } - row.setCustomSpacing(Self.moreSpacing, after: open) + if let avatar { row.setCustomSpacing(Self.avatarSpacing, after: avatar) } + if let usageView { row.setCustomSpacing(4, after: usageView) } row.translatesAutoresizingMaskIntoConstraints = false addSubview(highlight) addSubview(row) + // Nested workspaces start at the profile's title column; others centre + // their symbol under the profile tiles. + let leading = workspace == nil ? Self.contentInset : nested ? Self.titleInset : Self.contentInset + (Self.avatarSize - Self.symbolSize) / 2 NSLayoutConstraint.activate([ highlight.leadingAnchor.constraint(equalTo: leadingAnchor, constant: 6), highlight.trailingAnchor.constraint(equalTo: trailingAnchor, constant: -6), - highlight.topAnchor.constraint(equalTo: topAnchor, constant: 2), highlight.bottomAnchor.constraint(equalTo: bottomAnchor, constant: -2), - row.leadingAnchor.constraint(equalTo: leadingAnchor, constant: Self.contentInset), - row.trailingAnchor.constraint(equalTo: trailingAnchor, constant: -Self.contentInset), + highlight.topAnchor.constraint(equalTo: topAnchor, constant: 1), highlight.bottomAnchor.constraint(equalTo: bottomAnchor, constant: -1), + row.leadingAnchor.constraint(equalTo: leadingAnchor, constant: leading), + row.trailingAnchor.constraint(equalTo: trailingAnchor, constant: -10), row.centerYAnchor.constraint(equalTo: centerYAnchor), ]) - if item.workspace == nil { update(usage: usage ?? UsageState()) } + if workspace == nil { update(usage: usage ?? UsageState()) } + updateActionsVisibility() } @available(*, unavailable) @@ -872,12 +920,12 @@ final class LaunchRowButton: NSButton { func update(usage: UsageState, now: Date = Date()) { guard let usageView else { return } usageView.update(usage, now: now) - let detail = usage.detail(at: now) - toolTip = "Open profile \(item.profile) without a project folder\n\(detail)" - metadata.toolTip = toolTip + let explanation = usage.detail(at: now) + toolTip = "Open profile \(item.profile) without a project folder\n\(explanation)" + detail.toolTip = toolTip // A low quota matters more than the destination description. - metadata.stringValue = usage.summary(at: now) ?? profileDetail - setAccessibilityLabel("Profile \(item.profile). Open in \(destination.label). \(detail)") + if !launching { detail.stringValue = usage.summary(at: now) ?? profileDetail } + setAccessibilityLabel("Profile \(item.profile). Open in \(destination.label). \(explanation)") } override var wantsUpdateLayer: Bool { true } @@ -900,7 +948,7 @@ final class LaunchRowButton: NSButton { } func redrawUsageMeters() { usageView?.redrawMeters() } - func redrawAvatar() { avatar.needsDisplay = true } + func redrawAvatar() { avatar?.needsDisplay = true } override func viewDidChangeEffectiveAppearance() { super.viewDidChangeEffectiveAppearance(); needsDisplay = true } override func updateTrackingAreas() { super.updateTrackingAreas() @@ -910,24 +958,43 @@ final class LaunchRowButton: NSButton { } override func mouseEntered(with event: NSEvent) { isHovered = true } override func mouseExited(with event: NSEvent) { isHovered = false } + override func menu(for event: NSEvent) -> NSMenu? { contextMenu?() ?? super.menu(for: event) } private func highlightChanged() { needsDisplay = true - ruleAbove?.update() - ruleBelow?.update() + updateActionsVisibility() } - @objc private func openTarget(_ sender: NSButton) { performClick(nil) } + /// The actions button appears with the plate, so resting rows stay quiet. + /// It stays in the accessibility tree, and rows that need repair always show it. + private func updateActionsVisibility() { more.alphaValue = showsPlate || !item.isAvailable ? 1 : 0 } @objc private func showActions(_ sender: NSButton) { onShowActions?(sender) } + @objc private func locateFolder(_ sender: NSButton) { onLocate?() } } +/// A profile's tightest Codex window: its remaining percentage and duration +/// beside a ring. The number carries the value; colour adds emphasis when +/// the window is low. final class ProfileUsageView: NSStackView { - static let columnWidth: CGFloat = 96 + static let figureWidth: CGFloat = 64 + private let figure = NSTextField(labelWithString: "") + private let caption = NSTextField(labelWithString: "") + private let ring = QuotaRing() init(usage: UsageState, now: Date = Date()) { super.init(frame: .zero) - orientation = .vertical - alignment = .width - spacing = 3 - widthAnchor.constraint(equalToConstant: Self.columnWidth).isActive = true + orientation = .horizontal + alignment = .centerY + spacing = 8 + caption.font = .systemFont(ofSize: 11) + caption.textColor = .secondaryLabelColor + caption.alignment = .right + let labels = NSStackView(views: [figure, caption]) + labels.orientation = .vertical + labels.alignment = .trailing + labels.spacing = 1 + labels.widthAnchor.constraint(equalToConstant: Self.figureWidth).isActive = true + addArrangedSubview(labels) + addArrangedSubview(ring) + setContentHuggingPriority(.required, for: .horizontal) setContentCompressionResistancePriority(.required, for: .horizontal) setAccessibilityLabel("Codex quota remaining") update(usage, now: now) @@ -936,84 +1003,93 @@ final class ProfileUsageView: NSStackView { @available(*, unavailable) required init?(coder: NSCoder) { fatalError("init(coder:) has not been implemented") } - /// Replaces the readings in place. A refresh dims the previous reading - /// rather than hiding it; expired windows show a dash, never restored quota. + /// Replaces the reading in place. A refresh dims the previous reading + /// rather than hiding it; a passed reset shows a dash, never restored quota. func update(_ usage: UsageState, now: Date = Date()) { - arrangedSubviews.forEach { $0.removeFromSuperview() } toolTip = usage.detail(at: now) setAccessibilityValue(toolTip) - guard let limits = usage.limits else { - let checking = usage.reading == nil || usage.isRefreshing - let message = NSTextField(labelWithString: checking ? "Checking…" : "Unavailable") - message.font = .systemFont(ofSize: 11) - message.textColor = .secondaryLabelColor - message.alignment = .right - addArrangedSubview(message) - message.widthAnchor.constraint(equalTo: widthAnchor).isActive = true - return - } - for (index, window) in limits.windows.enumerated() { - let expired = window.hasReset(at: now) - let duration = NSTextField(labelWithString: window.durationLabel ?? "Limit \(index + 1)") - duration.font = .monospacedDigitSystemFont(ofSize: 10, weight: .regular) - duration.textColor = .secondaryLabelColor - duration.alignment = .right - duration.lineBreakMode = .byTruncatingTail - duration.setContentHuggingPriority(.defaultLow, for: .horizontal) - duration.setContentCompressionResistancePriority(.defaultLow, for: .horizontal) - let meter = QuotaMeter() - meter.fraction = expired ? 0 : CGFloat(window.remainingPercent) / 100 - meter.level = expired ? .normal : window.level - let remaining = NSTextField(labelWithString: "") - remaining.attributedStringValue = expired - ? Self.figure("—", unit: "", colour: .secondaryLabelColor) - : Self.figure("\(window.remainingPercent)", unit: "%", colour: window.level == .critical ? .systemRed : .labelColor) - remaining.widthAnchor.constraint(equalToConstant: 28).isActive = true - let line = NSStackView(views: [duration, meter, remaining]) - line.distribution = .fill - line.alignment = .centerY - line.spacing = 5 - line.alphaValue = usage.isRefreshing ? 0.45 : 1 - addArrangedSubview(line) - line.widthAnchor.constraint(equalTo: widthAnchor).isActive = true + for view in arrangedSubviews { view.alphaValue = usage.isRefreshing && usage.limits != nil ? 0.45 : 1 } + if let window = usage.tightestWindow(at: now) { + figure.attributedStringValue = Self.figure("\(window.remainingPercent)", unit: "%", level: window.level) + caption.stringValue = "\(window.durationLabel ?? "Limit") left" + ring.fraction = CGFloat(window.remainingPercent) / 100 + ring.level = window.level + } else { + figure.attributedStringValue = Self.figure("—", unit: "", level: nil) + caption.stringValue = usage.limits != nil ? "Reset" : usage.reading == nil || usage.isRefreshing ? "Checking…" : "Unavailable" + ring.fraction = nil + ring.level = .normal } } - /// Tabular figures with a smaller, quieter unit, so the column reads as numbers. - private static func figure(_ value: String, unit: String, colour: NSColor) -> NSAttributedString { - let paragraph = NSMutableParagraphStyle() - paragraph.alignment = .right + /// Tabular figures with a smaller unit, so the column reads as numbers. + private static func figure(_ value: String, unit: String, level: QuotaLevel?) -> NSAttributedString { + let colour = level.map { QuotaPalette.text(for: $0) } ?? .secondaryLabelColor let text = NSMutableAttributedString(string: value, attributes: [ - .font: NSFont.monospacedDigitSystemFont(ofSize: 11, weight: .medium), .foregroundColor: colour, .paragraphStyle: paragraph, + .font: NSFont.monospacedDigitSystemFont(ofSize: 13, weight: .semibold), .foregroundColor: colour, ]) text.append(NSAttributedString(string: unit, attributes: [ - .font: NSFont.systemFont(ofSize: 9, weight: .medium), .paragraphStyle: paragraph, - .foregroundColor: colour == .labelColor ? NSColor.secondaryLabelColor : colour, + .font: NSFont.systemFont(ofSize: 10, weight: .medium), + .foregroundColor: level == .normal ? NSColor.secondaryLabelColor : colour, ])) return text } - func redrawMeters() { - for line in arrangedSubviews { for case let meter as QuotaMeter in line.subviews { meter.needsDisplay = true } } + func redrawMeters() { ring.needsDisplay = true } +} + +/// Low and critical emphasis for quota figures and rings. In light mode these +/// are darker than systemOrange and systemRed, so a coloured figure keeps +/// 4.5:1 contrast on the popover and on a hovered row. +enum QuotaPalette { + static let low = dynamic(light: (0.627, 0.306, 0), dark: (1, 0.702, 0.251)) + static let critical = dynamic(light: (0.784, 0, 0.102), dark: (1, 0.412, 0.380)) + + static func text(for level: QuotaLevel) -> NSColor { + switch level { + case .critical: critical + case .low: low + case .normal: .labelColor + } + } + + static func ring(for level: QuotaLevel, increaseContrast: Bool) -> NSColor { + level == .normal ? (increaseContrast ? .labelColor : .secondaryLabelColor) : text(for: level) + } + + private static func dynamic(light: (CGFloat, CGFloat, CGFloat), dark: (CGFloat, CGFloat, CGFloat)) -> NSColor { + NSColor(name: nil) { appearance in + let value = appearance.bestMatch(from: [.aqua, .darkAqua]) == .darkAqua ? dark : light + return NSColor(srgbRed: value.0, green: value.1, blue: value.2, alpha: 1) + } } } -/// A thin capacity bar beside each quota percentage. The number carries the -/// value; low and critical colours only add emphasis. -final class QuotaMeter: NSView { - var fraction: CGFloat = 0 { didSet { needsDisplay = true } } +/// A 20-point ring filled clockwise from the top with a window's remaining +/// share. Any remaining quota shows at least a sliver; no reading shows the +/// track alone. +final class QuotaRing: NSView { + static let size: CGFloat = 20 + private static let lineWidth: CGFloat = 2.5 + var fraction: CGFloat? { didSet { needsDisplay = true } } var level: QuotaLevel = .normal { didSet { needsDisplay = true } } - private let fill = CALayer() + private let track = CAShapeLayer() + private let arc = CAShapeLayer() init() { super.init(frame: .zero) wantsLayer = true - fill.actions = ["bounds": NSNull(), "position": NSNull(), "backgroundColor": NSNull(), "cornerRadius": NSNull()] - layer?.addSublayer(fill) + for shape in [track, arc] { + shape.fillColor = nil + shape.lineWidth = Self.lineWidth + shape.actions = ["path": NSNull(), "strokeColor": NSNull(), "strokeEnd": NSNull(), "hidden": NSNull()] + layer?.addSublayer(shape) + } + arc.lineCap = .round setAccessibilityElement(false) translatesAutoresizingMaskIntoConstraints = false - widthAnchor.constraint(equalToConstant: 32).isActive = true - heightAnchor.constraint(equalToConstant: 4).isActive = true + widthAnchor.constraint(equalToConstant: Self.size).isActive = true + heightAnchor.constraint(equalToConstant: Self.size).isActive = true } @available(*, unavailable) @@ -1024,23 +1100,21 @@ final class QuotaMeter: NSView { override func viewDidChangeEffectiveAppearance() { super.viewDidChangeEffectiveAppearance(); needsDisplay = true } override func updateLayer() { - guard let layer else { return } let contrast = NSWorkspace.shared.accessibilityDisplayShouldIncreaseContrast + let radius = (min(bounds.width, bounds.height) - Self.lineWidth) / 2 + let centre = CGPoint(x: bounds.midX, y: bounds.midY) + let path = CGMutablePath() + // Layer coordinates run upwards, so decreasing angles run clockwise. + path.addArc(center: centre, radius: radius, startAngle: .pi / 2, endAngle: .pi / 2 - 2 * .pi, clockwise: true) + track.path = path + arc.path = path effectiveAppearance.performAsCurrentDrawingAppearance { - layer.backgroundColor = (contrast ? NSColor.tertiaryLabelColor : .quaternaryLabelColor).cgColor - let colour: NSColor = switch level { - case .critical: .systemRed - case .low: .systemOrange - case .normal: contrast ? .labelColor : .secondaryLabelColor - } - fill.backgroundColor = colour.cgColor + track.strokeColor = (contrast ? NSColor.tertiaryLabelColor : .quaternaryLabelColor).cgColor + arc.strokeColor = QuotaPalette.ring(for: level, increaseContrast: contrast).cgColor } - let radius = bounds.height / 2 - layer.cornerRadius = radius - fill.cornerRadius = radius - // Keep any remaining quota visible as at least a dot. - let width = fraction > 0 ? max(bounds.height, bounds.width * min(1, fraction)) : 0 - fill.frame = CGRect(x: 0, y: 0, width: width, height: bounds.height) + let share = min(1, fraction ?? 0) + arc.isHidden = share <= 0 + arc.strokeEnd = max(0.03, share) } } @@ -1063,40 +1137,26 @@ final class RowHighlightView: NSView { override func hitTest(_ point: NSPoint) -> NSView? { nil } } -/// A row's leading mark: a monogram disc for a profile, or a rounded tile -/// holding a symbol for a workspace. Monochrome, like the rest of the menu. +/// A profile's leading mark: a rounded tile holding its monogram. +/// Monochrome, like the rest of the menu. final class RowAvatar: NSView { - private let isDisc: Bool - - convenience init(monogram name: String) { - let letter = NSTextField(labelWithString: name.first.map { String($0).uppercased() } ?? "") - let font = NSFont.systemFont(ofSize: 11, weight: .semibold) - letter.font = font.fontDescriptor.withDesign(.rounded).flatMap { NSFont(descriptor: $0, size: 11) } ?? font - letter.textColor = .secondaryLabelColor - letter.alignment = .center - letter.setAccessibilityElement(false) - self.init(glyph: letter, disc: true) - } - - convenience init(symbol: String) { - let image = NSImageView(image: NSImage(systemSymbolName: symbol, accessibilityDescription: nil) ?? NSImage()) - image.symbolConfiguration = .init(pointSize: 11, weight: .medium) - image.contentTintColor = .secondaryLabelColor - self.init(glyph: image, disc: false) - } - - private init(glyph: NSView, disc: Bool) { - isDisc = disc + init(monogram name: String) { super.init(frame: .zero) wantsLayer = true translatesAutoresizingMaskIntoConstraints = false setAccessibilityElement(false) - glyph.translatesAutoresizingMaskIntoConstraints = false - addSubview(glyph) + let letter = NSTextField(labelWithString: name.first.map { String($0).uppercased() } ?? "") + let font = NSFont.systemFont(ofSize: 12, weight: .semibold) + letter.font = font.fontDescriptor.withDesign(.rounded).flatMap { NSFont(descriptor: $0, size: 12) } ?? font + letter.textColor = .secondaryLabelColor + letter.alignment = .center + letter.setAccessibilityElement(false) + letter.translatesAutoresizingMaskIntoConstraints = false + addSubview(letter) let size = LaunchRowButton.avatarSize NSLayoutConstraint.activate([ widthAnchor.constraint(equalToConstant: size), heightAnchor.constraint(equalToConstant: size), - glyph.centerXAnchor.constraint(equalTo: centerXAnchor), glyph.centerYAnchor.constraint(equalTo: centerYAnchor), + letter.centerXAnchor.constraint(equalTo: centerXAnchor), letter.centerYAnchor.constraint(equalTo: centerYAnchor), ]) } @@ -1116,26 +1176,23 @@ final class RowAvatar: NSView { layer.borderColor = NSColor.secondaryLabelColor.cgColor } layer.cornerCurve = .continuous - layer.cornerRadius = isDisc ? LaunchRowButton.avatarSize / 2 : 6 + layer.cornerRadius = 7 } } -/// A hairline between rows of one group. It starts at the title column, as in -/// native inset lists, and hides beside a highlighted row so the plate stands alone. -final class RowRule: NSView { - weak var above: LaunchRowButton? - weak var below: LaunchRowButton? - private let separator = NSBox() - +/// A hairline between profile groups, inset to the content edges. Rows within +/// a group need no rules; the nesting already shows what belongs together. +final class GroupDivider: NSView { init() { super.init(frame: .zero) translatesAutoresizingMaskIntoConstraints = false + let separator = NSBox() separator.boxType = .separator separator.translatesAutoresizingMaskIntoConstraints = false addSubview(separator) NSLayoutConstraint.activate([ - heightAnchor.constraint(equalToConstant: 1), - separator.leadingAnchor.constraint(equalTo: leadingAnchor, constant: LaunchRowButton.titleInset), + heightAnchor.constraint(equalToConstant: 9), + separator.leadingAnchor.constraint(equalTo: leadingAnchor, constant: LaunchRowButton.contentInset), separator.trailingAnchor.constraint(equalTo: trailingAnchor, constant: -LaunchRowButton.contentInset), separator.centerYAnchor.constraint(equalTo: centerYAnchor), separator.heightAnchor.constraint(equalToConstant: 1), ]) @@ -1143,6 +1200,4 @@ final class RowRule: NSView { @available(*, unavailable) required init?(coder: NSCoder) { fatalError("init(coder:) has not been implemented") } - - func update() { separator.isHidden = above?.showsPlate == true || below?.showsPlate == true } } diff --git a/macos/CodexProfilesMenu/Sources/CodexProfilesMenu/WorkspaceModels.swift b/macos/CodexProfilesMenu/Sources/CodexProfilesMenu/WorkspaceModels.swift index 99fe3cf..48b2cb3 100644 --- a/macos/CodexProfilesMenu/Sources/CodexProfilesMenu/WorkspaceModels.swift +++ b/macos/CodexProfilesMenu/Sources/CodexProfilesMenu/WorkspaceModels.swift @@ -17,6 +17,9 @@ enum OpenDestination: String { case .terminal: "terminal" } } + + /// Where Command-Return and Command-click open instead. + var alternate: OpenDestination { self == .chatGPT ? .terminal : .chatGPT } } enum LaunchTarget: Equatable, Identifiable { diff --git a/macos/CodexProfilesMenu/Sources/CodexProfilesMenu/WorkspaceStore.swift b/macos/CodexProfilesMenu/Sources/CodexProfilesMenu/WorkspaceStore.swift index f609880..8b82f92 100644 --- a/macos/CodexProfilesMenu/Sources/CodexProfilesMenu/WorkspaceStore.swift +++ b/macos/CodexProfilesMenu/Sources/CodexProfilesMenu/WorkspaceStore.swift @@ -18,10 +18,6 @@ final class WorkspaceStore { didSet { notify() } } - var selectedProfile: String? { - didSet { notify() } - } - private(set) var phase: Phase = .idle private(set) var workspaces: [WorkspaceBinding] = [] private(set) var profiles: [String] = [] @@ -60,15 +56,19 @@ final class WorkspaceStore { } var filteredWorkspaces: [WorkspaceBinding] { - sortByRecency(workspaces.filter { - $0.matches(query) && (selectedProfile == nil || $0.profile == selectedProfile) - }) + sortByRecency(workspaces.filter { $0.matches(query) }) } + /// Each profile followed by its own workspaces, pinned first and then most + /// recently opened. Workspaces whose profile is missing come last. A + /// search keeps this order and lists only matches. var filteredTargets: [LaunchTarget] { - profiles.map(LaunchTarget.profile).filter { - $0.matches(query) && (selectedProfile == nil || $0.profile == selectedProfile) - } + filteredWorkspaces.map(LaunchTarget.workspace) + let matching = filteredWorkspaces + let grouped = profiles.flatMap { profile in + [LaunchTarget.profile(profile)].filter { $0.matches(query) } + + matching.filter { $0.profile == profile }.map(LaunchTarget.workspace) + } + return grouped + matching.filter { !profiles.contains($0.profile) }.map(LaunchTarget.workspace) } func isPinned(_ workspace: WorkspaceBinding) -> Bool { @@ -235,9 +235,6 @@ final class WorkspaceStore { profiles = loadedProfiles usage = usage.filter { profiles.contains($0.key) } guardMode = response.guardMode - if let selectedProfile, !profiles.contains(selectedProfile) { - self.selectedProfile = nil - } hasLoaded = true phase = .ready statusMessage = profiles.isEmpty && workspaces.isEmpty diff --git a/macos/CodexProfilesMenu/Tests/CodexProfilesMenuTests/MenuInteractionTests.swift b/macos/CodexProfilesMenu/Tests/CodexProfilesMenuTests/MenuInteractionTests.swift index 3d80a62..8662d74 100644 --- a/macos/CodexProfilesMenu/Tests/CodexProfilesMenuTests/MenuInteractionTests.swift +++ b/macos/CodexProfilesMenu/Tests/CodexProfilesMenuTests/MenuInteractionTests.swift @@ -32,15 +32,19 @@ struct MenuInteractionTests { firstRunController.onRequestClose = { profileClosed = true } let profileRow = descendants(firstRunController.view).compactMap { $0 as? LaunchRowButton }.first! let usageView = descendants(profileRow).compactMap { $0 as? ProfileUsageView }.first! - expect(descendants(usageView).compactMap { $0 as? NSTextField }.map(\.stringValue) == ["5h", "77%", "7d", "9%"], - "profile rows must show remaining percentages and actual window durations") + let usageText = descendants(usageView).compactMap { $0 as? NSTextField } + expect(usageText.map(\.stringValue) == ["9%", "7d left"], + "profile rows must show the tightest window's remaining percentage and actual duration") + expect(usageText[0].attributedStringValue.attribute(.foregroundColor, at: 0, effectiveRange: nil) as? NSColor == QuotaPalette.critical, + "a critical window's figure must carry the critical colour") + expect(descendants(usageView).contains { $0 is QuotaRing }, "the figure must sit beside a ring") expect(profileRow.accessibilityLabel()!.contains("77% remaining") && profileRow.accessibilityLabel()!.contains("Resets"), - "quota and reset times must be available to accessibility clients") + "every window's quota and reset time must be available to accessibility clients") expect(usageView.toolTip!.contains("ChatGPT may use a different account") && usageView.toolTip!.contains("Checked"), "quota tooltips must explain sign-in scope and freshness") let profileArguments = try await launchArguments(recordedIn: marker, until: { profileClosed }, - "a profile launch must dismiss the menu and record its arguments") { openButton(in: profileRow).performClick(nil) } - expect(profileArguments == "app\nwork\n", "a profile must open without supplying a workspace path") + "a profile launch must dismiss the menu and record its arguments") { profileRow.performClick(nil) } + expect(profileArguments == "app\nwork\n", "clicking a profile must open it without supplying a workspace path") expect(store.workspaces.isEmpty, "opening a profile must not create a workspace binding") store.loadPreview([], profiles: []) expect(descendants(firstRunController.view).compactMap { $0 as? NSButton }.contains { $0.title == "Create profile…" }, @@ -52,113 +56,118 @@ struct MenuInteractionTests { store.loadPreview([first, missing, last], usage: ["work": quota]) store.togglePin(first) let controller = WorkspaceMenuViewController(store: store, defaults: defaults) - let window = NSWindow(contentRect: NSRect(x: 0, y: 0, width: 400, height: 480), styleMask: .borderless, backing: .buffered, defer: false) + let window = NSWindow(contentRect: NSRect(x: 0, y: 0, width: 360, height: 480), styleMask: .borderless, backing: .buffered, defer: false) window.contentViewController = controller window.setContentSize(controller.preferredContentSize) controller.view.layoutSubtreeIfNeeded() controller.focusSearch() - expect(controller.preferredContentSize.width == 400, "popover must retain compact reference width") + expect(controller.preferredContentSize.width == WorkspaceMenuViewController.width, "popover must retain its compact width") let allViews = descendants(controller.view) expect(!(controller.view is NSVisualEffectView) && !allViews.contains { $0 is NSVisualEffectView }, "NSPopover must own its background material without a duplicate effect layer") - let title = allViews.compactMap { $0 as? NSTextField }.first { $0.stringValue == "Codex Profiles" }! - let options = allViews.compactMap { $0 as? NSButton }.first { $0.toolTip == "Options" }! - let titleCenter = controller.view.convert(NSPoint(x: title.bounds.midX, y: title.bounds.midY), from: title) - let optionsCenter = controller.view.convert(NSPoint(x: options.bounds.midX, y: options.bounds.midY), from: options) - expect(abs(titleCenter.y - optionsCenter.y) < 1, "title and options must share one compact header line") - let headerIcon = title.superview!.subviews.compactMap { $0 as? NSImageView }.first! - expect(isMonochrome(headerIcon.contentTintColor), "header symbol must use native monochrome tint") let searchFields = allViews.compactMap { $0 as? NSSearchField } expect(searchFields.count == 1, "workspace search must use native NSSearchField") let search = searchFields[0] - expect(allViews.contains { $0 is NSPopUpButton }, "profile filter must remain available") - expect(allViews.contains { $0 is NSSegmentedControl }, "launch destination must remain available") + let options = allViews.compactMap { $0 as? NSButton }.first { $0.toolTip == "Options" }! + let searchCenter = controller.view.convert(NSPoint(x: search.bounds.midX, y: search.bounds.midY), from: search) + let optionsCenter = controller.view.convert(NSPoint(x: options.bounds.midX, y: options.bounds.midY), from: options) + expect(abs(searchCenter.y - optionsCenter.y) < 1, "search and options must share one compact header line") + expect(allViews.compactMap { $0 as? NSTextField }.first { $0.stringValue == "Codex Profiles" }!.isHidden, + "search must take the title's place once there is something to search") + expect(!allViews.contains { $0 is NSPopUpButton || $0 is NSSegmentedControl }, + "nesting and Command-Return replace the profile filter and destination control") let initialRows = descendants(controller.view).compactMap { $0 as? LaunchRowButton } let list = descendants(controller.view).compactMap { $0 as? NSScrollView }.first! let listWidth = list.contentView.bounds.width - expect(initialRows.count == 4, "initialized profiles and all bindings must be rendered") + expect(initialRows.map(\.item) == [.profile("work"), .workspace(first), .workspace(missing), .workspace(last)], + "workspaces must follow their profile, pinned first") expect(list.documentView!.bounds.height <= list.contentView.bounds.height + 1, "a short list must fit without clipping the last row or needing to scroll") - expect(initialRows.allSatisfy { abs($0.frame.width - listWidth) < 1 }, "workspace rows must fill the list width") - let separators = descendants(list).compactMap { $0 as? NSBox }.filter { $0.boxType == .separator } - // Profiles, pinned and other workspaces: only the two unpinned workspaces share a group. - expect(separators.count == 1, "rows within a group must have native separators; headings separate groups") + expect(initialRows.allSatisfy { abs($0.frame.width - listWidth) < 1 }, "rows must fill the list width") + expect(!descendants(list).contains { $0 is GroupDivider }, "one profile group needs no divider") let titleColumn = descendants(initialRows[0]).compactMap { $0 as? NSTextField }.first { $0.stringValue == "work" }! // Labels pad their frames; the alignment rect is where the text starts. let titleX = list.documentView!.convert(titleColumn.alignmentRect(forFrame: titleColumn.frame), from: titleColumn.superview).minX - expect(separators.allSatisfy { - let frame = list.documentView!.convert($0.bounds, from: $0) - return abs(frame.minX - titleX) < 1 && abs(frame.maxX - (listWidth - LaunchRowButton.contentInset)) < 1 - }, "row separators must start at the title column and keep the trailing inset") let profileUsage = descendants(initialRows[0]).compactMap { $0 as? ProfileUsageView }.first! - let profileName = descendants(initialRows[0]).compactMap { $0 as? NSTextField }.first { $0.stringValue == "work" }! - let profileOpen = openButton(in: initialRows[0]) - let nameFrame = initialRows[0].convert(profileName.bounds, from: profileName) + let profileActions = actionsButton(in: initialRows[0]) + let nameFrame = initialRows[0].convert(titleColumn.bounds, from: titleColumn) let usageFrame = initialRows[0].convert(profileUsage.bounds, from: profileUsage) - let openFrame = initialRows[0].convert(profileOpen.bounds, from: profileOpen) - expect(usageFrame.width == ProfileUsageView.columnWidth && nameFrame.maxX <= usageFrame.minX && usageFrame.maxX < openFrame.minX, - "quota must fit beside the profile without obscuring its name or Open button") + let actionsFrame = initialRows[0].convert(profileActions.bounds, from: profileActions) + expect(nameFrame.maxX <= usageFrame.minX && usageFrame.maxX <= actionsFrame.minX && actionsFrame.maxX <= initialRows[0].bounds.maxX, + "quota must fit beside the profile without obscuring its name or actions") + expect(abs(initialRows[0].frame.height - 46) < 1, "profile rows must stay compact") for row in initialRows where row.item.workspace != nil { expect(!descendants(row).contains { $0 is ProfileUsageView }, "workspace rows must not duplicate account quota") let workspace = row.item.workspace! let labels = descendants(row).compactMap { $0 as? NSTextField } let name = labels.first { $0.stringValue == workspace.name }! - let path = labels.first { $0.stringValue == "\(workspace.profile) · \(workspace.displayPath())" }! - expect(abs(row.convert(name.bounds.origin, from: name).x - row.convert(path.bounds.origin, from: path).x) < 1, - "workspace profile and path must align with project title") + let detail = labels.first { $0.stringValue == (workspace.availabilityReason.map { "\($0) · " } ?? "") + workspace.displayPath() }! + expect(!labels.contains { $0.stringValue == workspace.profile }, "a nested workspace must not repeat its profile") let icon = descendants(row).compactMap { $0 as? NSImageView }.first! + expect(abs(list.documentView!.convert(icon.frame, from: icon.superview).minX - titleX) < 1, + "a nested workspace must start at its profile's title column") expect(isMonochrome(icon.contentTintColor), "folder and pin symbols must use native monochrome tint") - let open = openButton(in: row) - expect(open.controlSize == .small, "explicit Open action must use a compact native button") - expect(open.isEnabled == workspace.isAvailable, "Open availability must match workspace availability") - expect(abs(row.frame.height - (workspace.isAvailable ? 48 : 64)) < 1, - "rows must remain compact while leaving space for missing-folder guidance") + if workspace.isAvailable { + expect(abs(baseline(of: name) - baseline(of: detail)) < 1, "a workspace's name and path must share one line") + expect(actionsButton(in: row).alphaValue == 0, "resting rows must keep their actions out of sight") + } else { + expect(baseline(of: name) > baseline(of: detail) + 8, "a missing folder must explain itself on a second line") + expect(actionsButton(in: row).alphaValue == 1, "rows that need repair must always show their actions") + expect(descendants(row).compactMap { $0 as? NSButton }.contains { $0.title == "Locate…" }, "a missing folder must offer to locate it") + } + expect(row.isEnabled == workspace.isAvailable, "launching must match workspace availability") + expect(abs(row.frame.height - (workspace.isAvailable ? 30 : 44)) < 1, + "workspace rows must stay to one line unless they explain a missing folder") } - expect(initialRows.allSatisfy { !$0.isSelectedRow }, "opening must not paint an unsolicited grey selection") - expect(initialRows.first(where: { $0.item.workspace == missing })?.isEnabled == false, "missing workspace must not launch") - expect(descendants(initialRows.first(where: { $0.item.workspace == missing })!).contains { ($0 as? NSButton)?.toolTip?.contains("remove binding") == true }, "missing rows must retain an actions button") + expect(initialRows.allSatisfy { !$0.isSelectedRow }, "opening must not paint an unsolicited selection") expect(controller.handleShortcut(key(125)), "down arrow must be handled") expect(initialRows.first?.item == .profile("work") && initialRows.first?.isSelectedRow == true, - "first down arrow must select the profile before optional workspaces") + "first down arrow must select the profile before its workspaces") expect(controller.handleShortcut(key(125)), "next down arrow must be handled") - expect(initialRows.first(where: { $0.item.workspace == first })?.isSelectedRow == true, - "next down arrow must select the first available workspace") + let firstRow = initialRows.first { $0.item.workspace == first }! + expect(firstRow.isSelectedRow && actionsButton(in: firstRow).alphaValue == 1, + "next down arrow must select the first available workspace and reveal its actions") expect(controller.handleShortcut(key(125)), "second down arrow must be handled") expect(initialRows.first(where: { $0.item.workspace == last })?.isSelectedRow == true, "arrow must skip unavailable workspace") - let ruleBesideSelection = descendants(initialRows.first { $0.item.workspace == last }!.ruleAbove!).compactMap { $0 as? NSBox }.first! - expect(ruleBesideSelection.isHidden, "a rule beside the selected row must step aside for its plate") + expect(actionsButton(in: firstRow).alphaValue == 0, "actions must hide again once the selection moves on") + let footer = allViews.compactMap { $0 as? NSTextField }.first { $0.stringValue.hasPrefix("↩ ") }! + expect(footer.stringValue == "↩ Open last in ChatGPT · ⌘↩ Terminal", "the footer must name what Return and Command-Return open") expect(controller.handleShortcut(key(126)), "up arrow must be handled") - expect(initialRows.first(where: { $0.item.workspace == first })?.isSelectedRow == true, "up arrow must restore prior selection") - expect(!ruleBesideSelection.isHidden, "a rule must return once neither neighbour is highlighted") - let actions = descendants(initialRows.first { $0.item.workspace == first }!).compactMap { $0 as? NSButton }.first { $0.toolTip?.contains("remove binding") == true }! - window.makeFirstResponder(actions) + expect(firstRow.isSelectedRow, "up arrow must restore prior selection") + window.makeFirstResponder(actionsButton(in: firstRow)) expect(!controller.handleShortcut(key(36)), "Return on an actions button must retain its native action") + expect(!controller.handleShortcut(key(36, modifiers: .command)), "Command-Return on a native control must retain native behaviour") expect(!controller.handleShortcut(key(125)), "arrows on a native control must retain native behaviour") controller.focusSearch() expect(initialRows.allSatisfy { !$0.isSelectedRow }, "focusing search on reopening must clear old selection") + expect(footer.stringValue == "↩ Open in ChatGPT · ⌘↩ Terminal", "without a selection the footer must describe both keys") expect(controller.handleShortcut(key(126)), "up arrow must be handled from an unselected list") expect(initialRows.first(where: { $0.item.workspace == last })?.isSelectedRow == true, "first up arrow must select the last available workspace") controller.focusSearch() search.stringValue = "last" expect(search.sendAction(search.action, to: search.target), "native search action must have a receiver") - expect(descendants(controller.view).compactMap { $0 as? LaunchRowButton }.count == 1, "search must replace list with matching workspace") - expect(descendants(controller.view).compactMap { $0 as? LaunchRowButton }.allSatisfy { !$0.isSelectedRow }, - "typing a new search must clear prior keyboard selection") + let searchRows = descendants(controller.view).compactMap { $0 as? LaunchRowButton } + expect(searchRows.count == 1, "search must replace list with matching workspace") + expect(searchRows[0].isSelectedRow, "typing a search must select its first match so Return's target is visible") + expect(descendants(searchRows[0]).compactMap { $0 as? NSTextField }.contains { $0.stringValue == "work" }, + "a match listed without its profile must name the profile") search.stringValue = "" _ = search.sendAction(search.action, to: search.target) expect(store.query.isEmpty && descendants(controller.view).compactMap { $0 as? LaunchRowButton }.count == 4, "native search cancel action must restore all workspaces") + expect(descendants(controller.view).compactMap { $0 as? LaunchRowButton }.allSatisfy { !$0.isSelectedRow }, + "clearing the search must leave the list unselected") search.stringValue = "does-not-exist" _ = search.sendAction(search.action, to: search.target) window.setContentSize(controller.preferredContentSize) controller.view.layoutSubtreeIfNeeded() - let reset = descendants(controller.view).compactMap { $0 as? NSButton }.first { $0.title == "Reset filters" }! - expect(controller.view.convert(reset.bounds, from: reset).minY >= 50, - "the no-match reset button must fit above the footer with padding") - reset.performClick(nil) + let clear = descendants(controller.view).compactMap { $0 as? NSButton }.first { $0.title == "Clear search" }! + expect(controller.view.convert(clear.bounds, from: clear).minY >= 50, + "the no-match button must fit above the footer with padding") + clear.performClick(nil) expect(store.query.isEmpty && descendants(controller.view).compactMap { $0 as? LaunchRowButton }.count == 4, - "reset filters must restore the profile and workspace rows") + "clearing the search must restore the profile and workspace rows") search.stringValue = "last" _ = search.sendAction(search.action, to: search.target) var closed = false @@ -178,11 +187,11 @@ struct MenuInteractionTests { closed = false search.stringValue = "first" _ = search.sendAction(search.action, to: search.target) - let firstRow = descendants(controller.view).compactMap { $0 as? LaunchRowButton }.first! + let firstMatch = descendants(controller.view).compactMap { $0 as? LaunchRowButton }.first! let clickArgs = try await launchArguments(recordedIn: marker, until: { closed }, - "successful explicit Open action must dismiss popover and record its arguments") { openButton(in: firstRow).performClick(nil) } - expect(clickArgs.contains(first.path), "Open must launch its own workspace") - expect(!clickArgs.contains(last.path), "Open must replace the prior launch arguments") + "a successful click must dismiss popover and record its arguments") { firstMatch.performClick(nil) } + expect(clickArgs.contains(first.path), "clicking must launch its own workspace") + expect(!clickArgs.contains(last.path), "clicking must replace the prior launch arguments") closed = false search.stringValue = "last" _ = search.sendAction(search.action, to: search.target) @@ -230,6 +239,14 @@ struct MenuInteractionTests { } expect(borders[0] < 0.5 && borders[1] > 0.5 && borders[2] < 0.5, "custom row decoration must resolve semantic colours again when appearance changes") + // Emphasis colours resolve per appearance: darker in light mode for contrast, lighter in dark mode. + var criticalRed: [CGFloat] = [] + for appearance in [NSAppearance.Name.aqua, .darkAqua] { + NSAppearance(named: appearance)!.performAsCurrentDrawingAppearance { + criticalRed.append(QuotaPalette.critical.usingColorSpace(.sRGB)!.greenComponent) + } + } + expect(criticalRed[0] < 0.1 && criticalRed[1] > 0.3, "quota emphasis must adapt to light and dark appearance") let expired = ProfileUsage.available(CodexRateLimits(windows: [RateLimitWindow(usedPercent: 80, windowDurationMins: nil, resetsAt: 1)]), checkedAt: checkedAt) store.loadPreview([], profiles: ["very-long-profile-name-for-a-client", "work"], usage: [ "work": expired, "very-long-profile-name-for-a-client": .unavailable(checkedAt: checkedAt), @@ -239,13 +256,14 @@ struct MenuInteractionTests { let quotaRows = descendants(controller.view).compactMap { $0 as? LaunchRowButton } expect(descendants(quotaRows[0]).compactMap { $0 as? NSTextField }.contains { $0.stringValue == "Unavailable" }, "missing quota must say Unavailable rather than zero") - expect(openButton(in: quotaRows[0]).isEnabled, "unavailable quota must not disable Open") - expect(descendants(quotaRows[1]).compactMap { $0 as? NSTextField }.contains { $0.stringValue == "—" }, + expect(quotaRows[0].isEnabled, "unavailable quota must not prevent launching") + expect(descendants(quotaRows[1]).compactMap { $0 as? NSTextField }.map(\.stringValue).contains("—"), "a passed reset must not show stale percentages") + expect(descendants(controller.view).filter { $0 is GroupDivider }.count == 1, "separate profiles must be divided into groups") let longName = descendants(quotaRows[0]).compactMap { $0 as? NSTextField }.first { $0.stringValue == "very-long-profile-name-for-a-client" }! expect(longName.lineBreakMode == .byTruncatingTail && longName.toolTip == longName.stringValue, "long profile names must truncate while retaining the full name on hover") - store.loadPreview((0..<12).map { workspace("/projects/project-\($0)") }) + store.loadPreview((0..<16).map { workspace("/projects/project-\($0)") }) window.setContentSize(controller.preferredContentSize) controller.view.layoutSubtreeIfNeeded() let longList = descendants(controller.view).compactMap { $0 as? NSScrollView }.first! @@ -253,39 +271,52 @@ struct MenuInteractionTests { expect(longList.documentView!.bounds.height > longList.contentView.bounds.height, "projects beyond the height limit must remain in the scrollable document") + // A workspace whose profile is missing follows the groups and names its profile. + let orphan = WorkspaceBinding(path: "/projects/orphan", profile: "gone", pathExists: true, profileExists: false) + store.loadPreview([first, orphan], profiles: ["work"]) + let orphanRows = descendants(controller.view).compactMap { $0 as? LaunchRowButton } + expect(orphanRows.map(\.item) == [.profile("work"), .workspace(first), .workspace(orphan)] + && descendants(controller.view).filter { $0 is GroupDivider }.count == 1, + "a workspace without a listed profile must follow the profile groups after a divider") + expect(descendants(orphanRows[2]).compactMap { $0 as? NSTextField }.contains { $0.stringValue == "gone" } && !orphanRows[2].isEnabled, + "a workspace without its profile must name it and refuse to launch") + // Usage readings stream in after opening; they must not rebuild the list. store.loadPreview([first], profiles: ["work", "personal"], usage: ["work": quota]) - let picker = descendants(controller.view).compactMap { $0 as? NSPopUpButton }.first! - let pickerItem = picker.item(at: 1) let stableRow = descendants(controller.view).compactMap { $0 as? LaunchRowButton }.first { $0.item == .profile("work") }! let lowQuota = ProfileUsage.available(CodexRateLimits(windows: [ RateLimitWindow(usedPercent: 95, windowDurationMins: 300, resetsAt: checkedAt.addingTimeInterval(4320).timeIntervalSince1970), ]), checkedAt: checkedAt) store.loadPreview([first], profiles: ["work", "personal"], usage: ["work": lowQuota], readingUsage: ["work"]) let updatedRow = descendants(controller.view).compactMap { $0 as? LaunchRowButton }.first { $0.item == .profile("work") }! - expect(updatedRow === stableRow && picker.item(at: 1) === pickerItem, - "a usage reading must update rows in place without rebuilding the list or the profile filter") + expect(updatedRow === stableRow, "a usage reading must update rows in place without rebuilding the list") let updatedText = descendants(updatedRow).compactMap { $0 as? NSTextField }.map(\.stringValue) - expect(updatedText.contains("5%") && updatedText.contains { $0.hasPrefix("5h limit low · resets in ") }, + expect(updatedText.contains("5%") && updatedText.contains("5h left") && updatedText.contains { $0.hasPrefix("5h limit low · resets in ") }, "the row must show the newer reading and when the low window resets") let refreshingUsage = descendants(updatedRow).compactMap { $0 as? ProfileUsageView }.first! expect(refreshingUsage.arrangedSubviews.allSatisfy { $0.alphaValue < 1 } && refreshingUsage.toolTip!.contains("Refreshing"), "a refresh must dim the previous reading rather than hide it") - expect(descendants(refreshingUsage).contains { $0 is QuotaMeter }, "each quota window must have a meter beside its percentage") // A row whose binding is changing shows progress and refuses launches. store.loadPreview([first, last], profiles: ["work"], usage: ["work": quota], changingPaths: [last.path]) let changingRow = descendants(controller.view).compactMap { $0 as? LaunchRowButton }.first { $0.item.workspace == last }! - expect(!changingRow.isEnabled && openButton(in: changingRow).title == "Updating…" && !openButton(in: changingRow).isEnabled, + expect(!changingRow.isEnabled && descendants(changingRow).compactMap { $0 as? NSTextField }.contains { $0.stringValue == "Updating…" }, "a row being changed must show progress and refuse launches") - expect(descendants(changingRow).compactMap { $0 as? NSButton }.first { $0.toolTip?.contains("remove binding") == true }?.isEnabled == false, - "a row being changed must not accept another change") + expect(!actionsButton(in: changingRow).isEnabled, "a row being changed must not accept another change") controller.focusSearch() _ = controller.handleShortcut(key(125)) _ = controller.handleShortcut(key(125)) _ = controller.handleShortcut(key(125)) expect(changingRow.isSelectedRow == false, "keyboard selection must skip a row being changed") + // The profile's actions list every window, which the row's single figure leaves out. + let usageMenu = controller.actionsMenu(for: .profile("work")) + let usageLines = usageMenu.items.prefix { !$0.isSeparatorItem } + expect(usageLines.map(\.title).first == "Codex CLI usage" && usageLines.allSatisfy { !$0.isEnabled } + && usageLines.contains { $0.title.hasPrefix("5h: 77% left · resets ") } && usageLines.contains { $0.title.hasPrefix("7d: 9% left · resets ") } + && usageLines.contains { $0.title.hasPrefix("Checked ") }, + "profile actions must list each window's remaining quota, reset time and freshness as information") + // Disabled actions stay disabled through AppKit's menu validation. store.loadPreview([first, missing], profiles: ["work", "personal"]) let missingMenu = controller.actionsMenu(for: .workspace(missing)) @@ -303,12 +334,17 @@ struct MenuInteractionTests { let profileMenu = controller.actionsMenu(for: .profile("work")) expect(["Open in ChatGPT", "Open in Terminal", "Add workspace…", "Sign in to Codex CLI…"].allSatisfy { item($0, in: profileMenu).isEnabled }, "profile actions must offer both destinations, a workspace shortcut and CLI sign-in") + let rowWithMenu = descendants(controller.view).compactMap { $0 as? LaunchRowButton }.first { $0.item.workspace == first }! + expect(rowWithMenu.menu(for: NSEvent.mouseEvent(with: .rightMouseDown, location: .zero, modifierFlags: [], timestamp: 0, windowNumber: 0, + context: nil, eventNumber: 0, clickCount: 1, pressure: 1)!)?.items.contains { $0.title == "Copy path" } == true, + "right-clicking a row must offer the same actions as its actions button") // A row action opens the other destination without changing the default. defaults.set(OpenDestination.terminal.rawValue, forKey: "openDestination") let login = FakeLoginItem() let terminalController = WorkspaceMenuViewController(store: store, defaults: defaults, loginItem: login) - _ = terminalController.view + let terminalWindow = NSWindow(contentRect: NSRect(x: 0, y: 0, width: 360, height: 480), styleMask: .borderless, backing: .buffered, defer: false) + terminalWindow.contentViewController = terminalController var terminalClosed = false terminalController.onRequestClose = { terminalClosed = true } let alternate = terminalController.actionsMenu(for: .profile("work")) @@ -318,6 +354,24 @@ struct MenuInteractionTests { } expect(alternateArguments == "app\nwork\n", "Open in ChatGPT must launch ChatGPT while Terminal stays the default") expect(defaults.string(forKey: "openDestination") == OpenDestination.terminal.rawValue, "a row action must not change the default destination") + terminalController.focusSearch() + terminalClosed = false + let commandReturnArguments = try await launchArguments(recordedIn: marker, until: { terminalClosed }, + "Command-Return must dismiss the menu and record its arguments") { + expect(terminalController.handleShortcut(key(36, modifiers: .command)), "Command-Return must be handled from search") + } + expect(commandReturnArguments == "app\npersonal\n", "Command-Return must open the first row in ChatGPT while Terminal is the default") + var returnOpens = item("Return opens in", in: terminalController.settingsMenu()).submenu! + expect(item("Terminal", in: returnOpens).state == .on && item("ChatGPT", in: returnOpens).state == .off, + "the options menu must show which destination Return opens") + returnOpens.performActionForItem(at: returnOpens.indexOfItem(withTitle: "ChatGPT")) + returnOpens = item("Return opens in", in: terminalController.settingsMenu()).submenu! + expect(defaults.string(forKey: "openDestination") == OpenDestination.chatGPT.rawValue && item("ChatGPT", in: returnOpens).state == .on, + "choosing a destination must persist it") + // A launch reports its outcome in the footer until the next reload. + store.loadPreview([first, missing], profiles: ["work", "personal"]) + expect(descendants(terminalController.view).compactMap { $0 as? NSTextField }.contains { $0.stringValue == "↩ Open in ChatGPT · ⌘↩ Terminal" }, + "the footer must follow the chosen destination") // Open at Login reflects and changes the login item. var settings = terminalController.settingsMenu() @@ -442,8 +496,12 @@ struct MenuInteractionTests { private static func descendants(_ view: NSView) -> [NSView] { view.subviews.flatMap { [$0] + descendants($0) } } - private static func openButton(in row: LaunchRowButton) -> NSButton { - descendants(row).compactMap { $0 as? NSButton }.first { ["Open", "Opening…", "Updating…"].contains($0.title) }! + private static func actionsButton(in row: LaunchRowButton) -> NSButton { + descendants(row).compactMap { $0 as? NSButton }.first { $0.toolTip?.hasPrefix("Open elsewhere") == true }! + } + /// A label's first baseline in window coordinates, which run upwards. + private static func baseline(of label: NSTextField) -> CGFloat { + label.convert(label.bounds, to: nil).maxY - label.firstBaselineOffsetFromTop } /// Polls until a condition holds or 10 seconds pass. Work usually settles /// within milliseconds; the bound only absorbs a loaded machine, and the diff --git a/macos/CodexProfilesMenu/Tests/CodexProfilesMenuTests/TestMain.swift b/macos/CodexProfilesMenu/Tests/CodexProfilesMenuTests/TestMain.swift index 385de4b..6918a26 100644 --- a/macos/CodexProfilesMenu/Tests/CodexProfilesMenuTests/TestMain.swift +++ b/macos/CodexProfilesMenu/Tests/CodexProfilesMenuTests/TestMain.swift @@ -313,13 +313,13 @@ struct CodexProfilesMenuTests { await restored.refresh() expect(restored.isPinned(alpha), "pin was not persisted") expect(restored.filteredWorkspaces == [alpha, gamma, beta], "restored pin ordering differs") - restored.selectedProfile = "work" + expect(restored.filteredTargets == [.profile("default"), .profile("personal"), .workspace(beta), .profile("work"), .workspace(alpha), .workspace(gamma)], + "each profile must lead its own workspaces, pinned first and then most recent") restored.query = "ALPHA" - expect(restored.filteredWorkspaces == [alpha], "profile and search filters were not combined") - restored.query = "beta" - expect(restored.filteredWorkspaces.isEmpty, "search bypassed the selected profile") - restored.selectedProfile = nil - expect(restored.filteredWorkspaces == [beta], "clearing profile filter did not restore search result") + expect(restored.filteredWorkspaces == [alpha] && restored.filteredTargets == [.workspace(alpha)], + "a search must ignore case and list a match without its unmatched profile") + restored.query = "personal" + expect(restored.filteredTargets == [.profile("personal"), .workspace(beta)], "a profile search must keep that profile's workspaces") restored.query = "" restored.togglePin(alpha) expect(restored.filteredWorkspaces == [gamma, beta, alpha], "unpin did not restore recency ordering") @@ -334,7 +334,6 @@ struct CodexProfilesMenuTests { try fixture.writeWorkspaces([alpha]) let store = fixture.store() await store.refresh() - store.selectedProfile = "work" try fixture.write("", to: "hold-refresh") try FileManager.default.removeItem(at: fixture.url("refresh-started")) let first = Task { await store.refresh() } @@ -353,16 +352,14 @@ struct CodexProfilesMenuTests { expect(firstSucceeded && secondSucceeded, "queued refresh did not finish") expect(!FileManager.default.fileExists(atPath: fixture.url("refresh-overlap").path), "workspace loads overlapped") expect(try fixture.read("refresh-calls").split(whereSeparator: \.isNewline).count == 3, "overlapping requests did not produce one serial reload") - expect(store.selectedProfile == "work", "valid profile filter was cleared") try fixture.write("registry unavailable", to: "refresh-error") expect(!(await store.refresh()), "failed refresh reported success") expect(store.phase == .ready && store.workspaces == [alpha], "failed refresh discarded loaded content") expect(!store.isRefreshing && store.statusMessage.contains("registry unavailable"), "refresh error was not visible") try FileManager.default.removeItem(at: fixture.url("refresh-error")) - store.selectedProfile = "personal" try fixture.write("default\nwork\n", to: "profiles") await store.refresh() - expect(store.selectedProfile == nil, "removed profile filter was retained") + expect(store.profiles == ["default", "work"] && !store.filteredTargets.contains(.profile("personal")), "a removed profile was retained") try fixture.write("not json", to: "workspaces.json") expect(!(await store.refresh()), "invalid JSON was accepted") expect(store.workspaces == [alpha] && store.statusMessage.contains("Could not read workspace bindings"), "invalid JSON lost content or useful error") @@ -491,9 +488,8 @@ struct CodexProfilesMenuTests { expect(await store.refresh(), "profiles could not load without workspace bindings") expect(store.filteredTargets == [.profile("default"), .profile("personal"), .profile("work")], "all initialized profiles must be offered before any folders are added") - store.selectedProfile = "work" store.query = "WORK" - expect(store.filteredTargets == [.profile("work")], "profile search and filtering must work without folders") + expect(store.filteredTargets == [.profile("work")], "profile search must work without folders") expect(await store.launch(.profile("work"), in: .chatGPT), "profile-only launch failed") expect(try fixture.read("arguments").hasSuffix("app\u{0}work\u{0}\n"), "profile launch must not fabricate a workspace argument") diff --git a/macos/README.md b/macos/README.md index 97c1d04..8dc2b54 100644 --- a/macos/README.md +++ b/macos/README.md @@ -4,8 +4,8 @@ The native menu-bar companion bundles the existing `codex-profile` engine. It runs on macOS 13 or newer, on Apple silicon and Intel. It requires neither Swift nor a separate `codex-profile` installation on the user's Mac. -Drag **Codex Profiles.app** to **Applications**, open it, and choose -**Open** beside an existing profile. If none exists, choose **Create profile…** +Drag **Codex Profiles.app** to **Applications**, open it, and click an +existing profile. If none exists, choose **Create profile…** and enter a name such as `work` or `personal`. A project folder is not required. The app opens its menu when you launch it. **New profile…** is also in its gear menu. **Add workspace…** optionally binds a project folder to a profile for a @@ -30,25 +30,31 @@ a server-side account boundary. ## Menu and keyboard -The menu uses system search, a profile filter and a ChatGPT/Terminal -destination control. Profiles appear first and can open without a folder. -Pinned projects follow; other projects follow their last successful launch. -Workspace rows show the project name, profile and folder, -with an explicit **Open** button and an actions menu. Missing folders and -profiles show the reason and retain actions for repair or removal. Refresh +The menu is a single search field above a list. Each profile leads its own +group and opens without a folder. Its projects sit beneath it on one line +each, with the folder path: pinned projects first, then the rest by their +last successful launch. Projects whose profile is missing follow the groups. +Click a row to open it; its ⋯ actions button appears on hover or selection, +and right-click shows the same actions. Missing folders and profiles show the +reason, keep their actions visible and offer **Locate…** for a moved folder. Refresh failures preserve loaded content while retaining committed binding changes. While a binding change is in progress, its row shows **Updating…** and cannot open, so it never launches the previous profile. Every row's actions menu offers **Open in ChatGPT** and **Open in Terminal**, -which use that destination once without changing the default. Profile rows -also offer **Add workspace…** for that profile and **Sign in to Codex CLI…**. +which use that destination once without changing the default. **Return opens +in** in the gear menu sets the default; ChatGPT is the default until you +change it. Profile rows also list each Codex window with its reset time, and +offer **Add workspace…** for that profile and **Sign in to Codex CLI…**. Actions that cannot apply, such as revealing a missing folder, are disabled. -Search receives focus when the menu opens. ↑/↓ selects available profiles or -projects; Return opens the selection, or the first available search result. -⌘1–9 opens the corresponding visible row, ⌘K focuses search, and ⌘R refreshes. -Escape clears search before closing. Successful launches close the popover. +Search receives focus when the menu opens. Typing selects the first +available match. ↑/↓ selects available profiles or projects; Return opens the +selection, or the first available row, and ⌘Return opens it in the other +destination, as ⌘-click does. The footer says which destination each key +uses. ⌘1–9 opens the corresponding visible row, ⌘K focuses search, and ⌘R +refreshes. Escape clears search before closing. Successful launches close the +popover. Profile-only launches start in the home directory. Adding a project shortcut is a separate action; creating a profile never opens a folder picker unless @@ -56,15 +62,17 @@ you explicitly started **Add workspace…**. ## Codex usage beside each profile -The **Codex left** column shows the percentage remaining in each reported -quota window, with a small meter beside it. Window labels come from the -response: for example, `5h` and `7d`, or `15m` when that is the actual -duration. At 25% or less a meter turns orange, and at 10% or less it and its -number turn red; the number always carries the value. A low window also -replaces the row's description with its reset time, such as -`5h limit low · resets in 1h 12m`. Hover a reading for each reset time and -when it was checked. Missing limits show **Unavailable**; expired readings -show a dash until refreshed. Neither state disables **Open**. +Each profile row shows its tightest reported quota window: the percentage +remaining, the window's duration, such as `5h left`, and a ring filled with +the remaining share. Window labels come from the response: for example, `5h` +and `7d`, or `15m` when that is the actual duration. At 25% or less the ring +and number turn orange, and at 10% or less they turn red; the number always +carries the value. A low window also replaces the row's description with its +reset time, such as `5h limit low · resets in 1h 12m`. The profile's ⋯ menu +lists every window with its remaining share and reset time, and when it was +checked; hover a reading for the same detail. Missing limits show +**Unavailable**; expired readings show a dash until refreshed. Neither state +prevents opening the profile. Usage belongs to each profile's **Codex CLI** sign-in. Desktop sign-in can use a different account; the companion does not compare accounts. Sign in @@ -162,8 +170,8 @@ with sample quota values for layout review. They use an opaque system backdrop for layout review; live translucency is provided by NSPopover and depends on macOS appearance and accessibility settings. -Native profile and workspace menu in light appearance -Native profile and workspace menu in dark appearance +Native profile and workspace menu in light appearance +Native profile and workspace menu in dark appearance See the [design notes](CodexProfilesMenu/DESIGN.md) for Apple guidance and interaction behaviour. Re-render the previews after changing the view: From 41518b2e7a6949c30edaa44fd0497170a0975a7a Mon Sep 17 00:00:00 2001 From: Chai Pin Zheng Date: Tue, 27 Oct 2026 19:44:10 +0800 Subject: [PATCH 2/3] frontend(fix): let the store say when its status is news The footer decided whether to show the Return and Command-Return hints by comparing the status message with two literals that the store also set. Rewording either side would have left the footer stuck on a stale message without any error. The store now keeps its resting prompts in one place and exposes hasStatusNews, which the footer uses. A store test covers the resting prompt and a reported outcome. Co-Authored-By: Claude Opus 5.5 --- .../CodexProfilesMenu/WorkspaceMenuView.swift | 3 +-- .../CodexProfilesMenu/WorkspaceStore.swift | 15 ++++++++++----- .../Tests/CodexProfilesMenuTests/TestMain.swift | 3 +++ 3 files changed, 14 insertions(+), 7 deletions(-) diff --git a/macos/CodexProfilesMenu/Sources/CodexProfilesMenu/WorkspaceMenuView.swift b/macos/CodexProfilesMenu/Sources/CodexProfilesMenu/WorkspaceMenuView.swift index 55f4479..74d8296 100644 --- a/macos/CodexProfilesMenu/Sources/CodexProfilesMenu/WorkspaceMenuView.swift +++ b/macos/CodexProfilesMenu/Sources/CodexProfilesMenu/WorkspaceMenuView.swift @@ -287,9 +287,8 @@ final class WorkspaceMenuViewController: NSViewController { /// The footer says what Return and Command-Return do until the store has /// news to report, such as a launch or a refresh failure. private func updateFooter() { - let idle = ["Choose a profile or workspace", "Create a profile to get started"].contains(store.statusMessage) let other = "⌘↩ \(destination.alternate.label)" - if !idle { + if store.hasStatusNews { footerLabel.stringValue = store.statusMessage } else if let item = rows.first(where: { $0.item.id == selectedID })?.item { footerLabel.stringValue = "↩ Open \(item.name) in \(destination.label) · \(other)" diff --git a/macos/CodexProfilesMenu/Sources/CodexProfilesMenu/WorkspaceStore.swift b/macos/CodexProfilesMenu/Sources/CodexProfilesMenu/WorkspaceStore.swift index 8b82f92..011f42f 100644 --- a/macos/CodexProfilesMenu/Sources/CodexProfilesMenu/WorkspaceStore.swift +++ b/macos/CodexProfilesMenu/Sources/CodexProfilesMenu/WorkspaceStore.swift @@ -32,7 +32,10 @@ final class WorkspaceStore { private(set) var guardMode = "off" private(set) var isRefreshing = false private(set) var launchingID: LaunchTarget.ID? - private(set) var statusMessage = "Choose a profile or workspace" + private(set) var statusMessage = WorkspaceStore.readyMessage + /// Whether the status reports news, such as a launch or a failure, + /// rather than the resting prompt that leaves room for key hints. + var hasStatusNews: Bool { statusMessage != Self.readyMessage && statusMessage != Self.emptyMessage } private let client: CLIClient private let defaults: UserDefaults @@ -237,9 +240,7 @@ final class WorkspaceStore { guardMode = response.guardMode hasLoaded = true phase = .ready - statusMessage = profiles.isEmpty && workspaces.isEmpty - ? "Create a profile to get started" - : "Choose a profile or workspace" + statusMessage = restingMessage return true } catch { if !hasLoaded { phase = .failed(error.localizedDescription) } @@ -466,11 +467,15 @@ final class WorkspaceStore { guardMode = "warn" hasLoaded = true phase = .ready - statusMessage = profiles.isEmpty && bindings.isEmpty ? "Create a profile to get started" : "Choose a profile or workspace" + statusMessage = restingMessage notify() } #endif + private static let readyMessage = "Choose a profile or workspace" + private static let emptyMessage = "Create a profile to get started" + private var restingMessage: String { profiles.isEmpty && workspaces.isEmpty ? Self.emptyMessage : Self.readyMessage } + private func notify() { onChange?() } diff --git a/macos/CodexProfilesMenu/Tests/CodexProfilesMenuTests/TestMain.swift b/macos/CodexProfilesMenu/Tests/CodexProfilesMenuTests/TestMain.swift index 6918a26..e8e7b22 100644 --- a/macos/CodexProfilesMenu/Tests/CodexProfilesMenuTests/TestMain.swift +++ b/macos/CodexProfilesMenu/Tests/CodexProfilesMenuTests/TestMain.swift @@ -306,6 +306,9 @@ struct CodexProfilesMenuTests { let store = fixture.store() expect(await store.refresh(), "store did not refresh") expect(store.guardMode == "warn", "workspace guard mode was not retained") + expect(!store.hasStatusNews, "a loaded store must rest on its prompt so the footer can show key hints") + store.showMessage("Copied workspace path") + expect(store.hasStatusNews, "a reported outcome must count as news") expect(store.filteredWorkspaces == [gamma, beta, alpha], "recent workspaces were not ordered") store.togglePin(alpha) expect(store.filteredWorkspaces == [alpha, gamma, beta], "pinned workspace did not precede recents") From 6db4cd98bacd0cb2d65d7012d77ff9626fce3415 Mon Sep 17 00:00:00 2001 From: Chai Pin Zheng Date: Tue, 27 Oct 2026 20:20:46 +0800 Subject: [PATCH 3/3] frontend(fix): keep the reset time for a passed window in profile actions MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The profile's actions listed each window with its reset time, except a window whose reset had already passed, which said only "awaiting a fresh reading". It now reads "5h: reset at 14:20 · awaiting a fresh reading", worded in the past like the tooltip. An interaction test covers it. Co-Authored-By: Claude Opus 5.5 --- .../Sources/CodexProfilesMenu/WorkspaceMenuView.swift | 7 ++++--- .../CodexProfilesMenuTests/MenuInteractionTests.swift | 6 ++++++ 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/macos/CodexProfilesMenu/Sources/CodexProfilesMenu/WorkspaceMenuView.swift b/macos/CodexProfilesMenu/Sources/CodexProfilesMenu/WorkspaceMenuView.swift index 74d8296..c9e6ff0 100644 --- a/macos/CodexProfilesMenu/Sources/CodexProfilesMenu/WorkspaceMenuView.swift +++ b/macos/CodexProfilesMenu/Sources/CodexProfilesMenu/WorkspaceMenuView.swift @@ -472,9 +472,10 @@ final class WorkspaceMenuViewController: NSViewController { if case let .available(limits, checkedAt) = usage.reading { lines += limits.windows.enumerated().map { index, window in let name = window.durationLabel ?? "Limit \(index + 1)" - guard !window.hasReset(at: now) else { return "\(name): awaiting a fresh reading" } - let reset = window.resetsAt.map { " · resets \(UsageFormat.clock(Date(timeIntervalSince1970: $0), relativeTo: now))" } ?? "" - return "\(name): \(window.remainingPercent)% left\(reset)" + let clock = window.resetsAt.map { UsageFormat.clock(Date(timeIntervalSince1970: $0), relativeTo: now) } + // A passed reset keeps its time, worded in the past like the tooltip. + guard !window.hasReset(at: now) else { return "\(name): reset at \(clock ?? "an unknown time") · awaiting a fresh reading" } + return "\(name): \(window.remainingPercent)% left" + (clock.map { " · resets \($0)" } ?? "") } lines.append((usage.isRefreshing ? "Refreshing… " : "") + "Checked \(UsageFormat.clock(checkedAt, relativeTo: now))") } else if usage.reading == nil || usage.isRefreshing { diff --git a/macos/CodexProfilesMenu/Tests/CodexProfilesMenuTests/MenuInteractionTests.swift b/macos/CodexProfilesMenu/Tests/CodexProfilesMenuTests/MenuInteractionTests.swift index 8662d74..069296b 100644 --- a/macos/CodexProfilesMenu/Tests/CodexProfilesMenuTests/MenuInteractionTests.swift +++ b/macos/CodexProfilesMenu/Tests/CodexProfilesMenuTests/MenuInteractionTests.swift @@ -316,6 +316,12 @@ struct MenuInteractionTests { && usageLines.contains { $0.title.hasPrefix("5h: 77% left · resets ") } && usageLines.contains { $0.title.hasPrefix("7d: 9% left · resets ") } && usageLines.contains { $0.title.hasPrefix("Checked ") }, "profile actions must list each window's remaining quota, reset time and freshness as information") + let passed = ProfileUsage.available(CodexRateLimits(windows: [ + RateLimitWindow(usedPercent: 60, windowDurationMins: 300, resetsAt: checkedAt.addingTimeInterval(-60).timeIntervalSince1970), + ]), checkedAt: checkedAt) + store.loadPreview([first, last], profiles: ["work"], usage: ["work": passed]) + expect(controller.actionsMenu(for: .profile("work")).items.contains { $0.title.hasPrefix("5h: reset at ") && $0.title.hasSuffix(" · awaiting a fresh reading") }, + "a window whose reset has passed must keep its reset time and say it awaits a fresh reading") // Disabled actions stay disabled through AppKit's menu validation. store.loadPreview([first, missing], profiles: ["work", "personal"])