Commit Graph
1140 Commits
Author SHA1 Message Date
Juan Denis dcbb2228ac fix(frontend): security overview tiles and hardening rows on phones 2026-11-03 13:16:20 -05:00
Juan Denis 934dedcb3c feat(frontend): 40px touch targets on coarse pointers 2026-11-03 13:14:47 -05:00
Juan Denis 4f4cbcc7cb chore(frontend): regenerate English locale for new strings 2026-11-03 13:11:10 -05:00
Juan Denis 4dcb6c09ec feat(frontend): page header wraps title and actions on phones 2026-11-03 13:11:10 -05:00
Juan Denis 045162244e fix(frontend): keyword colours in tab-scroll fade masks 2026-11-03 13:11:10 -05:00
Juan Denis c2a386c14c fix(frontend): use the status-variant mixin for recipe accent states 2026-11-03 13:11:10 -05:00
Juan Denis 5d2c65bf5a feat(frontend): DataTable card mode under 640px with responsive opt-out 2026-11-03 13:11:06 -05:00
Juan Denis 35394db72c fix(frontend): notifications page uses the shell's fluid width 2026-11-03 13:08:02 -05:00
Juan Denis 4474a4033a fix(frontend): settings tab list scrolls instead of wrapping on narrow screens 2026-11-03 13:08:02 -05:00
Juan Denis 184870a8bd feat(frontend): shared scrolling tab strip with edge fades and active-tab reveal 2026-11-03 13:08:02 -05:00
Juan Denis a2635f424b fix(frontend): compact the import wizard stepper on phones 2026-11-03 13:05:35 -05:00
Juan Denis e6b6b94d0d fix(frontend): show a single empty state on the firewall tab 2026-11-03 13:05:03 -05:00
Juan Denis 07e2c76b07 fix(frontend): send /git-ext to the git extension's marketplace entry when not installed 2026-11-03 13:04:42 -05:00
Juan Denis 34bc7d081e fix(frontend): branch incident copy on alert type and drop null placeholders 2026-11-03 13:04:09 -05:00
Juan Denis f384d1851d fix(frontend): recipes page gutter, intro banner, filter chip tokens and memory units 2026-11-03 13:02:57 -05:00
Juan Denis 07ee00ae5d fix(frontend): give the app map canvas a definite height and theme its controls 2026-11-03 12:59:18 -05:00
Juan DenisandClaude Opus 5.5 b95c516c76 fix(frontend): redesign mobile intro banner, segmented step strip, info sheet and card header chips
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-03 09:10:20 -05:00
Juan Denis a4ea3fccbd fix(frontend): mobile layout for intro strip, info tips and card headers
- IconStepStrip stays a compact horizontal row on narrow screens (smaller
  tiles, label under icon, horizontal chevrons)
- tip-card-head stacks top-to-bottom with a smaller illustration
- InfoTip clamps to the viewport (collision padding clears the sticky
  header, flips below when no room above, max-height scroll)
- card headers wrap on narrow screens; security subtitle gets its own line
2026-11-03 08:51:20 -05:00
Juan Denis bddca28881 feat(frontend): less text, more icons - shared InfoTip, IconStepStrip and illustrations
Move prose into tap-friendly (i) tips and replace intro paragraphs with
icons, step strips and chips across settings, security, add-server,
server detail, proxy, backups, downloads, imports, marketplace and
templates.
2026-11-03 01:45:21 -05:00
Juan Denis ac61839459 fix(frontend): replace lucide brand icons removed in v1 with react-icons 2026-11-02 21:08:15 -05:00
Juan Denis 53639f7eae fix(frontend): move non-component exports out of component files
Clears the new react-refresh/only-export-components warnings so the
frontend dependency group bump passes lint.
2026-11-02 20:35:56 -05:00
Juan Denis a8fb879be8 Stop the speed-test poll when leaving Monitoring
The wait loop kept polling for up to 90s after unmount and toasted
'Speed test complete' on whatever page came next.
2026-10-26 01:04:25 -04:00
Juan Denis f116accbb8 Map setup status in one place
checkSetupStatus and refreshSetupStatus kept separate copies of the
same mapping, and the refresh copy had already lost defaultLanguage.
2026-10-26 01:02:42 -04:00
Juan Denis 0704c42daa Drop unused useLogs and logsSourceLabel
Nothing imports either; useServiceLogStream replaced the hook, which
also left loading stuck on a read error.
2026-10-26 01:02:37 -04:00
Juan Denis cb1422f34f Log out only when the refresh token is rejected
Any failed refresh (offline, 5xx, 429) cleared both tokens, and each
expired request started its own refresh, so a burst of 401s could
trip the refresh rate limit and log the tab out. Page load also wiped
tokens on any /auth/me failure. Share one in-flight refresh, end the
session only on a 401/422 from /auth/refresh or /auth/me, and let
transient failures surface as errors with the tokens intact.
2026-10-26 00:46:13 -04:00
Juan Denis 475add2674 Validate Postgres helper SQL and report user errors
pg_create_database/user and pg_grant/revoke built superuser SQL from
raw names and passwords, unlike the MySQL helpers beside them. A quote
in a password broke CREATE USER, and the create routes ignored that
and returned credentials for a user that did not exist. Validate
identifiers and privilege lists, escape the password, and surface a
failed user as user_error instead of fake credentials.
2026-10-26 00:43:13 -04:00
Juan Denis 8ab5ab1bfc Stop SSO from auto-creating developer accounts
Auto-provision defaulted on with role developer and no domain filter,
so enabling GitHub login for yourself let any GitHub user sign up and
open remote terminals, while password registration stayed closed.
Default to off and viewer; turning it on stays an explicit choice.
2026-10-26 00:36:57 -04:00
Juan Denis 7249d2247b Drop plan citations from the controls styles 2026-10-25 23:27:17 -04:00
Juan Denis f2f9ec7267 Polish stepper rail and radio card selection
The vertical stepper rail floated between steps instead of joining the
markers, and the current step borrowed the focus ring. Radio cards
showed a radio dot beside the icon; the card already marks selection,
so the radio becomes a check badge in the corner.
2026-10-25 23:18:24 -04:00
Juan Denis 7c8519772f Add accessible form controls and field wiring
FormField now hands its control the id, aria-describedby, aria-invalid
and aria-required through context, so every settings form announces
its hint and validation without per-call wiring. IconButton gets a real
tooltip instead of title=, ProgressBar is a labelled progressbar with
tones and an indeterminate state, and Button takes `loading` without
changing width.

New controls the panel lacked: NumberField, Combobox (single, multiple,
creatable), TagInput, Calendar with DatePicker and DateRangePicker,
PinInput, Slider, RadioGroup, Stepper, TreeView, and FileDropzone with
FileUploadList. Rounding, date and file-type rules live in lib/ with
unit tests. All of them render on /style-guide/controls.
2026-10-25 23:18:24 -04:00
darren 228cfbf92f fix: show remote images by name, size and date on the server Docker tab (#186) 2026-10-25 23:18:07 -04:00
Juan Denis d00c4a72ea fix: bind file editor previews to their storage target 2026-10-24 15:00:57 -04:00
Juan Denis e955134e41 feat: run approved assistant deployments through persistent recipe operations 2026-10-24 06:30:26 -04:00
Juan Denis fd4795a376 fix: preserve search focus and ignore stale list responses 2026-10-24 06:29:24 -04:00
Juan Denis ada1276d39 feat: add pinned preview deployment controls and queued lifecycle feedback 2026-10-24 06:23:06 -04:00
Juan Denis 355157856f feat: add effective environment inspector with browser regression checks 2026-10-24 06:02:51 -04:00
Juan Denis d4f6b2af55 feat: expose value-free effective environment provenance through app access boundary 2026-10-24 05:58:02 -04:00
Juan Denis 0894b8ff5b fix: require provisioned runtime before advertising previews 2026-10-24 05:56:04 -04:00
Juan Denis ac0871c016 fix: start agent maintenance only in the guarded runtime phase 2026-10-24 05:14:36 -04:00
Juan Denis dd93f01fd6 refactor: keep File Manager download operations in the action hook 2026-10-24 05:02:47 -04:00
Juan Denis a853c91d61 fix: preserve File Manager deep links on initial mount 2026-10-24 04:54:38 -04:00
Juan Denis 3c5b948f2e test: enforce core boundaries and document extension rules 2026-10-24 04:48:54 -04:00
Juan Denis b534ee2baf refactor: split File Manager state and views with regression guards 2026-10-24 04:44:18 -04:00
Juan Denis e7ba1c2a89 refactor: route file operations through capability-checked adapters 2026-10-24 04:31:28 -04:00
Juan Denis fe42d19048 Feature templates the registry marks as featured
The Templates page only featured a hard-coded list, so `featured: true`
in a template (Prompture Hub, Torre) never reached the Featured-first
view. The page now honors the flag alongside the list, and bundled
templates carry it into the catalog and the published index.
2026-10-11 16:41:38 -04:00
Juan Denis e49c627640 Let memoized file rows skip unrelated re-renders
FileRow and FileCard were wrapped in memo, but every handler passed to
them was re-created on each render, so a keystroke or a selection
re-rendered every row of a large directory. useStableHandler gives the
rows fixed handler identities that still run the latest code.
2026-10-10 22:38:21 -04:00
Juan Denis 540b86c445 Give each schedule picker its own field ids
The picker hardcoded ids like sp-hour, so two on one page (one per
schedule card) produced duplicate ids and every label pointed at the
first picker's field.
2026-10-10 22:35:53 -04:00
Juan Denis 73a93a7b36 Let labels name the resource and server pickers
The pickers dropped an id, so the five labels above them named
nothing. They now put it on the trigger button; clicking the label
opens the picker. Ratchet 46 -> 41.
2026-10-10 22:35:28 -04:00
Juan Denis f033edb70d Use the shared uptime formatter on monitor pages
Monitors and MonitorDetail each carried a copy of formatUptimePercent.
2026-10-10 22:28:16 -04:00
Juan Denis c7a50510c7 Format build and backup durations through intl
Three hand-rolled copies printed untranslated "3m 0s" and never
reached hours ("75m 0s"). They now use the intl formatter ("1h 15m",
in the panel language), keeping each caller's placeholder. The cron
and deploy-console formats with tenths of a second stay as they are.
2026-10-10 22:27:17 -04:00