Apps UX improvements#410
Open
krokicki wants to merge 16 commits into
Open
Conversation
Covers four changes: paste-URL revision split, launch-page breadcrumbs, catalog install count, and short "Commit" display/rename. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
When adding an app, pasting a URL copied from a GitHub branch/tag view (…/tree/<ref>) now moves the ref into the Revision box and leaves the URL field bare, instead of burying the ref in the URL. Add splitGithubRef helper (reusing parseGithubUrl) with unit tests; bare and SSH URLs are untouched. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
The app detail page now renders a 7-char monospace commit SHA, formatted identically to the Job page. Both labels are renamed to "Commit" (Job page "Version" and app page "App commit"). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
The catalog now reports install_count per listing — the number of distinct users who currently have the app installed — computed with one grouped COUNT over user_apps, joined to listings by (url, manifest_path). No migration or counter to maintain. Shown as a sortable "Installs" column in the catalog table view and a row on the listing detail page. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
The launch page now has a file-browser-style breadcrumb trail (apps-home icon › App Name › entry-point) in place of the back-arrow header, so the user can jump back to the app level or the top apps page. Origin is inferred from install status: installed apps link back to My Apps and their detail page; uninstalled apps link back to the App Catalog and their listing. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
AppDetail and ListingDetail now use the same file-browser-style breadcrumb header as the launch page (apps-home icon › name) in place of the back-arrow header, keeping their action buttons and badges. Home links to My Apps and the App Catalog respectively. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
The launch-page breadcrumbs now follow the actual navigation origin, carried in React Router location state (not the URL): launching from My Apps records the My Apps origin, launching from a catalog listing records the App Catalog origin and links the app-name segment back to that listing — even when the app is also installed. On reload/direct navigation, where state is lost, the previous install-status inference is used as a fallback. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
The Apps tab rail highlighted My Apps on every launch page. It now reads the launch origin from navigation state, so a launch started from the App Catalog keeps the App Catalog tab selected. Falls back to My Apps when state is absent (reload/direct navigation), matching the breadcrumb behavior. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Removes the wide Repository column so each catalog entry fits on a single row; the repo is still reachable from the listing detail page. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
After the Repository column was removed, the fixed fraction template left the Sharer column oversized and Description cramped. Size Sharer, Shared on, Installs, Status, and Actions to fixed widths that fit their content, and let Name and Description share the remaining space with Description dominant. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
When a manifest's repo_url was a bare GitHub URL (no /tree/branch), the "separate code repo" check compared it against the branch-carrying stored app URL, so they never matched. Same-repo apps on a non-default branch were treated as having a separate code repo and ran from that repo's default branch (e.g. master) instead of the app's branch. Compare repo identity (owner/repo) via same_github_repo(), ignoring branch, so a bare repo_url for the same repo is not mistaken for a separate one. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
The working_dir option that ran from the manifest's directory inside the clone is now named "manifest" (the new default for non-container runnables). "repo" is reintroduced to always run from the clone root, ignoring the manifest's subdirectory — useful for a manifest nested in a monorepo whose command must run from the top of the project. The cached clone is now bind-mounted into containers for both "manifest" and "repo" (anything but "work"). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Previously the separate-repos case (manifest and code in different repos) ran 'manifest' from the clone root, while the same-repo case ran from the manifest's subdirectory. Compute manifest_suffix once from manifest_path so both cases behave identically. Not backwards compatible: a separate-repos app whose manifest lives in a subdirectory now cd's into repo/<subdir> instead of repo/. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Member
Author
|
TODO:
|
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
A set of small, independent quality-of-life improvements to the Apps feature — catalog, launch flow, and the app/listing/job detail pages. Each ships as its own commit; the four core items are captured in
docs/superpowers/specs/2026-07-18-apps-improvements-design.md.Navigation: breadcrumbs across the Apps pages
The launch page and the app/listing detail pages now show a breadcrumb trail (apps-home icon → app → entry point,
›-delimited) in place of the old back-arrow + title header, via a newAppBreadcrumbscomponent.Catalog
user_apps(groupedCOUNTby url + manifest path, joined in memory) — no new column, no migration, no counter to keep in sync.Add-app flow
Pasting a GitHub URL that embeds a branch/tag (e.g.
.../tree/my-branch) now splits the ref into the Revision field automatically, leaving a bare repo URL in the URL field. A pasted ref is authoritative and overwrites the Revision box; typing a bare URL is undisturbed. Backed by a new pure helpersplitGithubRef.Commit display
Standardized the commit SHA display: the app page now shows the short 7-char SHA (matching the job page) and both the "App commit" and job-page "Version" labels are renamed to Commit.
Working directory: new
repooptionThe
working_dirvalue that ran from the manifest's directory inside the clone is renamed tomanifest(the new default for non-container runnables).repois reintroduced to always run from the clone root, ignoring the manifest's subdirectory — useful for a manifest nested in a monorepo whose command must run from the top of the project. The cached clone is now bind-mounted into containers for bothmanifestandrepo(anything butwork).Not backwards compatible: in the separate-repos case (manifest and code in different repos),
manifestnowcds intorepo/<manifest_path>for consistency with the same-repo case, where it previously ran from the clone root.FG_MANIFEST_DIR(added onmain) is reconciled with the rename and likewise points atrepo[/manifest_path].Testing
splitGithubRef(bare URL,/tree/<branch>,/tree/main,.gitsuffix, non-GitHub string) and component tests forAppBreadcrumbs.@StephanPreibisch @JaneliaSciComp/fileglancer