Conversation
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
…n, and centering Chain do_startup to Adw.Application so the Adwaita stylesheet loads; fix the PropertyWindow API drift (show_properties, Adw row signals, float SpinRow, group builder), the AlertDialog close crash, the simulation net_levels IndexError, and context-menu positioning. Add canvas content/resize centering with a Preferences toggle. Update .agents backlog, CLAUDE.md, and document Properties.py. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Chain do_startup to Adw.Application so the Adwaita stylesheet loads. Property dialog uses Adw.ToolbarView with a working close, guarded dismiss(), no combo search, no redundant group label. Clipboard read handles empty/no-text. Single click selects, double click opens properties. Fix running-mode crashes: guarded prop_window close, timing-diagram toggle uses the real attribute, and Diagram.draw() int-casts cairo surface dims, registers draw funcs, and fixes cursor/undefined-attribute bugs. Update .agents backlog. Co-Authored-By: Gemini <noreply@google.com> Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
…e About ComponentView is now a searchable, category-grouped sidebar with ALL-CAPS gate names, navigation-sidebar styling, container padding, and no search auto-focus. Wire the About dialog (AboutGGate.create + present) which previously did nothing. Add planning docs for the preferences revamp and component-movement animation under .agents/plans/. Co-Authored-By: Gemini <noreply@google.com> Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
…d window Rewrite Preferences as an Adw.PreferencesDialog (instant-apply) with an Appearance page (style + all color groups), Simulation, and Canvas pages; monospace-restricted font picker and ColorDialogButtons. Animate component movement (ease-out glide on the visual layer, model stays grid-snapped). Size the main window to 65%x60% of the monitor via a helper. Add the no-deep-nesting convention to CLAUDE.md. Co-Authored-By: Gemini <noreply@google.com> Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Add missing os/Gio imports to bin/ggate.in (installed launcher blocker). Bump config.py/__init__.py version 4.0.0 -> 5.0.0 to match pyproject/meson. Use config.APP_PREFIX (org.astralco.GGate) for the GApplication id and rename the desktop file to match. Replace the non-portable shell __pycache__ exclusion in meson.build with portable Python. Add the icon-creation plan doc. Co-Authored-By: Gemini <noreply@google.com> Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Sweep of un-exercised paths: fix save_file_complete typo, Exporter statusbar push()->update(), ComponentView set_selectable->set_sensitive (palette disabled in sim), Gtk.MessageDialog->Adw.AlertDialog in on_circuit_alert, FileManager classmethod, and stop-gap TimingGraph rendering (slated for a full revamp). Add the theming plan and build-system backlog. Co-Authored-By: Gemini <noreply@google.com> Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Rewrite Display.py (Adw.Dialog + ToolbarView, scale/range/save toolbar) and Diagram.py (synced scrolls, pure set_draw_func rendering, gesture scrubbing, empty-history placeholder). Render the draw area from the Preference color keys so it tracks the canvas theme; fix layout expansion and unify row geometry. Exporter compatibility preserved. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Built-in themes (Classic, Space, Frappe, Mocha) ship as JSON in data/themes, globbed into the gresource by Meson and discovered at runtime by enumerating the resource dir (no hardcoded theme list). Classic reproduces the legacy default palette and is the default. Add Themes.py (registry, apply_theme, apply_chrome), a Theme picker in Preferences with live recolor + Custom fallback, RGBA-alpha round-trip in Preference, and StyleManager/accent chrome alignment. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Add per-component visual specs to the icon plan; add a reusable delegation brief (repo facts, conventions, build/gresource rules, logic-level verification workflow) so delegations reference it. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Load .glc property types correctly (parse_section), compute gates via all/any/sum so unconnected pins don't IndexError, and run analyze_logic at run start so oscillators populate the timing history. Rebuild the theme ComboRow model from the registry so its dropdown isn't stuck on Custom, and keep selections from reverting. Rename config.DEV_MODE to RUNNING_FROM_SOURCE and drop docstrings/stale headers. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
run.py regenerates and compiles dev-resources.gresource from the asset dirs each launch so it can't go stale. Replace non-portable find|sed/inline-python globbing with shell helpers, fix the prefix shadowing, and add a Fedora-based GitHub Actions workflow that produces a meson dist tar.gz. Document the flow. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Co-Authored-By: Antigravity <noreply@antigravity.google>
Co-Authored-By: Antigravity <noreply@antigravity.google>
Co-Authored-By: Antigravity <noreply@antigravity.google>
Co-Authored-By: Antigravity <noreply@antigravity.google>
Co-Authored-By: Antigravity <noreply@antigravity.google>
Co-Authored-By: Antigravity <noreply@antigravity.google>
…ging Bump actions (checkout@v5, action-gh-release@v3, upload-artifact@v7) and set the Node-24 opt-in across all workflows. Gate flatpak/snap/deb to release; keep the source-tarball Build Pipeline on push/PR. Add real Debian packaging under build-aux/debian (debhelper + meson) with a Python generator that transpiles CHANGELOG.md into a multi-entry debian/changelog at build time; add the 5.0.0 CHANGELOG entry. Consolidate AI docs to .agents (drop the .claude duplicate, git-ignore .claude); scope the debian build-output ignores. Co-Authored-By: Antigravity <noreply@antigravity.google>
Add hand-drawn ANSI/IEC component SVGs with a gresource->freedesktop icon-theme layout, register the resource path at startup, and switch the component palette and context menu to icon-name lookups. Fixes the broken-icon regression caused by a duplicate do_startup that dropped the icon resource path, and renders palette icons at full pixel size. Co-Authored-By: agy (Antigravity/Gemini) <noreply@antigravity.google>
- README: click-to-play playback hero (-> gallery/ggate-demo.mp4), Screenshots section, v1->v5 history, accurate requirements/links - NEWS 5.0.0; INSTALL.md from-source steps; root TODO roadmap; meson_options profile description - gallery/: procedurally captured stills (themes, playback, timing, preferences, properties) + 1080p/30fps demo clip + index README - build-aux/: add capture_screenshots.py + make_demo.sh and remove the dead, diverged scripts/generate-resources-xml.py (scripts/ folded into build-aux/) - add pytest dev dependency + [tool.pytest.ini_options] Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
v5
Rewrite of GGate (formerly GLogic) onto GTK 4 / libadwaita. New simulation playback,
a themed component icon set, runtime theming, a meson build, and CI/packaging.
Runtime / platform
>=3.10,GTK
>=4.16, libadwaita>=1.6.8. Runtime deps: pygobject, pycairo, python-igraph,shapely, packaging.
org.astralco.ggate(.Devin the development profile).Adw.Dialog,Adw.AlertDialog,Adw.HeaderBar).Simulation engine + playback
small background slices so the UI stays responsive, recording every timestep
(
CircuitManager.begin_compute/compute_slice, frames incomponent_state_history).Then it plays those recorded frames back — playback never re-runs the engine.
CircuitPlaybackAnimation. It owns the transport state(
computing → playing ⇄ paused → ended/idle) and the play/pause/restart/seek/stop actions.CircuitManagerstays the engine and data layer.16–200 ms/frame range. The target is a new "Animation duration" preference.
final state; the playback bar doesn't appear for them.
from the start with the new value (
MainFrame.recompute_simulation), so what you see alwaysmatches the current circuit. A switch keeps its toggled state across that recompute.
UI
PlaybackControls).DrawAreachanged from a scrolled windowinto an overlay that wraps the scroller, so the bar stays pinned over the canvas while the
content scrolls underneath. Controls: Stop · Restart · Play/Pause, then a seek slider and a
fixed-width time readout that doesn't jitter as it updates. The bar's Stop ends the run.
The header simulation control is now just Play/Stop.
Adw.PreferencesDialog(Appearance / Simulation / Canvas);its widgets are built once and reused.
drag-to-scrub, theme-aware waveforms, and a warning when the diagram hits Cairo's width limit.
Theming + icons
data/themes/and loaded at runtime; switchable from Preferences (logic inThemes.py).data/images/components/spec.md.Build / packaging / CI
config.py, desktop + AppStream files).In development,
run.pyregenerates and registers the dev resource bundle on each launch soit can't go stale.
meson disttarball; flatpak/snap/deb workflowsrun only on releases. Version unified to 5.0.0.
Docs / assets
gallery/: screenshots captured bybuild-aux/capture_screenshots.py(themes, playback,timing, preferences, properties) and a 1080p demo clip produced by
build-aux/make_demo.sh.Notable fixes
.glcfiles load their property values with the correct types.and a zoom clamp (0.5–20).
Known / deferred
pytestand its config are present but there is notests/directory yet.control beyond the duration preference, and no progress indicator during compute.