* fix: prevent event bubbling on show more messages button
Replace mouseup/touchend with click event and add stopPropagation/preventDefault to prevent unintended event bubbling when loading more messages.
* Add hover style to "show more messages"
* add button role to show_more_messages
---------
Co-authored-by: Cohee <18619528+Cohee1207@users.noreply.github.com>
* Add StreamingDisplay class for live LLM generation output with floating toast panel
- Add StreamingDisplay class to show streaming reasoning and content in a floating toast panel
- Extract createModelIcon() helper from insertSVGIcon() for reusable API/model icon creation
- StreamingDisplay automatically appends inside topmost open dialog (same pattern as fixToastrForDialogs)
- Add CSS with fade-in animation, pulsating activity indicator, and separate reasoning/content sections
- Support optional model icon in header
* Add ConnectionManagerRequestService.getProfileIcon() method for retrieving profile API icons
- Add static getProfileIcon() method to ConnectionManagerRequestService
- Returns HTMLImageElement created via createModelIcon() for a given profile's API/model
- Accepts optional profileId parameter, defaults to currently selected profile
- Returns null if Connection Manager is disabled, profile not found, or profile has no API
- Import createModelIcon from script.js
* Use animation_duration directly in hide() and CSS transition instead of constant
- Remove ANIMATION_DURATION_MS constant and use animation_duration directly in hide() method
- Replace hardcoded 0.3s CSS transitions with CSS variable var(--animation-duration, 125ms)
- Read animation_duration value inline in hide() for accurate timing
* Add /genstream slash command with live streaming display and reasoning support
- Add /genstream slash command that generates text via Connection Manager with live streaming UI
- Add formatReasoning() helper function (inverse of parseReasoningFromString) to format reasoning/content into template-wrapped strings
- Add connectionProfiles enum provider for profile selection in slash commands
- StreamingDisplay: add delay parameter to hide() method (default 1000ms) to show final result before dismiss
* Add /reasoning-format slash command to format reasoning and content into template-wrapped strings
- Add /reasoning-format (alias: /format-reasoning) slash command that wraps reasoning/content using Reasoning Formatting settings
- Accept required 'reasoning' named argument and optional unnamed 'content' argument
- Validate that prefix/suffix are configured before formatting
- Return formatted string via formatReasoning() helper for use with /reasoning-parse
- Show warning toasts if prefix/suffix missing
* Rename /genstream command to /profile-genstream and move to appropriate module
* Apply messageFormatting to StreamingDisplay reasoning and content text for proper rendering
- Import messageFormatting from script.js
- Replace textContent with innerHTML using messageFormatting() in updateReasoning() and updateText()
- Pass isSystem=true for reasoning, isSystem=false for content to match formatting expectations
- Update css to utilize pre-formatted paragraphs correctly
* Strip auto-added quotes from <q> tags in StreamingDisplay and add 'mes_text' class for consistent chat message formatting
- Add CSS rules to remove browser-default quotes from <q> tags in reasoning and content sections
- Add 'mes_text' class to textContent div to match chat message formatting behavior
- Prevents double quotes when messageFormatting already adds them via <q> tags
* Add minimize/close buttons and complete state to StreamingDisplay with configurable auto-hide
- Add minimize button to collapse/restore content sections while keeping header visible
- Add close button to manually dismiss display (generation continues in background)
- Replace CSS pseudo-element with explicit LED indicator element for better state control
- Add complete() method to mark generation done: changes LED from pulsing orange to solid green
- Add configurable auto-hide delay after completion
* Add stop button to StreamingDisplay with abort support and onStop/onComplete closures for /profile-genstream
- Add stop button to StreamingDisplay when onStop handler is provided
- Add markStopped() method with solid red LED state indicator
- Add AbortController integration to /profile-genstream for request cancellation
- Add onStop and onComplete closure arguments to /profile-genstream command
- Update complete() method signature to use options object with label and delay
- Disable stop button immediately
* Position StreamingDisplay above bottom form block using CSS variable with fallback
- Change bottom positioning from fixed 20px to dynamic calculation
- Use max() to position above --bottomFormBlockSize + 5px or minimum 20px
- Ensures StreamingDisplay doesn't overlap with bottom UI elements
* Rename /profile-genstream arguments for clarity: label→generating, completedLabel→completed, hideDelay→delay
- Rename `label` argument to `generating` to better reflect its purpose as the in-progress state label
- Rename `completedLabel` to `completed` for consistency and brevity
- Rename `hideDelay` to `delay` for simpler naming
- Update all internal references and variable names to match new argument names
- Update argument descriptions and default values accordingly
* Remove variable resolution from /profile-genstream arguments: system, length, and delay
- Remove ARGUMENT_TYPE.VARIABLE_NAME from typeList for system, length, and delay arguments
- Replace resolveVariable() calls with direct argument access for system, length, and delay
- Simplify type checking to use typeof directly on args properties
- Maintain existing default values and validation logic
* Add warning toast and early return when connection profile not found in /profile-genstream
- Display toastr warning when fuzzy search fails to find matching profile
- Return empty string to prevent execution with invalid profile
- Improves user feedback for incorrect profile names or IDs
* Extract buildResultText() helper in /profile-genstream to return partial results when stopped
- Add buildResultText() helper function to centralize result formatting logic
- Return partial generated text when user stops generation instead of empty string
- Reuse buildResultText() for both stopped and completed states
- Maintains consistent reasoning formatting in both cases
* fix lint
* Update documentation to reflect argument name change from hideDelay to delay
---------
Co-authored-by: Cohee <18619528+Cohee1207@users.noreply.github.com>
* feat(ui): add popup to jump to a specific swipe
Adds a new "Jump to swipe history" button to message actions and makes
the swipe counter clickable on the latest message. This opens a
searchable popup allowing users to quickly find and jump to a
specific alternate swipe without having to click through them
sequentially.
- Adds a searchable swipe picker popup menu
- Makes the swipe counter interactive when multiple swipes exist
- Adds a dedicated swipe picker button to message controls
* fix(ui): hide swipe picker when there are no swipes
Ensures the newly added swipe picker button is only shown when a
message has multiple swipes available. It explicitly hides the
button for non-swipeable messages or messages with a single swipe.
* feat(ui): redesign swipe picker with direct id input
Replace text-based search with a numeric input for direct swipe navigation.
Update popup layout with a sticky header and improved scrolling behavior.
Sync input value with the currently selected swipe in the list.
Refactor styling to align with chat selection components.
* feat(ui): allow branching from specific swipes via picker
- Enable swipe picker for historical messages to inspect alternate swipes
- Add branch button to picker entries to create new chats from specific swipes
- Update saveChat and createBranch to accept chat snapshots
- Restrict swipe jumping to the active message only
* refactor(logic): consolidate swipe sync logic and simplify helpers
Update `syncSwipeToMes` to accept a target message object, enabling its
use in the bookmarks module and removing the duplicate
`applySwipeToSnapshot` function.
Also simplify `canOpenSwipePickerForMessage` and
`canJumpToSwipeForMessage` signatures by removing the redundant message
parameter.
* refactor(a11y): support dynamic roles via classes
Introduce a managed role system in the accessibility script to handle
elements that dynamically gain or lose interactive states. The mutation
observer now watches for class attribute changes and automatically
applies or clears roles (e.g., `role="button"`) using active selectors.
Updated the swipe counter to rely on this centralized system by toggling
an `.interactable` class instead of manually modifying tabindex and role
attributes. Removed the redundant 'Enter' keydown handler for the swipe
counter to prevent duplicate trigger events.
* fix(ui): compute missing token counts in swipe picker
Update renderSwipeList to asynchronously calculate token counts when
missing from swipe metadata. Introduce SWIPE_SOURCE.SWIPE_PICKER to
correctly identify swipes triggered from the picker and bypass
generation checks.
* feat(ui): enable deleting specific swipes via swipe picker
- Adds a delete button to swipe picker entries, allowing removal of specific message versions.
- Refactors deletion logic to handle removing non-current swipes without triggering animations and correctly updates indices.
- Includes confirmation dialogs and improves input focus behavior.
* refactor:Delete process inline to button click processor
* feat: universal swipe inspection and picker improvements
- Permit opening the swipe browser on any chat entry to review past generations.
- Parallelize the retrieval of token statistics to speed up list rendering.
- Format message metrics (length and tokens) into a single, concise string.
- Update the `getBranchChatSnapshot` API to accept an options object.
- Register swipe list items as interactable elements for keyboard control.
- Apply styling to prevent text highlighting on picker entries.
* fix:remove unused CSS
* fix: fix disabled styling for swipe delete button
Remove tooltips and prevent hover animations or glow effects when the
delete button is disabled in the swipe picker. Update CSS to enforce
default cursor and fixed opacity on hover for the disabled state.
* remove: Unused CSS
* Extract swipe-picker.js module
* Revert to manual ARIA role management
* Avoid scrollIntoView and scroll on open
* Fix keyboard interaction in past chats menu
* Fix a11y attribute
* fix: call refreshSwipeButtons when deleting not selected swipe
---------
Co-authored-by: Cohee <18619528+Cohee1207@users.noreply.github.com>
* Add action loader utility with stoppable toast notifications
* Add slash commands for action loader control (/loader-wrap, /loader-show, /loader-hide, /loader-stop)
* Refactor action loader to support stacking multiple loaders with individual toast management
- Convert action loader from singleton to class-based handle system (ActionLoaderHandle)
- Support multiple concurrent loaders with single overlay and stacked toasts
- Add unique ID generation and tracking for each loader instance
- Implement onHide callback alongside existing onStop callback
- Add getActiveLoaderHandles() and getLoaderHandleById() utility functions
- Refactor hideActionLoader() to accept...
* Improve action loader overlay and toast handling with better state checks and cleanup timing
- Check isLoaderDisplayed() before showing overlay to prevent conflicts with existing loaders
- Use toastr.options.hideDuration for toast removal timing instead of hardcoded 250ms
- Simplify hideActionLoader() by using getActiveLoaderHandles() helper
- Remove redundant empty check in hideActionLoader()
- Add clarifying comment for intentional error throw in createClosureHandler()
- Remove redundant 'onStop' default
* fix stop button toast removal issue by using toastr.clear force option instead of manual removal with timeout
* Fix isLoaderDisplayed() by using double negation operator instead of null comparison
* Add non-blocking loader support with `blocking` parameter for toast-only action loaders
- Add `blocking` option to ActionLoaderHandle (default: true)
- Implement hasBlockingLoaders() helper to check for active blocking loaders
- Show/hide overlay only when blocking loaders are active
- Add `blocking` named argument to /loader-wrap and /loader-show commands
- Update help strings with non-blocking usage examples
- Import commonEnumProviders for boolean enum and isFalseBoolean utility
* Add optional title parameter to action loader toast notifications and reorder constructor parameters for consistency
- Add `title` parameter to ActionLoaderOptions and ActionLoaderHandle constructor
- Pass title to toastr.info() for toast notifications
- Reorder parameters: blocking, toastMode, message, title, stopTooltip (grouped by importance)
- Add warning when creating non-blocking loader without toast (invisible to user)
- Update /loader-wrap and /loader-show commands with title argument
* Add loader utility API to action-loader and expose it in ST context for convenient programmatic access
- Create `loader` object with show/hide/active/get methods and ToastMode/Handle exports
- Add JSDoc examples for basic usage, non-blocking tasks, and hiding all loaders
- Import and expose `loader` in ST context alongside existing loader functions
* Split slash command and functional modules
* Create abort controller on app init
* Remove HTML tags from "returns" declaration
---------
Co-authored-by: Cohee <18619528+Cohee1207@users.noreply.github.com>
* feat: add prefers-reduced-motion and prefers-contrast media queries
- Integrate OS prefers-reduced-motion into existing JS toggle system:
when OS preference is active, force reduced_motion on and disable
the UI checkbox with an explanatory tooltip
- Add body.reduced-motion CSS rules for hardcoded animations that
bypass the --animation-duration variable (text_segment fade-in,
dragover pulse)
- Add prefers-contrast: more media query for enhanced focus outlines
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* Support translating title text
* Use duration variable
* Removed stream fade-in override
* Combine hi-contrast selectors
---------
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
Co-authored-by: Cohee <18619528+Cohee1207@users.noreply.github.com>
* Add macro autocomplete for free text inputs
Implements macro autocomplete (`{{`) for textareas and input fields marked with `data-macros` attribute. Extracts shared autocomplete logic into MacroAutoCompleteHelper.js for consistency between slash command and free text contexts. Includes MutationObserver for dynamic element initialization and supports variable shorthands, operators, flags, and scoped macro closing tags.
* fix annoying circular dependency again
* Add `data-macros` attribute to enable macro autocomplete on text inputs
Enables macro autocomplete (`{{`) for various textareas and input fields throughout the UI by adding the `data-macros` attribute. Includes context template fields, instruct mode sequences, character/persona descriptions, world info content, and other prompt-related inputs. Also ensures the attribute is preserved when expanding editors and creating world info entries.
* Allow macro autocomplete in editing messages
Enables macro autocomplete (`{{`) when editing messages by adding the `data-macros` attribute to the dynamically created edit textarea element.
* Add autocomplete visibility setting support for macro autocomplete
Respects the global STScript autocomplete visibility setting (`power_user.stscript.autocomplete.state`) for macro autocomplete in free text inputs. When set to "Input length > 1", macro autocomplete only activates after typing `{{` plus at least 2 characters. Also adds a tooltip to the visibility setting explaining it applies to both slash commands and macros.
* Fix unclosed div tag in STScript autocomplete visibility setting
Closes the `<div>` tag that was incorrectly left open in the autocomplete visibility setting markup.
* Add setting to control macro autocomplete visibility in non-expanded fields
Introduces a new `showInAllMacroFields` setting that controls whether macro autocomplete appears in all macro-enabled fields or only in expanded editors and when pressing Ctrl+Space. Also adds `data-macros-autocomplete` attribute support with `always` and `hide` modes for per-field override. When the setting is off, autocomplete only shows in expanded editors (which now get `data-macros-autocomplete="always"`) and the completion
* Add `data-macros-autocomplete-style` attribute to control macro autocomplete popup size
Introduces a new `data-macros-autocomplete-style` attribute with `small` (33vw, max 700px) and `expanded` (default chat width) modes to control macro autocomplete popup dimensions. The `small` style is now the default for inline fields, while `expanded` is used for expanded editors and prompt manager. Also refactors `getAutocompleteMode` to return `DEFAULT` instead of `null` and adds corresponding `getAutocompleteStyle` helper
* Fix autocomplete details panel alignment when list is constrained by viewport edge
Adjusts the details panel position to align with the actual autocomplete list position when the list is constrained by the right edge of the viewport. Previously, the panel would position based on cursor location even when the list was pushed left, causing misalignment. Now checks if the list's actual position differs from the calculated position (with 5px tolerance) and uses the list's position instead.
* Guard autocomplete details panel alignment check with `isReplaceable` condition
Prevents attempting to read the autocomplete list's bounding rect when the list is not visible. The alignment adjustment for viewport-constrained lists now only runs when `isReplaceable` is true, avoiding potential errors when the list DOM is not rendered.
* Fix macro autocomplete cursor detection to handle nested macros correctly
Updates `findMacroAtCursor` to track nesting depth when searching for opening `{{` and closing `}}` braces. Previously would incorrectly stop at the first brace pair encountered in either direction, breaking autocomplete when cursor was inside nested macros like `{{getvar::{{getvar::name}}}}`. Now properly skips over nested macro boundaries by incrementing/decrementing depth counters until finding the matching braces at depth
* gief me my comments back (and fixes, that were missed)
- Added detailed JSDoc comments to all exported functions explaining parameters, return types, and behavior
- Added inline comments throughout functions explaining logic flow, edge cases, and implementation details
- Documented parser-based vs regex-based unclosed scope detection approaches
- Clarified variable shorthand autocomplete logic including operator filtering, context display, and priority
* refactor(macros): freeze MACRO_AUTOCOMPLETE_MODE and MACRO_AUTOCOMPLETE_STYLE enums
* feat(macros): explicitly set `makeSelectable` flag for non-insertable autocomplete options
- Set `makeSelectable = true` for variable shorthand options in {{if}} conditions (already insertable)
- Set `makeSelectable = false` for already-typed operators in variable shorthand autocomplete
- Set `makeSelectable = false` for already-typed flags in macro autocomplete
- Set `makeSelectable = false` for non-selectable closing block flags when no unclosed scopes exist
- Set `makeSelectable = false` for sc
* refactor(macros): consolidate typedef imports in MacroAutoCompleteHelper
- Fixed typo in MacroDefinition typedef import (removed extra `/` from JSDoc comment)
- Replaced long-form typedef imports with short-form aliases for MacroAutoCompleteContext and MacroDefinition
- Improved code consistency by using imported typedefs throughout function signatures
* refactor(autocomplete): select first selectable item as default instead of always first item
- Extracted default item selection logic into `selectDefaultItem()` method
- Changed default selection to prioritize first selectable item over first item in list
- Falls back to last item when no selectable items exist (preserves context for info-only options)
- Added JSDoc documentation explaining selection behavior
* feat(macros): make already-typed variable names non-selectable in autocomplete
- Set `makeSelectable = false` for variable name options that match the currently typed name
- Set empty `valueProvider` for matched variables to prevent re-insertion
- Prevents redundant selection of variables that are already fully typed in the input
* feat(macros): add value context autocomplete option for variable shorthand operators
- Created `VariableValueContextAutoCompleteOption` class to display context about expected values
- Shows operator name, symbol, and description when typing variable shorthand values
- Displays currently typed value and completion hint
- Non-selectable option (context only) with priority 4
- Added to variable shorthand autocomplete when operator is typed and value is being entered
* fix lint
---------
Co-authored-by: Cohee <18619528+Cohee1207@users.noreply.github.com>
* Support multiple images in single API response
* Fix media wrapper clashing with swipe counter
* Return an empty array, add additional filtering
* Add index to inline image filenames in processImageAttachment
* Multiple file uploads
* mes_img_wrapper
* mes_video_wrapper
* Named export instead of function wrapper
* Update public/scripts/chats.js
Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
* Fix optional chaining for message extra
* Preserve existing files with paste
* Improve swipe message extras clean-up
* Clean-up: Add chat_backgrounds to known images
* Add ensureMessageMediaIsArray to getContext
* Fix compatibility warning
* Update to media array
* Move de-dupe check logic
* Fix comment
* Fix clean-up logic
* Improve typing
* `feat/multi-file` Added a toggle between the old gallery and new image list. (#4722)
* Added "Toggle Gallery" button.
Added `getContainerInfo`.
* Refactor
* Change checkbox toggle to select
* Ensure media_display is set correctly only if any image_swipes were migrated
* Rename function
* Support Date in parseTimestamp
* Add type to main chat array
* Add media display reload prompt
---------
Co-authored-by: user <user@exmaple.com>
Co-authored-by: Cohee <18619528+Cohee1207@users.noreply.github.com>
* Use a single wrapper block for media
* Fix type annotation
* Fix video display in list mode
* Refactor saveImageToMessage to include title in media object
* Use named constants in migrateMediaToArray
* Update img control styles
* Fix error container state
* Refactor onImageSwiped
* Remove redundant event handler
* Refactor expandMessageMedia
* Use shared function for display handling, fix notice logic
* Enhance ChatMessage and ChatMessageExtra types
* Refactor media display reload logic
* Improve styling for media containers
* Adjust spacing in file form styles
* Fix scroll handling in appendMediaToMessage
* Reduce flicker in appendMediaToMessage
* Extract scrollOnMediaLoad func
* Improve scroll behavior in gallery display
* Improve delegation for click events
* Add file d&d handler to #form_sheld
* Improve scroll adjust for slow connections
* Adjust debounce timeout
* Add messageMedia enum provider
---------
Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
Co-authored-by: DeclineThyself <FallenHaze@tutamail.com>
Co-authored-by: user <user@exmaple.com>
* Add interactable outline color CSS variables
Introduces --interactable-outline-color and --interactable-outline-color-faint variables to the body style, both set to transparent for future use in styling interactive elements.
* Update global styles and remove unused CSS variables
Added -webkit-tap-highlight-color to the universal selector for improved touch experience.
- Fixes visual inconsistency between 'Enter a Model ID' input and 'Available Models' dropdown
- Uses calc(var(--mainFontSize) * 0.95) to match the slightly smaller font size of the dropdown
- Resolves issue #4599
This is the most minimal fix that targets only the specific element causing the visual difference.
Co-authored-by: Trahloc <trahloc@hearth.trahloc.com>
* feat: enable character source dropdown based on availability and style disabled options
* feat: emit event when character is in right character panel
* refactor: rename CHARACTER_SELECT_SELECTED event to CHARACTER_EDITOR_OPENED for clarity
* Always disable source option when peeking in groups
---------
Co-authored-by: Cohee <18619528+Cohee1207@users.noreply.github.com>
* [wip] Add stream fade-in effect for message text and corresponding CSS animation
* Avoid using temporary element during text segmentation
* Add fade in toggle
* Skip whitespace-only nodes
* Fade-in reasoning stream
* Fix case when segmenter is not supported
* add first and last buttons to pagination
* Add i18n support
* Update pagination buttons font
---------
Co-authored-by: Cohee <18619528+Cohee1207@users.noreply.github.com>
* init
* mostly working messy version
* css layout, mobile is fixed
* revert changes
* more of the above
* cleanup
* revert breaking fixes, cleanup dead code
* dead code
* delete fallback
* spacing
* css tweaks and removed getChatBackgroundsList
* mobile sizing
* revert unrelated changes
* use name instead of context
* debounce from constants.js
* replace if/else
* pass images directly
* more of the above
* buttons
* buttons functionality
* add default column counts
* remove .mobile-only-menu-toggle when clicked (layering fix)
* lint
* universal column default of 3
* sacrifice firefox for chrome
* Restore media query
This reverts commit 295a5a81908e58c0bfa5e01fd90fcd62c05471b4.
* Add disabled attribute styles for menu_button
* use opacity 0, pointer events none instead of display:none
* Format styles
* Fix type errors
* Add blur event handler to close mobile menu when focus is lost
---------
Co-authored-by: Cohee <18619528+Cohee1207@users.noreply.github.com>
* Improvement: Enhanced UI Consistency
- Added a class to `<div class="inline-drawer-toggle inline-drawer-header">` in **AI Response Configuration** and **API Connections** menus to match the styling of similar elements in **User Settings**
- Improved spacing and sizing for buttons such as `.bg_example .jg-menu` in the **Backgrounds** menu. The previous widths and gaps were too small, often causing accidental taps (especially on mobile devices)
* fix
* Adjust padding and background color in style.css
* Update inline drawer classes for configuration sections
* Remove border styles from expandable sections
* fix
* fix
* fix(sad)
* Adjust desktop bg_list width
---------
Co-authored-by: Cohee <18619528+Cohee1207@users.noreply.github.com>
* refactor: remove unused background styles
* feat: add support for nested @media, @supports, and @container rules in dynamic focus styles
* fix: add keyboard focus support for background menu buttons back
* fix: move "custom" background copy functionality to unified button UI and make it work again
* refactor: simplify CSSContainerRule instance check using window global
* fix: update hover and focus selector placeholder replacements to handle multiple occurrences in selector
* Fix focused outline offset of background samples
* Fix locked background outline color
* Add a11y roles to background menu items
* Add mobile-only button selector
* fix: update button and list item selectors
* Improve keyboard navigation in narrow layout
* Hide rename button for custom=true backgrounds
---------
Co-authored-by: Cohee <18619528+Cohee1207@users.noreply.github.com>
* Move search bar under buttons
Closes#4275
* Remove horizontal rules from right menu
* Add toggle for search form
* Add container for extension rm buttons
* Be square or be there
* Adjust font sizes
* Square enlargement program
* Adjust margins
* Remove margin from pagination outlet buttons
* Adjust margin on tag controls
* Collapse 1px margins
* Update public/script.js
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* Remove variable assignment
---------
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* Secret manager (now for real)
* Refactor secret manager dialog
* Add error handling to secrets migration
* Adjust default value
* Add secret-id slash command
* Add secret management slash commands
* Improve type definitions
* Improve compatibility of UUID generator
* Add copy buttons to manager view
* Improve compatibility with Vertex AI service account
- Changed to input since textarea can't be used with datalist
- Unblock regular key placeholder
- Save email as a key label
- Interrupt validation if the input is a UUID (autocompleted)
* Add optional label input for secret values in key manager dialog
* Update masking rules
* /secret-id: make the arg "required" (it's not)