You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
As-built specifications for JCode, a native Android IDE with an embedded Linux runtime.
Product version
1.7.7 (app/build.gradle.kts, val jcodeVersion)
Verified against
commit cea581c, 2026-08-09
Scope
The whole system: 43 Gradle modules across :app, :core:*, :feature:*, :native:*
What these documents are
These specs describe what the system actually is today, derived from the source tree — not
what it was planned to be. Where an intended design was never wired up, the spec says so in
place rather than describing the intent as if it shipped — each document closes with its own
"Known gaps" section, so the caveat sits beside the thing it qualifies.
They are not a requirements document. There are no SHALL statements and no requirement IDs;
nothing here is a promise about future behavior.
These documents supersede the system description embedded in
AGENTS.md, which has drifted in places. AGENTS.md remains authoritative
for how to work in this repo (conventions, locked decisions, verification commands).
# <Title>||||---|---||**Status**| Implemented / Partially implemented / Built but unwired / Stub ||**Modules**|`:core:x`, `:native:y`||**Primary sources**| path/one.kt, path/two.cpp ||**Verified against**| commit <sha>, <date> |## 1. Purpose and scope## 2. Architecture## 3. Public contract## 4. Data model## 5. Behavior## 6. Protocol / format (only where one exists)## 7. Threading and lifecycle## 8. Invariants and constraints## 9. Failure modes## 10. Known gaps## 11. References
Sections that do not apply to a subsystem are omitted rather than left empty; the numbering
stays stable so ## 6 always means "protocol or format" where it appears.
Status values
Status
Meaning
Implemented
Present and reachable from normal app use
Partially implemented
Reachable, with named behavior missing
Built but unwired
Code compiles and works in isolation; nothing calls it
Stub
A marker type or empty module with no behavior
Rules these documents follow
Every factual claim is traceable to a repo-relative source path. Non-obvious claims cite
path:line.
Enum members, defaults, ports, flags and magic numbers are copied from source, never
paraphrased or recalled.
Cross-references between specs are relative Markdown links.
Mermaid diagrams appear only where a picture beats prose — process topology, protocol
handshakes, binary layouts, launch flows.
Line numbers drift. Symbol names and file paths are the durable anchors; treat a cited line
as a hint, not a contract.
Maintaining these documents
A change that alters a protocol, on-disk format, module boundary, or public contract
should update the corresponding spec in the same change.
After a substantial edit, re-run the checks in
CI, quality and invariants:
every source path cited by a spec must still exist, and every relative spec link must resolve.
Update the Verified against row of any document you re-check against source.