Skip to content

Dev#515

Merged
mayanayza merged 42 commits intomainfrom
dev
Feb 24, 2026
Merged

Dev#515
mayanayza merged 42 commits intomainfrom
dev

Conversation

@mayanayza
Copy link
Collaborator

No description provided.

denis-gravel and others added 30 commits February 23, 2026 02:00
Currently translated at 19.7% (190 of 961 strings)

Translation: Scanopy/scanopy
Translate-URL: https://hosted.weblate.org/projects/scanopy/scanopy/fr/
Translations update from Hosted Weblate
- New GET /api/v1/dashboard/summary endpoint (Authorized<Viewer>,
  tenant-isolated) returning per-network metrics, daemon health,
  recent discoveries, and plan usage
- Add historical_discovery() filter to StorableFilter
- 10 new Svelte components: HomeTab, GettingStartedChecklist,
  NetworkMetrics, NetworkCard, DaemonHealthPanel, RecentDiscoveries,
  FeatureNudges, FeatureNudge, PlanUsage, and query hook
- Register #home as first sidebar NavItem, change default tab from
  topology to home
- Adaptive layout shows sections based on onboarding journey stage
- 7 plan-aware feature nudges (max 2 shown, localStorage-dismissable)
- Plan limit warnings when usage exceeds 80%
- C1: Restrict production CORS to public_url origin, separate permissive CORS for public share routes
- C2: Fix session fixation in password reset and email verification via cycle_id()
- C3: Validate CSP frame-ancestors domains to prevent header injection
- C4: Restrict daemon CORS to server URL origin
- H1: Add per-share rate limiting (5 attempts/180s) for password brute force
- H2: Log warning when metrics_token set but IP whitelist empty
- H4: Enforce TLS for daemon URLs in ServerPoll mode with localhost exemption
- H6: Audit and document all @html usages as safe (i18n/hardcoded only)
- M1: Add Content-Security-Policy-Report-Only header for non-breaking CSP rollout
- M3: Replace UUID v4 tokens with CSPRNG (256-bit) for password reset/verification
- M4: Sanitize GitHub handler error messages to prevent info leakage
- M5: Make scanner TLS cert validation configurable via SCANOPY_ACCEPT_INVALID_CERTS
- M7: Consume OIDC callback state immediately after verification to prevent replay
- New GET /api/v1/dashboard/summary endpoint (Authorized<Viewer>,
  tenant-isolated) returning per-network metrics, daemon health,
  recent discoveries, and plan usage
- Add historical_discovery() filter to StorableFilter
- 10 new Svelte components: HomeTab, GettingStartedChecklist,
  NetworkMetrics, NetworkCard, DaemonHealthPanel, RecentDiscoveries,
  FeatureNudges, FeatureNudge, PlanUsage, and query hook
- Register #home as first sidebar NavItem, change default tab from
  topology to home
- Adaptive layout shows sections based on onboarding journey stage
- 7 plan-aware feature nudges (max 2 shown, localStorage-dismissable)
- Plan limit warnings when usage exceeds 80%
- Remove hasDaemon guard from NetworkMetrics and DaemonHealthPanel so
  they show as soon as data exists, not gated on onboarding milestone
- Rewrite PlanUsage to always show usage bars with current/limit counts
  instead of only showing warnings at 80%+ threshold
- Add sequential prerequisite logic and clickable rows to checklist
- Step 1 now opens create-daemon modal via deep link
- Checklist step 2: "Wait for Network Discovery"
- Remove action label links from checklist steps
- Show RecentDiscoveries when data exists, no milestone gate
- Move FeatureNudges to top of page after checklist
- DaemonHealthPanel: grid cards, green tags, relative time
- Daemons with issues are clickable → navigates to #daemons
- PlanUsage: grid cards, blue→yellow gradient, UpgradeButton
- Use card/card-static classes on all cards for consistency
- Remove scheduled-paid nudge for paid plan users
- Add formatRelativeTime utility
- Use class binding for icon colors instead of inline style
- Checklist: require both complete AND dismissed to hide
- Daemon cards: vertically center icon+name, right-align tags
- PlanUsage: read plan overage from org (host/network/seat_cents)
- Overage-capable resources stay blue with green overage segment
- Upgrade button only when at-limit and no paid overage option
- Add identify/group_identify methods to PosthogService
- Set plan_type on persons at signup via $identify on OrgCreated
- Update person/group properties on billing lifecycle events
- Flatten discovery_type from JSON object to string
- Add $groups (organization) to all events with org context
- Pass error_reason through to discovery_failed events
- Add posthog.group() in frontend identifyUser()
- Fix discovery icon color (class binding, not inline style)
- Daemon cards: single row layout, vertically centered
- Nudges deep link to modals (SNMP, API key, network)
- Move networks section to bottom of page
- FirstTopologyRebuild only emits after FirstDiscoveryCompleted
- Add --accept-invalid-scan-certs CLI flag to DaemonCli (was only
  configurable via env var, not CLI)
- Add figment merge for the new CLI arg
- Add field to daemon-config-frontend-fields.json test fixture
- Fix boolean command generation in utils.ts to emit both true and
  false values (previously only emitted when truthy, breaking
  defaultValue: true fields when unchecked)
- Replace DaemonSummary with DaemonResponse in dashboard endpoint
  to return full daemon entities instead of a bespoke summary type
- Create HomeDaemonDisplay and HomeDiscoveryDisplay following the
  EntityDisplayComponent pattern used throughout the codebase
- Simplify DaemonHealthPanel and RecentDiscoveries to use Display
  components instead of custom card markup
- Remove unused DaemonSummary struct from backend
- Fix pre-existing no-useless-assignment lint errors in
  ListConfigEditor and Sidebar
- Remove mx-auto max-w-5xl from HomeTab wrapper so content spans
  the same width as all other tabs
- Constrain discovery cards to half-width (sm:w-1/2) to match
  daemon card width instead of stretching full-width
- Remove require_daemon_tls config and hard-block validation
- Add non-blocking tracing::warn for HTTP daemon URLs
- Add reactive InlineWarning in daemon provision form
- Localhost addresses exempt from warning
- Add href prop to Tag component, rendering as <a> for external links
- Pass href/icon through ListSelectItem for consistent tag rendering
- Add DAEMON_STATUS_DOCS_URL constant for status documentation
- Add standby status (orange, highest priority) to DaemonCard
- Add CircleHelp icon + docs link to all status tags (Standby,
  Unreachable, Deprecated, Outdated)
- Count standby daemons as "need attention" in Home health panel
- Show standby tag with docs link in Home daemon display
- Trigger one-time topology rebuild for onboarding checklist
- Standby: orange → purple (configuration state, not health warning)
- Deprecated: red → orange (urgent but not broken)
- Unreachable stays red, Outdated stays yellow
- Priority: Unreachable > Standby > Deprecated > Outdated
- Re-add one-time topology rebuild for onboarding checklist
- Replace string prefix check with new URL() parsing
- Warning only shows when URL is valid with non-localhost host
- Prevents false warning flash while typing http://localhost
- Extract shared getDaemonStatusTag() to daemons/utils.ts, used by
  both DaemonCard and HomeDaemonDisplay (eliminates duplicated priority logic)
- Home tab now shows only highest-priority status tag (matching DaemonCard)
- Add brightness hover effect to Tag links for clearer affordance
- getDaemonStatusTag returns Healthy (green) instead of null
- HomeDaemonDisplay uses getDescription for last-seen instead of a tag
- Fix onboarding rebuild: separate tracking set so auto-rebuild doesn't
  block the one-time onboarding rebuild from triggering
- Add isActive prop to TabProps, passed from +page.svelte
- Onboarding rebuild $effect guards on isActive so it doesn't fire
  when TopologyTab is mounted but hidden (all tabs mount simultaneously)
- Treat hostname as safe if it's a prefix of localhost or 127.0.0.1
- Prevents warning flash for http://l, http://lo, http://12, etc.
mayanayza and others added 12 commits February 24, 2026 10:44
Previously the tag nudge only navigated to the tags tab without
opening the editor modal, unlike all other nudges.
- Nudges: dismissed nudge triggers recomputation of visible list so
  the next suggestion appears without page reload
- Health panel: fix missing space before middot separator
- Add FirstGroupCreated telemetry event emitted on first group create,
  with PostHog and Brevo (scanopy_first_group_date) integration
- Add "Customize Your Topology" and "Create a Group" nudges, visible
  after first topology rebuild until first group is created
- Add "Share Your Topology" nudge for Pro+ users, deep-links to share
  modal via modal registry
- Convert TopologyTab share modal to use modal registry for deep-linking
- Add FirstGroupCreated telemetry event emitted on first group create,
  with PostHog and Brevo (scanopy_first_group_date) integration
- Add "Customize Your Topology" and "Create a Group" nudges, visible
  after first topology rebuild until first group is created
- Add "Share Your Topology" nudge for Pro+ users, deep-links to share
  modal via modal registry
- Convert TopologyTab share modal to use modal registry for deep-linking
- Add entity icons to all feature nudges
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.

2 participants