diff --git a/dev b/dev
index e45b185..b84382d 160000
--- a/dev
+++ b/dev
@@ -1 +1 @@
-Subproject commit e45b185ad48be552ea8d05816eadd21e1eafe58b
+Subproject commit b84382db5b9299231daee71579262d2792d7c39c
diff --git a/e2e/settings-advanced.spec.ts b/e2e/settings-advanced.spec.ts
index 4e16344..0a59d38 100644
--- a/e2e/settings-advanced.spec.ts
+++ b/e2e/settings-advanced.spec.ts
@@ -3,6 +3,9 @@ import { test, expect } from '@playwright/test';
/**
* E2E tests for additional Settings page features.
* Tests disconnect button and interpreter checkbox interactions.
+ *
+ * TODO: Update tests after settings modularization (task:ui/settings/modularization)
+ * Settings sections now split across multiple partial templates in settings/ directory
*/
test('neo4j disconnect button appears when connected', async ({ page, baseURL }) => {
diff --git a/e2e/settings-api-endpoints.spec.ts b/e2e/settings-api-endpoints.spec.ts
index fa6c789..a4959a9 100644
--- a/e2e/settings-api-endpoints.spec.ts
+++ b/e2e/settings-api-endpoints.spec.ts
@@ -1,5 +1,8 @@
import { test, expect, request as playwrightRequest } from '@playwright/test';
+// TODO: Update tests after settings modularization (task:ui/settings/modularization)
+// Integrations section now in settings/_integrations.html
+
test.describe('Settings - API Endpoints', () => {
test.beforeEach(async ({ page, baseURL }) => {
// Disable auth before each test
diff --git a/e2e/settings-fuzzy-matching.spec.ts b/e2e/settings-fuzzy-matching.spec.ts
index 21f3b77..ee16212 100644
--- a/e2e/settings-fuzzy-matching.spec.ts
+++ b/e2e/settings-fuzzy-matching.spec.ts
@@ -1,5 +1,8 @@
import { test, expect } from '@playwright/test';
+// TODO: Update tests after settings modularization (task:ui/settings/modularization)
+// Fuzzy matching section now in settings/_integrations.html
+
test.describe('Settings - Fuzzy Matching', () => {
test.beforeEach(async ({ page, baseURL }) => {
const base = baseURL || process.env.BASE_URL || 'http://127.0.0.1:5000';
diff --git a/e2e/settings-table-formats.spec.ts b/e2e/settings-table-formats.spec.ts
index 8943418..6d41654 100644
--- a/e2e/settings-table-formats.spec.ts
+++ b/e2e/settings-table-formats.spec.ts
@@ -1,5 +1,8 @@
import { test, expect } from '@playwright/test';
+// TODO: Update tests after settings modularization (task:ui/settings/modularization)
+// Table formats section now in settings/_integrations.html
+
test.describe('Settings - Table Format Registry', () => {
test.beforeEach(async ({ page, baseURL }) => {
await page.goto(`${baseURL}/#integrations`);
diff --git a/e2e/settings.spec.ts b/e2e/settings.spec.ts
index 5f7d681..2f66e8a 100644
--- a/e2e/settings.spec.ts
+++ b/e2e/settings.spec.ts
@@ -3,6 +3,12 @@ import { test, expect } from '@playwright/test';
/**
* E2E tests for Settings page functionality.
* Tests Neo4j connection, interpreter toggles, and rclone settings.
+ *
+ * TODO: Update tests after settings modularization (task:ui/settings/modularization)
+ * Settings sections have been extracted into separate partial templates:
+ * - settings/_general.html, _neo4j.html, _chat.html, _interpreters.html,
+ * _plugins.html, _rclone.html, _integrations.html
+ * The main index.html now uses {% include %} directives to compose the page.
*/
test('settings page loads and displays system information', async ({ page, baseURL }) => {
diff --git a/scidk/ui/templates/index.html b/scidk/ui/templates/index.html
index 575f71c..23e9951 100644
--- a/scidk/ui/templates/index.html
+++ b/scidk/ui/templates/index.html
@@ -94,735 +94,18 @@
-
-
- General
- Basic runtime information and counts.
-
- Host: {{ info.host }}
- Port: {{ info.port }}
- Debug: {{ info.debug }}
- Datasets: {{ info.dataset_count }}
- Interpreters: {{ info.interpreter_count }}
-
-
- Channel: {{ info.channel or 'stable' }}
- Providers: {{ info.providers }}
- Files viewer: {{ info.files_viewer or '(default)' }}
-
-
- Configuration Management
- Export and import your complete SciDK configuration for backup or migration.
-
- Export Configuration
- Import Configuration
- View Backups
-
-
-
- Exports all settings including Neo4j connection, interpreters, plugins, rclone mounts, and integration endpoints.
-
- Security
- Configure authentication and access control for this SciDK instance.
-
-
-
-
- Logged in as:
-
-
-
-
-
-
-
-
-
Enable Authentication
-
-
- Require login to access SciDK
-
-
-
-
Save Security Settings
-
-
-
-
-
-
- Your Account
- You are logged in with a regular user account. Contact an administrator to manage users or change security settings.
-
-
-
-
-
-
- Authentication Active
- Multi-user authentication is enabled. Use the "Users" section below to manage user accounts and permissions.
-
-
-
-
-
-
Users
-
Manage user accounts and permissions. Admin Only
-
-
-
User List
- + Add User
-
-
-
-
-
-
-
-
Audit Log
-
Security and user action logs. Admin Only
-
-
-
Recent Activity
- Refresh
-
-
-
-
-
-
-
-
- Neo4j Connection
- Configure Neo4j database connection and settings.
-
-
- URI
-
-
-
- User
-
-
-
- Database (optional)
-
-
-
-
-
Save
-
Connect
-
Disconnect
-
-
-
-
- Advanced / Health
-
- Test Graph Connection
-
-
- You can also set env vars: NEO4J_URI, NEO4J_USER, NEO4J_PASSWORD, SCIDK_NEO4J_DATABASE
- If your Neo4j has authentication disabled, set environment variable NEO4J_AUTH=none before starting the app.
-
-
-
-
-
- Chat
- Configure the chat interface for natural language queries over your Neo4j graph.
-
- LLM Provider Configuration
-
-
- Default LLM Provider
-
- Anthropic (Claude)
- OpenAI (GPT)
- Ollama (Local)
- None (Pattern-based only)
-
- Choose which LLM to use for entity extraction and query generation.
-
-
-
-
-
-
Anthropic API Configuration
-
-
-
- Model
-
- Claude 3.5 Sonnet
- Claude 3 Opus
- Claude 3 Haiku
-
-
-
-
-
-
-
-
OpenAI API Configuration
-
-
-
- Model
-
- GPT-4 Turbo
- GPT-4
- GPT-3.5 Turbo
-
-
-
-
-
-
-
-
Ollama Configuration
-
-
- Ollama URL
-
-
-
- Model
-
- Llama 2
- Mistral
- Code Llama
-
-
-
-
-
-
- Save LLM Configuration
-
-
- Chat Behavior
-
-
-
-
-
- Verbose mode (show technical details like entities, execution time)
-
-
-
Can also be toggled per-session in the chat interface.
-
-
- Save Settings
-
-
-
-
- Advanced
-
- Environment variables:
-
- SCIDK_ANTHROPIC_API_KEY - Anthropic API key for LLM-enhanced entity extraction
- SCIDK_GRAPHRAG_VERBOSE - Set to '1' or 'true' to enable verbose mode by default
-
-
-
-
- Chat History
- Manage chat sessions with persistent database storage.
-
-
- Chat sessions are now stored in the database and can be:
-
-
- Saved from the Chat interface using the "Save Session" button
- Loaded from the session selector dropdown
- Managed (rename, export, delete) using the "📂" button
- Exported as JSON files and imported from backups
-
-
- Open Chat Interface →
-
-
-
-
-
-
- Interpreters
- Registered interpreter mappings and selection rules.
- Mappings (extension → interpreter ids)
-
- {% for ext, ids in (mappings or {}).items() %}
- {{ ext }} → {{ ids }}
- {% else %}
- No mappings.
- {% endfor %}
-
- Rules
-
- {% for r in (rules or []) %}
- {{ r.id }} → interpreter_id={{ r.interpreter_id }}, pattern={{ r.pattern }}, priority={{ r.priority }}
- {% else %}
- No rules.
- {% endfor %}
-
-
- Interpreter toggles
- Enable or disable interpreters globally. Changes persist to settings when possible. If CLI env overrides are set (SCIDK_ENABLE_INTERPRETERS/SCIDK_DISABLE_INTERPRETERS), those take precedence and are shown as source=cli.
-
- Effective view is controlled by CLI env overrides; toggle effects may be masked.
- Unset SCIDK_ENABLE_INTERPRETERS/SCIDK_DISABLE_INTERPRETERS to allow GUI control.
-
-
-
-
-
-
- Interpreter
- Extensions
- Enabled
- Source
-
-
-
-
-
-
-
-
-
-
- Plugins
- Plugin registry summary.
-
- Registered interpreter count: {{ interp_count or 0 }}
- Extensions mapped: {{ ext_count or 0 }}
-
-
-
-
-
- Rclone
- Configure rclone settings for interpretation and mounts.
-
- Interpretation
- Tune streaming-based interpretation from rclone remotes. For very large scans, consider mounting the remote.
-
-
- Suggest-mount threshold (files)
-
-
-
- Max files per batch
-
-
-
- Save
-
-
-
-
- Mounts
- Manage rclone mounts under ./data/mounts.
-
-
- Remote
-
-
-
- Subpath (optional)
-
-
-
- Name
-
-
-
-
-
- Read-only
-
-
Create
-
-
-
- Refresh
-
-
-
- Name Target Path Status Actions
-
-
- No mounts.
-
-
-
- Note: On Windows, cmount/WinFsp may be required; this UI targets Linux/macOS primarily.
-
-
-
-
- Integrations
- Configure integration mappings, API endpoints, and matching options.
-
- API Endpoint Mappings
- Define API endpoints that map to Label types in SciDK.
-
-
-
-
Add New Endpoint
-
-
- Test Connection
- Save Endpoint
- Cancel
-
-
-
-
-
- Registered Endpoints
-
-
No endpoints registered yet
-
-
- Table Format Registry
- Manage table formats for importing CSV, TSV, Excel, and Parquet files as link sources.
-
-
-
-
Add Custom Format
-
-
- Description (optional):
-
-
-
- Save Format
- Cancel
-
-
- Upload Sample & Detect
-
-
-
-
-
-
-
-
-
- Registered Formats
-
-
- Fuzzy Matching Options
- Configure fuzzy matching algorithms for entity resolution in link creation.
-
-
-
-
Global Fuzzy Matching Settings
-
-
-
-
-
Matching Algorithm:
-
- Exact Match
- Levenshtein Distance
- Jaro-Winkler Distance
- Phonetic (Soundex/Metaphone)
-
-
Levenshtein: general fuzzy matching | Jaro-Winkler: names | Phonetic: sound-alike
-
-
-
Similarity Threshold: 80 %
-
-
Minimum similarity score (0-100%) to consider a match
-
-
-
-
-
-
-
-
-
- Normalize Whitespace
-
-
-
-
-
- Strip Punctuation
-
-
-
-
-
-
-
-
-
-
- Enable Phonetic Matching
-
-
-
- Phonetic Algorithm:
-
- Soundex
- Metaphone (Better)
- Double Metaphone
-
-
-
-
-
-
-
- Advanced Options
-
-
- Min String Length:
-
-
-
- Max Comparisons:
-
-
-
-
-
- Show Confidence Scores
-
-
-
-
-
-
-
- Save Settings
- Reset to Defaults
-
-
-
-
-
-
-
Hybrid Matching Architecture
-
- Phase 1 (Client-Side): Pre-import matching using rapidfuzz - match external API/CSV data before pushing to Neo4j.
-
-
- Phase 2 (Server-Side): Post-import matching using Neo4j APOC functions - ultra-fast in-database entity resolution for existing nodes.
-
-
-
+ {% include 'settings/_general.html' %}
+ {% include 'settings/_neo4j.html' %}
+ {% include 'settings/_chat.html' %}
+ {% include 'settings/_interpreters.html' %}
+ {% include 'settings/_plugins.html' %}
+ {% include 'settings/_rclone.html' %}
+ {% include 'settings/_integrations.html' %}
-
{% endblock %}
diff --git a/scidk/ui/templates/settings.html b/scidk/ui/templates/settings.html
deleted file mode 100644
index 625809e..0000000
--- a/scidk/ui/templates/settings.html
+++ /dev/null
@@ -1,2067 +0,0 @@
-{% extends 'base.html' %}
-{% block title %}-SciDK-> Settings{% endblock %}
-{% block head %}
-
-{% endblock %}
-{% block content %}
-
-
-
-
-
-
-
-
- General
- Basic runtime information and counts.
-
- Host: {{ info.host }}
- Port: {{ info.port }}
- Debug: {{ info.debug }}
- Datasets: {{ info.dataset_count }}
- Interpreters: {{ info.interpreter_count }}
-
-
- Channel: {{ info.channel or 'stable' }}
- Providers: {{ info.providers }}
- Files viewer: {{ info.files_viewer or '(default)' }}
-
-
-
- Configuration Management
- Export and import your complete SciDK configuration for backup or migration.
-
-
-
- Export Configuration
-
-
- Import Configuration
-
-
- View Backups
-
-
-
-
-
-
-
-
-
-
- Neo4j Connection
- Configure Neo4j database connection and settings.
-
-
- URI
-
-
-
- User
-
-
-
- Database (optional)
-
-
-
-
-
Save
-
Connect
-
Disconnect
-
-
-
-
- Advanced / Health
-
- Test Graph Connection
-
-
- You can also set env vars: NEO4J_URI, NEO4J_USER, NEO4J_PASSWORD, SCIDK_NEO4J_DATABASE
- If your Neo4j has authentication disabled, set environment variable NEO4J_AUTH=none before starting the app.
-
-
-
-
-
- Chat
- Configure the chat interface for natural language queries over your Neo4j graph.
-
- LLM Provider Configuration
-
-
- Default LLM Provider
-
- Anthropic (Claude)
- OpenAI (GPT)
- Ollama (Local)
- None (Pattern-based only)
-
- Choose which LLM to use for entity extraction and query generation.
-
-
-
-
-
-
Anthropic API Configuration
-
-
-
- Model
-
- Claude 3.5 Sonnet
- Claude 3 Opus
- Claude 3 Haiku
-
-
-
-
-
-
-
-
OpenAI API Configuration
-
-
-
- Model
-
- GPT-4 Turbo
- GPT-4
- GPT-3.5 Turbo
-
-
-
-
-
-
-
-
Ollama Configuration
-
-
- Ollama URL
-
-
-
- Model
-
- Llama 2
- Mistral
- Code Llama
-
-
-
-
-
-
- Save LLM Configuration
-
-
- Chat Behavior
-
-
-
-
-
- Verbose mode (show technical details like entities, execution time)
-
-
-
Can also be toggled per-session in the chat interface.
-
-
- Save Settings
-
-
-
-
- Advanced
-
- Environment variables:
-
- SCIDK_ANTHROPIC_API_KEY - Anthropic API key for LLM-enhanced entity extraction
- SCIDK_GRAPHRAG_VERBOSE - Set to '1' or 'true' to enable verbose mode by default
-
-
-
-
- Chat History
- Manage stored chat sessions. (Feature in development)
-
-
- Coming soon: Persistent chat history storage, session management, and recall functionality.
-
-
-
-
-
-
- Interpreters
- Registered interpreter mappings and selection rules.
- Mappings (extension → interpreter ids)
-
- {% for ext, ids in (mappings or {}).items() %}
- {{ ext }} → {{ ids }}
- {% else %}
- No mappings.
- {% endfor %}
-
- Rules
-
- {% for r in (rules or []) %}
- {{ r.id }} → interpreter_id={{ r.interpreter_id }}, pattern={{ r.pattern }}, priority={{ r.priority }}
- {% else %}
- No rules.
- {% endfor %}
-
-
- Interpreter toggles
- Enable or disable interpreters globally. Changes persist to settings when possible. If CLI env overrides are set (SCIDK_ENABLE_INTERPRETERS/SCIDK_DISABLE_INTERPRETERS), those take precedence and are shown as source=cli.
-
- Effective view is controlled by CLI env overrides; toggle effects may be masked.
- Unset SCIDK_ENABLE_INTERPRETERS/SCIDK_DISABLE_INTERPRETERS to allow GUI control.
-
-
-
-
-
-
- Interpreter
- Extensions
- Enabled
- Source
-
-
-
-
-
-
-
-
-
-
- Plugins
- Plugin registry summary.
-
- Registered interpreter count: {{ interp_count or 0 }}
- Extensions mapped: {{ ext_count or 0 }}
-
-
-
-
-
- Rclone
- Configure rclone settings for interpretation and mounts.
-
- Interpretation
- Tune streaming-based interpretation from rclone remotes. For very large scans, consider mounting the remote.
-
-
- Suggest-mount threshold (files)
-
-
-
- Max files per batch
-
-
-
- Save
-
-
-
-
- Mounts
- Manage rclone mounts under ./data/mounts.
-
-
- Remote
-
-
-
- Subpath (optional)
-
-
-
- Name
-
-
-
-
-
- Read-only
-
-
Create
-
-
-
- Refresh
-
-
-
- Name Target Path Status Actions
-
-
- No mounts.
-
-
-
- Note: On Windows, cmount/WinFsp may be required; this UI targets Linux/macOS primarily.
-
-
-
-
- Integrations
- Configure integration mappings, API endpoints, and matching options.
-
- API Endpoint Mappings
- Define API endpoints that map to Label types in SciDK.
-
-
-
-
Add New Endpoint
-
-
- Test Connection
- Save Endpoint
- Cancel
-
-
-
-
-
- Registered Endpoints
-
-
No endpoints registered yet
-
-
- Table Format Registry
- Manage table formats for importing CSV, TSV, Excel, and Parquet files as link sources.
-
-
-
-
Add Custom Format
-
-
- Description (optional):
-
-
-
- Save Format
- Cancel
-
-
- Upload Sample & Detect
-
-
-
-
-
-
-
-
-
- Registered Formats
-
-
- Fuzzy Matching Options
- Configure fuzzy matching algorithms for entity resolution in link creation.
-
-
-
-
Global Fuzzy Matching Settings
-
-
-
-
-
Matching Algorithm:
-
- Exact Match
- Levenshtein Distance
- Jaro-Winkler Distance
- Phonetic (Soundex/Metaphone)
-
-
Levenshtein: general fuzzy matching | Jaro-Winkler: names | Phonetic: sound-alike
-
-
-
Similarity Threshold: 80 %
-
-
Minimum similarity score (0-100%) to consider a match
-
-
-
-
-
-
-
-
-
- Normalize Whitespace
-
-
-
-
-
- Strip Punctuation
-
-
-
-
-
-
-
-
-
-
- Enable Phonetic Matching
-
-
-
- Phonetic Algorithm:
-
- Soundex
- Metaphone (Better)
- Double Metaphone
-
-
-
-
-
-
-
- Advanced Options
-
-
- Min String Length:
-
-
-
- Max Comparisons:
-
-
-
-
-
- Show Confidence Scores
-
-
-
-
-
-
-
- Save Settings
- Reset to Defaults
-
-
-
-
-
-
-
Hybrid Matching Architecture
-
- Phase 1 (Client-Side): Pre-import matching using rapidfuzz - match external API/CSV data before pushing to Neo4j.
-
-
- Phase 2 (Server-Side): Post-import matching using Neo4j APOC functions - ultra-fast in-database entity resolution for existing nodes.
-
-
-
-
-
-
-
-
-{% endblock %}
diff --git a/scidk/ui/templates/settings/_chat.html b/scidk/ui/templates/settings/_chat.html
new file mode 100644
index 0000000..6b2d8c2
--- /dev/null
+++ b/scidk/ui/templates/settings/_chat.html
@@ -0,0 +1,265 @@
+
+
+ Chat
+ Configure the chat interface for natural language queries over your Neo4j graph.
+
+ LLM Provider Configuration
+
+
+ Default LLM Provider
+
+ Anthropic (Claude)
+ OpenAI (GPT)
+ Ollama (Local)
+ None (Pattern-based only)
+
+ Choose which LLM to use for entity extraction and query generation.
+
+
+
+
+
+
Anthropic API Configuration
+
+
+
+ Model
+
+ Claude 3.5 Sonnet
+ Claude 3 Opus
+ Claude 3 Haiku
+
+
+
+
+
+
+
+
OpenAI API Configuration
+
+
+
+ Model
+
+ GPT-4 Turbo
+ GPT-4
+ GPT-3.5 Turbo
+
+
+
+
+
+
+
+
Ollama Configuration
+
+
+ Ollama URL
+
+
+
+ Model
+
+ Llama 2
+ Mistral
+ Code Llama
+
+
+
+
+
+
+ Save LLM Configuration
+
+
+ Chat Behavior
+
+
+
+
+
+ Verbose mode (show technical details like entities, execution time)
+
+
+
Can also be toggled per-session in the chat interface.
+
+
+ Save Settings
+
+
+
+
+ Advanced
+
+ Environment variables:
+
+ SCIDK_ANTHROPIC_API_KEY - Anthropic API key for LLM-enhanced entity extraction
+ SCIDK_GRAPHRAG_VERBOSE - Set to '1' or 'true' to enable verbose mode by default
+
+
+
+
+ Chat History
+ Manage chat sessions with persistent database storage.
+
+
+ Chat sessions are now stored in the database and can be:
+
+
+ Saved from the Chat interface using the "Save Session" button
+ Loaded from the session selector dropdown
+ Managed (rename, export, delete) using the "📂" button
+ Exported as JSON files and imported from backups
+
+
+ Open Chat Interface →
+
+
+
+
+
diff --git a/scidk/ui/templates/settings/_general.html b/scidk/ui/templates/settings/_general.html
new file mode 100644
index 0000000..aa83e69
--- /dev/null
+++ b/scidk/ui/templates/settings/_general.html
@@ -0,0 +1,989 @@
+
+
+ General
+ Basic runtime information and counts.
+
+ Host: {{ info.host }}
+ Port: {{ info.port }}
+ Debug: {{ info.debug }}
+ Datasets: {{ info.dataset_count }}
+ Interpreters: {{ info.interpreter_count }}
+
+
+ Channel: {{ info.channel or 'stable' }}
+ Providers: {{ info.providers }}
+ Files viewer: {{ info.files_viewer or '(default)' }}
+
+
+ Configuration Management
+ Export and import your complete SciDK configuration for backup or migration.
+
+ Export Configuration
+ Import Configuration
+ View Backups
+
+
+
+ Exports all settings including Neo4j connection, interpreters, plugins, rclone mounts, and integration endpoints.
+
+ Security
+ Configure authentication and access control for this SciDK instance.
+
+
+
+
+ Logged in as:
+
+
+
+
+
+
+
+
+
Enable Authentication
+
+
+ Require login to access SciDK
+
+
+
+
Save Security Settings
+
+
+
+
+
+
+ Your Account
+ You are logged in with a regular user account. Contact an administrator to manage users or change security settings.
+
+
+
+
+
+
+ Authentication Active
+ Multi-user authentication is enabled. Use the "Users" section below to manage user accounts and permissions.
+
+
+
+
+
+
Users
+
Manage user accounts and permissions. Admin Only
+
+
+
User List
+ + Add User
+
+
+
+
+
+
+
+
Audit Log
+
Security and user action logs. Admin Only
+
+
+
Recent Activity
+ Refresh
+
+
+
+
+
+
+
diff --git a/scidk/ui/templates/settings/_integrations.html b/scidk/ui/templates/settings/_integrations.html
new file mode 100644
index 0000000..09fe694
--- /dev/null
+++ b/scidk/ui/templates/settings/_integrations.html
@@ -0,0 +1,1015 @@
+
+
+ Integrations
+ Configure integration mappings, API endpoints, and matching options.
+
+ API Endpoint Mappings
+ Define API endpoints that map to Label types in SciDK.
+
+
+
+
Add New Endpoint
+
+
+ Test Connection
+ Save Endpoint
+ Cancel
+
+
+
+
+
+ Registered Endpoints
+
+
No endpoints registered yet
+
+
+ Table Format Registry
+ Manage table formats for importing CSV, TSV, Excel, and Parquet files as link sources.
+
+
+
+
Add Custom Format
+
+
+ Description (optional):
+
+
+
+ Save Format
+ Cancel
+
+
+ Upload Sample & Detect
+
+
+
+
+
+
+
+
+
+ Registered Formats
+
+
+ Fuzzy Matching Options
+ Configure fuzzy matching algorithms for entity resolution in link creation.
+
+
+
+
Global Fuzzy Matching Settings
+
+
+
+
+
Matching Algorithm:
+
+ Exact Match
+ Levenshtein Distance
+ Jaro-Winkler Distance
+ Phonetic (Soundex/Metaphone)
+
+
Levenshtein: general fuzzy matching | Jaro-Winkler: names | Phonetic: sound-alike
+
+
+
Similarity Threshold: 80 %
+
+
Minimum similarity score (0-100%) to consider a match
+
+
+
+
+
+
+
+
+
+ Normalize Whitespace
+
+
+
+
+
+ Strip Punctuation
+
+
+
+
+
+
+
+
+
+
+ Enable Phonetic Matching
+
+
+
+ Phonetic Algorithm:
+
+ Soundex
+ Metaphone (Better)
+ Double Metaphone
+
+
+
+
+
+
+
+ Advanced Options
+
+
+ Min String Length:
+
+
+
+ Max Comparisons:
+
+
+
+
+
+ Show Confidence Scores
+
+
+
+
+
+
+
+ Save Settings
+ Reset to Defaults
+
+
+
+
+
+
+
Hybrid Matching Architecture
+
+ Phase 1 (Client-Side): Pre-import matching using rapidfuzz - match external API/CSV data before pushing to Neo4j.
+
+
+ Phase 2 (Server-Side): Post-import matching using Neo4j APOC functions - ultra-fast in-database entity resolution for existing nodes.
+
+
+
+
+
diff --git a/scidk/ui/templates/settings/_interpreters.html b/scidk/ui/templates/settings/_interpreters.html
new file mode 100644
index 0000000..170f9b2
--- /dev/null
+++ b/scidk/ui/templates/settings/_interpreters.html
@@ -0,0 +1,118 @@
+
+
+ Interpreters
+ Registered interpreter mappings and selection rules.
+ Mappings (extension → interpreter ids)
+
+ {% for ext, ids in (mappings or {}).items() %}
+ {{ ext }} → {{ ids }}
+ {% else %}
+ No mappings.
+ {% endfor %}
+
+ Rules
+
+ {% for r in (rules or []) %}
+ {{ r.id }} → interpreter_id={{ r.interpreter_id }}, pattern={{ r.pattern }}, priority={{ r.priority }}
+ {% else %}
+ No rules.
+ {% endfor %}
+
+
+ Interpreter toggles
+ Enable or disable interpreters globally. Changes persist to settings when possible. If CLI env overrides are set (SCIDK_ENABLE_INTERPRETERS/SCIDK_DISABLE_INTERPRETERS), those take precedence and are shown as source=cli.
+
+ Effective view is controlled by CLI env overrides; toggle effects may be masked.
+ Unset SCIDK_ENABLE_INTERPRETERS/SCIDK_DISABLE_INTERPRETERS to allow GUI control.
+
+
+
+
+
+
+ Interpreter
+ Extensions
+ Enabled
+ Source
+
+
+
+
+
+
+
diff --git a/scidk/ui/templates/settings/_neo4j.html b/scidk/ui/templates/settings/_neo4j.html
new file mode 100644
index 0000000..c03816f
--- /dev/null
+++ b/scidk/ui/templates/settings/_neo4j.html
@@ -0,0 +1,177 @@
+
+ Neo4j Connection
+ Configure Neo4j database connection and settings.
+
+
+ URI
+
+
+
+ User
+
+
+
+ Database (optional)
+
+
+
+
+
Save
+
Connect
+
Disconnect
+
+
+
+
+ Advanced / Health
+
+ Test Graph Connection
+
+
+ You can also set env vars: NEO4J_URI, NEO4J_USER, NEO4J_PASSWORD, SCIDK_NEO4J_DATABASE
+ If your Neo4j has authentication disabled, set environment variable NEO4J_AUTH=none before starting the app.
+
+
+
+
diff --git a/scidk/ui/templates/settings/_plugins.html b/scidk/ui/templates/settings/_plugins.html
new file mode 100644
index 0000000..da6977b
--- /dev/null
+++ b/scidk/ui/templates/settings/_plugins.html
@@ -0,0 +1,8 @@
+
+ Plugins
+ Plugin registry summary.
+
+ Registered interpreter count: {{ interp_count or 0 }}
+ Extensions mapped: {{ ext_count or 0 }}
+
+
diff --git a/scidk/ui/templates/settings/_rclone.html b/scidk/ui/templates/settings/_rclone.html
new file mode 100644
index 0000000..56a71a6
--- /dev/null
+++ b/scidk/ui/templates/settings/_rclone.html
@@ -0,0 +1,146 @@
+
+ Rclone
+ Configure rclone settings for interpretation and mounts.
+
+ Interpretation
+ Tune streaming-based interpretation from rclone remotes. For very large scans, consider mounting the remote.
+
+
+ Suggest-mount threshold (files)
+
+
+
+ Max files per batch
+
+
+
+ Save
+
+
+
+
+ Mounts
+ Manage rclone mounts under ./data/mounts.
+
+
+ Remote
+
+
+
+ Subpath (optional)
+
+
+
+ Name
+
+
+
+
+
+ Read-only
+
+
Create
+
+
+
+ Refresh
+
+
+
+ Name Target Path Status Actions
+
+
+ No mounts.
+
+
+
+ Note: On Windows, cmount/WinFsp may be required; this UI targets Linux/macOS primarily.
+
+
+