Skip to content

Fix construction of non-verbose args#2484

Draft
kruss wants to merge 101 commits intoesrlabs:native-uifrom
kruss:fix_native_non_verbose_args
Draft

Fix construction of non-verbose args#2484
kruss wants to merge 101 commits intoesrlabs:native-uifrom
kruss:fix_native_non_verbose_args

Conversation

@kruss
Copy link
Collaborator

@kruss kruss commented Feb 23, 2026

This depends on: esrlabs/dlt-core#52

* Create the app crate to be run point for Chipmunk native desktop
  application.
* Set unified version and rust edition in workspace and make all other
  crates follow it.
* Add dependencies for native app.
* Add support for parsing CLI arguments
* Support for basic logging.
* Hello world from native UI
* Specify the paths for internal crates in indexer workspace instead of
  having to specify their paths in each project.
* Apply those changes on all internal crates withing indexer directory
* Rename crate to application
* Define UI & Core & Service and State modules.
* Define communication types (commands and events) for both general app
  and sessions.
* Define communication channels for general app
* Render Menu with one command to close the app.
+ Ignore errors in repaint watcher since we will get and error once the
  states sender channel is dropped.
* Use two main modules for the app (host and session) and have each
  modules containing its UI, services, data and core modules as
  sub-modules.
* This change will make it easier in the future to split the two main
  modules into separated crates.
* Create the UI for rendering the content of the sessions using the
  communication channels.
* Spawn a task for each session to make the communication for each
  session locally.
* UI will just read the file and render it's content as lines.
* Channels communication still need some thinking because we are tight
  to the render loop to receive the events.
Change the mechanism for waking up the UI on events to include egui
context in all senders and call it explicitly on each send.
* Wire up close session command adding and ID for each session.
* Improve notifications adding additional items and cleaning up the
  implementation in UI.
* Log send errors in one function and embedded it in all senders
* Create a struct to be passed through UI components to be able to send
  notifications and check for shared UI state across all UI components.
* Use this struct to send command encapsulating the error handling.
* New error type for UI.
* Rename to UiComponents to HostUI
* Move receivers and notification handling to host UI completely.
* Use the table provided by the crate egui_table to show the logs.
* Current implementation still primitive without using functionality in
  chipmunk core.
We need the UI for each session to have it's own unique ID to avoid
its owned controls from having ID clashes. We had this problem with
tables from different sessions sharing their scroll state.
* Bind session from rust core libraries in the native UI.
* Currently we can establish a session and deliver the number of lines
  that has been read.
* UI needs to request for lines so it can display them in the table.
Building system to display logs in table (WIP): We load all logs
without cleaning up the logs aren't needed.
* Better way to check for data need to be fetched.
* Encapsulate logic for getting log entries inside MainTable struct
* This approach avoids having to load existing logs but is complex and
  is based on assumptions that the logs are sequenced and sorted.
* Implement showing a window of logs simply using a map with indexes
  avoiding the complexity of keeping track on the existing logs.
* Request discard rendering frame when new logs needed to be fetched to
  avoid rendering the rows where we don't have data.
Tables use the ID of their direct parent, therefor we need to assign
an ID for that part and it's not enough to assign an ID for the
session root UI as it solved in previous commit
* Create the bottom panel with the tab control + Add tabs types
* Create components for each tab and render the initial content for each
  one of them.
* Input controls follow the functionality and look if the current one.
* It provides extra functionality for handling Ctrl+Backspace.
* Wire filter callback to keeping filter info in session data state.
* Implement search status in search bar
* Introduce entity to keep track for long running process.
* Cancel search operation safely.
* Cancel running operations on session closing.
* TODOs and notes
* Implement table for search results adding the needed structs and
  commands to UI, data state and the services.
* Keep offset for search results because we need for mouse scrolling.
* Fix layouts making sure panels don't shrink to fit their content.
* Add ID for search table to avoid ID clashing between scroll states.
AmmarAbouZor and others added 23 commits February 10, 2026 15:36
Extend process validation including validation for the current running
directory
* Closing session can be done on the UI and a signal is sent to the
  backend to cleanup but the UI won't wait for it to send a message
  back. This is important to the app to stay responsive if the backend
  was busy with some blocking operations.
* Create new action for the internal communication between UI
  components and the host UI without involving any service.
* Busy indicator support cancel button.
* Suppress warning about unused fields while in development.
* Move operation tracking for search to UI state to handle all
  operations in one side.
* Improve UI handling for search state since more infos are available.
* Best possible fixes to searches going out of sync in UI without
  changing search logic in rust core.
* Multiple Files view with support for concatenate and open each file in
  new tab.
* Add concatenate to session setups types and start sessions with
  concat origin.
* Implementation of scanned directories in backend service.
* Add menu items for scanning directory to find matching files.
* Opening multiple files form both menu and cli will end end up in
  multiple files setup view.
* Refactoring for host service regarding file operations.
* Notify service on exit event to ensure they will run if on closing the
  app from any place (Menu, X in window bar, or shortcuts)
* Wait for service to finish their cleaning up (with timeout).
Reduce memory footprint for HostMessage variants by heap allocating
fields with large memory footprint
* Labels should be not selectable by default making selecting a text an
  explicit opt-in configuration.
* Change current labels removing code noise and applying selecting where
  it's needed
* Add observe modules for all sources.
* Implementation for observe files view.
* Implementation for attaching new sources to running sessions +
  Applying all needed changes in multiple places in source code.
* Include parser in selecting filters for attaching files.
* Cleanup multiple places in codebase.
* Add Processes view for observe tab in running sessions.
* Refactor observe tab in running session enabling it form carrying a
  state with it instead of state-less approach, which was OK for files
  but doesn't work with command processes.
* Other refactoring to reuse some components + Improvements + Cleanup
* Add UDP observe view + Fixing view for multicast items to fit both
  views (Session setup and observe tab).
* Encapsulate rendering items function between streams.
* Placeholder for serial ports.
* Add context menu to listed observed sources in the running session
  with the extra commands that are available in the current master
* Implementation to transfer source and parser configuration from
  running session to a new session
* Use the same implementation for opening files in new session button to
  keep it consistent.
* Add hover effects to the list in the UI as well.
* Show colors of source in the logs table when multiple sources are
  used.
* draw a separator between logs that have different sources.
* Group duplicated code for tables in one module and use them for both
  logs and search tables.
* Other refactoring are postponed for now until filters are implemented.
* Add stick to end for logs table with stream sources and file source
  once it get into tailing state after finishing the initial file
  reading.
* Reference egui_table to special patch until the proposed changes are
  accepted in the mainstream crate.
@kruss kruss requested a review from AmmarAbouZor February 23, 2026 14:25
@kruss kruss changed the title DRAFT: Fix construction of non-verbose args Fix construction of non-verbose args Feb 23, 2026
@kruss
Copy link
Collaborator Author

kruss commented Feb 23, 2026

Before merge the application/apps/indexer/Cargo.toml needs to be adjusted to a new release of DLT-Core:

dlt-core = "0.20.2"

@AmmarAbouZor
Copy link
Member

I'll mark this as draft since we need to wait for changes to be merged in master at first in #2483, then rebase master into native-ui and then we can merge this PR if needed

@AmmarAbouZor AmmarAbouZor marked this pull request as draft February 23, 2026 14:36
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants