Commit Graph
62 Commits
Author SHA1 Message Date
Alexandr Stelnykovych b193aab625 ui: clarify Split Tunnel config tooltips and messaging
https://github.com/safing/portmaster-shadow/issues/45
2026-05-18 17:48:29 +03:00
Alexandr Stelnykovych b51e59a1c1 feat(UI): add Split Tunnel quick-setting to app profile view
Adds a "Split Tunnel" toggle to the app profile quick-settings bar,
mirroring splittun/use per-app setting.

Shows an interference dot when:
- splittun/usagePolicy has Exclude rules (yellow)
- SPN is active and routes all traffic, fully bypassing Split Tunnel (red)
- SPN is active and partially bypasses Split Tunnel (yellow)

Dot and interference checks are suppressed when the Split Tunneling
or SPN module is globally disabled.
2026-05-13 14:50:52 +03:00
Alexandr Stelnykovych 2d5628a309 feat(UI): add Split Tunneling feature card
- Replace "Safing Support" feature with Split Tunneling in features.go,
  using a dedicated config key/scope and free package tier
- Fix feature-card component to prioritize ConfigKey over ConfigScope
  when resolving the config lookup key
2026-05-12 18:00:06 +03:00
Alexandr Stelnykovych ee2e3ef357 UI: Do not show "SPN Tunnel: connection has not been routed through the SPN"
The SPN Tunnel information is visible only when the connection has been routed through it.
2026-05-12 16:35:57 +03:00
Alexandr Stelnykovych dea008886d UI: Do not show username in the main application view
https://github.com/safing/portmaster/issues/2123
2026-05-12 16:27:15 +03:00
Alexandr Stelnykovych 192980b757 splittun: add splittun/enable config option with dynamic enable/disable
- New config.go registers the "splittun/enable" boolean option
- subsystems.ts: change ToggleOptionKey from splittun/use to splittun/enable
- Module Start/Stop replaced with enable()/disable() helpers driven by
  the config option; a callback on EventConfigChange toggles state at runtime
2026-04-30 18:18:53 +03:00
Alexandr Stelnykovych ee8cde31f6 feat: Add Split Tunnel feature (Windows PoC)
Implement initial proof-of-concept for split tunnel functionality on Windows,
allowing applications to route traffic through a designated network interface
while bypassing default system routing.

Features:
- Split tunnel module with TCP/UDP proxy infrastructure
- Firewall integration with split tunnel verdict handling
- SplitTunneling context attached to connections
- Configuration options: enable toggle, interface selection, and policy rules
- UI display of split tunnel connection details in connection info panel
- Subsystem configuration for user-level access

Windows-specific implementation:
- Uses proxy-based interface routing on Windows
- Automatic or manual interface detection and binding
- Support for IPv4 and IPv6 traffic

Note: Linux implementation is under development. SPN takes precedence over
split tunnel when both are enabled, ensuring SPN connections bypass this feature.
2026-04-24 18:04:01 +03:00
Alexandr Stelnykovych 933323d5f9 feat: add VerdictRerouteToSplitTun verdict type
Add a new verdict (value 8) for routing connections through the split
tunnel. This prepares the infrastructure for the upcoming split-tunneling
feature without implementing the full feature yet.

Changes:
- Define VerdictRerouteToSplitTun in network/status.go with String() and Verb()
- Add RerouteToSplitTun() to the Packet interface and InfoPacket stub
- Implement RerouteToSplitTun() for windowskext (v1) and windowskext2 (v2) packets
- Map VerdictRerouteToSplitTun to KextVerdict 11 in kextinterface and kext2
- Handle the verdict in packet_handler.go dispatch, connection.go, api.go,
  metrics.go and nameserver.go
- Add VerdictRerouteToSplitTun = 8 to Angular Verdict enum and update
  stats counting, filter queries and verdict CSS class

(WIP) Note: Linux (nfq) implementation not updated yet. Therefore Linux build will fail.
2026-04-17 20:48:48 +03:00
Alexandr Stelnykovych 1465fe49af feat(UI/notifications): add "in-app-only" action visibility
Actions with visibility "in-app-only" are shown in the UI but skipped
when displaying system-level notifications (Tauri/OS). Updates Go,
TypeScript/Angular and Rust projects accordingly.
2026-03-10 00:12:02 +02:00
Alexandr Stelnykovych 939010a6ef feat(interop/ivpn): show compatibility notification with persistent suppress option
When Portmaster connects to the IVPN Client, display an info notification
informing the user that IVPN connections are allowed and that DNS will be
handled by Portmaster's local resolver when configured.

The notification includes a "Do not notify me anymore" action that
permanently suppresses future notifications by writing a marker record to
the core database. The check runs before showing the notification on each
subsequent connection.

The "Reset Notification States" API endpoint (and matching UI menu item)
now also clears the IVPN suppression record alongside the broadcast states,
so all suppressed notifications can be restored at once.

- service/interop/ivpn: add notification.go with initAndShowNotification,
  isNotificationSuppressed, and suppressNotification
- service/interop/ivpn/ivpn.go: show notification on connect if not suppressed
- service/broadcasts/api.go: extend reset-state handler to also delete the
  IVPN suppression record; update endpoint name and description
- desktop: rename "Reset Broadcast State" menu item and toast messages to
  "Reset Notifications State"
2026-03-09 22:16:04 +02:00
Alexandr Stelnykovych e395dafa14 feat(UI/notifications): add ActionVisibility for conditional action display
Add a `Visibility` field to the `Action` struct allowing actions to be
hidden in the compact notification view and only shown when the user
expands the full notification (value: "detailed").

- base/notifications: add `ActionVisibility` type and `ActionVisibilityDetailed`
  constant to `Action` struct
- notifications.types.ts: expose `Visibility` field on the frontend `BaseAction`
  interface
- notification-list.component.html: filter out `detailed` actions in the
  compact list view
- generic-setting.ts: set default `Visibility: ''` on the inline UI action
2026-03-09 18:12:42 +02:00
Alexandr Stelnykovych d635db77c2 Improve pause info display and error handling 2025-11-26 13:01:24 +02:00
Alexandr Stelnykovych 4913147dd5 (UI) minor update of update pause notification messages 2025-11-21 14:07:57 +02:00
Alexandr Stelnykovych 139610b99d feat(UI): enhance pause info display in system tray menu and reorganize menu item positions
https://github.com/safing/portmaster/issues/2050
2025-11-10 15:14:20 +02:00
Alexandr Stelnykovych 4d58f68fde feat(UI): enhance SPN pause menu to allow time modification while paused 2025-11-07 16:53:01 +02:00
Alexandr Stelnykovych b9cce33113 UI: Removed sources for "runtime:subsystems/" status API calls
It looks like they are not used anymore and replaced by "runtime:system/status"
2025-11-07 16:50:18 +02:00
Alexandr Stelnykovych fecb42a691 UI: update SPN pause menu items and add spnEnabled state management
https://github.com/safing/portmaster/issues/2050
2025-11-06 18:42:24 +02:00
Alexandr Stelnykovych 7709a6600c feat: pause and resume functionality improvements + UI
https://github.com/safing/portmaster/issues/2050
2025-11-05 18:36:52 +02:00
Alexandr Stelnykovych 8190e66524 Merge pull request #2040 from safing/feature/2039-UI-auto-reload-connections
Feature: UI auto reload connections
2025-10-18 00:04:44 +03:00
Alexandr Stelnykovych 1ebac535af minor refactoring 2025-10-18 00:01:01 +03:00
Alexandr Stelnykovych a8e84d6d28 refactor(UI): remove unnecessary reload intervals from settings 2025-10-17 22:01:24 +03:00
Alexandr Stelnykovych 2dc2193587 feat: add manual trigger for lastReloadTicker updates
Add Subject-based manual trigger to immediately update "Last reload X ago" display when search completes, instead of waiting up to 2 seconds for next interval tick.
2025-10-15 17:43:02 +03:00
Alexandr Stelnykovych ae2e1e5659 fix: UI bug: when loading grouped connections from 'future'
STR:

1. Network Activity View
2. Set "Search History" From/To dates in the future
3. Set "Group By" Domain
Observed Result:
- Infinite “Loading connections…” status.
- The UI remains unresponsive to any changes in connection filters or reload actions.

https://github.com/safing/portmaster/issues/2041
2025-10-15 17:17:47 +03:00
Alexandr Stelnykovych 54fe389c9d UI: skip auto-reload for historical data queries
https://github.com/safing/portmaster/issues/2039
2025-10-15 16:13:55 +03:00
Alexandr Stelnykovych 153768fb21 UI: Automatic reloading of the connections list
https://github.com/safing/portmaster/issues/2039
2025-10-15 15:23:11 +03:00
Alexandr Stelnykovych d5c1a5c3f6 fix(UI): remove search highlight markup from merge profile names
https://github.com/safing/portmaster/issues/1490
2025-06-27 12:45:58 +03:00
Alexandr Stelnykovych ec2d4ca9eb Merge branch 'master' into merge/master-into-v2-with-history (v1 into v2)
# Conflicts:
#	Earthfile
#	base/config/main.go
#	base/database/dbmodule/db.go
#	base/database/main.go
#	go.mod
#	go.sum
#	service/core/base/global.go
2025-05-28 11:52:15 +03:00
Alexandr Stelnykovych 58ca3150e7 Log a warning in the UI when falling back to default connection parameters 2025-05-20 12:56:24 +03:00
Alexandr Stelnykovych 5bc1e779b2 fix: force UI to use IPv4 (127.0.0.1) for API endpoints
Previously, the API endpoint was defined using `localhost`, which could resolve to the IPv6 address `::1`.
This caused issues because the Portmaster core service is listening on `127.0.0.1:817` and only fast-tracking connections to that specific IPv4 address.
2025-05-16 10:56:30 +03:00
Alexandr Stelnykovych 27cdfd696d [desktop] fix: Bug in the asyncInvoke() function — sometimes it never receives a response.
This fixes the ticket s26: "[bug] UI: Sometimes the UI remains stuck in the "Connecting to System Service" state indefinitely. "
2025-04-28 16:57:32 +03:00
Alexandr Stelnykovych dce08b8af8 Revert "[desktop] Custom pipe for '<img>' 'src' to bypass WebView image downloads"
This reverts commit d11bc077cf.
2025-04-24 14:36:10 +03:00
Alexandr Stelnykovych 0cb17a16bb Revert "[desktop] Force <img> elements to use Angular HttpClient for image downloads (bypassing WebView)"
This reverts commit 76289610ee.
2025-04-24 14:36:00 +03:00
Alexandr Stelnykovych 8dfa004d34 [desktop] minor fix in dashboard component 2025-04-17 17:19:00 +03:00
Alexandr Stelnykovych 76289610ee [desktop] Force <img> elements to use Angular HttpClient for image downloads (bypassing WebView) 2025-04-17 17:16:38 +03:00
Alexandr Stelnykovych d11bc077cf [desktop] Custom pipe for '<img>' 'src' to bypass WebView image downloads 2025-04-17 17:09:04 +03:00
Alexandr Stelnykovych 73174cdca8 [desktop] Force to use custom HttpClient from portmaster-api 2025-04-17 17:06:06 +03:00
Alexandr Stelnykovych 15bd31adb5 [desktop] Fix: Failed to display "News" on the dashboard 2025-03-21 13:38:10 +02:00
Alexandr Stelnykovych d8108bff0e [fix] UI: Error when clicking on 'Apps' in the application configuration
https://github.com/safing/portmaster/issues/1721
2025-01-31 17:50:00 +02:00
Daniel 706ce222d0 WIP 2024-11-27 16:16:15 +01:00
Vladimir Stoilovandcoderabbitai[bot] f465f95e81 Update desktop/angular/src/app/prompt-entrypoint/prompt-entrypoint.ts
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
2024-09-03 11:35:38 +03:00
Vladimir Stoilov 4ed4640fee [desktop] update tauri npm packages 2024-09-02 09:55:21 +03:00
Daniel 7df0fbb614 [desktop] Fix version information in UI 2024-08-23 10:17:49 +02:00
Daniel HååviandVladimir Stoilov 80664d1a27 Restructure modules (#1572)
* Move portbase into monorepo

* Add new simple module mgr

* [WIP] Switch to new simple module mgr

* Add StateMgr and more worker variants

* [WIP] Switch more modules

* [WIP] Switch more modules

* [WIP] swtich more modules

* [WIP] switch all SPN modules

* [WIP] switch all service modules

* [WIP] Convert all workers to the new module system

* [WIP] add new task system to module manager

* [WIP] Add second take for scheduling workers

* [WIP] Add FIXME for bugs in new scheduler

* [WIP] Add minor improvements to scheduler

* [WIP] Add new worker scheduler

* [WIP] Fix more bug related to new module system

* [WIP] Fix start handing of the new module system

* [WIP] Improve startup process

* [WIP] Fix minor issues

* [WIP] Fix missing subsystem in settings

* [WIP] Initialize managers in constructor

* [WIP] Move module event initialization to constrictors

* [WIP] Fix setting for enabling and disabling the SPN module

* [WIP] Move API registeration into module construction

* [WIP] Update states mgr for all modules

* [WIP] Add CmdLine operation support

* Add state helper methods to module group and instance

* Add notification and module status handling to status package

* Fix starting issues

* Remove pilot widget and update security lock to new status data

* Remove debug logs

* Improve http server shutdown

* Add workaround for cleanly shutting down firewall+netquery

* Improve logging

* Add syncing states with notifications for new module system

* Improve starting, stopping, shutdown; resolve FIXMEs/TODOs

* [WIP] Fix most unit tests

* Review new module system and fix minor issues

* Push shutdown and restart events again via API

* Set sleep mode via interface

* Update example/template module

* [WIP] Fix spn/cabin unit test

* Remove deprecated UI elements

* Make log output more similar for the logging transition phase

* Switch spn hub and observer cmds to new module system

* Fix log sources

* Make worker mgr less error prone

* Fix tests and minor issues

* Fix observation hub

* Improve shutdown and restart handling

* Split up big connection.go source file

* Move varint and dsd packages to structures repo

* Improve expansion test

* Fix linter warnings

* Fix interception module on windows

* Fix linter errors

---------

Co-authored-by: Vladimir Stoilov <vladimir@safing.io>
2024-08-09 18:15:48 +03:00
Daniel 735174dfd3 Remove transition notice from UI 2024-07-22 16:05:46 +02:00
Daniel 617694ed95 Fix font paths 2024-07-22 16:04:35 +02:00
Vladimir Stoilov 919cfd89eb Fix CI, tauri, angular, go-test 2024-07-16 12:31:52 +03:00
Vladimir Stoilov b026e7b97e Merge branch 'develop' into feature/tauri-beta-update 2024-07-04 13:47:09 +03:00
Daniel 401e09b963 [desktop/angular] Improve country display in connection details 2024-05-28 16:32:55 +02:00
Daniel 99e2f63c03 [desktop/angular] Deactivate View Active button 2024-05-28 15:57:11 +02:00
Daniel dc1b9f98f2 Add support for showing anycast addresses in the UI 2024-05-28 15:56:48 +02:00