Conversation
- Add "I'd rather not say" option to referral source dropdown - Make "Other" text field required with onBlur validation - Disable Continue button when "Other" selected but text empty - Make Continue button full-width
- 800ms was too aggressive, causing missed hostname resolutions
- When a host was auto-named with its IP and a hostname is later resolved, update the display name to the hostname
- Set staticTags context in ReadOnlyInspectorPanel so all child components in the share/embed tree render plain Tag instead of interactive EntityTag - ListSelectItem reads staticTags context to complement existing prop - Fix EntityTag.handleClick to respect disabled prop (early return)
- Update/add/remove docs links in Create Daemon and Upgrade modals to point to new documentation structure - Add polling mode docs hint to Configure step - Remove "multiple daemons" hint from Install step - Remove "included" prefix from seat/network/host addon pricing - Change default daemon mode to daemon_poll
- Subnet CIDR input now shows "192.168.1.0/24 or 2001:db8::/32" - Interface IP input now shows "192.168.1.100 or 2001:db8::1" - Cosmetic change only; validation already accepts IPv6 via ipaddr.js
- Add disable_password_login config field, CLI arg, env var, and public config response following the disable_registration pattern - Add AuthPasswordLoginDisabled and AuthRegistrationDisabled error codes; migrate existing disable_registration checks to use codes - Guard login, register, and check-email endpoints with 403 when password login is disabled (setup/OIDC/password-reset unaffected) - Log startup warning if password login disabled without OIDC - Hide email/password form in LoginModal when disabled + OIDC exists, promoting OIDC buttons to primary; show error if no providers - Hide "Continue with email" in RegisterModal when disabled; prevent auto-skip to email step - Add i18n string, .env.example entry, regenerate types
- Auto-generate API key when advancing from Configure step for first-time daemon creators, reducing the wizard from 3 steps to 2 - Make mainFlow and tabs dynamic based on isFirstDaemon flag - Show loading spinner on Next button during auto-generation - Reset isAutoGenerating state on modal close
- Enable daemon_poll feature for Free tier (backend + billing JSON) - Default daemon wizard mode to daemon_poll instead of server_poll - Hide checklist dismiss button until at least one step is complete - Redirect to Home tab when closing daemon modal with no daemons - Add analytics events to daemon creation wizard steps - Update Free plan incremental_features, remove daemon_poll from Starter
- Remove dead plan-restriction standby logic from billing enforcement and daemon creation (all plans now support daemon_poll) - Add daily background task that checks for daemons with no completed discovery in 30 days and sets them to standby - Auto-clear standby when a discovery session is started for the daemon - Add daemon standby notification email to org owner and installer - Add created_before() filter method to StorableFilter for reuse - Migration clears all existing plan-based standby flags
- Add backend Mermaid and Confluence export endpoints with auth/tenant isolation - Refactor ExportButton from single PNG button to dropdown with 4 formats - Add SVG export via html-to-image's toSvg() on the frontend - Add Mermaid (.mmd) and Confluence wiki markup exports via backend API - Add 3 new billing feature flags: svg_export, mermaid_export, confluence_export - Rename diagram_export to png_export in billing types - Gate SVG (Starter+), Mermaid (Pro+/Community), Confluence (Team+) - Pass topologyId prop to ExportButton in both TopologyTab and ReadOnlyTopologyViewer
- Remove dead plan-restriction standby logic from billing enforcement and daemon creation (all plans now support daemon_poll) - Add daily background task that checks for daemons with no completed discovery in 30 days and sets them to standby - Auto-clear standby when a discovery session is started for the daemon - Add daemon standby notification email to org owner and installer - Add created_before() filter method to StorableFilter for reuse - Migration clears all existing plan-based standby flags
- Show IPv6 placeholder when subnet CIDR is IPv6, IPv4 otherwise - Detected by checking for ':' in the CIDR string
DaemonPoll: tells user to restart the daemon after queueing a session. ServerPoll: tells user the daemon will resume automatically on next polling cycle.
- Add InterfaceIp variant to HostOrderField enum with LEFT JOIN subquery selecting the lowest-position interface per host - Add interface_ip orderable field to HostTab with getValue displaying the primary interface IP - Add i18n label for the new field - Regenerate TypeScript types from updated OpenAPI schema
- Refactor export dropdown to modal with format cards and descriptions - Fix backend endpoint URL: /api/v1/topology/ (singular, not plural) - Replace UpgradeButton with UpgradeBadge, clicking opens billing modal - Hide upgrade-gated options in share/embed views - Pass isShareView prop from ReadOnlyTopologyViewer - Add i18n keys for modal title and format descriptions
- Add required validator to referral source field with required indicator - Change Continue button to trigger form validation instead of being disabled - Non-cloud deployments bypass form validation (no referral fields shown)
Use CSS variable --color-topology-zone instead of JS-computed rgba for the infrastructure zone gradient. This ensures the zone color switches correctly when the dark class is temporarily toggled during topology export with a different theme than current.
Dark: gray-900 at 0.2 (subtle dark tint), light: gray-200 at 0.2 (subtle light tint). Previous commit used gray-400/500 which was far too visible.
Replace hardcoded dark-only border-blue-600/30 bg-blue-900/20 with card card-static for proper light/dark mode support.
- Wrap form.setFieldValue in untrack() to prevent the effect from re-triggering when form state changes
- Remove required validator from referralSource select - Keep "Other" text field conditionally required
- app.html flash script reads ?theme=light|dark to override stored preference - generateShareUrl/generateEmbedUrl/generateEmbedCode accept optional theme param - ShareModal gets theme selector (Default/Light/Dark) in display options - ShareView applies ?theme= override on mount, restores on destroy - Embed iframe border color adapts to selected theme - Fix hardcoded text-gray-300 labels in ShareModal to use text-secondary
Track OS prefers-color-scheme as reactive $state instead of calling matchMedia inside $derived. Svelte 5 can't track media query changes as dependencies, so the old approach required a page reload. Now the matchMedia change listener updates a reactive variable that $derived properly responds to.
Replace hardcoded border-gray-700 with card card-static classes so the demo embed section themes correctly in light/dark mode.
- Add light/dark background images for login, onboarding, verify-email - Swap background image and overlay based on resolved theme - Reduce blur and overlay opacity for more visible backgrounds - Fix lint errors: unused imports, missing each key, prefer-const
- Cache generated fixtures keyed on backend source hash - On cache miss, install Rust and generate fixtures before Node steps - Fixes svelte-check failures on PRs due to missing gitignored fixture files
- Remove 6 unused keys: common_documentationLink, common_documentationLinkText, daemons_activateAfterCreation, daemons_activateAfterCreationBody, daemons_doThisLater, daemons_setupScanning - Replace shares_shareTheme with common_theme to eliminate duplicate
- Update doc comments to match frontend-exported field definitions - Normalize trailing periods in config sync test comparison
- Stale helpText values from v0.14.15 fixture update didn't match current i18n strings, causing config_fields_are_in_sync test failure
- Override default ./ui working directory so cd backend works
9 tasks
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.
No description provided.