Your token is stored in session storage only and is cleared when you close this tab.
Models from the selected service. Change service or edit it to update this list.
Selecting a type pre-fills the endpoint and recommended proxy setting.
The service's OpenAI-compatible base URL (ending in /v1 or similar).
Stored in localStorage. Not sent outside your browser.
Proxy URL — default is http://localhost:3001 (run node proxy.js).
Type a model ID and click Add, or Fetch to pull from the endpoint.
| Field Name | Type | PK | Nullable | Sensitivity | Comment | Synonym |
|---|
| Name | Description | Tags | Git Repo | ETL File | Color |
|---|
Merges another Relatum diagram file into the current canvas. Tables and groups will be placed to the right of existing content.
First row must contain field names. Data rows are used to infer types.
Sheet name = table name. Each sheet is imported as a separate table.
Drop a two-sheet Excel catalog (.xlsx) to generate an ERD. You will confirm column roles before import.
Licensed under the Apache License 2.0
proxy.js — a local Node.js reverse proxy that bridges Claude/Anthropic API calls (OpenAI → Anthropic Messages API translation), solving browser CORS restrictions without server changes; also acts as a transparent CORS passthrough for any other OpenAI-compatible service via the X-Proxy-Backend headerRetry-After headeradd_kpi tool — AI can add business metrics (name, calculation, definition) to an existing Nexus question/v1/modelscreate_table, bulk_create_erd, and add_lineage_flow — AI presents a diff preview and waits for user approval before any changes are appliedfinally block so the UI is never left in a stuck state if ERD generation throws an errorSTR() and other Tableau functions left untranslated when embedded inside compound expressions (e.g. STR([Day])+"/"+STR([Month])) — _translateInline() now applies a bottom-up T2PY function-call pass after field-ref substitution so STR(df['col']) → df['col'].astype(str)topLevelFunc() greedy-regex bug where STR(a)+STR(b) was incorrectly matched as a single STR(...) call (the expression ends with )), producing malformed Python with unbalanced parentheses — replaced with a depth-aware parenthesis walkerRenameColumn snippets only recording the old column name — containerSnippet() now emits RENAME [old] → [new] when inner.newColumnName is present, enabling the code generator to produce actual .rename(columns={…}) calls instead of comment-only fallbacksSuperJoin step type always resolving to JOIN (INNER) regardless of the actual join type — now reads node.actionNode.joinType to emit LEFT JOIN, RIGHT JOIN, or FULL JOIN correctly, so the Spark SQL generator uses the right join keywordtests/lineage-codegen-tableau.test.mjs) that reads Superstore.tfl and WorldIndicators.tfl from the sample folder, generates Python and Spark SQL, and asserts: no untranslated Tableau functions, balanced parentheses, no df_source/prev_step fallback variables, correct UNION ALL / JOIN / TEMP VIEW output, and s./r. JOIN ON aliases — 141 total tests passingdf_source / prev_step placeholders instead of the correct upstream dataframe — generator now uses flow.stepEdges DAG topology to resolve each step's actual parent source or intermediate stepUNION steps always listing all raw sources — unions now use the correct DAG parents (e.g. cleaned intermediate steps + raw sources as defined in the flow)JOIN key extraction producing empty right_on='' when the Tableau comparator is == — parseOnKeys() now normalises == → = before splitting and strips [bracket] notation from field namesJOIN ON clause generating ambiguous column references (e.g. `Order ID` = `Order ID`) — normalizeJoinOn() now qualifies both sides with s. / r. table aliasesstepEdges (DAG topology) not surviving flow save — state.addLineageFlow() whitelisted stored properties and silently dropped stepEdges; added to the stored schema so topology is available to the code generator after page reloadjs/lineage-codegen.js: SQL expression translation gaps (SPLIT/TRIM/etc. emit NULL placeholders), UNION schema compatibility, REMAP value population, FILTER expression translation, and GROUP BY field-split heuristicdf_step_N variables / CREATE OR REPLACE TEMP VIEW step_N views; code can be previewed, copied, or downloaded as .py / .sqldf_* variables, pd./np. namespaces, functions, numbers) and Spark SQL tokens (DDL keywords, functions, step_N views, backtick identifiers) each rendered in distinct colors; section header comments styled in bold blue[object Object] in SQL SELECT lists — field objects from Tableau Prep propagation are now normalized to their name strings and backtick-quoted when they contain spacesRESIDENT steps using the destination table name as the source — now resolves to the correct intermediate df_step_N via a destVarMap built during generationLEFT JOIN snippets leaking raw multi-line script into Python output — each line is now individually commented; join fields are used to select the right-side columns and auto-guess the join keyINLINE sources now emit pd.DataFrame({col: [], ...}) templates instead of pd.read_csv().tfl and .tflx flow files to visualize Tableau Prep ETL pipelines as collapsible Level 1 / 2 / 3 DAGs; each output node in a flow file becomes an independent lineage entry; the ETL modal now has a Paste / Upload mode toggle that also accepts .qvs and .sql files directly::before / ::after pseudo-elements with per-type theme color variables (--tp-input through --tp-output)escapeHtml, escapeAttr, and sanitizeUrl helpers before being written into the DOM; eliminates six previously duplicate escape implementations scattered across modulesscript-src no longer permits inline scripts; connect-src is restricted to the explicit Git provider origins declared in js/config.jsrequestAnimationFrame — smoother visuals and a single undo step per gesture instead of one per pixeldestroy() method that removes their event listenerserd-* namespace to relatum-*; existing saved diagrams and settings are automatically carried over on first loadwindow.erdApp, window._nexusState, etc.) are now only exposed when window.__RELATUM_DEBUG__ is set.json diagram, and commit changes back with a custom message and branch selection; personal access tokens are stored in session storage only and cleared when the tab is closedjs/config.js for configuring allowed origins per deployment (pre-populated with public cloud providers for development, replace with internal servers for production)schemaVersion integer and a savedWith build string; older files are automatically migrated on load, and files saved with a future version show a clear warning instead of silently failingCREATE TABLE AS SELECT, INSERT INTO SELECT, or WITH … AS CTEs to generate a DAG in the Data Lineage tabCREATE TABLE (…) definition to extract column names; use Send to Canvas to add it to the ERDCOMMENT ON COLUMN statements are parsed and stored as field descriptions, carried through to the ERD canvasVARCHAR to STRINGCREATE TABLE, CREATE VIEW, or SELECT with automatic field-type mappingCOMMENT values populate field descriptions automatically.xlsx / .xls) with schema query supportCREATE TABLE SQL for any entity — preview and copyLoading…
| Field | Source Field | Source Table |
|---|
Mark this file as a domain so an integrator can merge it into a shared canvas. The Source ID must be unique across all domains and must stay the same across revisions — Relatum uses it to detect when the same domain is re-imported.
Share this summary with a colleague so they can paste it into a fresh AI Assistant session to continue where you left off.