Skip to content

Releases: neko233-com/gitsss

GitSSS 1.18.0

Choose a tag to compare

@neko233-com neko233-com released this 27 Oct 11:50

协作与日报

  • 仓库协作设置以卡片展示已添加和可添加团队,支持搜索并快速管理授权。
  • 添加协作者时可点击展开可搜索的用户列表,支持显示名称、键盘选择和失败提示。
  • 新增站点管理员日报 Agent:配置 Responses API、飞书机器人、账号类型、北京时间和节假日及调休日历;支持手动运行并跳过没有提交的账号。
  • 密钥及发送回执保存在服务端数据目录。仅显式分类为个人的账号参与汇总;未维护日历的年份不会自动发送。请在启用前确认提交消息可发送给所配置的模型服务和通知渠道。

安装与验证

提供 Linux、macOS 和 Windows 对应的服务器与 hook 程序、平台归档及校验和。升级时请保留原有配置、Git 仓库和 LFS 数据路径。平台安装包、源码及 SHA-256 均在本地生成和校验;服务器发布构建默认使用纯 Go SQLite。

v1.17.3:浏览器登录恢复与 HTTP 克隆优先

Choose a tag to compare

@neko233-com neko233-com released this 26 Oct 03:56

修复

  • 修复强制登录站点中,浏览器会话过期后“记住登录”无法恢复、仓库直接显示 404 的问题。
  • 未登录的 HTML 404 页面明确提示浏览器登录状态,并提供登录后返回原页面的入口;不存在的仓库保持相同响应。
  • 仓库克隆入口及空仓库命令每次加载优先使用 HTTP(S),旧 SSH 偏好不再覆盖默认值;保留手动选择和 HTTP Git 禁用时的 SSH 回退。
  • 修复软件中心整理响应的类型检查,并在响应不完整或不是 JSON 时显示错误,保留预览版本冲突处理。
  • 同步产品文档,并规范既有 Go 文件格式。

兼容性与验证

  • 保持授权、匿名 Web/API 404、匿名 Git 401 与已认证无权限 403 的契约。
  • 不修改数据库版本、Git/LFS 对象、存储路径和 SSH 授权;回滚使用上一版程序及匹配资源。
  • 本地完成完整 Go/TypeScript lint、类型检查、223 个前端测试、相关后端测试、CGO SQLite race 与 pure-Go SQLite 集成回归。
  • 本地交叉编译并打包 Linux、macOS、Windows 七个平台;72 个产物与 SHA256SUMS 完整校验通过。
  • 正式生产服务已更新为 1.17.3,浏览器及真实 HTTP clone/fetch 已验证。

按既有约定,本 Release 仅发布源码,不上传二进制、压缩包、依赖或缓存。日常开发分支为 main,正式版本记录在 release/v1.17.3。

v1.17.2

Choose a tag to compare

@neko233-com neko233-com released this 23 Oct 08:53

修复与体验

  • 强制登录站点中,匿名访问仓库的网页和 REST API 统一返回 404,不再先跳转登录页或返回站点级 403。
  • 已登录但无仓库权限时,网页、REST API 和 Git Smart HTTP 返回 403,并提供仓库路径与申请权限提示。匿名 Git 保留标准 401 凭据挑战。
  • 包含软件中心的平台筛选、平台标签和按预览版本安全应用的整理功能。

验证与发布

  • 权限集成回归、CGO/race 回归、软件中心测试和 Go lint 通过。
  • Linux、macOS、Windows 共 7 个平台构建和打包通过;72 个产物与 SHA256SUMS 校验通过,前端资产校验通过。
  • 192.168.110.42 生产服务已更新;真实软件中心页面、匿名 404 和登录无权限 403 已验收。
  • 本版本为源码发布,不上传二进制、压缩包、依赖或缓存。生产升级保留既有数据库、Git/LFS 路径和 SSH 授权。
  • 日常开发在 main,正式版本记录在 release/v1.17.2。

v1.17.1:软件中心平台筛选与安全整理

Choose a tag to compare

@neko233-com neko233-com released this 23 Oct 07:40

软件中心增加服务端平台筛选,以及带版本校验的按平台整理预览/应用流程,并补齐中英文界面和使用文档。本次为源码 Release,不附带预编译二进制;跨平台构建与校验已在本地完成。

v1.17.0:组织内网共享、跨仓库看板与软件中心整理

Choose a tag to compare

@neko233-com neko233-com released this 23 Oct 05:22

组织内网共享

  • 组织页新增“共享”标签:成员可上传文件与短笔记,内容存于 APP_DATA_PATH/org-share(可用 [org_share] PATH 重定向),不进入 Git 或 LFS。
  • 分片上传默认 8 MiB、最多 8 路并行,支持缺失区间续传;下载支持单次 HTTP Range,便于客户端并行拉取。
  • 每组织默认 100 GiB、单文件 32 GiB、默认 30 天过期,可标记永久;上传前同时校验组织配额与卷剩余空间(默认预留 1 GiB),超出分别返回 413/507。
  • 站点管理员可通过 /-/admin/org-share、gitsss admin org-share quota 或 PUT /api/v1/admin/org-share/quota 调整配额,并用 gitsss admin org-share cleanup 清理过期对象。
  • gitsss admin org-share put/get/push/pull 支持服务端与跨机传输;完整接口见 docs/operations/org-share.md。

跨仓库看板

  • 用户与组织看板支持用 owner/repo#123 附加 issue:issue 保留在所属仓库看板,同时出现在当前看板。
  • 只接受与看板同一所有者、且当前用户有权限访问的仓库;无效引用与越权访问会被拒绝。

访问反馈与请求体

  • 已登录但无权限时,仓库页面、API 与 Git HTTP 返回可操作的 403 提示(含仓库名与下一步);匿名用户和仅公开令牌仍返回 404,避免泄露私有仓库。
  • 修正 Uint8Array 请求体被浏览器按视图偏移截断的问题,发送前复制为独立 ArrayBuffer。
  • 以上修复与组织共享的 Darwin 磁盘预留一并汇总自 v1.16.1 热修复。

软件中心

  • 新增“系统”列:按文件最终后缀识别 Windows、macOS、iOS、Android、全平台与待识别,重命名后自动更新,目录显示横线。
  • 新增递归分页列表与 GET /api/v1/orgs/{org}/software,返回 platform 和组织内完整 path,每页最多 200 条,按目录优先、名称 A–Z 稳定排序。
  • 新增 POST /api/v1/orgs/{org}/software/organize:先预览 revision,再原子应用;按 Android/iOS/macOS/Windows/全平台 整理,保留用途目录与文件 ID,冲突时整批不写入。

传输与性能

  • 删除、移动和子树遍历改用邻接索引,避免在大型目录树上反复全表扫描。
  • 虚拟 ZIP 归档计划在组织树未变化时跨 Range 请求复用;无关变更确认内容未变后同样复用。
  • 恢复单文件下载的 sendfile 路径,同时保留下载进度统计。
  • 分片上传仅在成功后写一次状态,并校验分片链、大小与所属用户,拒绝并发或过期写入。
  • 多标签页改为按标签页作用域与上传会话租约:失去所有权时立即停止并移除任务,心跳不再整页刷新。
  • 共享上传按平台预分配磁盘:Linux 使用 fallocate,macOS 使用 F_PREALLOCATE,Windows 使用 FILE_ALLOCATION_INFO;卷不支持时回退为稀疏文件并继续校验空间。

发布与校验

  • release-native 拒绝脏工作区和过期的前端构建戳。
  • 源码包只包含 Git 跟踪文件,生成可复现的 tar.gz。
  • 新增 build/verify-release.py 与 task release:verify:校验 7 平台及 3 个 Windows Go-Git 变体、平台包成员字节、xz 解压内容、嵌入版本标签和 SHA256SUMS 回读。
  • 版本以构建标签嵌入,兼容 Go 1.27 不再记录 -ldflags 的行为。

升级与回滚

  • 数据库新增 org_share_item、org_share_upload、org_share_quota 三张表,迁移版本升至 343;不改动既有表结构。
  • Git 仓库、对象、refs、LFS 字节与 data/gitsss/layout.json 契约不变;软件中心仍只调整目录元数据。
  • 升级前请备份数据库。旧二进制会拒绝高于自身的数据库版本,因此回滚需同时恢复 v1.16.0 的数据库备份并换回旧二进制;共享文件位于独立路径,可保留或手动清理。
  • 本版本为纯 Go 构建(CGO 关闭),提供 Linux/macOS/Windows 七个平台包及 Windows Go-Git 变体;Linux CGO WAL 配置可按 docs/features/push-throughput.md 自行构建。

校验

  • 每个二进制与压缩包均附 .sha256,SHA256SUMS 覆盖全部资产并在发布前本地回读校验。
  • 本地验证:前端 74 个文件、211 项测试;软件中心单测与 TestAPIOrgSoftware;仓库访问反馈与令牌范围集成测试;orgshare/projectboard 单测;go build ./...;七平台与 Windows Go-Git 变体交叉编译、打包与校验。macOS 与非本机架构完成交叉编译和静态校验,未进行 macOS 真机运行。

完整变更:v1.16.0...v1.17.0

v1.16.1

Choose a tag to compare

@neko233-com neko233-com released this 23 Oct 04:54

Highlights

  • Signed-in users without repository permissions receive a localized 403 explanation across repository pages, REST API, and authenticated Git HTTP. Anonymous users and public-only tokens continue to receive 404.
  • Fix typed-array request bodies when the view begins at a non-zero byte offset.
  • Add Darwin disk reservation support for organization-share uploads, with a safe fallback when filesystem preallocation is unsupported.
  • Includes the latest main branch, including organization sharing and project boards.

Verification

  • make lint-go passed with 0 issues.
  • go test -race -tags="bindata sqlite sqlite_unlock_notify" ./modules/orgshare ./modules/projectboard passed.
  • Repository-access integration regression passed.
  • Darwin arm64 and amd64 org-share test binaries cross-compiled successfully.
  • All seven Linux, macOS, and Windows platform packages were built locally; all 35 SHA256 sidecars verified.

v1.16.0:低延迟 Git 接收与完整平台包

Choose a tag to compare

@neko233-com neko233-com released this 21 Oct 14:51

v1.16.0 改善 Git HTTP 接收链路:轻量 gitsss-hook 执行原有权限和分支处理,保留 Git 原生旧 OID 比较与原子 refs 更新、自定义 hooks 和现有存储布局。并发后置回调不会覆盖更新的分支快照,令牌活动更新保留当前权限与撤销状态。

最终 Linux amd64 CGO 包在 WAL/NORMAL 配置下,16 个连续在途请求完成 512 次独立成功更新、零重试,119.76 push/s。包含本机 Windows git-next 0.3.0 的 Git/LFS、PR 合并、权限、自定义 hooks、数据库记录与重启完整性的整批验收耗时 50.907 秒。完整数据见 acceptance-1.16.0.json;其他同步级别与 Windows CLI 的耗时分别记录。

每个平台的 tar.gz 包含固定名称的 gitsss 与 gitsss-hook、许可证和安装说明。升级保留原配置和仓库/LFS 路径;两个程序放在同一目录。原始文件、XZ 与 Windows GoGit 兼容变体继续提供。Linux CGO 变体请显式选择 linux-amd64-cgo 附件,并搭配同版本 linux-amd64 辅助程序。SQLite 性能配置为 SQLITE_JOURNAL_MODE=WAL、SQLITE_SYNCHRONOUS=NORMAL;留空仍保留原驱动默认值。

七平台交叉编译、两种 SQLite 驱动、竞态检查、11 个相关 Go 包、代码检查、前端 279 项资源、所有压缩文件与平台组合包均在本机验证。macOS 与非本机架构完成交叉编译和静态校验;没有进行 macOS 真机运行。本次未使用 GitHub Actions。

PROVENANCE-1.16.0.json 记录源码提交、构建环境与产物身份;SHA256SUMS 覆盖全部附件。

GitSSS 1.15.0 - enterprise identities, workspace polish and lower memory

Choose a tag to compare

@neko233-com neko233-com released this 19 Oct 04:34

Enterprise identity and workspace update

  • Link Google, Feishu, WeChat and Discord to an existing GitSSS account. Unconfigured or inactive native channels stay hidden; email/password remains available.
  • Google requests account selection. WeChat uses website QR authorization. Each source may set its own callback site without changing legacy Git/SSH/LFS URLs.
  • Native channels prioritize existing-account binding. Closed registration hides signup controls; expected conflicts and expired sessions avoid generic server errors.
  • Feishu basic authorization works with open_id when optional employee user_id is absent, preserving nonempty legacy identifiers and the upstream token-exchange provider contract.
  • Add channel application, credentials, callback, enterprise review, binding and troubleshooting manuals under docs/第三方渠道接入/, with an embedded HTML chapter.
  • Fit the signed-out desktop entrance in one viewport, add bounded pointer particles and animated SVG fallback, honor reduced motion, and pause hidden/offscreen effects.
  • Keep Ctrl+K on one line. Add accessible disk and Go-memory usage meters and clarify cumulative allocation versus current usage.

Measured memory improvements

  • A controlled 4,000-file disjoint-root storage inventory uses about 58% fewer allocated bytes and 43% fewer allocations, while overlapping roots retain exact deduplication.
  • Real-locale dictionary storage retains about 21% fewer bytes. Existing translations, explicit empty values, custom overrides and fallback behavior remain covered.
  • Shared status sampling and hidden-page polling suppression reduce repeated background work. These measurements are scoped benchmarks, not whole-process RSS guarantees.

Verification and compatibility

Local acceptance includes backend/frontend tests, lint, real Edge visual/accessibility checks, CGO and pure-Go SQLite, race checks, and real Git/SSH/LFS compatibility checks. Linux, macOS and Windows packages are cross-compiled locally; all 40 assets have SHA-256 checksums and compressed packages are round-trip verified. No GitHub Actions workflow is created or run.

No repository/ref/object/LFS layout migration, account password reset or SSH credential change is required. Keep automatic/public registration disabled for internal deployments. Existing sessions and configured sources are retained. A rollback to an older binary that ignores per-source callback URLs requires disabling the affected source or restoring a compatible callback setting.

GitSSS 1.14.0 - adaptive public login protection

Choose a tag to compare

@neko233-com neko233-com released this 18 Oct 13:13

Public login protection

  • Adaptive local CAPTCHA for suspicious browser sign-ins without permanent account or shared-IP lockouts.
  • Atomic budgets before HTTP password hashing, bounded concurrent checks and memory, and HTTP 429 / Retry-After for excessive Basic password attempts.
  • Recently verified credentials still undergo password/account/MFA verification; normal Git polling does not consume shared-source budgets. Personal, OAuth and Actions tokens remain independent.
  • TOTP and recovery-code budgets after password verification; image CAPTCHA consumption is serialized, arbitrary reload/revival is refused, and refresh is keyboard accessible.
  • Explicit proxy-hop trust, validated right-to-left forwarding chains, direct-client scheme spoofing rejection, and configurable original HTTPS protocol headers for tunnels.
  • English/Chinese guidance, offline HTML operations/configuration reference, thresholds, compatibility and rollback documentation.

Existing accounts, password hashes, SSH keys, Git/LFS objects, storage paths and database schema are unchanged. During an attack, a first-time browser login may need CAPTCHA and a first-time Basic password request may need a short retry. Counters are process-local; they reset on restart and do not provide distributed DDoS protection.

Local verification

  • Backend unit packages, targeted real HTTP authentication tests and 189 frontend tests passed.
  • macOS CGO SQLite / pure-Go SQLite and affected-package race checks passed.
  • Actual Edge: adaptive challenges, same-NAT valid login, correct credentials and tokens under password throttling, keyboard refresh, and 58 light/dark workspace views passed.
  • Ten locally built Linux/macOS/Windows binaries, XZ roundtrips, CPU architectures and SHA-256 files verified before publication.
  • No GitHub Actions workflows were created or run.

GitSSS 1.13.0 - activity cards, full-width calendars and custom repository tags

Choose a tag to compare

@neko233-com neko233-com released this 18 Oct 08:50

Activity workspace

  • Compact activity cards separate account/remark, repository, branch, time and commit messages. Each message still links to its full commit.
  • Activity timestamps show local yyyy-MM-dd HH:mm:ss, localized weekday and live relative time (周五 | 前天), including calendar-day handling across midnight and DST.
  • The activity calendar fills the center column. Summaries show 365-day, 7-day and 30-day totals, active days and peak daily activity. Extra API padding days no longer inflate the annual display.
  • Explicit inclusive count ranges, editable colors/range boundaries, browser-local preferences and keyboard date navigation/filtering.

Custom repository tags

  • Up to 25 tags, now accepting Chinese/lowercase Unicode names and underscores within the existing 35-character limit.
  • Repository, Explore and Ctrl+K search match tags through existing permission-filtered queries.
  • Reliable fast Enter-to-add, saved-selection restoration on Cancel, inline validation and retry without losing input.
  • Tag suggestions and counts are filtered by visible repositories, including public-only API tokens.

Compatibility and validation

  • No schema migration or changes to Git/SSH/LFS paths, refs, objects, keys or Actions storage. Native and /topics APIs remain compatible.
  • Roll back the previous binary and configuration backup. Older binaries can read Unicode tags but their older validators may reject editing new names.
  • 363 backend packages; 69 frontend test files / 189 tests; local lint, type checks, asset checks and macOS CGO/race plus pure-Go SQLite verification.
  • Real desktop Edge: 58 light/dark views, card links, exact/relative dates, timezone/DST, heatmap settings/persistence/keyboard filters, tag creation/cancel/retry/search and private-tag/public-only token isolation.
  • Linux/macOS/Windows and Windows gogit packages built locally; checksums and compressed roundtrips verified locally. No GitHub Actions workflows are used by this repository.
  • Updated English/Chinese README, HTML manual and dated isolated demonstration screenshots. Activity counts are not commit totals, lines of code or productivity scores.

External Google/Feishu/WeChat sign-in still requires operator-provided application credentials and approved callbacks; this release does not claim a live OAuth consent test.