- Remove per-version full package storage
- Remove RegenerateDependentVersions logic
- Only generate full package for the latest version
- Simplify package_util.go
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
- Add RegenerateFullPackage function to rebuild single version's full package
- Add RegenerateDependentVersions function to handle cascade regeneration
- Call regeneration after deleting versions
- Each version maintains its own full package independently
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
- Add FullPackagePath, FullPackageSize, FullPackageHash to Version model
- When uploading patch, merge with base full package to create new full package
- Check update API returns full package info for download
- Add package_util.go with merge functions
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
- Add file_path, file_size, file_hash, entry_file to UpdateVersionRequest
- Update these fields when saving version changes
- Update originalUploadedData after successful save
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
- Load files data when fetching version info
- Display uploaded file info with re-upload option
- Preserve original file data when canceling re-upload
- Add i18n for reupload button
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
- Backend returns total_size for all matching versions
- Frontend uses backend's total_size instead of computing from current page
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
If client doesn't provide version parameter, return latest version info
instead of returning error
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
- Only device_id without instance_id returns error
- Three valid combinations:
- device_id + instance_id: clear specific instance
- only instance_id: clear instance across devices
- no params: clear all instances
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
- Remove device deletion on logout
- Only delete DeviceSession records
- Support clearing specific instance or all instances
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
- Logout: clear device sessions on logout
- User info: return expiry/balance based on billing type
- Avatar upload: support jpg/png/gif/webp, max 2MB
- App tickets: create, reply, close tickets for app users
- Add ClosedAt field to Ticket model
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
- Return expiry_at for subscription mode
- Return balance for usage-based mode
- Return is_permanent for permanent members
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
- Remove duplicate 'v' prefix in version display
- Add version string cleanup (trim spaces, remove v/V prefix)
- Use custom download URL when set
- Fix has_update logic for same version comparison
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
- Add custom_download_url field to Version model
- Show custom download URL input when update method is 'manual'
- Use platform default URL if custom URL is not set
- Add i18n translations for new field
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Add workflow similar to kankanjiao for building and pushing
Docker images to git.viaeon.com container registry.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
- Add various tool permissions to settings.local.json
- Add id-token: write permission to docker workflow
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
- Add complete API documentation for application integration (docs/API_DOCUMENT.md)
- Fix check-update API to use version ID comparison instead of string comparison
- Add validation: client version must exist in server version list
- Add support for patch/incremental updates with base_version check
- Add C++ SDK with HTTP client, JSON parser, and crypto support
- Add simple_test.cpp for standalone testing on Windows
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
- Add created_by field to AppUser model to track who created the user
- Set created_by when agent creates users
- Extract getAgentUserIDs() helper: finds users who recharged with agent/sub-agent cards OR were created by agent/sub-agent
- Extract getAgentAppIDs() helper: finds agent's authorized applications
- Refactor handleGetUsers and checkAgentUserPermission to use getAgentUserIDs
- Create agent-specific handleGetDevices: filter by agent user IDs + app IDs
- Create agent-specific handleGetSessions: filter by agent user IDs + app IDs
- Replace admin handler references with agent-specific handlers for GET routes
- Backend: check AgentApplicationCardType.can_generate before allowing card recharge
- Backend: deduct agent balance and record consumption when creating user with card
- Backend: add GET /agent/users/:id and PUT /agent/users/:id for user edit
- Backend: extract checkAgentUserPermission helper, refactor handleUpdateUserStatus
- Frontend: add user edit page ([id].vue) with username/email/password
- Frontend: add edit action in user list dropdown menu
- Frontend: add route for agent user edit page
- Add i18n keys for agent user edit
- Backend: POST /agent/users - create user with optional card recharge
- Backend: PUT /agent/users/:id/status - ban/unban user
- Frontend: add create user page for agent (select app, card type)
- Frontend: add ban/unban action in user list with confirm dialog
- Frontend: add actions dropdown column in user data table
- Fix: cloud variables records page i18n key (agent.finance.to -> agent.cloudVariables.records.to)
- Add i18n keys for agent user management (create, ban, unban)
- Rename permission from '查看云端数据' to '查看云端变量'
- Remove cloud constants API and page for agents
- Add cloud variable records API for agents (stream type)
- Add agent cloud-variables page with full variable details
- Add agent cloud-variable records page (read-only)
- Update navigation from cloud-data to cloud-variables
- Update i18n keys: cloudData -> cloudVariables
- Backend returns var_type, default_value, max_records etc.
- Records page supports dynamic columns and date filtering
- Add can_view_cloud_data field to auth login response
- Add can_view_cloud_data field to agent profile response
- Fetch latest user permissions from /agent/profile on agent layout mount
- Update localStorage with latest can_view_cloud_data value
- Fix agent finance page: confirmed backend integration is working
- Add agent cloud-variables and cloud-constants API endpoints
- Rewrite agent cloud-data page to use real API calls instead of mock data
- Fix API path: /agent/applications -> /agent/apps
- Remove 'all' value from app filter SelectItem (empty string issue)
- Add cloudData i18n keys for zh and en
- Cloud data is read-only for agents, with CanViewCloudData permission check
- 前端使用后端返回的total字段显示总数
- 后端查询条件兼容旧数据(agent_id IS NULL AND creator_id = ?)
- handleGetStats统计接口使用相同查询逻辑
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>