diff --git a/ayanova/devdocs/todo.txt b/ayanova/devdocs/todo.txt
index dd450d8e..c3fb9387 100644
--- a/ayanova/devdocs/todo.txt
+++ b/ayanova/devdocs/todo.txt
@@ -42,20 +42,32 @@ CURRENT ROADMAP
CURRENT TODOs
=-=-=-=-=-=-=
+todo: outstanding question about below:
+ - how will it work in practice if Name is the third column desired and set in listview?
+ - how is client to know it's the default column if it's in third place?
+ - do I force the leftmost to be immovable and always present? Seems wierd but maybe not as sort and filter not determined by order, acutally it kind of is, shit
+ - Ok maybe if defined in field definitions first is default but server includes a flag to indicate it's default no matter the order.
+ - Nope, convention sucks in this case due to column order needs, need to go back to a deterministic method with an added property of datalistfielddefinition object
+ - it has to be there but in any order so needs a flag instead and some server work to ensure it's returned
-
-
-
-TODO: when filter saved sb the one used when you return to the form no exceptions
- - right now it returns to the "unsaved", maybe it's not setting formsettings correctly on leave if saved
- - actually caused by formstate dirty on exit of listVieweditor
- - Is form submit POST route actually reloading the listVieweditor as expected? Looks like not?
-
-TODO: no data should only show if not loading on datatable
+todo: re-plan immediate below based on deterministic method with an added property as above, then implement
todo: default "df" thing isn't really working at the moment, I can remove the Name column from widgets and then I can't open a widget from teh grid
- see if "df" has any purpose other than my initial though of an openable option for the record
- - if not, remove it entirely and make NAME a required field so it can't be removed from the view, moved, but not re-moved.
+ - it was required to know what object the row identifies so that bulk actions can be peformed when multiple selected, but other ways to do that
+ - OLD CHANGES (NO, CHANGE THIS FIRST), replace df column with a CONVENTION of first column (as defined in field column definitions) is always required and identifies the row:
+ - Remove df column from server, client and tests
+ - NEW CONVENTION TO REPLACE DF:
+ - The first column output by datalist (as defined in datalist definition object) is *always* the row ID column and can't be hidden and is required to show in datatable
+ - Add code to listVieweditor to always have first column in field definitions set to required / visible and cannot be set to hidden (take away the switch to make it obvious)
+ -It can be moved all they want but never not included
+ - Change datalist SQL builder select columns code at server to always return row id column even if not in listview
+ - ListView save Validation change to check that first column is *always* present in listview, not valid if it's missing
+ - this will happen with our tools automatically but need it for api users
+ - TESTS: write a test to ensure the first column as defined is always included even if attempt to circumvent by not defining it
+
+ - Update integration tests as required to support lack of df column
+
todo: when duplicate is inactive it looks the same, is it really being set inactive?
- It's inactive if the dlv is dirty or invalid
diff --git a/ayanova/src/components/gz-data-table.vue b/ayanova/src/components/gz-data-table.vue
index a104d3aa..b7c4b23e 100644
--- a/ayanova/src/components/gz-data-table.vue
+++ b/ayanova/src/components/gz-data-table.vue
@@ -16,7 +16,10 @@