Skip to content

feat: add docs media-preview shortcut#334

Merged
fangshuyu-768 merged 1 commit intomainfrom
feat/docs-media-preview-shortcut
Apr 8, 2026
Merged

feat: add docs media-preview shortcut#334
fangshuyu-768 merged 1 commit intomainfrom
feat/docs-media-preview-shortcut

Conversation

@wittam-01
Copy link
Copy Markdown
Collaborator

@wittam-01 wittam-01 commented Apr 8, 2026

Change-Id: I5db9e52008e175f975838c8a9c03254afa30f52b

Summary

Add a new docs +media-preview shortcut for document media preview and update the lark-doc skill guidance to prefer preview for view-only requests. Keep explicit download flows and whiteboard-related cases on docs +media- download.

Changes

  • Add an independent docs +media-preview shortcut, register it under docs, and cover it with shortcut tests.
  • Update lark-doc skill references so media preview is preferred for file/image viewing, while explicit downloads and whiteboard cases continue to use docs +media-download.

Test Plan

  • Unit tests pass
  • Manual local verification confirms the lark xxx command works as expected

Related Issues

  • None

Summary by CodeRabbit

  • New Features

    • Added docs +media-preview command to fetch and save document media previews; streams content to disk, auto-detects/appends extension when missing, and returns saved path, size, and content type. Enforces safe output path handling and overwrite protection.
  • Documentation

    • Updated skill guides and reference docs to distinguish preview vs download flows, routing rules, and usage examples for preview vs download (including whiteboard guidance).
  • Tests

    • Added tests for dry-run, overwrite protection, and HTTP error handling.

@github-actions github-actions bot added domain/ccm PR touches the ccm domain size/L Large or sensitive change across domains or core paths labels Apr 8, 2026
@coderabbitai
Copy link
Copy Markdown

coderabbitai bot commented Apr 8, 2026

📝 Walkthrough

Walkthrough

Adds a new docs +media-preview shortcut that streams a document media preview from Drive (preview_type=16), validates token and output path, auto-detects file extension from Content-Type, enforces overwrite rules, writes atomically, and includes tests and documentation updates.

Changes

Cohort / File(s) Summary
Core Shortcut Implementation
shortcuts/doc/doc_media_preview.go
New exported DocMediaPreview shortcut, PreviewType_SOURCE_FILE constant, and previewMimeToExt map. Validates token and output, requests GET /open-apis/drive/v1/medias/:token/preview_download?preview_type=16, streams response to disk, auto-appends extension from Content-Type when missing, enforces overwrite semantics, creates parent dirs, and returns saved_path, size_bytes, and content_type.
Shortcut Registration
shortcuts/doc/shortcuts.go
Inserted DocMediaPreview into Shortcuts() slice between DocMediaInsert and DocMediaDownload.
Tests
shortcuts/doc/doc_media_test.go, shortcuts/register_test.go
Added dry-run API generation assertion, overwrite-protection test, HTTP 404 streaming error test, updated docDryRunOutput to include Params, and added registration test for docs +media-preview.
Documentation & Routing
skills/lark-doc/SKILL.md, skills/lark-doc/references/lark-doc-fetch.md, skills/lark-doc/references/lark-doc-media-download.md, skills/lark-doc/references/lark-doc-media-preview.md
Added +media-preview routing and usage guidance, distinguished preview vs download rules (whiteboard constraint), added troubleshooting and examples, and introduced a new reference page for +media-preview.

Sequence Diagram(s)

sequenceDiagram
    actor User
    participant CLI as "docs +media-preview"
    participant API as "Drive API"
    participant FS as "File System"

    User->>CLI: run --token T --output /path/out
    CLI->>CLI: validate token and initial output path
    CLI->>API: GET /open-apis/drive/v1/medias/:token/preview_download?preview_type=16
    API-->>CLI: stream response body + Content-Type
    CLI->>CLI: if output lacks ext -> determine ext from Content-Type
    CLI->>CLI: re-validate final output path
    CLI->>FS: ensure writable / enforce overwrite rules
    CLI->>FS: create parent directories
    CLI->>FS: write file atomically (stream -> disk)
    FS-->>CLI: return written byte count
    CLI-->>User: output saved_path, size_bytes, content_type
Loading

Estimated code review effort

🎯 4 (Complex) | ⏱️ ~45 minutes

Poem

🐰 I hopped from token straight to stream,
I fetched a preview like a bright daydream.
Headers hinted which ext to wear,
I wrote with care — atomic and fair.
Saved and snug, your file is there! ✨

🚥 Pre-merge checks | ✅ 2 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 12.50% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (2 passed)
Check name Status Explanation
Title check ✅ Passed The title accurately summarizes the main change: adding a new docs media-preview shortcut, which aligns with the changeset.
Description check ✅ Passed The description is mostly complete with a clear summary, comprehensive changes list, and test plan. However, manual verification checkbox remains unchecked.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch feat/docs-media-preview-shortcut

Comment @coderabbitai help to get the list of available commands and usage tips.

@greptile-apps
Copy link
Copy Markdown

greptile-apps bot commented Apr 8, 2026

Greptile Summary

This PR adds a docs +media-preview shortcut that fetches document media via the Lark /preview_download endpoint, auto-detects the file extension from Content-Type, and saves the result atomically. Skill guidance files are updated to prefer +media-preview for view-only requests while keeping explicit downloads and whiteboard thumbnails on +media-download.

The implementation closely mirrors doc_media_download.go — the three issues previously flagged (duplicate MIME map, magic number, post-API overwrite check) remain open in other threads. The only new finding is a minor naming convention issue on the exported constant.

Confidence Score: 5/5

Safe to merge; the only new finding is a P2 naming-convention nit on the exported constant.

All remaining findings are P2 (style/cleanup). The three substantive issues (duplicate MIME map, magic number, post-API overwrite check) were raised in prior review threads and are pre-existing patterns; the only novel finding is the non-idiomatic PreviewType_SOURCE_FILE name. No correctness, security, or data-integrity issues are introduced.

shortcuts/doc/doc_media_preview.go — constant naming and the inherited post-API overwrite-check ordering noted in prior threads.

Vulnerabilities

No security concerns identified. Output paths go through validate.SafeOutputPath before use, tokens are encoded with validate.EncodePathSegment before being interpolated into the API URL, and file writes use validate.AtomicWriteFromReader with restrictive permissions (0600).

Important Files Changed

Filename Overview
shortcuts/doc/doc_media_preview.go New shortcut implementing media preview via /preview_download; logic mirrors doc_media_download.go closely — same duplicate MIME map, same post-API overwrite check, same atomic-write path. One non-idiomatic exported constant name (PreviewType_SOURCE_FILE).
shortcuts/doc/doc_media_test.go Adds three new tests for DocMediaPreview covering dry-run URL, overwrite rejection, and HTTP error handling — good parity with the download tests.
shortcuts/doc/shortcuts.go DocMediaPreview registered in the Shortcuts() slice between DocMediaInsert and DocMediaDownload — straightforward and correct.
shortcuts/register_test.go Adds TestRegisterShortcutsMountsDocsMediaPreview to confirm the new shortcut is wired into the command tree — clean and minimal.
skills/lark-doc/SKILL.md Quick-decision table updated to prefer +media-preview for view-only requests and route explicit downloads / whiteboard thumbnails to +media-download.
skills/lark-doc/references/lark-doc-media-preview.md New reference doc for +media-preview; selection rules, parameters, and token-source guidance are clear and consistent with the implementation.
skills/lark-doc/references/lark-doc-media-download.md Updated to cross-reference +media-preview and add a fallback troubleshooting tip for HTTP 403 errors.
skills/lark-doc/references/lark-doc-fetch.md Extraction steps updated to prefer +media-preview for view-only use cases and +media-download for explicit downloads and whiteboard tokens.

Sequence Diagram

sequenceDiagram
    participant CLI as lark-cli
    participant Val as validate pkg
    participant API as Lark API
    participant FS as filesystem

    CLI->>Val: SafeOutputPath(outputPath) [early check]
    Val-->>CLI: ok / error
    CLI->>API: GET /drive/v1/medias/:token/preview_download?preview_type=16
    API-->>CLI: 200 + Body + Content-Type header
    CLI->>CLI: auto-append ext if outputPath has no extension
    CLI->>Val: SafeOutputPath(finalPath) [final check]
    Val-->>CLI: ok / error
    CLI->>CLI: EnsureWritableFile(safePath, overwrite)
    CLI->>FS: MkdirAll(parent dir)
    CLI->>FS: AtomicWriteFromReader(safePath, body, 0600)
    FS-->>CLI: sizeBytes
    CLI-->>CLI: Out {saved_path, size_bytes, content_type}
Loading

Reviews (3): Last reviewed commit: "feat: add docs media-preview shortcut" | Re-trigger Greptile

@github-actions
Copy link
Copy Markdown

github-actions bot commented Apr 8, 2026

🚀 PR Preview Install Guide

🧰 CLI update

npm i -g https://pkg.pr.new/larksuite/cli/@larksuite/cli@367c195322cb467d0ce6f08326ad34fc3a5498bb

🧩 Skill update

npx skills add larksuite/cli#feat/docs-media-preview-shortcut -y -g

Copy link
Copy Markdown

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🧹 Nitpick comments (1)
shortcuts/doc/doc_media_preview.go (1)

83-92: Consider handling unknown MIME types more gracefully.

When the user provides an output path without extension and the server returns an unrecognized Content-Type, the file will be saved without an extension. While this works, it may confuse users.

For consistency with DocMediaDownload (which defaults to .png for whiteboards), consider logging a warning to stderr or defaulting to a generic extension like .bin when the MIME type isn't recognized.

💡 Optional: Add fallback handling
 		if ext, ok := previewMimeToExt[mimeType]; ok {
 			finalPath = outputPath + ext
+		} else if mimeType != "" {
+			fmt.Fprintf(runtime.IO().ErrOut, "Warning: unknown Content-Type %q, saving without extension\n", mimeType)
 		}
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@shortcuts/doc/doc_media_preview.go` around lines 83 - 92, The code currently
leaves finalPath without an extension when currentExt is empty and
resp.Header.Get("Content-Type") yields an unknown MIME, which can confuse users;
update the block around finalPath, currentExt, and previewMimeToExt so that if
mimeType isn't found you either append a safe default extension (e.g., ".bin")
or emit a warning to stderr (use log.Printf or fmt.Fprintln(os.Stderr,...))
before returning finalPath; mirror DocMediaDownload's behavior for whiteboards
(defaulting to .png) as guidance and ensure previewMimeToExt lookup remains
unchanged so known types still map correctly.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@skills/lark-doc/references/lark-doc-media-preview.md`:
- Around line 24-29: The parameters table is missing documentation for the
implemented --overwrite flag; update
skills/lark-doc/references/lark-doc-media-preview.md to add a new row for
`--overwrite` (optional) describing that it is a boolean flag which, when
present, allows existing local files to be overwritten when saving previews
(refer to the flag in doc_media_preview.go to ensure the description matches its
behavior), and include a short example or note if it changes default behavior
(e.g., "optional; if set, overwrite existing files").

---

Nitpick comments:
In `@shortcuts/doc/doc_media_preview.go`:
- Around line 83-92: The code currently leaves finalPath without an extension
when currentExt is empty and resp.Header.Get("Content-Type") yields an unknown
MIME, which can confuse users; update the block around finalPath, currentExt,
and previewMimeToExt so that if mimeType isn't found you either append a safe
default extension (e.g., ".bin") or emit a warning to stderr (use log.Printf or
fmt.Fprintln(os.Stderr,...)) before returning finalPath; mirror
DocMediaDownload's behavior for whiteboards (defaulting to .png) as guidance and
ensure previewMimeToExt lookup remains unchanged so known types still map
correctly.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: cdd36f65-457b-4d2f-a2f1-310f70b09392

📥 Commits

Reviewing files that changed from the base of the PR and between f5a8fbf and 6f38120.

📒 Files selected for processing (8)
  • shortcuts/doc/doc_media_preview.go
  • shortcuts/doc/doc_media_test.go
  • shortcuts/doc/shortcuts.go
  • shortcuts/register_test.go
  • skills/lark-doc/SKILL.md
  • skills/lark-doc/references/lark-doc-fetch.md
  • skills/lark-doc/references/lark-doc-media-download.md
  • skills/lark-doc/references/lark-doc-media-preview.md

@wittam-01 wittam-01 force-pushed the feat/docs-media-preview-shortcut branch from 6f38120 to 1f693da Compare April 8, 2026 10:44
@greptile-apps
Copy link
Copy Markdown

greptile-apps bot commented Apr 8, 2026

Tip:

Greploops — Automatically fix all review issues by running /greploops in Claude Code. It iterates: fix, push, re-review, repeat until 5/5 confidence.

Use the Greptile plugin for Claude Code to query reviews, search comments, and manage custom context directly from your terminal.

Copy link
Copy Markdown

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 2

🧹 Nitpick comments (1)
shortcuts/doc/doc_media_preview.go (1)

85-108: Consider extracting the stream-to-file flow into a shared helper.

This block now mirrors shortcuts/doc/doc_media_download.go:94-123 almost verbatim. Pulling the extension resolution, final-path validation, overwrite guard, and atomic write into one helper would keep +media-preview and +media-download from drifting.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@shortcuts/doc/doc_media_preview.go` around lines 85 - 108, The
streaming-to-file logic is duplicated; extract it into a shared helper (e.g.,
SaveStreamToValidatedFile or writeStreamToSafeFile) that accepts outputPath,
resp.Header (or contentType string), body io.Reader, overwrite bool, and the
previewMimeToExt map and returns (sizeBytes int64, err error); inside the helper
perform the ext resolution using previewMimeToExt and contentType, call
validate.SafeOutputPath, common.EnsureWritableFile, vfs.MkdirAll for the parent
dir, and validate.AtomicWriteFromReader; then replace the mirrored blocks in the
functions that currently use previewMimeToExt, validate.SafeOutputPath,
common.EnsureWritableFile, vfs.MkdirAll and validate.AtomicWriteFromReader to
call the new helper and propagate its returned sizeBytes and error.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@shortcuts/doc/doc_media_preview.go`:
- Around line 63-66: The current early validation relies solely on
validate.SafeOutputPath which allows empty or directory-like values; add a guard
before that check to reject blank or directory targets by returning
output.ErrValidation (e.g., when outputPath == "" or outputPath ends with a path
separator or otherwise has no file basename) so we fail fast instead of letting
extension inference create hidden files; apply the same guard in the second
validation block referenced (the block around lines 85-96) and keep using
output.ErrValidation with a clear message like "invalid output path: %s"
referencing outputPath and the underlying error.
- Around line 80-81: The current preview error handling double-wraps stream
errors by always calling output.ErrNetwork; modify the error return in the
preview handler (the block handling the result of DoAPIStream/DoStream in
doc_media_preview.go) to first check whether the error is already an
output.ExitError using errors.As(err, &exitErr) and if so return the original
exitErr (or err) directly; only call output.ErrNetwork("preview failed: %v",
err) for non-ExitError errors—follow the pattern used in drive_upload.go and
drive_media_upload.go.

---

Nitpick comments:
In `@shortcuts/doc/doc_media_preview.go`:
- Around line 85-108: The streaming-to-file logic is duplicated; extract it into
a shared helper (e.g., SaveStreamToValidatedFile or writeStreamToSafeFile) that
accepts outputPath, resp.Header (or contentType string), body io.Reader,
overwrite bool, and the previewMimeToExt map and returns (sizeBytes int64, err
error); inside the helper perform the ext resolution using previewMimeToExt and
contentType, call validate.SafeOutputPath, common.EnsureWritableFile,
vfs.MkdirAll for the parent dir, and validate.AtomicWriteFromReader; then
replace the mirrored blocks in the functions that currently use
previewMimeToExt, validate.SafeOutputPath, common.EnsureWritableFile,
vfs.MkdirAll and validate.AtomicWriteFromReader to call the new helper and
propagate its returned sizeBytes and error.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: c64dd4a5-1062-4e9e-a207-75640ad72e83

📥 Commits

Reviewing files that changed from the base of the PR and between 6f38120 and 1f693da.

📒 Files selected for processing (8)
  • shortcuts/doc/doc_media_preview.go
  • shortcuts/doc/doc_media_test.go
  • shortcuts/doc/shortcuts.go
  • shortcuts/register_test.go
  • skills/lark-doc/SKILL.md
  • skills/lark-doc/references/lark-doc-fetch.md
  • skills/lark-doc/references/lark-doc-media-download.md
  • skills/lark-doc/references/lark-doc-media-preview.md
✅ Files skipped from review due to trivial changes (4)
  • shortcuts/doc/shortcuts.go
  • skills/lark-doc/references/lark-doc-media-download.md
  • shortcuts/doc/doc_media_test.go
  • skills/lark-doc/references/lark-doc-media-preview.md
🚧 Files skipped from review as they are similar to previous changes (3)
  • shortcuts/register_test.go
  • skills/lark-doc/SKILL.md
  • skills/lark-doc/references/lark-doc-fetch.md

Change-Id: I5db9e52008e175f975838c8a9c03254afa30f52b
@wittam-01 wittam-01 force-pushed the feat/docs-media-preview-shortcut branch from 1f693da to 367c195 Compare April 8, 2026 13:44
Copy link
Copy Markdown

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

♻️ Duplicate comments (2)
shortcuts/doc/doc_media_preview.go (2)

80-82: ⚠️ Potential issue | 🟡 Minor

Avoid re-wrapping stream errors that are already ExitError.

Line 81 wraps all stream failures with output.ErrNetwork. If DoAPIStream already returns an ExitError, this loses the original classification details and creates nested messaging. Return existing ExitError as-is; wrap only non-ExitError failures.

Suggested patch
 import (
 	"context"
+	"errors"
 	"fmt"
@@
 		if err != nil {
-			return output.ErrNetwork("preview failed: %v", err)
+			var exitErr *output.Error
+			if errors.As(err, &exitErr) {
+				return err
+			}
+			return output.ErrNetwork("preview failed: %v", err)
 		}
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@shortcuts/doc/doc_media_preview.go` around lines 80 - 82, The error handling
after DoAPIStream currently wraps all errors with output.ErrNetwork which hides
existing ExitError details; change it to detect if err is an ExitError (using
errors.As or a type assertion for the ExitError type from the output package)
and if so return that original ExitError directly, otherwise wrap the
non-ExitError with output.ErrNetwork; look for the DoAPIStream call and the
current "if err != nil { return output.ErrNetwork(...)" branch in
doc_media_preview.go and update it to first check/return the ExitError, then
wrap others.

63-66: ⚠️ Potential issue | 🟡 Minor

Reject blank or directory-like --output values before/after extension inference.

Line 64 and Line 96 rely on validate.SafeOutputPath, but edge cases like empty or separator-terminated paths can still resolve into hidden files after extension inference (for example .png or preview/.png). Add an explicit “must be file path” guard before API call and after finalPath resolution.

Suggested patch
 import (
 	"context"
+	"errors"
 	"fmt"
 	"net/http"
 	"path/filepath"
 	"strings"
@@
 	Execute: func(ctx context.Context, runtime *common.RuntimeContext) error {
@@
 		if err := validate.ResourceName(token, "--token"); err != nil {
 			return output.ErrValidation("%s", err)
 		}
+		if strings.TrimSpace(outputPath) == "" {
+			return output.ErrValidation("output must be a file path, got empty value")
+		}
+		cleanedOutput := filepath.Clean(outputPath)
+		if cleanedOutput == "." || cleanedOutput == ".." ||
+			strings.HasSuffix(outputPath, "/") || strings.HasSuffix(outputPath, "\\") {
+			return output.ErrValidation("output must be a file path, got %q", outputPath)
+		}
 		// Early path validation before API call (final validation after auto-extension below)
 		if _, err := validate.SafeOutputPath(outputPath); err != nil {
 			return output.ErrValidation("unsafe output path: %s", err)
 		}
@@
 		safePath, err := validate.SafeOutputPath(finalPath)
 		if err != nil {
 			return output.ErrValidation("unsafe output path: %s", err)
 		}
+		if info, err := vfs.Stat(safePath); err == nil && info.IsDir() {
+			return output.ErrValidation("output must be a file path, got directory %q", finalPath)
+		} else if err != nil && !errors.Is(err, vfs.ErrNotExist) {
+			return output.Errorf(output.ExitInternal, "io", "cannot access output path %s: %v", finalPath, err)
+		}
 		if err := common.EnsureWritableFile(safePath, overwrite); err != nil {
 			return err
 		}

Also applies to: 85-99

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@shortcuts/doc/doc_media_preview.go` around lines 63 - 66, The code currently
relies only on validate.SafeOutputPath (called with outputPath and later with
finalPath) but still allows blank or directory-like values (e.g., "" or paths
ending with a separator) that become hidden/file-only names after extension
inference; add explicit guards that reject empty strings, single-dot/ double-dot
entries, and any path that ends with a path separator (or whose base is empty)
before calling the API and again after you compute finalPath; return
output.ErrValidation with a clear message (e.g., "output must be a file path,
not a directory or empty") when outputPath or finalPath fails this guard,
leaving existing validate.SafeOutputPath checks in place.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Duplicate comments:
In `@shortcuts/doc/doc_media_preview.go`:
- Around line 80-82: The error handling after DoAPIStream currently wraps all
errors with output.ErrNetwork which hides existing ExitError details; change it
to detect if err is an ExitError (using errors.As or a type assertion for the
ExitError type from the output package) and if so return that original ExitError
directly, otherwise wrap the non-ExitError with output.ErrNetwork; look for the
DoAPIStream call and the current "if err != nil { return output.ErrNetwork(...)"
branch in doc_media_preview.go and update it to first check/return the
ExitError, then wrap others.
- Around line 63-66: The code currently relies only on validate.SafeOutputPath
(called with outputPath and later with finalPath) but still allows blank or
directory-like values (e.g., "" or paths ending with a separator) that become
hidden/file-only names after extension inference; add explicit guards that
reject empty strings, single-dot/ double-dot entries, and any path that ends
with a path separator (or whose base is empty) before calling the API and again
after you compute finalPath; return output.ErrValidation with a clear message
(e.g., "output must be a file path, not a directory or empty") when outputPath
or finalPath fails this guard, leaving existing validate.SafeOutputPath checks
in place.

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: dda53326-9c05-4cc9-98c0-36577bb375b6

📥 Commits

Reviewing files that changed from the base of the PR and between 1f693da and 367c195.

📒 Files selected for processing (8)
  • shortcuts/doc/doc_media_preview.go
  • shortcuts/doc/doc_media_test.go
  • shortcuts/doc/shortcuts.go
  • shortcuts/register_test.go
  • skills/lark-doc/SKILL.md
  • skills/lark-doc/references/lark-doc-fetch.md
  • skills/lark-doc/references/lark-doc-media-download.md
  • skills/lark-doc/references/lark-doc-media-preview.md
✅ Files skipped from review due to trivial changes (4)
  • shortcuts/doc/shortcuts.go
  • shortcuts/register_test.go
  • skills/lark-doc/references/lark-doc-media-download.md
  • skills/lark-doc/references/lark-doc-media-preview.md
🚧 Files skipped from review as they are similar to previous changes (3)
  • skills/lark-doc/SKILL.md
  • skills/lark-doc/references/lark-doc-fetch.md
  • shortcuts/doc/doc_media_test.go

@fangshuyu-768 fangshuyu-768 merged commit daa2173 into main Apr 8, 2026
16 checks passed
@fangshuyu-768 fangshuyu-768 deleted the feat/docs-media-preview-shortcut branch April 8, 2026 15:52
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

domain/ccm PR touches the ccm domain size/L Large or sensitive change across domains or core paths

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants