Commits


Limpiar comentarios narrativos y actualizar README/plugin.xml para 0.2.0 Recorta comentarios que narraban el proceso de investigacion (referencias a decompilar clases, bugs anteriores ya resueltos, etc.) dejando solo el 'por que' no obvio de cada decision. Actualiza el README, cambeLog y la descripcion del plugin.xml para reflejar las funciones agregadas en esta version: pestana Log, boton Commit and Send, deteccion real de commits salientes, got como VCS distribuido, y refresco automatico del panel de Commit y el Log tras commit/push/update o cambios externos.


Add GotVcsRootWatcher to handle external VCS state changes


agregar un whatcher


Remove default parameter in GotVcsLogProvider to fix reflective instantiation issue


Add `GotVcsRefreshNotifier` to streamline VCS root updates for Commit and Log panels.


Simplify `GotCommitAndSendExecutor` by delegating commit handling to `CommitContext` and removing redundant logic


Add push dialog invocation after commit if `PUSH_AFTER_COMMIT_KEY` is set


Refactor `doCommit` to delegate explicit path list commits via `commitFilePaths`.


test: verificar si got commit funciona tras got add


Improve VCS compatibility: refactor content handling, optimize push operations, and implement distributed commit features.


Update file chooser to use `singleFile()` with title and description


Add caching for commit objects and implement helper functions for commit IDs, changed paths, and refs


Set `jvmDefault` to `NO_COMPATIBILITY` in Kotlin compiler options to align with plugin verifier requirements.


Corregir GotPushSupport.getDefaultTarget: sobrecarga de 2 argumentos PushSupport declara dos getDefaultTarget: la de un argumento es abstracta, pero la de (repositorio, fuente) tiene cuerpo por defecto que siempre retorna null (verificado con javap). El dialogo de Push llama a esa segunda version, y al recibir null marca el modelo con un error de 'empty target' y loadCommits corta la ejecucion antes de invocar GotOutgoingCommitsProvider -- por eso nunca aparecia el log de diagnostico agregado antes y el boton de Push quedaba deshabilitado pese a existir commits reales. Se agrega la sobrecarga faltante delegando a la de un argumento. Mismo patron de bug que CheckinEnvironment.commit() (fase de commit/rollback), donde la plataforma tambien encadena una sobrecarga con valor por defecto distinta a la que se sobreescribio.


Anadir diagnostico al proveedor de commits salientes y popup del widget de rama GotOutgoingCommitsProvider ahora registra en el log de IntelliJ el remote, la rama, el hash remoto resuelto y los ids encontrados en cada llamada, y ya no deja escapar excepciones que no sean VcsException (antes se perdian en silencio dentro del ExecutorService del dialogo de Push sin quedar registradas en idea.log). Esto es para diagnosticar por que el boton de Push sigue sin habilitarse pese a existir commits pendientes reales. Tambien se implementa GotBranchWidget.getWidgetPopup(), que antes no existia (el valor por defecto de la plataforma es null, por lo que no pasaba nada al hacer click en el widget). Ahora muestra un popup no interactivo con el log reciente cacheado en GotRepository (mismo patron que branch/revision, calculado fuera del EDT).


Implementar deteccion real de commits pendientes de enviar Anade remoteBranchHash/outgoingCommitIds/catCommit a GotCommandLineWrapper (basados en got ref -l, got log -x y got cat <hash>), y una clase GotFullCommitDetails que adapta un GotCommitObject a VcsFullCommitDetails. GotOutgoingCommitsProvider ahora resuelve el hash de la rama remota y lista los commits no alcanzados por ella en vez de devolver siempre una lista vacia, lo que permite que el dialogo de Push nativo detecte y habilite el boton de envio con commits reales pendientes.


Fix EDT violation in GotRepository.getCurrentBranchName() Reported in vivo: the branch widget never showed anything, and opening the Push dialog hit 'Synchronous execution on EDT' (got info run directly from PushController.createTreeModel on the UI thread) -- the same category of bug fixed earlier for GotContentRevision. getCurrentBranchName()/getCurrentRevision() now return cached fields instead of shelling out to got info on every call. State is read once eagerly on construction and refreshed in update(), which the platform calls off the EDT during a repository refresh cycle.


Replace the simple Send action with a native Push dialog Adds GotPushSource/GotPushTarget/GotPusher/GotOutgoingCommitsProvider/ GotPushTargetPanel/GotPushSupport, wired to the Repository model added previously. This enables IntelliJ's native Push dialog (Ctrl+Shift+K) for got send, showing the current branch and target ('origin/<branch>') the same way Git does, instead of a plain menu action with no preview. GotOutgoingCommitsProvider reports an empty outgoing-commits list: got has no cheap local way to compute what a send would push without contacting the server first, so the dialog works but doesn't preview commits ahead of time. GotPushTargetPanel is read-only (got resolves its own remote/branch via got.conf), unlike Git's editable target. GotSendAction is removed; the same got send functionality is now reached through the Push dialog instead of a VCS Operations Popup entry.


Add a Repository model and a branch-name status bar widget GotRepository/GotVcsRepositoryCreator/GotRepositoryManager plug into the platform's shared DVCS infrastructure (VcsRepositoryManager, AbstractRepositoryManager) rather than reimplementing repository tracking from scratch. GotBranchWidget (built on DvcsStatusWidget, the same base class git4idea's own branch widget uses) shows the current branch next to the project name in the main toolbar, matching Git's UI. Requires new compile dependencies on intellij.platform.vcs.dvcs and intellij.platform.vcs.dvcs.impl: Repository/RepositoryManager and the status widget base classes live outside com.intellij.modules.vcs. This Repository model is also the prerequisite for real PushSupport (native Ctrl+Shift+K dialog), which follows next.


Add status badges to the README GitHub Actions release workflow status, latest GitHub release version, GPLv3 license, and JetBrains Marketplace version/downloads (plugin 33099).


Auto-detect the most recent tag when dispatched with no input Makes the workflow_dispatch tag input optional: when left empty, it resolves to the most recently created tag (git tag --sort=-creatordate) instead of requiring it to be typed in every time. Real 'push: tags' events and an explicit input still take priority over auto-detection.


Take the release tag as a workflow_dispatch input Selecting 'Use workflow from: Tag v0.1.0' failed with 'Workflow does not exist or does not have a workflow_dispatch trigger in this tag' -- that tag's own snapshot of the workflow predates the trigger being added, so GitHub can't see it there. Instead, run manually from the main branch (which always has the current trigger definition) and pass the target tag as an input; checkout uses that tag explicitly so the build still reflects the tagged code, and the release step tags the release with it. Falls back to github.ref_name for real 'push: tags' events, where inputs.tag is unset.


Fix release workflow: pass tag_name explicitly softprops/action-gh-release only infers the tag from the ref automatically on a real 'push: tags' event. Triggered via workflow_dispatch it failed with 'GitHub Releases requires a tag', even though github.ref_name was correctly set to the selected tag -- the action's default behavior just doesn't check that context for non-push events.


Add workflow_dispatch fallback for the release workflow The v0.1.0 tag reached GitHub fine via the Forgejo mirror (workflow is registered, listed in the Actions tab), but the push never fired the 'push' event Actions listens for, so it never ran automatically. workflow_dispatch lets it be triggered manually against a given tag from the Actions tab as a reliable fallback, regardless of why the mirrored push didn't trigger it.


Prepare first public release: reorganize, translate, add release infra - Split the single flat package into cli/changes/checkin/history/update/ settings/actions/roots by responsibility, mirroring how larger VCS integrations (e.g. git4idea) are organized. - Translate all comments and user-facing strings to English; trim narrative/session-referential comments down to concise explanations of non-obvious behavior only. - Add a Gradle Wrapper for CI use; build.gradle.kts now falls back to downloading a matching IntelliJ IDEA build when no local ideLocalPath is configured (moved out of the versioned gradle.properties into ~/.gradle/gradle.properties, since it is machine-specific). - Add LICENSE (GPLv3), a plugin icon (light/dark), a fuller <description> and <vendor> with contact info, and rename the plugin from 'Game of Trees (got) VCS' to 'Got' per Marketplace naming guidelines. - Rewrite README.md in English: what the plugin does, how each feature maps to a got command, building, contributing, and releasing. - Add .github/workflows/release.yml: on any v* tag, build, verify, create a GitHub Release with the plugin ZIP, and publish to JetBrains Marketplace once a PUBLISH_TOKEN secret is configured.