Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Design - theme widget #24

Open
28 tasks done
Mirabrar-21 opened this issue Jul 17, 2024 · 30 comments
Open
28 tasks done

Design - theme widget #24

Mirabrar-21 opened this issue Jul 17, 2024 · 30 comments

Comments

@Mirabrar-21
Copy link

Mirabrar-21 commented Jul 17, 2024

@todo















@Mirabrar-21
Copy link
Author

Mirabrar-21 commented Jul 17, 2024

tasks - 2024.07.17

  • created wireframe
    • created theme_widget wireframe -2h03min
    • gathered ideas about UX improvement - 2h23min
    • discussion -20min
    • recorded, updated task and worklog -17min
    • @output 📦 theme_widget-v0.0.0

worklog

Worklog-38
theme_widget feature improvement


feedback


proposal

@alyhxn
Copy link

alyhxn commented Jul 18, 2024

feedback - 2024.07.18

Thanks for the feedback. You have discussed two points:

  1. The same thing as we already discussed, besides the tick mark you are saying something else should indicate that changes are to be applied to multiple instances.
  2. Dropdown to apply changes to one instance. I think we can already do this if I get you right.

Now for point one, I guess we can give a generic title such as Editor and between the title and tabs section we can have the tags sections where the selected instances can appear.

@Mirabrar-21
Copy link
Author

Mirabrar-21 commented Jul 25, 2024

tasks - 2024.07.25

  • Added features
    • made a tree suggestion structure on discord -47min
    • created theme_widget_tree slides -1h57min
    • gathered ideas about UX improvement/action buttons - 3h52min
    • made a rough version of theme_widget editor features wireframe -37min
    • discussion -52min
    • recorded, updated task and worklog -16min
    • @output 📦 theme_widget_tree-v0.0.0

worklog

Worklog-39


feedback


proposal

@serapath
Copy link
Member

serapath commented Aug 2, 2024

feedback 2024.08.02

regarding worklog 38

action graph

The actions in the graph explorer are definitely better.
I'm still not happy about the "inject" and "save preferences" being part of the editor.
They should also somehow move to the tree imho.

actions
This has to change a lot.

  1. First - whether a css file is shared or unique depends on the relationship
    in the graph explorer. Either a css file is connected as a sub or super entry to multiple
    components or not. That is what makes it "unique" or "shared".
    Not an entry in an action menu.

  2. What is the difference between import/export/save/load ?

  3. What is "enter theme name"? Can't we just call it "rename" and when clicked,
    you would edit the name in the graph explorer similar to how you would maybe do it in VScode
    or any other "file explorer"?

  4. What is "Default"? Can't we also solve this by assignment or connecting the right theme?
    To pin it or drag and drop it ot something like that?

The "card file box" emoji 🗃️ is a good idea, but should not be part of the action menu.
It should rather somehow be part of the graph explorer.
For every CSS file we should be able to collapse/expand to see all the themes and components
where it is used.

When it comes to save preference or inject or anything that works on multiple files.
Maybe what needs to be done is to first create a GROUP.
An "super entry" that takes multiple links to sub entries (e.g. like a folder),
and then you can trigger an action on that group (e.g. inject or save preferences).
That way, we never trigger anything on actual multiple items,
but we we trigger it on an entry that represents that group?

checkbox
Regarding the checkbox, i think that should be done by clicking the NAME of an entry.
And CTRL or SHIFT clicking names allows to select one or multiple.

Now on mobile you don't have CTRL or SHIFT, so there needs to be an action,
to trigger those modes and that changes the behavior of the touch gesture,
to either select/unselect many or change selected icon on every click.

Lastly, every entry in the tree that is currently open in the editor can also have a special
color in the name or background or a border around the entry name,
so that it is indicated that those entries are currently open in the editor.

any menu or action bar should be displayed BELOW the editor or explorer, not above

  • same with the file tabs of the editor, let's display them below.

regarding theme widget feedback

theme widget
Here you share how multiple selected component instances and clicking inject should update all of them. While we need this feature, i would highly prefer if we change how this works.

Essentially, we would take all these component instances and:

  • maybe drag'n'drop them
  • or link them to another entry in the graph
  • or link every single one of them one by one?
  • or drag'n'drop a theme or css file group onto them?

I'm not 100% sure how we should do it, but the idea is, that we need in general a way to have one or multiple selected entries, and just like files, which can be cut & pasted or drag'n'dropped to move them into a new folder, we need a way to link them to a "theme" which itself is also an entry and if that is done and/or a theme selected, it is applied.

That is how we indirectly decide that something get's injected.

We basically have 3 types of entries we are dealing with here

  • component instance entries (DOM nodes inside the HTML page)
  • css files (one or many) stored somewhere and maybe visible in one part of the graph explorer as files and folders
  • themes, which somehow define a mapping between a bunch of css files and a bunch of components, for now that's supposed to be json files, that specify which css file will be applied to which component.

We could edit that by doing some interaction inside the file explorer.

tabs
Here for example, the "shared" and "unique" tab are 2 different css files which are both associated with the component, e.g. Nina as an instance of a "profile card component" for example.

Now the thing is, for the Nina instance, it doesn't even matter if a css file is unique or shared. Both get applied to Nina.
This information is more interesting to see in the graph explorer to see all the css files associated with a specific instance (e.g. Nina) without all of them being opened in the editor and then to maybe inspect one of those css files in the graph explorer and see all the themes or other component instances where those css files are used.

lastly, usually one would probably also give css files a name rather than just naming all of them "unique" or "shared" :-)

Basically: The editor, when open, does NOT belong to any specific selected component or components. It just shows the content of one or more files (one or many tabs), each of which are linked to one (=unique) or many (=shared) component instances, but that linking can be defined AFTER a file is edited and saved.

We just have to have different types of entries in the graph explorer

  • component instances, such as the DOM element that represents Nina
  • and files, such as "project.css" or "profile.css" or whatever we call them.
  • lastly we can also have a theme like "light.json" and others

They can all be linked back and forth.

@serapath
Copy link
Member

serapath commented Aug 2, 2024

feedback 2024.08.02

feedback worklog 39

Overall the graph explorer looks great, but of course, what needs refinement are the actions and the menu of actions and also the linking between component instances and themes and css files.

graph explorer

Here for example, in the upper part of the image, the light theme has contributor1 as a sub entry, which has header component as a sub entry.

So one would expect, that header component has contributor1 as a super entry, which in turn has light as a super entry, BUT

in the lower part of the image, you can see that header component has light as a super component, which has contributor1` as a sub component, which could mean, that "contributor1" and "header component" are siblings and both under "light", but that is not the case.

Either way, we have to somehow change this and improve it.

actions

Here for example, the actions are great, but if we look at it on a mobile screen, a user would need to scroll to the right quite a bit.
Next, the specific kinds of actions need to be though through each individually and we might find better ways how to integrate them into the explorer and ideally we can even reduce the amount of actions, by presenting them as relationships in the graph explorer and defining how to link entries in the graph to each other, for example:

  • select theme could just be a link between a component instance and a specific theme and defining a "sub" or "super" link between them.

By the way, every css file in the graph explorer should end with .css just so it is easier to identify them.

themes
This one shows "default" and "dark" and can display many more saved ones like "rainbow" as well. To me this is an indicator we should probably just list them in the graph explorer as independent entries somewhere.
Next, you have actions (add, drop), which again, like any graph explorer entry that can have actions, if we made those themes into entries as well, they would be able to have actions.

All we need is a way to define new and change existing "sub" and "super" links between entries in the graph explorer.

I assume, any action in the tree would need an action to link a new sub or super entry or cut the link between an existing sub or super entry. I'm not sure how exactly it would best fit into the graph explorer, but let's figure it out :-)


file actions

Import is a confusing action to me.
If I want to Import a file, is that really depending on which entry is currently active?
The same with export, because for now, the IMPORT and EXPORT was meant to export all or import all in one file, so we have an easy way for a designer to use the theme widget, customize things the way they want and then export everything into a single downloadable file, which can be sent and submitted as a worklog and then the reviewer or anyone can open the website and import that file in their theme widget to see exactly the same changes.

If anything, i could imagine a specific existing or new theme, such as "rainbow" could have an export button to save only that theme and everything related as a single file.
On the other hand, the "import" action should probably be available when clicking the main "theme" folder.

In general, we should think more about which entry should have which actions available.

The RESET action should be a global action, maybe available under the root entry (playproject.io), because it just resets the entire storage.

The SAVE action should not be necessary, because every change is auto-saved in case your computer crashes, but of course, there should be a way to copy/fork/duplicate an existing css file or theme and give it a new name and then edit that to not change the original.
That might be a lot easier.

What we should consider though is redo/undo buttons or arrows to go back in history in case one typed something by mistake, because not having that would be bad if everything is automatically saved :-)

Of course - many "workflows" are possible, but we have to think about the pro's and con's to keep thing super convenient and minimal. All the above are suggestions, so if you feel strongly about something, please share, so we can discuss and fine the best solution.


tool

The INJECT tool
Again, here, the "inject" tool, like any other actions, should be considers by us.
We are the experts. Let's assume we need to use this "theme widget" to do our work as "css designers" every day. Would you want to click an entry and select tool->inject to inject something? Would you also want a "un-inject" to undo such an injection?

How about clicking a css file and instead of "inject" calling it "activate/deactivate"? Would that be more intuitive?

What about linking or unlinking a file or theme as a "sub" or "super" entry of a component instance in the graph explorer?

Could the linking/unlinking be treated as a activate/deactivate (or inject/uninject)?

What would be the smoothest most convenient workflow to make this happen?

While something is linked (or active), wouldn't it be nice if changes show live automatically?

These are the things we need to consider.


preference
So, you can rename a tab?
and then select something from the dropdown?
and then click save preference?

Isn't that like complicated and horrible UX?
I listened to your explanation, but every time i am still confused and have to think about what this is actually supposed to be doing. Do you find it convenient?

A normal file explorer would allow renaming in the file (or graph explorer) and maybe in the tab. But renaming is one action. save a file is another action.
What is "save preference"? is that the same as "save"?
And why do we need to mark it as unique or shared?

preferneces
Maybe this indicates that there is something missing in the graph explorer?
A components VS. a component instance.
There is Cypher and datdot in the graph explorer - are they the same type of instances?
What type of instances are they?
Can i assign a css file to the instance and another css file to the type?
Is that what unique vs shared means?
Maybe we should just make the component type visible as an entry in the tree.

There can be a component type called "button"
And then there can be instances, such as "alert button" or "cancel button", etc...
All buttons look the same.
But some button instances look different.
We need some better support for that :-)

Especially because it isn't that easy....
There are styles/css that apply to every button, e.g. button { .... }
There are styles/css that apply to only a specific button, e.g. #cta_button { ... }
There are styles/css that apply to a group of specific buttons, e.g. .menu_button { ... }

So let's assume i make a separate css file for each of the above.
Or maybe a theme file as well, for each of the above.
I now want to assign a specific "button stylesheet" to all button instances
I want to assign a specific call to action stylesheet to one specific button instance only
But then i want to apply one specific stylesheet to all buttons in the menubar, but not to any other buttons in the page.

So the last option does not concern the actual css "class name", but more all button instances which are used by the menubar component.


theme widget

The action bar at the bottom is not bar, but is it possible to have that bar below the file explorer? This might allow us to execute actions even if a file is not opened in the editor, but only selected. It would be a bit much to always have to open a file first before you can apply any actions to it.

We can definitely play with this option or even have both options available, just like our idea in the task messenger, where we have the "action wizard bar" at the bottom, but messages in the chat history can have "quick actions", which means here specific "graph explorer entries" could allow some quick actions as well.

actions
So this is good, but it should happend below the editor.

Now still - the actions menu with the option visible here are still having the same issue as what i described above and we should think through which actions we need in what form first.

One option could be that it is a "traveling actionbar", which means it is always visible right below the currently selected graph explorer entry :-)


themes
Here again, just like above - this tells us strongly that themes and css files should just be entries in the graph explorer as well and they allow actions such as load and delete and probably also rename and create new, etc... basically everything that a normal file explorer allows as well including copy/duplicate/fork so we can rename the copy and change it to create theme variations without overwriting the original theme.

@Mirabrar-21
Copy link
Author

Mirabrar-21 commented Aug 6, 2024

tasks - 2024.08.5

  • updated tree explorer
    • made a tree suggestion structure on hackmd -2h16min
    • created tree on figma -3h10min
    • gathered ideas about UX improvement/action on tree - 4h13min
    • read feedback/gave feedback comments on hackmd and discord-1h53min
    • discussion -2h03min
    • recorded, updated task and worklog and hackmd-40min
    • @output 📦 theme_widget_tree-v0.0.1

worklog

Worklog-40


feedback


proposal

@serapath
Copy link
Member

feedback 2024.08.13

I am okay with the + and - button for expand/collapse.
This should be themable, so we can use different icons in different apps where we use the component, but we can try these as defaults.

Otherwise it looks great.

I do think once we have all remaining features figured out, we need to create a very detailed and accurate interactive clickable prototype, so ali can see and make our real graph explorer work the same.

I would recommend to use the exact dataset we have in the playproject website for that interactive prototype :-)

@Mirabrar-21
Copy link
Author

Mirabrar-21 commented Aug 15, 2024

tasks - 2024.08.15

  • updated tree explorer
    • made a tree suggestion structure on discord -27min
    • updated tree on figma -2h35min
    • gathered ideas about UX improvement/action on tree - 4h17min
    • read feedback/gave feedback comments on discord-32min
    • discussion -1h38min
    • recorded, updated task and worklog -18min
    • @output 📦 theme_widget_tree-v0.0.2

worklog

Worklog-41


feedback


proposal

@serapath
Copy link
Member

feedback 2024.08.16

img1
why is there a Night/Header.css super entry inside the (...) ...what is that good for?

Basically, when Header.css is linked, you can just click on the

  │     ││┌🗄️night.json:page/projects/datdot🔗
  │     ││├🗄️light.json:page/projects/datdot🔗
  │     │├📂[✨]◀🖼️header.css

on the folder icon to see where header.css is linked to.

img2
First impression here is to rather have a

🗑️

in the graph explorer and have ALL deleted entries in there to either delete them for good (empty the trash) or restore them.
Seems more intuitive than having those kind of listed as a dropup in a bottom menu bar.
What we need though is something like Header.css<--light or datdot-->Header.css, because most of the time we are deleting links and not entries. The entries might still be all there, but a specific link was deleted and we want to restore it

The undo probably also needs a redo option.
I do think, just like browsers, it would make sense to have < and > arrows in the bottom bar for that. That's how browsers do it

img3
This is your other example.
So if Restore becomes a trash bin
And Edit can be removed as you said it can
Then only Undo remains and we add a Redo and turn both into < and > icons like browsers do it.

Users still have the ❓ to get documentation/help for any element in the app to learn those buttons mean undo/redo if they cant find it out by clicking them :slight_smile:

So the idea is to have some sort of user data structure, which always starts with

📚➖[✨]◀🌐playproject.io
  │  └🔃reset
  ├📁📌▶pins/
  │┌🌐playproject.io🔗
  ├📂📂▶📗themes
  │  ├📁📁▶🎨rainbow.json
  │  ├📁📁▶🎨fantasy.json
  │  ├📁📁▶🎨electro.json
  │  ├📁📁▶🎨light.json
  │  │┌📗themes🔗
  │  └📂📂▶🎨night.json📍
  │     ├🗄️🖇page
  │     ├🗄️🖇page/header
  │     ├🗄️🖇page/header/menu
  │     ├🗄️🖇page/projects
  │     ├🗃️🖇page/projects/datdot
  │     ││┌🗄️night.json:page/projects/datdot🔗
  │     ││├🗄️light.json:page/projects/datdot🔗
  │     │├📂▶🖼️header.css
  │     │└📁▶🖼️1
  │     ├🗄️🖇page/footer
  │     └🗄️🖇page/footer/socials
  │┌➕➕▶🇹app
  ││    ┌🗃️css
  └➖➖[📥🪄]◀🧩page
     │       👇
     ├➕➕[📦✨]◀🧩theme_widget
     │       ├📝rename
     │       ├🕳️unlink
     │       ├📌link[➕➕📦📦🆕]        // link as: [➕super/➕sub/📦input/📦output/🆕new]
     │       ├🖨️copy[➕➕📦📦🆕]        // copy to: [➕super/➕sub/📦input/📦output/🆕new]
     │       └❌delete
     ├➕➕▶🧩topnav
     ├➕➕▶🧩header
     ├➕➖▶🧩projects
     │  │┌➕➕▶🇹itemcard
     │  │├▶🧩projects🔗
     │  ││  ┌🗃️css
     │  ││  ││┌🗄️night.json:page/projects/datdot
     │  ││  ││├🗄️light.json:page/projects/datdot
     │  ││  │├📂▶🖼️header.css🔗
     │  ││  │└📂▶🖼️1🔗
     │  ││  ├🗄️data
     │  ├➖[📥🪄]◀🧩datdot
     │  ├➕▶🧩played
     │  ├➕▶🧩smartcontract_codes
     │  ├➕▶🧩wizardamigos
     │  ├➕▶🧩dat_ecosystem
     │  └➕▶🧩data_shell
     ├➕➕▶🧩supporters
     │┌🧩page🔗
     ├➖➖▶🧩our_contributors
     │  │┌➕➕▶🇹itemcard
     │  ├➖▶🧩Nina
     │  ├➕▶🧩Serapath
     │  ├➕▶🧩Jam
     │  ├➕▶🧩Mauve
     │  ├➕▶🧩Fiona
     │  ├➕▶🧩Toshi
     │  ├➕▶🧩Ailin
     │  ├➕▶🧩Kayla
     │  ├➕▶🧩Tommings
     │  ├➕▶🧩Santies
     │  ├➕▶🧩Pepe
     │  ├➕▶🧩Jannis
     │  ├➕▶🧩Nora
     │  ├➕▶🧩Mimi
     │  ├➕▶🧩Helenphina
     │  ├➕▶🧩ali
     │  ├➕▶🧩Ibrar
     │  └➕▶🧩Cypher
     └➕➕▶🧩footer

actually, duplicate could maybe be renamed to copy, but when you click it, it works like link ...so basically just like the options for "link" it would give you those for "copy" but instead of linking, it would be copying.

Clicking link toggles/selects [link] and allows to press other entries in the graph explorer to create a link to those and when done, just click [link] again to turn it into link again
Clicking copy toggles/selects [copy] and allows to press other entries in the graph explorer to create a copy to those and when done, just click [copy] again to turn it into copy again

By clicking the right icon type behind copy/link you can select as what you copy/or link it, e.g. super/sub/input/output/...

Does that make sense?

There are probably many other variations possible. We can discuss :slight_smile:

Also, if you e.g. link an entry under pins/ folder, you basically get "pin" already, so maybe no need to have a separate action "pin" ...it's just link :slight_smile:

also, maybe we could consider removing the icon and instead expanding/collapsing the actions when a user clicks on the "entry icon", e.g.

🖼️ or 🇹 or 🧩 or 🎨 or 📗 or 🌐 or 📌

is what we have for now. That wouls save us an additional icon per entry to make things more concise

Another thing we haven't talked about yet is the

📍 (1.)

which i just made up to indicate which theme is currently selected and used by the app.
It wasn't supposed to be the same as

📌 (2.)

which i added above as a folder icon to link entries to, so they can be accessed quickly. bookmarks basically.

The behavior of the (1.) is interesting, because selecting a different theme should probably be an action only available for themes.
When they are selected, the theme json file contains the names/id's of all component instances and which css files they use and it updates the linking inside the entire app tree to use the new theme. It's almost like automating the work of manually going to every single instance in the app and unlinking/linking new inputs to them i guess.

@Mirabrar-21
Copy link
Author

Mirabrar-21 commented Aug 22, 2024

tasks - 2024.08.22

  • updated theme_widget
    • updated theme_widget on figma -1h03min
    • UX suggestion prototype -23min
    • gathered ideas about UX improvement/action on tree - 3h20min
    • read feedback/gave feedback comments on discord-13min
    • discussion -30min
    • recorded, updated task and worklog -16min
    • @output 📦 theme_widget-v0.0.1

worklog

Worklog-43


feedback


proposal

@serapath
Copy link
Member

feedback 2024.08.24

path bar
this is great. we should keep that.

But one thing is important, imagine you selected a super entry or an input or output. The bread crumbs navigation has only a simple > to indicate the next level, but it does not show whether that is e.g. a "sub entry" or an "output".
So maybe we need something more here precise here?


regarding collapsing the graph explorer

you say while working on file content you might want to close or collapse the "graph explorer". I do agree.

I had some additional thoughts on that while looking at the editor menu bar:
editor menu bar

  1. if you click any of the tabs, it might show the graph explorer with that entry in focus
  2. if you click another tab, it shows that graph explorer in focus
  3. if you click on the + it shows a graph explorer with nothign selected and an empty editor which updates while you click around in the graph explorer.
  4. clicking around the graph explorer of one tab is updating the editor only when you click the "name" of an entry
  5. another option is in an existing tab's graph explorer, to click the "open" action, which is similar to the plus in the editor tab bar, but it shows the content of the entry that was opened and that entry in now also selected in the graph explorer of that new tab.

This is how vscode does it.
editor

Here you can see 2 tabs.
There is a breadcrumb bar right below the tabs bar that shows the path of the selected tab.
Inside that bread crumbs path you can select and get an entire expandable file explorer

...or in our case the graph explorer should change the selection to the current tab's content and potentially update it if we select something else in the graph explorer.

The bread crumbs bar in our case is always below (not above).

trash
Now seeing your trash can as well and the history of actions that happened with the option to "undo" or "forget" seems like a history of actions... we have actions always leave a mark in the "task messenger', also when it is not a text message.

  1. Additionally, the "bread crumbs" bar shows the current location, but clicking into it, might turn it into an input field with the entire link to the current location visible so you can edit it with the keyboard instead of clicking the bread crumbs.
  2. When you change it and hit enter, you essentially executed a "NAVIGATION ACTION" to update the graph explorer and maybe editor content.
  3. So you could technically have a history of navigation actions just like you have those delete or unlink actions in the trash can... but if we do have that, then why not have ONE HISTORY of delete, unlink and navigation actions?

So it might make sense to just have a console or log history of all navigation actions.

The current content of the bread crumb bar is just the current preparation for the next navigation or other action.

So it would make sense to EXPAND that breadcrumb bar into a console to show also the history of former navigations and other actions.

IDEA:

  • we could integrate he undo/redo actions into that expanded history list to even jump back to a specific point in time
  • the trash can can be removed because we have that log history of all navigation and unlink and other actions now

This means the bottom bar has only the ? now
Maybe we can put that as the first icon in the bread crumb bar to save space. Its not part of the bread crumb bar but they could go into one line.

Other than that:

Yes, being able to collapse the graph explorer with your button is cool.
Just like we can also additionaly expand the bread crumb bar into the history console and collapse it back into the bread crumb bar.

QUESTION:
If the graph explorer is collapsed, but we edit content of a css file, can we record those changes in the history console as well to potentially undo them?

@Mirabrar-21
Copy link
Author

Mirabrar-21 commented Aug 27, 2024

tasks - 2024.08.27

  • updated theme_widget_breadcrumb
    • updated theme_widget_breadcrumb on figma -2h23min
    • UX suggested tree structures on figma -50min
    • gathered ideas about UX improvement/action on tree - 4h32min
    • read feedback/gave feedback comments on discord-17min
    • discussion -2h26min
    • recorded, updated task and worklog -11min
    • @output 📦 theme_widget_breadcrumb

worklog

Worklog-44


feedback


proposal

@serapath
Copy link
Member

feedback 2024.08.28

see discord

@Mirabrar-21
Copy link
Author

Mirabrar-21 commented Aug 29, 2024

tasks - 2024.08.28

  • made Theme_widget wireframes
    • made Theme_widget wireframes step by steps navigation on figma -1h58min
    • prototype -18min
    • gathered ideas about UX improvement - 1h11min
    • discussion -14min
    • recorded, updated task and worklog -15min
    • @output 📦 theme_widget_step by step

worklog

Worklog-45


feedback


proposal

@Mirabrar-21
Copy link
Author

Mirabrar-21 commented Sep 1, 2024

tasks - 2024.08.31

  • made Theme_widget wireframes
    • made Theme_widget wireframes step by steps navigation on figma -5h35min
    • made a structure suggestion on figma also protoyped -51min
    • prototype -50min
    • gathered ideas about UX improvement - 2h12min
    • discussion -47min
    • recorded, updated task and worklog -18min
    • @output 📦 theme_widget_step by step_v0.0.1

worklog

Worklog-46
structure prototype


feedback


proposal

@serapath
Copy link
Member

serapath commented Sep 2, 2024

feedback 2024.09.02

commandbar
I imagine the "first expand" to be more minimalistic

  • the "icon" (=🪄) would become part of the "command input" field with cursor blinking
    • shows maybe the ❓
    • bread crumbs prompt probably collapsed
      • clicking on it will expand the bread crumbs
      • clicking on a breadcrumb entry (e.g. the root entry) might expand the graph explorer
    • shows an input field after the collapsed or a >_ icon after the expanded bread crumbs
      • clicking the input field or icon collapses the bread crumbs (if expanded)
      • and focuses the blinking cursor into the expanded input field
        • shows maybe an additional icon to expand the "command history/console" to see more
    • typing / into expanded and focused input field shows command list
    • typing any other character (e.g. a into an empty input field auto-prefixes it to /a
      • this also shows the dropup of all commands that start with /a...
    • clicking anywhere outside will collapse it into the 🪄 icon again
    • clicking a file entry in the graph explorer selects an entry and updates bread crumbs bar
    • clicking a selected entry in the graph explorer will open up the editor tab for it

docbox3
docbox2
docbox
The help "doc box" looks good.
Let's design it like that and see how it feels when implemented.
If we figure out issues, we can still change the css styling to put it on the bottom,
but so far it seems it could work to me.

inputfield
This looks good as well, but as described above, maybe it could be merged into the "bread crumb" bar, where the bread crumbs collapse into a single prefix name or icon prompt when the input field has focus.

If a user wants to expand the bread crumbs while the input field is contains text and is active, maybe the input field could move to be positioned above the bread crumbs like you have now. That is actually good.

I just think showing it in the bread crumb bar, by collapsing the bread crumb bar into a small icon/text prompt while the input field is focused makes everything even more minimal.

fileexpolrer
Yes, of course my above feedback stands, but otherwise this seems fine.

console
At first impression it is confusing to me. I realized it is the console, but i think i would expext:

  • the input/breadcrumb bar to be below both (graph explorer & command history)
  • if screen is narrow (e.g. mobile) i still expect that
    • but maybe graph explorer and command history would collapse them to be on top of each other
      • graph explorer
      • command history
      • bread crumb bar

And you could resize them or click an icon to switch between them (like tabs?)

additionally, i do think we could maybe allow to expand the command history console only when the input field is already active, which means that expand button for the console could only become visible when the input field is focused, but hide when the input field is not focused ...maybe.

Just trying to find a good UX that keeps things visually minimal ... hmm

editor
I think on a narrow mobile screen, that is exactly how i would it expext to look
But if there is more space, i could imagine the editor being next to the graph explorer and the bread crumb bar being below both of them.

If the command history was expanded as well, i would actually mostly expect that one to extend/expand the bread crumb input bar and also be below both, the graph explorer and editor tabs, which could be split 50/50 left on top of it.

all
So this is interesting.
If a command history entry is short, then having it like that would make sense, because you can see more of them.
IF a command is quite long, then a wide line makes sense and having it as described above, on top of the input bread crumb bar full width, would make more sense.

In that case, the graph explorer left and editor tabs right 50/50 split on top of the bread crumb input & command history bar would make more sense.

Also: the "doc box" should probably be full width on top of EVERYTHING, not just the editor.

an alternative would be, that the "doc box" opens up a "markdown file" in an editor tab to describe exactly the element that was clicked. That way, every component could always "hard code" the help text (similar to our default theme) inside each component itself. It then populates the database and gets opened in an editor tab as help text when elements are clicked while the ❓ is active. Maybe that would be even better?

In that case, it makes sense to open the "doc box" just as a regular editor tab with markdown content.


The remaining wireframes make sense, but everything i already said applies to them as well.

Now your proposed layouts (e.g. with the console on the side) might make sense too sometimes i guess, but then again, i don't think i would ever split the "command history" from the "command line" (=bread crumb input bar), so that command input field should always be below the command history imho. ...like a normal devtools console or a computer terminal.

@Mirabrar-21
Copy link
Author

Mirabrar-21 commented Sep 5, 2024

tasks - 2024.09.04

  • made Theme_widget wireframes
    • made Theme_widget wireframes step by steps navigation on figma -6h24min
    • prototype -2h19min
    • gathered ideas about UX improvement - 1h16min
    • discussion -1h
    • recorded, updated task and worklog -17min
    • @output 📦 theme_widget_step by step_v0.0.2

worklog

Worklog-47


feedback


proposal

  • For command history suggestion, specific entries can't be expanded. Actions might become available only after selecting an entry,
    breadcrumb, or graph, with icons appearing when selected.

  • Once the icon appears, clicking on it will expand an input field where the command line can be accessed, allowing actions to be executed based on the selected element.

  • duplicate entries will be colored.

  • can't jump/linked to the super or sub entries.

@serapath
Copy link
Member

serapath commented Sep 5, 2024

feedback 2024.09.05
starticon
Great :-)

commandbar
Great, but:

  • can we remove the 🪄 icon here? ...user can click "outside" to collapse
    • make the 🪄 the icon for the root bread crumb :-)
  • i feel the "undo" and "redo" buttons are not important enough to be shown here
    • file explorers dont have them either, because you only need them when you do a mistake
    • we can expand the "console" to display undo/redo there or make them /... commands
  • the empty space when "undo/redo" are removed could be a little input focus button
    • it could have a little >_ icon or just a narrow smallish unfocused input field?

inputfield
great, but same as above and additionally:

  • the icon at the end of the input field should be an x to exit to input field i think
  • the icon at the beginning would just be the 🪄

graphexplorer

One idea from above would be to use :wand: as an icon for the graph explorer root.

(click to expand more) version 12
🪄➖🌐playproject.io/
  ┠pins/
  ┃┌🌐playproject.io/
  ┠➖themes/
  ┃├🎨fantasy.json
  ┃├🎨electro.json
  ┃├🎨light.json
  ┃│┌themes/
  ┃└➖🎨night.json📍
  ┃ ├🔗page:css
  ┃ ├🔗page/header:css
  ┃ ├🔗page/header/menu:css
  ┃ │┌🎨night.json
  ┃ ├➖page/projects:css
  ┃ │├🖌️header.css
  ┃ │└🖌️1.css
  ┃ ├🔗page/footer:css
  ┃ └🔗page/footer/socials:css
  ┃┌🇹app
  ┃│ ┌🎨night.json
  ┗➖🗃🧩page
   ┠🧩theme_widget
   ┠🧩topnav
   ┠🧩header
   ┠➖🧩projects
   ┃│┌🇹itemcard
   ┃│├🧩projects
   ┃││ ┌➖🔗css
   ┃││ ││┌🔗night:page/header:css
   ┃││ ││├🔗light:page/header:css
   ┃││ │├➖🖌️header.css
   ┃││ │└🖌️1.css
   ┃││ ├🔗data
   ┃├➖🗃🧩datdot
   ┃├🧩played
   ┃├🧩smartcontract_codes
   ┃├🧩wizardamigos
   ┃├🧩dat_ecosystem
   ┃└🧩data_shell
   ┠🧩supporters
   ┃┌🧩page
   ┡➖🧩our_contributors
   │┃┌🇹itemcard
   │┠➖🧩Nina
   │┠🧩Serapath
   │┠🧩Jam
   │┠🧩Mauve
   │┠🧩Fiona
   │┠🧩Toshi
   │┠🧩Ailin
   │┠🧩Kayla
   │┠🧩Tommings
   │┠🧩Santies
   │┠🧩Pepe
   │┠🧩Jannis
   │┠🧩Nora
   │┠🧩Mimi
   │┠🧩Helenphina
   │┠🧩Ali
   │┠🧩Ibrar
   │┃🔼 🔼
   │┗➕━🗄🔨🧩{Cypher}
   │ 🔽 🔽 🔧rename📝
   │       🔧unlink🕳️
   │       🔧link📌
   │       🔧copy🖨️
   │       🔧delete❌
   └🧩footer

↪ │ 🌐playproject.io > themes > 🎨night > 🔗page/project > 🖌️header.css


version 13

🪄┱1[0]playproject.io/
  ┠[1]pins/
  ┃┌[0]playproject.io/
  ┠┼1[1]themes/
  ┃├[2]fantasy.json
  ┃├[2]electro.json
  ┃├[2]light.json
  ┃│┌[1]themes/
  ┃└┼1[2]night.json📍
  ┃ ├[3]page#css
  ┃ ├[3]page/header#css
  ┃ ├[3]page/header/menu#css
  ┃ │┌[2]night.json
  ┃ ├┼1[3]page/projects#css
  ┃ │├[4]header.css
  ┃ │└[4]1.css
  ┃ ├[3]page/footer#css
  ┃ └[3]page/footer/socials#css
  ┃┌[0]app
  ┃│ ┌[2]night.json
  ┗╅1┴2[5]page
   ┠[5]theme_widget
   ┠[5]topnav
   ┠[5]header
   ┠┬1[5]projects
   ┃│┌[0]itemcard
   ┃│├[5]projects
   ┃││ ┌┰1[3]css
   ┃││ ││┌[3]night#page/header#css
   ┃││ ││├[3]light#page/header#css
   ┃││ │├┴1[4]header.css
   ┃││ │└[4]1.css
   ┃││ ├[3]data
   ┃├┴1┴2[5]datdot
   ┃├[5]played
   ┃├[5]smartcontract_codes
   ┃├[5]wizardamigos
   ┃├[5]dat_ecosystem
   ┃└[5]data_shell
   ┠[5]supporters
   ┃┌[0]cardlist
   ┃├[5]page
   ┡╅1[5]our_contributors
   │┃┌[0]itemcard
   │┠┴1[5]Nina
   │┠[5]Serapath
   │┠[5]Jam
   │┠[5]Mauve
   │┠[5]Fiona
   │┠[5]Toshi
   │┠[5]Ailin
   │┠[5]Kayla
   │┠[5]Tommings
   │┠[5]Santies
   │┠[5]Pepe
   │┠[5]Jannis
   │┠[5]Nora
   │┠[5]Mimi
   │┠[5]Helenphina
   │┠[5]Ali
   │┃┌[0]itemcard
   │┃│▽ △
   │┡┷1┯2🛠[5]{Cypher}
   ││ ▽│△
   ││  ├[2]zip
   ││  └[2]zap
   │└[5]Ibrar
   └[5]footer

↪ │ [0]playproject.io > [1]themes > [2]night > [3]page/project > [4]header.css

once that is the case, the 🪄 just becomes the first icon for the first bread crumb and also the root icon in the graph explorer of course.

@Mirabrar-21
Copy link
Author

Mirabrar-21 commented Sep 8, 2024

tasks - 2024.09.07

  • made Theme_widget wireframes
    • made Theme_widget wireframes step by steps navigation on figma -3h19min
    • prototype -3h02min
    • gathered ideas about UX improvement - 20min
    • discussion -10min
    • recorded, updated task and worklog and hackmd-40min
    • @output 📦 theme_widget_step by step_v0.0.3

worklog

Worklog-48


feedback


proposal

@Mirabrar-21
Copy link
Author

Mirabrar-21 commented Sep 21, 2024

tasks - 2024.09.20

  • made Theme_widget wireframes
    • made Theme_widget wireframes step by steps navigation on figma -4h12min
    • prototype -3h09min
    • gathered ideas about UX improvement - 40min
    • discussion -12min
    • recorded, updated task and worklog and hackmd-17min
    • @output 📦 theme_widget_step by step_v0.0.4

worklog

Worklog-49


feedback


proposal

@Mirabrar-21
Copy link
Author

Mirabrar-21 commented Oct 8, 2024

tasks - 2024.10.08

  • made Theme_widget terminal UI
    • made Theme_widget terminal UI from scratch step by steps navigation on figma -7h53min
    • varients -1h12min
    • UX suggestion wireframes - 1h34min
    • gathered ideas about UX improvement - 5h13min
    • discussion -2h26min
    • recorded, updated task and worklog -19min
    • @output 📦 theme_widget - Terminal UI-v0.0.1

worklog

Worklog-50


feedback


proposal

@Mirabrar-21
Copy link
Author

Mirabrar-21 commented Oct 8, 2024

tasks - 2024.10.08

  • made Theme_widget hackmd slides
    • made Theme_widget hackmd slides step by steps navigation -3h29min
    • recorded, updated task and worklog and hackmd -24min
    • @output 📦 theme_widget

worklog

Worklog-51


feedback


proposal

@Mirabrar-21
Copy link
Author

Mirabrar-21 commented Jan 9, 2025

tasks - 2025.01.09


worklog

worklog 53


feedback

Made theme_widget explanation video about , graph explorer, tabs, editor and action wizard


proposal

@serapath
Copy link
Member

feedback 2025.01.19


worklog-47 #24 (comment)

remaining feedback worklog 47

In worklog 47 you share there is a problem with the command list /... when e.g. the night theme is selected, but as you mentioned, YES, when you click the earlier > symbol of another bread crumb segment, e.g. from theme > then the actions would apply to the theme instead of night.
Actualy, the "home" icon shown in the input bar here:
command list
should represent the collapsed breadcrumbs using the icon of the entry that represents the current target for the input field, such as e.g. night theme or themes folder

In worklog 47 you talk about he command history and compare it to devtools and how there is a button to select icons. This is all a perfect idea and it should exactly work like this, but i dont think we need that special "select icon", because if the command history is expanded and you click a different bread crumb or entry in the graph explorer, the command history will automatically adapt its view to it.


create theme suggestion feedback

from: https://www.youtube.com/watch?v=cNgGLqnHeeM

 ------------------------------ -------------------------------
| graph explorer               | editor view                   |
 ------------------------------ -------------------------------
| [>_] [/] | _       ❌➡️| [tab1 x][tab2 x]... [<][>] [10] [?] |
 --------------------------------------------------------------


=(❌)=>


 ------------------------------ -------------------------------
| graph explorer               | editor view                   |
 ------------------------------ -------------------------------
| [>_] [/] |play>theme>night 🔍| [tab1 x] ...  [<][>] [10] [?] |
 --------------------------------------------------------------

=🔍=>


 ------------------------------ -------------------------------
| graph explorer               | editor view                   |
 ------------------------------ -------------------------------
| /new theme (creates a new theme)🕳📌🔘|                         // autocomplete dropup menu
 ------------------------------ -------------------------------
| [>_] [/] | /new    ❌➡️| [tab1 x][tab2 x]... [<][>] [10] [?] |
 --------------------------------------------------------------

inputform
fill out input form as inspiration from discord is nice, but we should cross compare it with
the "steps wizard" from the datdot app! but otherwise, you are on the right track with the direction
this is going into :-) cool.

enter screen
Here you show some options available when the user clicks enter.
Now this is another evidence why we should take a look into the datdot steps wizard.
Every action might need a different kind of custom box like what you show here.
Some actions dont need such a box at all, some others might need even more boxes based
on the decisions in the first box. ...a wizard can have multiple steps.
So we should make this a bit more systematic :-) ...but good points otherwise.

So in the case above, you need multiple form inputs to really specify what will happen

  • theme name
  • theme files or data

So as a "steps wizard" in the datdot sense, this action wiard should have 2 steps before completing/submitting the form and trigger the action execution.

Lastly, the "PREVIEW" should be seperate from the wizard and should get updated with each completed wizard step. Maybe the first step should be to select theme content and the second one to select a name.
Maybe there is a hidden step, which is already prefilled out by the bread crumb which was selected when opening that input field command list.

One thing to notice:
file picker
This UI is a built in browser UI for picking files.
This is not a component built with js/html/css. Its not part of the youtube website.
Any website that allows you to upload files from your computer will use this file picker UI.
Its part of the browser.

But yes - if an action or command requires to get files, then that is something that should happen in
one of the "action wizard steps" that slowly ... step by step ... complete filling out the form required to execute a specific action

In the context shown above, you would probably have a step to first select the "mode"
e.g. "move files" and that would trigger the next step where you pick what to move.
...every step wizard can have different steps custom to the specific action.

another step
Here this graph explorer can be shown also inside the last step of the step wizard for this action.
Its just another instance of the graph explorer specifically to complete this step wizad action form

There should be a fine scroll bar (just like vscode editor tabs bar does it) to indicate that
the input field can be scrolled to show all the steps hidden because of lack of space currently.
But ...lets also see how the steps wizard in datdot does it. Every step has a NAME too :-)


worklog-48 #24 (comment)

action bar
You show this after a user clicks the > in ...🖼️1.css( > ), which makes sense,
but the icon used in the beginning of the command line should now be 🖼️ and
the text should be 1.css represent the bread crumbs with the current active location for the commands.

The icon not, but at least the text is shown correctly in a later version in the worklog:
input bar

It was good, that in the bread crumbs, the 1.css had a slightly different focus highlight color.
Clicking the 🖼️ should toggle the graph explorer and clicking the ❌ should close the input command line and re-expand the bread crumbs bar. There should also be a "submit" icon next to the to actually send a typed command.


command history
This is confusing, i expected clicking the [>_] icon at the end will expand the "command history".
What is this supposed to do? I thought clicking the > next to any of the bread crumbs is already
showing the command line so what other or different "Type here..." would i get when clicking [>_]?

Let me know, but i thought no matter which > bread crumb i clicked to enter command line,
the [>_] can be used to expand/collapse the command history (like a console/terminal history).

Especially later in the worklog you show both at once:
double input line
And i am confused and forgot why we have that and what is the difference between those two input fields?

What i can imagine or see is yet another icon next to e.g. [>_] to popup some sort of 'search/filter/sort' bar instead of a command line to trigger actions, to help us e.g. find and navigate through the graph explorer or find and navigate through the list of possible commands and so on ...


editor
Now this view is interesting when clicking e.g. 1.css.
This is clearly a desktop view and we also have to design how this works when the screen gets small in a mobile context and generally we need to add how components adapt responsively in different size contexts.

Now what this also suggest is, that when the editor is collapsed, we might still want to be able to see and switch or re-open any "open file", such as any of the tabs below the tabbed editor, thus, while an editor should be collapsible, maybe the tabs bar should still be visible.

In fact, each tab, when you click it (lets assume they are different and not all just editor tabs for 1.css, which means when i click a tab with a different content, e.g. such as eh... 2.css, it should change what is visible in the "bread crumbs" bar as well.

  1. we need to be able to scroll the tabs bar when more tabs are open then there is space in the tabs bar
  2. probably the currently active tab should always expand to show a breadcrumbs bar, while
    • the previously open bread crumbs bar of the former active tab should collapse back into just a tab.
  3. we might need some sort of [+] button to dynamically allow a user to click and add an entirely new tab to the tabs bar, where choosing which content to display in the new tab should probably come from a graph explorer popup/overlay/etc... to choose the content file for the new tab :-)

AGAIN - here you mention a problem with the [>_] icon, but in my mind that is just the icon to expand/collapse the "command history" for the currently selected tab. A full width console chat like history that expands above the "action/tabs bar" and below both, graph explorer and editor tiles.

commandline
So in a way what you then continue to show is kinda what i just described, just that it is a single input line instead of the scrollable multi line "command history" view.


question
I can see one problem.
When the ? is toggled and active, anywhere you click should NOT cause any action inside the overall app,
but instead show help information about it in the "doc box".
Now if the "doc box" itself gets opened as a regular tab and we now have the questionmark active.
Of course we can click for example somehwere in the graph explorer (not to select stuff, but to display information about it in the "doc box"), but what if we instead click on the "doc box" tab or try to scroll the doc box? ...do we now get information about the scrollbar or close the tab or does it displa information about it? ...but how can we scroll the doc box? do we first need to click the ? again to cancel "doc box" mode and allow the scrollbar to work? ...but does that mean canceling the ? will keep the "doc box" tab open and we have to close it manually? What if we toggle the ? multiple times in a row?
Will the second one open a second "doc box" tab or re-use the former one?

And what if we toggle ? to make "doc box" inactive, but then or before we click on the "doc box" tab to select different content from the bread crumbs, so it doesnt even show the "doc box" content anymore, but something else? If we now click ? again to make "doc box" active, will it override the different content in the tab formerly used for the last time we made "doc box" active or will we then open a second tab?

...overall, questions over questions. Whats you take on this?

Given that, i kind spontaneously feel like maybe the special extra "doc box" on top of the entire app was better? ...hmm - just brainstorming still.

Also - a bit "meta", but i just had another thought about this:

  1. the "theme widget" shows the playproject code structure and content
  2. on any other app, the "theme widget" would display the code/content of that project.
  3. the "help" button is part of the theme widget UI and the doc box would display help about how the "theme widget" works (e.g. what you can click and do), not how the project you are exploring works.
  4. This means, the markdown files or whatever the help content that gets display is all about:
    • is NOT stored in the current grpah explorer project, like playproject
    • it is instead stored in the "theme widget" codebase itself, because only that knows how the theme widget functions and what to display based on which theme widget feature.
    • so another argument, that it is NOT the same as a tab that displays graph explorer content from the current project
  5. finally, there is ONE exception, which is, if the "theme widget" is used to explore its own code base.
    • in that case, the explored projet and the actual theme widget UI to display help, are kinda the same
    • but this is a special case i would explore when we implemented the theme widget and use it already.

mobile view bar
Interesting that in mobile view the bread crumb bar and tabs bar get displayed on top of each other.
Maybe thats good. I would keep it in the same bar, but of course, on mobile there isnt much space.
So if thats the case, i would still put the "tabs bar" BELOW the "bread crumbs bar".
Why?
Because the bread crumbs are details of one tab, so tab is more overview, while bread crumb bar is more details. The bread crumb is still overview compared to the actual editor with content, which is all the details about the content of a specific file. If we go from more overview towards more details when we go from bottom towards top, then naturally the more overview ui element "tabs" should be below the less overview ui element "bread crumbs bar", which should be below the even more detailed content, the actual "editor content.

Also navigation wise thats true:

  1. navigating to a different bread crumb can change the editor content, just like
  2. navigating to a different tab can change the bread crumbs content

@serapath
Copy link
Member

serapath commented Jan 15, 2025

feedback 2025.01.15

worklog-49 #24 (comment)

comand bar
comand bar
This looks good, but i do think clicking on the initial 🪄 icon should open the command bar
and also directly focus into the command input field ready to autocomplete type a command.

But beyond that, i think we have to take a moment to think about all the things we need to do.
Given a specific breadcrumb path, like what is displayed in the screenshot above, we want to:
0. RESPONSIVENESS - everything should work on a wide desktop screen, but also on mobile!

  • this includes any field that could have more content then the width (or height) of the screen allows. What happens?
  1. enter a command for a specific entry with autocomplete command list already expanded
    • TODO: expand/open autocomplete command list for current entry command input line
    • by e.g. clicking ">" (default focus when initially opening command bar by clicking 🪄)
      • exit into bread crumb bar by clicking ""
      • the entry name is a placehodler text in the background of the input field to indicate
      • or click prefix "🔍" to toggles (=expands/collapses) graph explorer
        • TODO: consider switching from a search to an edit pin icon, e.g. "✏️"
        • turns bread crumbs into editable path.
        • use autocomplete typing to change the breadcrumb path or copy/paste it
        • exit into bread crumb bar by clicking ""
        • exit into bread crumb bar by clicking "➡️/➤/↩/✔/▶" to confirm changed path
      • click command line to focus it again with autocomplete command list expanding
        • start typing to autocomplete fill out a command from autocomplete command list
      • TODO: add "wizard steps" forms for commands with multiple parameters
      • add a "➡️/➤/↩/✔/▶" icon to send/execute a selected command (next to or after "")
  2. open the graph explorer for a specific entry
    • by e.g. clicking the "icon" of a bread crumb - clicking the name again collapses it
    • the root entry, e.g. "playproject" needs its own icon separate from 🪄
  3. change the program to open a specific bread crumb entrys extension area:
    • by e.g. clicking on the "extension" of a bread crumb name
      • e.g. .jpg or .js for a file
      • e.g. postfixing / for a folder
      • default programs for extensions might be set in a config file in the future
  4. collapse command bar back into the "root" symbol 🪄
  • by e.g. clicking 🪄 before bread crumbs to collapse the comand bar into the 🪄 icon again
  • clicking it again, expands the command bar again with the command line input active
  1. click question mark to toogle "doc box" and show help/documentation for any clicked UI/UX
  • just like when you click to highlight what is clickable in a figma prototype:
    • we can give users hints whats clickable to not confuse or hide the option from them to:
      • e.g. be able to click a breadcrumb icon to open the graph explorer
  1. click >_ to toggle expand/collapse command history
    • this isnt meant to be an "input field" or another "command line", but its command history
    • TODO: show the command history (like a chat history)
  2. click on the name of a file to toggle (open/collapse) the view of an entry
    • e.g. open/close an editor to view a css or html or js or json file
  3. if a user clicks somewhere into the expanded graph explorer or editor, then:
    • the breadcrumb bar will collapse into a single icon, just like in the active command line
    • the "free space" will show a list of "action icons" pinned from the command list

command bar
Here you can see night.json tab, but also the initial breadcrumb view for "night" theme.
They should be the same.
tab
0. this should represent the "currently active/focused tab".

  1. clicking a different tab, e.g. 1.css should update the breadcrumb bar.
    • or collapse the previous breadcrumb bar and tab and expand the new tab into breadcrumbs
  2. there should be a way to open a new tab
    • probably this should be combined with the left and right tab navigation and tabs number
      • the left and right switching might be better shown as scrollbar or swipe gesture
        • because clickinf forward/back is very slow when you want to use it
        • swipe and scroll is faster
        • and for precision we can change the "id number" field, see next bullet point
      • the displayed "id" number should probably rather be replaced by the active tab
        • e.g. "night.json" tab
        • but could be an icon/action to get a autocomplete field to type and quickly find/select and switch to a specific tab, especially when there are lots and lots of tabs open
    • maybe clicking it would offer an autocomplete list to quickly switch tabs or scroll too
    • one always visible option in that menu could be the "add tab" action
    • also it should have a button to save the entire set of tabs to a json file
    • or open an entire set of tabs from a json file
      • this makes the tab bar a "bookmark bar", where you can switch the set of bookmarks
  3. given the above, it seems better to have the ? button on the other end, but lets see

@serapath
Copy link
Member

feedback 2025.01.15

worklog-50 #24 (comment)

It looks okay.
I like how bread crumb, magic wand and search button is kinda merged.
Anyway, i think all my feedback for worklog-49 applies.

I do think what matters for the terminal version is to actually draw the UI
in unicode text characters an define "keyboard keys or combos" to navigate,
so that a mouse, touch or clicks are not needed.

Another important aspect of the terminal UI is to define one that works by entering commands.
One command after another.

To explain what i mean:
The popular command line tool git can be used to manage a github repository via commands.
There are popular visual apps to do the same. VScode has it built in, but many tools, such as

Regardless, you can type git commands in a terminal to update a git repository.
You can also type git commands to figure out the status of a git repository.
That way - command by command - sometimes to change and sometimes to query the repo status,
you can work your way through every git feature.

So if all you had were command line commands, how would you "see" or "change" the things
that you could see or change using the theme widget app?

I think that should be the task for maybe ali and/or ahmed.
And we stop the terminal UI/UX for a bit.

Once we have the "web version", we will then try to translate it into a terminal UI as well.
Going forward, lets just try to use a super basic minimalist terminal style theme so we keep it as close as possible to how a terminal UI would later look like.
Essentially, we need ONE UI and it has to work BOTH, in a terminal and in the web.
This also means, we should skip "fancy UX features", which are not possible in the terminal.
You cant scroll or swipe or shouldnt use the mouse, but if we define keyboard shortcuts for all commands and navigations, we can still get there. (e.g. [tab] or [arrow keys] to move around and maybe [space bar] to select and then [enter] or [esc] to confirm or abort).
We also have the [alt], [shift], [ctrl] modifier keys as well. So there should be a way.
The same way should be possible in the web too to navigate purely via keyboard and skip the mouse.

So please continue with this style, but now lets do it for the web again :-)


new theme
enter name
This "new theme" feature is actually a perfect example of what the "steps wizard" in datdot
is all about. There are many commands and all of them have different needs to provide options or configuration or input, basically to fill out a form with 1 or more form fields, each form field could be a simple text input or some more complex input widget, a map, a slider, a color picker, etc... it really depends on what data we need to execute a specific command.

We should work on a general "wizard steps" component, where each action or command, such as "new theme" can define its own set of data requirements, which will then show one or more steps in a step wizard to prompt the user to use the different input widgets to provide the requested data :-)

Next to datdot steps wizard, we can also additionaly take inspiration from discord / commands.

Basically, just think that this kind of "new theme" feature example would work for ANY action and the input prompts can be customized based on actions, but they all have in common, that they will prompt the user to collect data needed to execute the action.

Users need to be able to cancel, confirm, got back and forth, see a preview, etc... when filling out the form step by step before finally submitting to execute or abort the command.

Basically:
steps wizard
you already created some sort of "steps wizard".
Now if this steps wizard had 50 steps, the entire screen would be filled.
Instead, the steps wizard could occupy a second bar, just like the tabs bar and allow scrolling left and right if there are too many steps (or swiping) and re-use the feature to autocomplete search for a step (and maybe display which step we are in e.g. (4/14) steps.
A cancel and confirm button is needed as well.
The "description" as such is not needed in the steps bar, but could be part of the "input widget", which can be a dropdown or a textfield or anything ...and could technically be outsourced to the ? and the doc box description of a field if needed.

The input field in the command bar is probably not the right place for the various possible input widgets, because not all of them would fit in there.

Finally, building up a preview before submitting the action would be good as well, to show somehow what kind of new data entry ot action and effect we are creating by filling out the form.

Technically, if there are different alternative options in a step wizard, then "next steps" could depend on filling out a "previous step". Thats entirely possible :-)
Maybe move/import/copy are an example of that.

language
is another example of that.
I guess more appropriate would be to have steps where

  • language name
  • language emoji/icon
  • language json file content
    is asked for during the step wizard and in the end the files for the new language get created in the correct folder.

custom
In the custom dataset example - i can just say that using the "graph explorer" to select e.g. a css file and then later use it again in another step to chose a component instance to apply it to, etc... is just using the "graph explorer" as input widget to prompt the user to provide or select data in one or more steps, so that when the wizard steps are completed, the action is applied with the data selected or provided by the user :-)
So we should more focus on a step wizard that can be customized for any action we might want to define in the future (which includes defining "input widgets" for specific user input prompts depending on the kind of command or action we want to collect data for to be able to execute it.

figma
Same for the figma command.
No clue how this would work. How do you apply a figma design?
I imagine in worklogs, if a worker wants to provide a figma dataset, they would paste the link to a figma dataset into the step wizard form. anyway - the kinds of actions or commands people might define in the future are hard to predict, so we need a good general steps wizard, that allows to create custom input widgets people can use to define their input prompt steps to get all the data from the user to be able to execute a command.

As you say in the end - a "change theme" command is yet another possible command we can then design :-) ...not just that, there can be many more commands to help do stuff.

Maybe at some point people can install/uninstall those kind of commands with their corresponding steps wizards or even program commands themselves and publish them for others to install those... we'll see. For now we just create the basics to later allow such things.

command history

command history
Thats exatly what i imagined to see when the user clicks >_ button.

command list

command list
Earlier, when the user clicks into the "input field" e.g. the > next to a bread crumb to execute a command, it should already start with the default command steps wizard.
Canceling the default command wizard will provide the "command list" to autocomplete from.
We were further along already, because the command list in the past included an icon to select the default and an icon to "PIN" one or more commands with icons as "quick actions" :-)

high contrast theme

high contrast theme

At last you quickly show the alternative theme with the orange.
These are all good examples, because we would use those to make some default themes users can switch between until they start making their own themes and a high contrast theme makes sense.

@serapath
Copy link
Member

serapath commented Jan 16, 2025

feedback 2025.01.16

worklog-51 #24 (comment)

The hackmd slides look great.
This way we can make sure everything will be possible in a terminal.

command list
A few things are missing is the e.g. "pin" and "default" feature in the command list

Kinda like this...

/🛠commands
-----------------------------
/🗃list                    📌
/📩text                    📌
/🆕🔳task                  🕳️
/🔳subtask                 🕳️
/📨invite                  🕳️
/📥input                   🕳️
/📤output                  🕳️
/😀emoji`                  📌
/📎attach <file>`          📌

You also had already versions with that desinged, like here:
command list
So not showing that seems a "regression".
We should try to really avoid having those regressions.
We need to slowly get towards version controlled components for everything and not forget things we already decided and go backwards. We have to be super systematic to pushg things forward :-)

Anyway, generally, the good part here is, that because options are so limited, it helps us to keep things basic, but as mentioned in the last feedback.
Lets focus on a basic web UI, but keep in mind keyboard navigation and think about the hackmd slides to make sure there wil be a way to represent all of that web UI with a terminal theme as hackmd slides later on too.

console
Also just to remember here, the "console" or "terminal" icon is just to expand/collapse
the command history for otherwise the search/action input for any of the bread crumbs.
It is not itself an "input" field.

So no need to type in /history or whatever.
Clicking the icon will show the command history automatically :-)
It can be scrolled and potentially resized.
In terminal mode we need to think of "hot keys" or commands to do so, because in a terminal,
we might not be able to use a mouse to drag and resize boxes.

layout
When it comes to layout, the layout has to be drawn with unicode characters.

The problem here is that it is hard to show boxes side by side, so instead, it is better
to draw a complex layout in a single hackmd code snippet box using unicode characters to
separate the section from each other, like what i did in my earlier hackmd examples:

Basically what can be seen here:
hackmd-layout
Now this just shows boxes on top of each other, but you could draw them left/right next to each other as well.

mobile command bar
What i like with this (even though its not separated inside the same code snippet by unicode characters), is that it could be a good way to show command bar and tabs on mobile.
Basically by breaking it into 2 lines on top of each other.
I kinda prefer the tabs to be BELOW the tabs though, because the "command bar" shows information about a specific tab and switching the tab changes the content of the command bar.
The editor and graph explorer should probably also be below the editor in this layout.
So the graph explorer can be expanded FROM the command bar to change selection if needed.
The editor shows details in case we select a different entry in the command bar or graph explorer.

Again, repeating feedback from worklog 47 or 48.
The doc box should probably become its entirely separate box and should NOT be an editor tab.

steps wizard
So the "create theme" - just like in the web UI - requires a genreal concept for steps wizard.
One that can deal with all kinds of data.

It also makes me think, that we might NOT create a full blown terminal UI with tiling boxes and all the stuff we designed for the web UI.
Instead, we might need to:

  1. first design the responsive web UI in a terminal like style
  2. we need to implement it to make it work so we can create themes for it too
  3. we then use the javascript functions we used to implement and create a command line tool
  4. the command line tool will just define a bunch of commands to interact with the data step by step, but not in an interactive UI, but instead:
    • you can type some commands to list or show contents
    • and then type some other commands to modify contents

Thats it.


various other things

command bar
I think overall i liked the ? more in front.
The >_ icon is just to expand the command history and it was in the bottom left. I think i wouldnt change it, because maybe we will only show the >_ when we enter the command input line or some other conditions, but no matter what the UI shows, one thing needs to always be there from the beginning and that is the ? - not sure if it should be the first or second icon.
I guess in the feedback above i also mentioned the 🪄 as an icon to open/close the command bar in general.

Or maybe we only have the 🪄 in front and then all other icons in the end like we had it here:
commandbar2

Maybe this has to be considerd in combination with the "tabs bar" and my feedback regarding that and also the difference between a long bottom bar like on desktop and a short one, like on mobile.
We could also try to list pros/cons for different options :-)

high contrast design
Generally, this style of creating the web UI wireframe is great as a basic first theme, so maybe we can keep it as simple as that to get the UX right.

Once we have everything finalized, we can also make a "pretty" theme or multiple :-)

@serapath
Copy link
Member

feedback 2025.01.16

I checked your explanation videos you made for ahmed.
They are great, but of course they arent yet the final version.
Still - given that Ahmed didnt know anything, it definitely gives a good first explanation of what these apps are all about.

I guess we will just need to wait for a new figma iteration that includes all the feedback from worklogs 47-51 :-)

@Mirabrar-21
Copy link
Author

Mirabrar-21 commented Jan 21, 2025

tasks - 2025.01.21

  • made Theme_widget wireframes
    • made Theme_widget wireframes step by steps navigation on figma -3h23min
    • gathered ideas about UX improvement - 35min
    • discussion -1h
    • recorded, updated task and worklog -24min
    • @output 📦 theme_widget_step by step_v0.0.5

worklog

Worklog-54


feedback


proposal

@serapath
Copy link
Member

feedback 2025.01.22

Perfect. Shared all feedback on discord.
OVerall. Great job.
I think for ahned we need an interactive prototype including all the ways in which things would be responsive and to break it down into "sub" components and "sub sub" components and so on, so that ahmed can tackled them component by component and not all at once.

You can then at some point also review ahmeds worklog to give him feedback :-)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Development

No branches or pull requests

3 participants