Skip to content

feat(web-ui): expose all API preferences, aligned with amuleGUI - #595

Merged
ngosang merged 1 commit into
amule-org:masterfrom
ngosang:feature/web23
Jul 25, 2026
Merged

feat(web-ui): expose all API preferences, aligned with amuleGUI#595
ngosang merged 1 commit into
amule-org:masterfrom
ngosang:feature/web23

Conversation

@ngosang

@ngosang ngosang commented Jul 25, 2026

Copy link
Copy Markdown
Member

Rework the preferences view to cover every category the amuleapi /preferences endpoint exposes and lay it out like the desktop amuleGUI PrefsUnifiedDlg.

Structure and layout:

  • Tabs follow the desktop page order (General, Connection, Directories, Servers, Files, Security, IP2Country, Proxy, Filters, Remote controls, Online signature, Advanced); Proxy is its own tab and Kad settings live under a Kademlia group in the Servers tab.
  • A tab's fields can belong to a different API category (f.cat), so Proxy writes into 'connection' and the Kademlia group into 'kademlia'.
  • Every field sits in a titled group rendered as a card; cards flow into masonry-style columns (up to 3 on wide desktop, 2 on medium, 1 on phones) and keep source order, so the phone view is that same sequence.
  • One field per row inside a card; the Apply button is centered.

Fields and behaviour:

  • New field renderers: select, password (write-only), textarea (shared folders), trigger (update_now), plus derived read-only fields (e.g. the TCP+3 server-request UDP port, computed client-side, never sent).
  • Sub-options are indented and gated by their parent (start-next-file children, min free space, ffprobe path, extended UDP / UPnP ports, dead-server retries, obfuscation options).
  • Capability/parent gating supports several conditions: gatedBy, an inverted parent (gatedByNot) and a sibling-equals test (gatedByEq, e.g. the GeoIP source select); gated and read-only fields are never sent.
  • Passwords are only sent when non-empty; the ms-based reask intervals are shown/edited in minutes; udp_disabled is shown as an inverted 'Enable Extended UDP port' checkbox.
  • Integer fields are clamped to their [min, max] range on Apply (empty or out-of-range input snaps to the nearest bound), not just floored at 0.

i18n: all strings under prefs_* in en.json and es.json, kept in sync.
CSS: group cards, masonry columns, sub-option indent, centered actions.

Rework the preferences view to cover every category the amuleapi
/preferences endpoint exposes and lay it out like the desktop amuleGUI
PrefsUnifiedDlg.

Structure and layout:
- Tabs follow the desktop page order (General, Connection, Directories,
  Servers, Files, Security, IP2Country, Proxy, Filters, Remote controls,
  Online signature, Advanced); Proxy is its own tab and Kad settings live
  under a Kademlia group in the Servers tab.
- A tab's fields can belong to a different API category (f.cat), so Proxy
  writes into 'connection' and the Kademlia group into 'kademlia'.
- Every field sits in a titled group rendered as a card; cards flow into
  masonry-style columns (up to 3 on wide desktop, 2 on medium, 1 on phones)
  and keep source order, so the phone view is that same sequence.
- One field per row inside a card; the Apply button is centered.

Fields and behaviour:
- New field renderers: select, password (write-only), textarea (shared
  folders), trigger (update_now), plus derived read-only fields (e.g. the
  TCP+3 server-request UDP port, computed client-side, never sent).
- Sub-options are indented and gated by their parent (start-next-file
  children, min free space, ffprobe path, extended UDP / UPnP ports,
  dead-server retries, obfuscation options).
- Capability/parent gating supports several conditions: gatedBy, an inverted
  parent (gatedByNot) and a sibling-equals test (gatedByEq, e.g. the GeoIP
  source select); gated and read-only fields are never sent.
- Passwords are only sent when non-empty; the ms-based reask intervals are
  shown/edited in minutes; udp_disabled is shown as an inverted 'Enable
  Extended UDP port' checkbox.
- Integer fields are clamped to their [min, max] range on Apply (empty or
  out-of-range input snaps to the nearest bound), not just floored at 0.

i18n: all strings under prefs_* in en.json and es.json, kept in sync.
CSS: group cards, masonry columns, sub-option indent, centered actions.
@ngosang

ngosang commented Jul 25, 2026

Copy link
Copy Markdown
Member Author
imagen

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.

1 participant