| Date | Message | Author |
| 2026-09-18 | developer_attribute_initialize 1.1: Normalize option | Lucas Galante |
| 2026-09-18 | developer_attribute_initialize 1.1: one attribute per node | Lucas Galante |
| 2026-09-18 | scene viewer: Tab / Shift+Tab warp the pointer to the next / previous viewport | Lucas Galante |
| 2026-09-18 | keycam: refit the aspect ratio on LayoutChanged | Lucas Galante |
| 2026-09-18 | repo moved to ~/projects/hou-control: package manifest and MCP config follow | Lucas Galante |
| 2026-09-18 | developer_attribute_initialize: dot and cross operands from a parameter | Lucas Galante |
| 2026-09-18 | developer_attribute_initialize: Dot Product and Cross Product sources | Lucas Galante |
| 2026-09-18 | otls: Develop 1.1 orders its tabs Input, Remesh, Detangle | Lucas Galante |
| 2026-09-18 | otls: fold Surface Detangle into Develop 1.1 as a Detangle tab | Lucas Galante |
| 2026-09-18 | otls: Develop 1.1 shows Input and Remesh as tabs | Lucas Galante |
| 2026-09-18 | otls: fold Surface Remesh into Develop 1.1 | Lucas Galante |
| 2026-09-18 | otls: attribute menus on every im_ parameter that reads an attribute | Lucas Galante |
| 2026-09-18 | network editor: alt+x excises the current node from its chain | Lucas Galante |
| 2026-09-18 | network editor: a stepped selection trades places with the nodes it lands on | Lucas Galante |
| 2026-09-18 | check.py: drop the developer_panel check, the HDA is gone | Lucas Galante |
| 2026-09-18 | netcursor: the box is a margin around the nodes, not a scale of the cells | Lucas Galante |
| 2026-09-18 | developer_analysis 1.1: integer attributes get integer statistics | Lucas Galante |
| 2026-09-17 | developer_analysis 1.1: one Attribute tab per analysed attribute | Lucas Galante |
| 2026-09-17 | keycam: reset the camera aspect ratio on enter and exit | Lucas Galante |
| 2026-09-17 | keycam: register under SOP and hide the current node's wireframe | Lucas Galante |
| 2026-09-17 | developer_attribute_initialize: renaming an attribute follows it downstream | Lucas Galante |
| 2026-09-17 | developer_visualize: draws a solver's Vis tabs anywhere in the chain | Lucas Galante |
| 2026-09-17 | network editor: Tab adds a node at the hc cursor, wired by the cell | Lucas Galante |
| 2026-09-17 | hotkeys: alt+tab / alt+shift+tab cycle panes | Lucas Galante |
| 2026-09-17 | session: Open Hotkey Editor panel command | Lucas Galante |
| 2026-09-17 | otls: attribute menus on every developer parameter that reads an attribute | Lucas Galante |
| 2026-09-17 | otls: Diffuse, Concentrate, Migrate and Bleed handle integer attributes | Lucas Galante |
| 2026-09-17 | pane cycling: warp the pointer through the compositor | Lucas Galante |
| 2026-09-17 | developer_solver: Auto bounds on Color tabs | Lucas Galante |
| 2026-09-17 | session: Next Pane / Previous Pane warp the pointer between panes | Lucas Galante |
| 2026-09-17 | developer_embryo: drop the second-input visualizer pickup | Lucas Galante |
| 2026-09-17 | developer_solver: Visualize tabs replace developer_panel | Lucas Galante |
| 2026-09-16 | hotkeys: alt+t toggles the pane's tabs, alt+shift+t every pane's | Lucas Galante |
| 2026-09-16 | developer_surface_detangle: the Shapeshifter algorithm | Lucas Galante |
| 2026-09-16 | otls: real menus on Attribute Remap and Normalize | Lucas Galante |
| 2026-09-16 | otls-audit: put the Remesh dummy-children row back; drop its unread-parameter row instead | Lucas Galante |
| 2026-09-16 | otls: Attribute Clip built, Constant's Class and Remesh 1.0's Transfer Method read | Lucas Galante |
| 2026-09-16 | developer_embryo: Source and Base Resolution are read | Lucas Galante |
| 2026-09-16 | developer_metamax: Frame Range and Shift are read | Lucas Galante |
| 2026-09-16 | developer_attribute_combine: the Weights scale their attributes | Lucas Galante |
| 2026-09-16 | developer_analysis: working Class Edge and Element folder | Lucas Galante |
| 2026-09-16 | otls: read the unread parameters on Select, Suture, Time and Time Ramp | Lucas Galante |
| 2026-09-16 | developer_lead 1.1: Radius parameter, Amount blends | Lucas Galante |
| 2026-09-16 | developer_measure: the promote reads Attribute Name | Lucas Galante |
| 2026-09-16 | developer_volume_miasma: wire the input to the VDB conversion | Lucas Galante |
| 2026-09-16 | developer_normalize: the Type menu selects the branch | Lucas Galante |
| 2026-09-16 | developer_vitality 1.1: help names the Initialize toggles that create each counter | Lucas Galante |
| 2026-09-16 | developer_attribute_initialize: age toggles labelled by what they count | Lucas Galante |
| 2026-09-16 | developer_attribute_initialize: integer Range for integer tabs | Lucas Galante |
| 2026-09-16 | developer_attribute_initialize: Enable toggle per tab | Lucas Galante |
| 2026-09-16 | developer_attribute_initialize: integer attributes | Lucas Galante |
| 2026-09-16 | developer_vitality 1.1: age attributes match Attribute Initialize | Lucas Galante |
| 2026-09-16 | otls: descriptive parameter names that exist | Lucas Galante |
| 2026-09-16 | otls: help for every developer node | Lucas Galante |
| 2026-09-16 | developer_solver: help that matches the current operators | Lucas Galante |
| 2026-09-16 | developer.md: operator list matches the nodes on disk | Lucas Galante |
| 2026-09-16 | otls-audit: record the float/vector consolidation | Lucas Galante |
| 2026-09-16 | otls: Align, Gradient and Rotate replace the five vector_ nodes | Lucas Galante |
| 2026-09-16 | developer_bleed: replaces float_bleed and decays vectors too | Lucas Galante |
| 2026-09-16 | developer_migrate: the final clamp truncated every float to 0 | Lucas Galante |
| 2026-09-16 | developer_migrate: one node replaces float_migrate and vector_migrate | Lucas Galante |
| 2026-09-16 | developer_concentrate: one node replaces float_concentrate and vector_concentrate | Lucas Galante |
| 2026-09-16 | hc: tolerate a network editor with no network | Lucas Galante |
| 2026-09-16 | hc: scope panel commands by class, with a predicate where that varies | Lucas Galante |
| 2026-09-16 | hc: Pin toggle on every path-based tab | Lucas Galante |
| 2026-09-16 | developer_attribute_composite: vector operations and a few more scalar ones | Lucas Galante |
| 2026-09-16 | developer_attribute_combine: the Attribute menus read input_0 and input_1 | Lucas Galante |
| 2026-09-16 | developer_attribute_composite: the Attribute menu is an expression | Lucas Galante |
| 2026-09-16 | developer_vector_direct: the bias wrangle keeps its biased direction | Lucas Galante |
| 2026-09-16 | developer_vector_unify: make the const and attr methods work | Lucas Galante |
| 2026-09-16 | developer_vector_unify: make the basic method work | Lucas Galante |
| 2026-09-16 | developer_vector_direct: read the parms and attributes that exist | Lucas Galante |
| 2026-09-16 | developer_select: fix the random and vector branches | Lucas Galante |
| 2026-09-16 | developer_float_concentrate: read the global and connectivity parms | Lucas Galante |
| 2026-09-16 | developer_attribute_combine: route by the type parms that exist | Lucas Galante |
| 2026-09-16 | im_select_primitives: fix the method mapping and the vector branch | Lucas Galante |
| 2026-09-16 | im_select_points: restore method selection, connect the vector branch | Lucas Galante |
| 2026-09-16 | im_select 1.0: fix the method mapping and the vector branch | Lucas Galante |
| 2026-09-16 | im_select 2.0: restore method selection and fix the vector branch | Lucas Galante |
| 2026-09-16 | im_transfer 1.0: read the pt_attrs parm | Lucas Galante |
| 2026-09-16 | im_orient 1.0: delete source_dir_avg, not attr_avg | Lucas Galante |
| 2026-09-16 | im_relax: read the rad parm | Lucas Galante |
| 2026-09-16 | im_skeletonize: prim ids come from @primnum | Lucas Galante |
| 2026-09-16 | im_neighbours: use the Normal Filter parm | Lucas Galante |
| 2026-09-16 | im_layout: read the attr parm | Lucas Galante |
| 2026-09-16 | im_gate: read the parms that exist in the point branch | Lucas Galante |
| 2026-09-16 | im_cull: fix the integer point branch | Lucas Galante |
| 2026-09-16 | im_twist: delete P_min and P_max on the way out | Lucas Galante |
| 2026-09-16 | im_attractor 0.9: bound the dist attribute, not P | Lucas Galante |
| 2026-09-16 | im_attractor 1.1: bound the dist attribute, not P | Lucas Galante |
| 2026-09-16 | im_bounds 1.0: delete the promoted attribute when its toggle is off | Lucas Galante |
| 2026-09-16 | im_bounds 1.1: make the min/max attribute names work | Lucas Galante |
| 2026-09-16 | im_color_ramp: write to the Attribute parm, drop the unused im_remap1 | Lucas Galante |
| 2026-09-16 | im_color_ramp: fix the int point branch | Lucas Galante |
| 2026-09-16 | im_float_ramp, im_ramp_float: promote and read the same in_min/in_max detail attributes | Lucas Galante |
| 2026-09-16 | developer_attribute_initialize: one tab per attribute | Lucas Galante |
| 2026-09-16 | developer_analysis: write the statistics into the <attr>_info dictionary | Lucas Galante |
| 2026-09-16 | developer_attribute_initialize: metadata range is one vector2 key | Lucas Galante |
| 2026-09-16 | developer_float_migrate: Influence belongs to both methods, so put it in Main | Lucas Galante |
| 2026-09-16 | developer_float_migrate: both methods push values along the vector | Lucas Galante |
| 2026-09-16 | settings: write out the new keys with their chosen values | Lucas Galante |
| 2026-09-16 | developer_panel: OnUpdated rebuilds the visualizers on every instance | Lucas Galante |
| 2026-09-16 | hcviewregions: reap the ccectl children instead of leaving zombies | Lucas Galante |
| 2026-09-15 | developer_panel: Enable toggle at the top of each tab | Lucas Galante |
| 2026-09-15 | statusbar: the menu-bar toggle in the circle popup did nothing | Lucas Galante |
| 2026-09-15 | developer_panel: Reset Sim on the same row as Rebuild and Populate | Lucas Galante |
| 2026-09-15 | developer_panel: Rebuild and Populate above the separator | Lucas Galante |
| 2026-09-15 | developer_panel: rename Add Missing to Populate | Lucas Galante |
| 2026-09-15 | developer_panel: Add Missing button appends a tab per input attribute | Lucas Galante |
| 2026-09-15 | developer_panel: label each visualizer tab by its attribute | Lucas Galante |
| 2026-09-15 | viewregions: publish every toplevel so a swipe over the HC Panel scrolls | Lucas Galante |
| 2026-09-15 | hc: let HC Panel control rows be as tall as their widgets | Lucas Galante |
| 2026-09-15 | netcursor: colour and scale settings, cursor picture painted on demand | Lucas Galante |
| 2026-09-15 | settings: box the loose keycam row under a Mouse heading | Lucas Galante |
| 2026-09-15 | settings: group the Node Graph tab into Nodes, Navigation and Grid | Lucas Galante |
| 2026-09-15 | developer_panel: adopt_visualizers reads only | Lucas Galante |
| 2026-09-15 | developer_panel: visualizers in a tabbed multiparm | Lucas Galante |
| 2026-09-15 | session: Open Recent command in the HC Panel | Lucas Galante |
| 2026-09-15 | startup: main menu bar hidden by default, in both desktop modes | Lucas Galante |
| 2026-09-15 | statusbar: open the circle's menu upward | Lucas Galante |
| 2026-09-15 | statusbar: give the circle its own X window so clicks reach it | Lucas Galante |
| 2026-09-15 | statusbar: bigger circle, just left of the live-cooking toggle | Lucas Galante |
| 2026-09-15 | statusbar: a status circle with a main-menu popup | Lucas Galante |
| 2026-09-15 | settings: no restart notice until a restart is owed | Lucas Galante |
| 2026-09-15 | settings: say which saved settings need a restart to take effect | Lucas Galante |
| 2026-09-15 | hooks: refit the hcnetcursor on the click's own mouseup | Lucas Galante |
| 2026-09-15 | developer_vector_migrate: working connectivity, influence on proximity | Lucas Galante |
| 2026-09-15 | developer_vector_migrate: proximity defaults that reach a neighbour | Lucas Galante |
| 2026-09-15 | developer_float_migrate: proximity defaults that reach a neighbour | Lucas Galante |
| 2026-09-14 | developer_float_migrate: connectivity depth N now means N rings | Lucas Galante |
| 2026-09-14 | developer_float_migrate: make both methods actually run | Lucas Galante |
| 2026-09-14 | developer_diffuse: replace developer_float_diffuse, diffuse vectors too | Lucas Galante |
| 2026-09-14 | otls: remove developer_float_initialize and developer_vector_initialize | Lucas Galante |
| 2026-09-14 | developer_attribute_initialize: merge float and vector initialize, add variation | Lucas Galante |
| 2026-09-14 | developer_embryo: expose the sphere radius as a Radius parm | Lucas Galante |
| 2026-09-14 | neteditor: keyboard moves swap with the node they land on | Lucas Galante |
| 2026-09-14 | hooks: one pending action per mouse action, so the drop swap actually runs | Lucas Galante |
| 2026-09-14 | neteditor: drop a node onto another to swap them | Lucas Galante |
| 2026-09-14 | neteditor: highlight the node under the hcnetcursor after a hip load | Lucas Galante |
| 2026-09-14 | menu: stop flashing labels on pan and zoom too | Lucas Galante |
| 2026-09-14 | menu: stop flashing labels on hcnetcursor navigation | Lucas Galante |
| 2026-09-14 | neteditor: make the view follow the hcnetcursor off the edge | Lucas Galante |
| 2026-09-14 | neteditor: sweep the network onto the grid after every action | Lucas Galante |
| 2026-09-14 | neteditor: make grid snapping absolute and add a Snap to Grid command | Lucas Galante |
| 2026-09-14 | check: pin node_coloring inside the checks that exercise it | Lucas Galante |
| 2026-09-14 | settings: turn node colouring off by default | Lucas Galante |
| 2026-09-14 | hc: publish view-pane rectangles to the compositor | Lucas Galante |
| 2026-09-14 | otls: rebuild the old im_cull as im_cull_pieces and wire it back in | Lucas Galante |
| 2026-09-14 | otls: fix the VEX in four developer nodes that failed to compile | Lucas Galante |
| 2026-09-14 | otls: add the HDA audit report | Lucas Galante |
| 2026-09-14 | otls: replace dummy children of renamed types across 29 assets | Lucas Galante |
| 2026-09-14 | otls: replace the dummy im_ramp_color inside developer_surface_remesh 1.0 | Lucas Galante |
| 2026-09-14 | otls: remove 20 hollow rename leftovers | Lucas Galante |
| 2026-09-14 | hc: list Dim Unused Nodes in the HC Panel | Lucas Galante |
| 2026-09-14 | hc: draw checkboxes and dropdowns on HC Panel entries | Lucas Galante |
| 2026-09-14 | hc: centre the HC Panel on the Houdini window | Lucas Galante |
| 2026-09-14 | hc: make the HC Panel answer arrows and Escape | Lucas Galante |
| 2026-09-14 | hc: open the HC Panel for the pane under the cursor | Lucas Galante |
| 2026-09-12 | hc: let node coloring and the network cursor be switched off | Lucas Galante |
| 2026-09-12 | hc: dock the playbar in the scene viewer pane | Lucas Galante |
| 2026-09-12 | hc: show the playbar in both desktops | Lucas Galante |
| 2026-09-12 | hc: delete the dead _traversalTarget | Lucas Galante |
| 2026-09-12 | hc: spell out the currentNode staleness in the docstrings and check | Lucas Galante |
| 2026-09-12 | hc: turn the startup prompt off, as saved by the settings panel | Lucas Galante |
| 2026-09-12 | hc: make currentNode mean the node that is current now | Lucas Galante |
| 2026-09-12 | hc: write current_node_arrow_color into hc_settings.json | Lucas Galante |
| 2026-09-12 | hc: write show_prompt into hc_settings.json | Lucas Galante |
| 2026-09-12 | hc: add a setting to turn the startup prompt off | Lucas Galante |
| 2026-09-12 | hc: make Set Node Shapes selection-only, like Set Node Colors | Lucas Galante |
| 2026-09-12 | hc: drop the confirmation messages from the node color/shape commands | Lucas Galante |
| 2026-09-12 | hc: keep updateNodeColors quiet and out of the HC Panel | Lucas Galante |
| 2026-09-12 | hc: pull the last hardcoded color into the schema, unhook Reload Colors | Lucas Galante |
| 2026-09-12 | hc: let Set Node Shapes honour the selection, as one undo | Lucas Galante |
| 2026-09-12 | hc: make the bulk node color operations one undo each | Lucas Galante |
| 2026-09-12 | hc: add Reset Node Colors, the way back into the setting | Lucas Galante |
| 2026-09-12 | hc: make node coloring keep hand-picked colors | Lucas Galante |
| 2026-09-11 | hc: point the houdini MCP server at its real path | Lucas Galante |
| 2026-09-11 | hc: stop the im_ramp_color preset menu raising on every cook | Lucas Galante |
| 2026-09-11 | hc: let a launchFloating entry opt out of being tiled | Lucas Galante |
| 2026-09-11 | hc: float the spreadsheet panel as a dialog too | Lucas Galante |
| 2026-09-11 | hc: float the HC Settings panel as a dialog so the WM does not tile it | Lucas Galante |
| 2026-09-11 | hc: mask the split handles so their rounded corners are not black | Lucas Galante |
| 2026-09-11 | hc: restore the delay argument dropped from the pending selection action | Lucas Galante |
| 2026-09-11 | hc: give split handles their own X window so they can be clicked | Lucas Galante |
| 2026-09-11 | hc: drop the deferred pin -- the tracker is what actually fixes the handles | Lucas Galante |
| 2026-09-11 | hc: start the agent bridge before the UI setup that can kill it | Lucas Galante |
| 2026-09-11 | hc: pin split handles after Houdini relayouts, and keep them tracking | Lucas Galante |
| 2026-09-11 | hc: add the selection cursor asset, ignore agent bridge scratch | Lucas Galante |
| 2026-09-11 | hc: serve HC Settings as a Python Panel pane tab | Lucas Galante |
| 2026-09-10 | hc: wire the keycam zoom step, and drop the HCNode wrapper | Lucas Galante |
| 2026-09-10 | hc: declare settings, centralise per-tab state, generate the command map | Lucas Galante |
| 2026-09-10 | hc: track the agent bridge, reference docs and new HDAs; fix hrun paths | Lucas Galante |
| 2026-09-10 | hc: fix dead panel commands, settings handling and node graph redraw cost | Lucas Galante |
| 2026-09-10 | hc: run agent bridge code on Houdini's main thread | Lucas Galante |
| 2026-09-10 | hc: stop the leader chord crashing Houdini from a timer thread | Lucas Galante |
| 2026-09-10 | hc: rename package manifest to hou-control.json | Lucas Galante |
| 2026-09-10 | hc: wire package to Houdini 22 | Lucas Galante |
| 2026-04-21 | hc: update network editor defaults and session behavior | Lucas Galante |
| 2026-04-17 | hc: fix phantom zoom when pressing Ctrl in Network Editor | Lucas Galante |
| 2026-04-17 | UI: make locked camera pill and mask colors paler | Lucas Galante |
| 2026-04-17 | keycam: allow Shift+k to coexist globally and inside the state for translation | Lucas Galante |
| 2026-04-17 | hc: implement precise framing logic for Perspective and Ortho projections | Lucas Galante |
| 2026-04-17 | hc: fix AttributeError in HCCam by replacing centroid() with boundingBox().center() | Lucas Galante |
| 2026-04-17 | hc: ensure select next/prev component first completes the current node component selection | Lucas Galante |
| 2026-04-17 | hc: ensure select next/prev component falls back to top-left when no selection exists | Lucas Galante |
| 2026-04-16 | keycam: rename zoom labels and symbols to explicitly separate Persp and Ortho | Lucas Galante |
| 2026-04-16 | hc: rename all '_enabled' settings to short versions for cleaner UI and code | Lucas Galante |
| 2026-04-16 | hc: reorganize settings panel into a tabbed interface | Lucas Galante |
| 2026-04-16 | keycam: add viewer event callback to automatically update aspect ratio on resize | Lucas Galante |
| 2026-04-16 | keycam: fully implement PluginHotkey system with menu-linked symbols | Lucas Galante |
| 2026-04-16 | keycam: integrate zoom controls into the official hotkey system | Lucas Galante |
| 2026-04-16 | keycam: use hybrid hotkey system with robust manual interception | Lucas Galante |
| 2026-04-16 | hc: trigger navigation fallback if current node is off-screen | Lucas Galante |
| 2026-04-16 | hc: implement Restart Houdini and add to menu/panel | Lucas Galante |
| 2026-04-16 | hc: fix missing NetworkShapePolygon by using lines for triangle | Lucas Galante |
| 2026-04-16 | hc: change current node off-screen indicator to triangle | Lucas Galante |
| 2026-04-16 | hc: add automatic node tagging and global color update tool | Lucas Galante |
| 2026-04-16 | hc: refactor and expand session/UI management | Lucas Galante |
| 2026-04-05 | hc: add hcmaps.py | Lucas Galante |
| 2026-04-05 | UI: add NodeGraphCommon.inc | Lucas Galante |
| 2026-04-05 | hooks: update uiready.py | Lucas Galante |
| 2026-04-05 | Network Editor: update nodegraphhooks.py | Lucas Galante |
| 2026-04-05 | HC: Remove hcpanel.py | Lucas Galante |
| 2026-04-05 | HC: Update HC | Lucas Galante |
| 2026-04-05 | IM: Update IM Sort | Lucas Galante |
| 2026-04-05 | UI: update UI colors | Lucas Galante |
| 2026-04-05 | menus: update MainMenuCommon.xml | Lucas Galante |
| 2026-03-25 | Switch to codeberg | Lucas Galante |
| 2026-02-08 | menus: update | Lucas Galante |
| 2026-02-08 | keycam: get it working (again) | Lucas Galante |
| 2026-02-08 | shelf: update shelf | Lucas Galante |
| 2026-02-08 | settings: add settings file | Lucas Galante |
| 2026-02-08 | listeners: update listeners | Lucas Galante |
| 2026-02-08 | hc: repackage the package | Lucas Galante |
| 2026-02-08 | immutable methods: some stuff | Lucas Galante |
| 2026-02-08 | layout: update hc_desktop | Lucas Galante |
| 2026-02-08 | interface: update colors | Lucas Galante |
| 2026-02-08 | interface: add squared nodeshape file | Lucas Galante |
| 2026-02-08 | interface: add node shape flags files | Lucas Galante |
| 2026-02-08 | housekeeping: delete stinky old files | Lucas Galante |
| 2026-01-03 | hcglobal: update hide stowbar script | lsgalante |
| 2026-01-03 | update hdas | lsgalante |
| 2025-12-31 | hc-radialutils: improve layout | lsgalante |
| 2025-12-31 | hc-bindings: update | lsgalante |
| 2025-12-31 | im: update nodes | lsgalante |
| 2025-12-31 | gem: update gem graph | lsgalante |
| 2025-12-31 | im: create new sop nodes | lsgalante |
| 2025-12-31 | gem: create new cop nodes | lsgalante |
| 2025-12-31 | notes: put notes in the notes folder | lsgalante |
| 2025-12-31 | hc-desktop: improve | lsgalante |
| 2025-12-31 | color scheme: format + change some colors | lsgalante |
| 2025-12-12 | im: update basic nodes | lsgalante |
| 2025-12-12 | ugh | lsgalante |
| 2025-12-12 | hc desktop: change gridmode | lsgalante |
| 2025-12-10 | Update .DS_Store | lsgalante |
| 2025-12-10 | gitignore: update | lsgalante |
| 2025-12-10 | im color ramp: rename node | lsgalante |
| 2025-12-10 | create .gitignore | lsgalante |
| 2025-12-10 | hc radial: create entries | lsgalante |
| 2025-12-10 | hcnetwork editor: update | lsgalante |
| 2025-12-10 | hdas: update | lsgalante |
| 2025-12-10 | create basic package file | lsgalante |
| 2025-12-10 | remove files | lsgalante |
| 2025-12-10 | hc_desktop: update layout | lsgalante |
| 2025-12-10 | main menu bar: remove some items | lsgalante |
| 2025-12-09 | first commit | lsgalante |