Skip to content

feat: app settings#52

Merged
jvxz merged 28 commits intomainfrom
feat/app-settings
May 6, 2026
Merged

feat: app settings#52
jvxz merged 28 commits intomainfrom
feat/app-settings

Conversation

@jvxz
Copy link
Copy Markdown
Owner

@jvxz jvxz commented May 6, 2026

No description provided.

@jvxz jvxz linked an issue May 6, 2026 that may be closed by this pull request
@cloudflare-workers-and-pages
Copy link
Copy Markdown

cloudflare-workers-and-pages Bot commented May 6, 2026

Deploying with  Cloudflare Workers  Cloudflare Workers

The latest updates on your project. Learn more about integrating Git with Workers.

Status Name Latest Commit Preview URL Updated (UTC)
✅ Deployment successful!
View logs
magi 8321cef Commit Preview URL

Branch Preview URL
May 06 2026, 01:03 AM

@greptile-apps
Copy link
Copy Markdown

greptile-apps Bot commented May 6, 2026

Greptile Summary

This PR introduces an app settings system: a persistent useLocalStorage-backed plugin, a typed constants file for categories and metadata, a tabbed settings dialog with sidebar search, and new form primitives for switches and autocomplete selects.

  • app/constants/settings.ts defines Settings, DEFAULT_SETTINGS, SETTINGS_CATEGORY_METADATA, and SETTINGS_ITEM_METADATA with well-typed utility types to keep all three in sync.
  • app/components/form/primitive.vue gains overrideable label and error slots, enabling SettingsFormPrimitive to inject a description line without reimplementing the base layout.
  • app/components/settings/dialog/sidebar.vue adds live category search backed by useFilter from reka-ui, auto-focusing the input on typing.

Confidence Score: 5/5

Safe to merge; changes are self-contained to the new settings subsystem and do not touch existing runtime paths.

The plugin, composables, constants, and UI components are all additive. The one simplification to an existing utility (objectValues) is safe because no callers pass arrays. The only finding is a style inconsistency in switch.vue that has no runtime impact.

No files require special attention.

Important Files Changed

Filename Overview
app/components/settings/form/switch.vue New switch form component; duplicates the label+description template already provided by SettingsFormPrimitive instead of delegating to it like autocomplete.vue does.
shared/utils/object.ts Simplified objectValues to a plain generic function; loses the old tuple/array overload, but no callers in the repo use it with arrays so the change is safe.
app/constants/settings.ts New settings constants file defining categories, defaults, and metadata; well-typed with helper utility types.
app/plugins/settings.client.ts Client-only plugin that initialises useLocalStorage for settings and provides it via $settings.
app/components/settings/dialog/sidebar.vue Sidebar adds a search input and filtered category tabs using useFilter from reka-ui; starts typing listener auto-focuses the search input.
app/components/form/primitive.vue Adds overrideable label and error slots so consumers like SettingsFormPrimitive can provide custom markup while preserving the default layout.
app/components/settings/dialog.vue Dialog now uses TabsRoot with SETTINGS_CATEGORY_METADATA, resets tab and searchQuery on unmount.
app/composables/use-settings-dialog.ts Adds tab and searchQuery state to the global settings dialog composable.
app/components/settings/content.vue Dynamic async component loader for settings content panels; error fallback uses h() with a text child, which is safe.
app/components/settings/form/autocomplete.vue New autocomplete/select setting control; correctly delegates to SettingsFormPrimitive.
app/components/settings/form/primitive.vue New shared label+description wrapper for all settings form controls; cleanly extends FormPrimitive via the label slot.

Fix All in Cursor

Reviews (3): Last reviewed commit: "fix: reset search query on dialog unmoun..." | Re-trigger Greptile

Comment thread app/components/settings/dialog.vue Outdated
Comment thread app/plugins/settings.client.ts Outdated
Comment thread app/components/settings/content.vue Outdated
Comment thread app/constants/settings.ts Outdated
Comment thread app/components/settings/dialog.vue Outdated
Comment thread app/components/settings/dialog.vue Outdated
@jvxz jvxz merged commit d62dd2c into main May 6, 2026
4 checks passed
@jvxz jvxz deleted the feat/app-settings branch May 6, 2026 01:03
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

feat: app settings

1 participant