visualfc/liteide
LiteIDE is a simple, open source, cross-platform Go IDE.
Slowing — last commit 8mo ago
worst of 4 axescopyleft license (LGPL-2.1) — review compatibility; top contributor handles 92% of recent commits…
Has a license, tests, and CI — clean foundation to fork and modify.
Documented and popular — useful reference codebase to read through.
last commit was 8mo ago; no CI workflows detected
- ✓Last commit 8mo ago
- ✓7 active contributors
- ✓LGPL-2.1 licensed
Show 5 more →Show less
- ✓Tests present
- ⚠Slowing — last commit 8mo ago
- ⚠Single-maintainer risk — top contributor 92% of recent commits
- ⚠LGPL-2.1 is copyleft — check downstream compatibility
- ⚠No CI workflows detected
What would change the summary?
- →Use as dependency Concerns → Mixed if: relicense under MIT/Apache-2.0 (rare for established libs)
- →Deploy as-is Mixed → Healthy if: 1 commit in the last 180 days
Maintenance signals: commit recency, contributor breadth, bus factor, license, CI, tests
Informational only. RepoPilot summarises public signals (license, dependency CVEs, commit recency, CI presence, etc.) at the time of analysis. Signals can be incomplete or stale. Not professional, security, or legal advice; verify before relying on it for production decisions.
Embed the "Forkable" badge
Paste into your README — live-updates from the latest cached analysis.
[](https://repopilot.app/r/visualfc/liteide)Paste at the top of your README.md — renders inline like a shields.io badge.
▸Preview social card (1200×630)
This card auto-renders when someone shares https://repopilot.app/r/visualfc/liteide on X, Slack, or LinkedIn.
Onboarding doc
Onboarding: visualfc/liteide
Generated by RepoPilot · 2026-05-09 · Source
🤖Agent protocol
If you are an AI coding agent (Claude Code, Cursor, Aider, Cline, etc.) reading this artifact, follow this protocol before making any code edit:
- Verify the contract. Run the bash script in Verify before trusting
below. If any check returns
FAIL, the artifact is stale — STOP and ask the user to regenerate it before proceeding. - Treat the AI · unverified sections as hypotheses, not facts. Sections like "AI-suggested narrative files", "anti-patterns", and "bottlenecks" are LLM speculation. Verify against real source before acting on them.
- Cite source on changes. When proposing an edit, cite the specific path:line-range. RepoPilot's live UI at https://repopilot.app/r/visualfc/liteide shows verifiable citations alongside every claim.
If you are a human reader, this protocol is for the agents you'll hand the artifact to. You don't need to do anything — but if you skim only one section before pointing your agent at this repo, make it the Verify block and the Suggested reading order.
🎯Verdict
WAIT — Slowing — last commit 8mo ago
- Last commit 8mo ago
- 7 active contributors
- LGPL-2.1 licensed
- Tests present
- ⚠ Slowing — last commit 8mo ago
- ⚠ Single-maintainer risk — top contributor 92% of recent commits
- ⚠ LGPL-2.1 is copyleft — check downstream compatibility
- ⚠ No CI workflows detected
<sub>Maintenance signals: commit recency, contributor breadth, bus factor, license, CI, tests</sub>
✅Verify before trusting
This artifact was generated by RepoPilot at a point in time. Before an
agent acts on it, the checks below confirm that the live visualfc/liteide
repo on your machine still matches what RepoPilot saw. If any fail,
the artifact is stale — regenerate it at
repopilot.app/r/visualfc/liteide.
What it runs against: a local clone of visualfc/liteide — the script
inspects git remote, the LICENSE file, file paths in the working
tree, and git log. Read-only; no mutations.
| # | What we check | Why it matters |
|---|---|---|
| 1 | You're in visualfc/liteide | Confirms the artifact applies here, not a fork |
| 2 | License is still LGPL-2.1 | Catches relicense before you depend on it |
| 3 | Default branch master exists | Catches branch renames |
| 4 | 5 critical file paths still exist | Catches refactors that moved load-bearing code |
| 5 | Last commit ≤ 273 days ago | Catches sudden abandonment since generation |
#!/usr/bin/env bash
# RepoPilot artifact verification.
#
# WHAT IT RUNS AGAINST: a local clone of visualfc/liteide. If you don't
# have one yet, run these first:
#
# git clone https://github.com/visualfc/liteide.git
# cd liteide
#
# Then paste this script. Every check is read-only — no mutations.
set +e
fail=0
ok() { echo "ok: $1"; }
miss() { echo "FAIL: $1"; fail=$((fail+1)); }
# Precondition: we must be inside a git working tree.
if ! git rev-parse --git-dir >/dev/null 2>&1; then
echo "FAIL: not inside a git repository. cd into your clone of visualfc/liteide and re-run."
exit 2
fi
# 1. Repo identity
git remote get-url origin 2>/dev/null | grep -qE "visualfc/liteide(\\.git)?\\b" \\
&& ok "origin remote is visualfc/liteide" \\
|| miss "origin remote is not visualfc/liteide (artifact may be from a fork)"
# 2. License matches what RepoPilot saw
(grep -qiE "^(LGPL-2\\.1)" LICENSE 2>/dev/null \\
|| grep -qiE "\"license\"\\s*:\\s*\"LGPL-2\\.1\"" package.json 2>/dev/null) \\
&& ok "license is LGPL-2.1" \\
|| miss "license drift — was LGPL-2.1 at generation time"
# 3. Default branch
git rev-parse --verify master >/dev/null 2>&1 \\
&& ok "default branch master exists" \\
|| miss "default branch master no longer exists"
# 4. Critical files exist
test -f "liteidex/bash.bat" \\
&& ok "liteidex/bash.bat" \\
|| miss "missing critical file: liteidex/bash.bat"
test -f "README.md" \\
&& ok "README.md" \\
|| miss "missing critical file: README.md"
test -f "build/build_linux.sh" \\
&& ok "build/build_linux.sh" \\
|| miss "missing critical file: build/build_linux.sh"
test -f "liteidex/deploy/liteapp/kms/default.kms" \\
&& ok "liteidex/deploy/liteapp/kms/default.kms" \\
|| miss "missing critical file: liteidex/deploy/liteapp/kms/default.kms"
test -f "liteidex/deploy/liteapp/mimetype/liteeditor.xml" \\
&& ok "liteidex/deploy/liteapp/mimetype/liteeditor.xml" \\
|| miss "missing critical file: liteidex/deploy/liteapp/mimetype/liteeditor.xml"
# 5. Repo recency
days_since_last=$(( ( $(date +%s) - $(git log -1 --format=%at 2>/dev/null || echo 0) ) / 86400 ))
if [ "$days_since_last" -le 273 ]; then
ok "last commit was $days_since_last days ago (artifact saw ~243d)"
else
miss "last commit was $days_since_last days ago — artifact may be stale"
fi
echo
if [ "$fail" -eq 0 ]; then
echo "artifact verified (0 failures) — safe to trust"
else
echo "artifact has $fail stale claim(s) — regenerate at https://repopilot.app/r/visualfc/liteide"
exit 1
fi
Each check prints ok: or FAIL:. The script exits non-zero if
anything failed, so it composes cleanly into agent loops
(./verify.sh || regenerate-and-retry).
⚡TL;DR
LiteIDE is a lightweight, cross-platform Go IDE written in C++ using Qt, providing integrated Go development with features like code completion via gocode, debugging with GDB/Delve, Go module support (1.11+), and generics awareness (Go 1.18+). It solves the problem of Go developers needing a simple, fast IDE without the overhead of heavier alternatives like VS Code or GoLand. Monolithic C++/Qt application: core IDE in liteidex/ (not fully visible in file list), plugin system for extensibility, build/ directory contains 40+ deployment/build scripts for cross-platform distribution, integrated tools like gocode clone and gomodifytags. No microservices or modular separation visible—single binary distribution model.
👥Who it's for
Go developers (especially beginners and those on lower-spec systems) who want a minimal, self-contained IDE that works on Windows, macOS, Linux, FreeBSD, and OpenBSD without external language server dependencies. Contributors maintaining the plugin system, build scripts, and Go-specific features.
🌱Maturity & risk
Actively maintained but niche: at version X38.4 with recent support for Go 1.18–1.21 features. The build directory contains platform-specific scripts for Qt4/Qt5 across 8+ OS variants, indicating production maturity. However, dominance of C++ (3.1M LOC) over Go (13K LOC) and lack of visible CI/test automation in file list suggest testing depth is unclear.
Single maintainer risk (visualfc@gmail.com as sole listed author) with no visible GitHub Actions CI in .github. Build system is brittle: 40+ shell/batch scripts for different Qt versions and OS combos create maintenance burden. Last commit recency unknown from file list, but the breadth of unmaintained build variants (Qt4, 32-bit Linux) suggests technical debt.
Active areas of work
Ongoing Go version support updates (1.18 generics, go.work, 1.11+ modules). Build script maintenance for multiple Qt versions and platforms. No active PR/issue backlog visible in file list—development pace unclear.
🚀Get running
git clone https://github.com/visualfc/liteide.git
cd liteide
# Choose platform-specific build script, e.g., for Linux Qt5:
bash build/build_linux_qt5.sh
# Or macOS Qt5:
bash build/build_macos_qt5.sh
Requires Qt SDK (4.8+ or 5.x) and Go toolchain installed.
Daily commands:
After building (via platform-specific script in build/), the binary is standalone. Launch: ./liteide [files|folder] [--select-env id] [--local-setting] [--user-setting] [--reset-setting]. No external services required; self-contained Qt application.
🗺️Map of the codebase
liteidex/bash.bat— Entry point script that initializes the LiteIDE environment and likely configures build paths for Windows systems.README.md— Documents core features, version, Go compatibility (1.18-1.21), and module system support—essential context for understanding IDE capabilities.build/build_linux.sh— Primary Linux build orchestration script; reveals build system structure and Qt version dependencies critical for cross-platform compilation.liteidex/deploy/liteapp/kms/default.kms— Default keymap/settings configuration that defines IDE behavior; crucial for understanding plugin initialization and runtime defaults.liteidex/deploy/liteapp/mimetype/liteeditor.xml— MIME type definition for the core editor; defines file type associations and editor activation logic..github/FUNDING.yml— Project sponsorship/funding configuration; indicates project sustainability model and community support channels.CONTRIBUTORS— Credits file that documents major contributors and community structure; essential for understanding project governance.
🛠️How to make changes
Add a New UI Theme
- Create a new QSS (Qt Stylesheet) file in the qss directory following naming convention (e.g., 'mytheme.qss') (
liteidex/deploy/liteapp/qss/mytheme.qss) - Define Qt widget styles using QSS syntax, inheriting color schemes from existing themes like default.qss as reference (
liteidex/deploy/liteapp/qss/default.qss) - Register the theme in the IDE's theme configuration by ensuring it appears in the theme selector through plugin discovery or default.kms (
liteidex/deploy/liteapp/kms/default.kms)
Create a New Project Template
- Create a new directory under liteidex/deploy/liteapp/template/[templatename]/ following naming convention (e.g., 'gowebapp') (
liteidex/deploy/liteapp/template/gocmd) - Add a setup.inf file that defines template metadata (name, category, description) following the pattern in gocmd (
liteidex/deploy/liteapp/template/gocmd/setup.inf) - Create boilerplate files (e.g., main.go, doc.go) in a 'root' subdirectory; LiteIDE will instantiate these during project creation (
liteidex/deploy/liteapp/template/gocmd/main.go)
Define MIME Type Support for New File Format
- Create a new XML file in liteidex/deploy/liteapp/mimetype/ (e.g., 'newformat.xml') defining file patterns and editor associations (
liteidex/deploy/liteapp/mimetype/liteeditor.xml) - Specify filename patterns, file extensions, and editor mode activation rules using XML elements similar to existing MIME definitions (
liteidex/deploy/liteapp/mimetype/gopackage.xml) - The IDE's plugin system will auto-discover the MIME type and register it; verify via theme/editor settings in kms configuration (
liteidex/deploy/liteapp/kms/default.kms)
Update Cross-Platform Build Configuration
- Edit the appropriate platform-specific build script (e.g., build_linux.sh for Linux) to add new Qt dependencies or flags (
build/build_linux.sh) - For Windows builds, update the corresponding .cmd file and ensure environment variables are set in vars*.cmd files (
build/vars5.15.2.cmd) - Test the build on target platform; update deployment script (e.g., deploy_linux_x64_qt5.sh) to package new artifacts (
build/deploy_linux_x64_qt5.sh)
🔧Why these technologies
- Qt Framework (4.x & 5.x) — Cross-platform GUI foundation enabling single codebase deployment on Linux, macOS, Windows, and BSD; supports stylesheets (QSS) for theming.
- Go (1.18–1.21+) — Primary language support with full toolchain integration; IDE manages GOPATH, Go modules, vendors, and workspace (go.work) configurations.
- Plugin Architecture — Modular extensibility allowing independent feature development (editor modes, themes, build commands) without monolithic core.
- MIME Type Registry (XML-based) — Lightweight, human-readable file association system enabling editor mode selection and file type-specific behavior without binary registration.
- Build Scripts (Shell & Batch) — Minimal CI/CD approach using platform-native scripts for reproducible, dependency-isolated builds across OS variants.
⚖️Trade-offs already made
-
Qt 4.x and 5.x dual support with separate build paths
- Why: Qt 4 remains available on legacy systems; Qt 5 offers modern features. Parallel maintenance adds build complexity but ensures broad OS coverage.
- Consequence: Build matrix explosions; maintainers must test multiple Qt/platform combinations. Deployment scripts become numerous and hard to synchronize.
-
Configuration via static XML/INF files in deploy directory rather than runtime database
- Why: Portable, versionable, human-editable configuration; no external dependencies or database initialization.
- Consequence: Configuration changes require IDE restart; no dynamic hot-reload of themes or keymaps without plugin reloading.
-
Direct invocation of system Go toolchain (go build, go test) rather than
- Why: undefined
- Consequence: undefined
🪤Traps & gotchas
Build system is script-based without modern CMake/Meson—requires correct Qt SDK version in PATH (Qt4 vs Qt5 scripts are separate; mixing breaks build). Go toolchain must be in PATH and match IDE's expectations (GOPATH vs modules detection). Cross-platform binaries require building on target OS (no cross-compilation scripts visible). Plugin system likely requires specific C++ linkage conventions and version pinning not documented in visible files.
🏗️Architecture
💡Concepts to learn
- MIME Type Management — LiteIDE's core feature system depends on MIME type routing to dispatch editor features (syntax highlighting, code completion, build rules) to correct plugins; understanding MIME dispatch is essential for extending IDE capabilities
- Go Module System (go.mod / go.work) — LiteIDE explicitly supports Go 1.11+ modules, 1.18 workspaces, and legacy GOPATH; core IDE feature selection depends on detected module mode, affecting build and completion behavior
- Language Server Protocol (implied via guru integration) — LiteIDE integrates Go guru for 'source query tools' and 'find usages'; understanding how the IDE communicates with external Go analysis tools clarifies extensibility boundaries
- Qt Plugin Architecture — LiteIDE's extensibility depends entirely on Qt's plugin system; adding editors, build tools, or language features requires understanding Qt's IID registration and dynamic loading patterns
- GDB/Delve Protocol Wrapping — IDE debugging support wraps external debuggers (GDB and Delve); understanding how the IDE marshals breakpoints, watchpoints, and stack frames between UI and debugger CLI improves debug feature additions
- GOPATH vs Go Modules Build Environment Management — LiteIDE supports custom GOPATH at system/IDE/project level and module workspaces; build script generation and tool invocation depend on correctly detecting and applying the active environment mode
- Cross-Platform Binary Distribution (AppImage, DMG, ZIP) — Build/ directory reveals deployment patterns for 5+ OS/architecture combos; understanding bundling (static linking, Qt resources, dependency packaging) is critical for maintaining platform support
🔗Related repos
golang/vscode-go— Modern alternative Go IDE/extension; shows language server protocol and async debugging patterns vs LiteIDE's embedded toolinggolangci/golangci-lint— Go linting/analysis tool ecosystem that complements IDE build integration; LiteIDE likely uses guru for similar purposesderekparker/delve— Go debugger that LiteIDE integrates; core debugging backend referenced in feature listvisualfc/gocode— Embedded completion engine; LiteIDE maintains a clone of nsf/gocode for code completionfatih/gomodifytags— Struct tag manipulation tool integrated into LiteIDE; demonstrates plugin pattern for Go-specific refactoring
🪄PR ideas
To work on one of these in Claude Code or Cursor, paste:
Implement the "<title>" PR idea from CLAUDE.md, working through the checklist as the task list.
Add GitHub Actions workflow for cross-platform builds
LiteIDE has extensive build scripts for multiple platforms (Windows, Linux, macOS, FreeBSD, etc.) in build/ directory, but no CI/CD automation. A GitHub Actions workflow would validate builds across platforms on each PR, catching platform-specific regressions early. This is especially valuable given the complexity of supporting Qt4/Qt5 variants and multiple architectures (x32, x64).
- [ ] Create .github/workflows/build.yml to run build/build_linux_qt5.sh, build/build_macos_qt5.sh on Linux and macOS runners
- [ ] Add matrix strategy to test multiple Qt versions (Qt4, Qt5) where applicable
- [ ] Document in README.md how to trigger local builds matching CI environment
- [ ] Ensure workflow handles Qt dependency installation via apt/brew
Create BUILDING.md with platform-specific setup instructions
The build/ directory contains 30+ scripts with cryptic names (build_linux_debian72_x64.sh, deploy_linux_x64_qt5.5.sh) but README.md lacks any build instructions. New contributors cannot determine which script to use, what dependencies are needed, or how to build for their platform. This documentation gap creates high friction for contributions.
- [ ] Document prerequisite dependencies for Linux (Qt5-dev, Go, gcc), macOS (Qt, Xcode), Windows (MinGW/MSVC, Qt)
- [ ] Add table mapping build scripts to target platforms/architectures/Qt versions
- [ ] Include step-by-step build instructions for the 3 major platforms (Linux, macOS, Windows)
- [ ] Reference vars*.cmd/.sh files and explain their role in the build process
- [ ] Add troubleshooting section for common build failures
Add automated translation/localization update CI check
The build/ directory contains update_tr.sh, update_ts.sh, and update_tr.cmd scripts that manage translations, but there's no validation that these are kept in sync with source code changes. Contributors might forget to update .ts files when adding UI strings, causing translation drift. A GitHub Actions workflow could flag missing translation updates.
- [ ] Create .github/workflows/translations.yml that runs build/update_ts.sh and checks for uncommitted changes
- [ ] Configure workflow to fail if .ts translation files are not updated when source strings change
- [ ] Add check to validate .ts files are properly formatted (using Qt's lrelease or similar)
- [ ] Document in CONTRIBUTING.md (if exists, else create) that translations must be updated before PR merge
🌿Good first issues
- Add automated CI/CD pipeline: create .github/workflows/*.yml for Linux (Qt5), macOS (Qt5), and Windows (MSVC) to replace 40+ manual build scripts and provide test coverage verification.
- Modernize Go version support documentation: create docs/GO_VERSIONS.md with explicit matrix of tested Go versions (1.11–1.21) and integration test cases for module/vendor/GOPATH workflows.
- Implement unit tests for core IDE features: add tests/ directory with C++ unit tests for gocode integration, syntax highlighting rules, and configuration parsing—currently no test suite visible in file list.
⭐Top contributors
Click to expand
Top contributors
- @visualfc — 92 commits
- @vendelin8 — 2 commits
- @nebulabox — 2 commits
- @TheLucasAdam — 1 commits
- @npt-1707 — 1 commits
📝Recent commits
Click to expand
Recent commits
6c0660a— Merge pull request #1331 from TheLucasAdam/patch-1 (visualfc)19b45c9— Update website.md (TheLucasAdam)d7bee3a— litebuild: filebuild (visualfc)cba1836— Merge pull request #1193 from allwaysoft/patch-1 (visualfc)f7cd58f— Merge pull request #1325 from tabudz/fix-CVE-2020-8287 (visualfc)171ebfe— Merge pull request #1326 from npt-1707/fix-CVE-2018-20786 (visualfc)0f0e89c— x (visualfc)b9cd17b— ver x38.4 (visualfc)d301c25— Fix crash when out of memory while opening a terminal window: Handle out-of-memory more gracefully. (npt-1707)bd3949e— http: unset F_CHUNKED on new Transfer-Encoding (tabudz)
🔒Security observations
LiteIDE appears to be a moderately secure open-source project. The main security concerns are related to script execution in build processes (shell and batch scripts), potential SQL injection in the SQL editor component, and the plugin system's security model. The project follows LGPL licensing and maintains good open-source practices with visible contributor information. No obvious hardcoded secrets or exposed credentials were found in the file structure. Critical improvements should focus on: (1) securing build/deploy scripts against injection attacks, (2) ensuring SQL queries are parameterized, and (3) implementing a secure plugin loading and validation mechanism. Since this is a desktop IDE and not a web application, many web-specific vulnerabilities are not applicable.
- Medium · Potential SQL Injection Risk in QSQLEditor —
liteidex/deploy/liteapp/mimetype/qsqleditor.xml. The presence of 'qsqleditor.xml' MIME type configuration suggests SQL query execution capabilities. Without reviewing the actual source code, there's a risk of SQL injection if user input is not properly parameterized when constructing SQL queries. Fix: Ensure all SQL queries use prepared statements with parameterized queries. Never concatenate user input directly into SQL statements. Implement input validation and sanitization. - Medium · Shell Script Security in Build/Deploy —
build/*.sh files (build_*.sh, deploy_*.sh, update_*.sh). Multiple shell scripts in the build directory execute potentially complex operations. These scripts may be vulnerable to command injection or unsafe variable expansion if they process user-supplied input without proper escaping. Fix: Review all shell scripts for proper input validation and sanitization. Use quotes around variables, avoid eval, and use shellcheck for static analysis. Ensure scripts follow secure coding practices. - Medium · Batch Script Security in Windows Builds —
liteidex/bash.bat, build/*.cmd files. Windows batch and command files (.cmd, .bat) in the build directory may contain security risks related to command injection or improper variable handling. Fix: Review batch scripts for proper escaping and validation. Use delayed expansion carefully. Implement input validation before executing any commands. - Low · Hardcoded Configuration Files —
liteidex/deploy/liteapp/. Various configuration files (.qss, .xml, .kms) are included in the deploy directory. While these are primarily UI/configuration data, they should be reviewed for any hardcoded sensitive information or unsafe defaults. Fix: Review all configuration files for hardcoded credentials, API keys, or sensitive data. Use environment variables or secure configuration management for any sensitive settings. - Low · Missing Security Headers Configuration —
Project-wide configuration. No evidence of security headers or Content Security Policy configuration in the provided file structure. This is relevant if LiteIDE has any web-based components or remote functionality. Fix: If the application has any web-facing components, implement appropriate security headers (CSP, X-Content-Type-Options, X-Frame-Options, etc.). - Low · Potential Code Execution via Plugin System —
Plugin system (source code not visible). The plugin system mentioned in features could be a vector for code execution if plugin loading and validation is not properly implemented. Fix: Implement secure plugin loading mechanisms: verify plugin signatures, run plugins with minimal privileges, validate plugin manifests, and implement a whitelist/approval system for plugins.
LLM-derived; treat as a starting point, not a security audit.
👉Where to read next
- Open issues — current backlog
- Recent PRs — what's actively shipping
- Source on GitHub
Generated by RepoPilot. Verdict based on maintenance signals — see the live page for receipts. Re-run on a new commit to refresh.