Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
69 commits
Select commit Hold shift + click to select a range
0135e14
Update soap.h
dreamer-coding Dec 21, 2025
ed7a2a3
Update soap.h
dreamer-coding Dec 21, 2025
f211670
Update soap.c
dreamer-coding Dec 21, 2025
341f63d
Update soap.c
dreamer-coding Dec 21, 2025
78d24dc
Update soap.c
dreamer-coding Dec 21, 2025
95c7fdb
Update soap.c
dreamer-coding Dec 21, 2025
0748cc9
Update soap.h
dreamer-coding Dec 29, 2025
d1fa59f
Update test_soap.c
dreamer-coding Dec 29, 2025
23ed616
Update test_soap.cpp
dreamer-coding Dec 29, 2025
6d664e9
Delete test_soap.m
dreamer-coding Dec 29, 2025
17c63e4
Delete test_soap.mm
dreamer-coding Dec 29, 2025
5dd8947
Update soap.c
dreamer-coding Dec 29, 2025
f6c6e1a
Update soap.h
dreamer-coding Dec 29, 2025
4d5c091
Update soap.c
dreamer-coding Dec 29, 2025
90cdec7
Update file.c
dreamer-coding Dec 29, 2025
e168e29
Update file.c
dreamer-coding Dec 29, 2025
ed8ec09
Update file.h
dreamer-coding Dec 29, 2025
8ef8fe8
Update test_file.c
dreamer-coding Dec 29, 2025
d342b30
Update test_file.cpp
dreamer-coding Dec 29, 2025
d011e09
Update soap.h
dreamer-coding Dec 29, 2025
c88a68d
Update test_soap.cpp
dreamer-coding Dec 29, 2025
c9b0b68
Update test_soap.cpp
dreamer-coding Dec 29, 2025
05bb426
Update test_soap.cpp
dreamer-coding Dec 29, 2025
d92b79e
Update test_soap.cpp
dreamer-coding Dec 29, 2025
6a45139
Update test_soap.cpp
dreamer-coding Dec 29, 2025
980794a
Update test_soap.cpp
dreamer-coding Dec 29, 2025
659d4a3
Update test_soap.cpp
dreamer-coding Dec 29, 2025
e5d0e8b
Update test_soap.cpp
dreamer-coding Dec 29, 2025
d6a69b8
Update soap.c
dreamer-coding Dec 29, 2025
d4bcd9a
Update soap.c
dreamer-coding Dec 29, 2025
73047ab
Delete test_soap.cpp
dreamer-coding Dec 29, 2025
a11abde
Delete test_soap.c
dreamer-coding Dec 29, 2025
90f0125
Update soap.c
dreamer-coding Dec 29, 2025
84fbf46
Update soap.c
dreamer-coding Dec 29, 2025
fc83daa
Update soap.h
dreamer-coding Dec 30, 2025
0f371aa
this time
dreamer-coding Dec 30, 2025
017f5de
this time
dreamer-coding Dec 30, 2025
54b654c
this time
dreamer-coding Dec 30, 2025
0bbd8a3
this time
dreamer-coding Dec 30, 2025
24a2c27
this time
dreamer-coding Dec 30, 2025
de56f0a
this time
dreamer-coding Dec 30, 2025
cd9e494
Update soap.c
dreamer-coding Dec 30, 2025
d637802
Update soap.c
dreamer-coding Dec 30, 2025
3d7ff14
Update soap.h
dreamer-coding Dec 31, 2025
ff57975
apply adverbs
dreamer-coding Dec 31, 2025
9403d8d
this time
dreamer-coding Dec 31, 2025
ce1018e
this time
dreamer-coding Dec 31, 2025
e611565
this time
dreamer-coding Dec 31, 2025
c6ca373
this time
dreamer-coding Dec 31, 2025
007f45b
add test cases
dreamer-coding Dec 31, 2025
0022901
typo fix
dreamer-coding Dec 31, 2025
9153a34
this time
dreamer-coding Dec 31, 2025
d67e7cb
this time
dreamer-coding Dec 31, 2025
3852b35
this time
dreamer-coding Dec 31, 2025
4f5250e
this time
dreamer-coding Dec 31, 2025
7fdc6ec
this time
dreamer-coding Dec 31, 2025
c8af0d7
add cases for process
dreamer-coding Jan 1, 2026
b97a75f
this time
dreamer-coding Jan 1, 2026
2257423
this time
dreamer-coding Jan 1, 2026
ca02a65
this time
dreamer-coding Jan 1, 2026
c2d4808
this time
dreamer-coding Jan 1, 2026
f2c265c
this time
dreamer-coding Jan 1, 2026
d194021
this time
dreamer-coding Jan 1, 2026
549ce41
this time
dreamer-coding Jan 1, 2026
d369a7a
this time
dreamer-coding Jan 1, 2026
0fec22c
maybe this time
dreamer-coding Jan 1, 2026
df0c334
removed process functions
dreamer-coding Jan 1, 2026
bfcfc96
add missing };
dreamer-coding Jan 1, 2026
48e2991
0.2.7 to 0.2.8
dreamer-coding Jan 1, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ Add the `fossil-io.wrap` file in your `subprojects` directory and include the fo
```ini
[wrap-git]
url = https://github.com/fossillogic/fossil-io.git
revision = v0.2.7
revision = v0.2.8

[provide]
dependency_names = fossil-io
Expand Down
95 changes: 0 additions & 95 deletions code/logic/file.c
Original file line number Diff line number Diff line change
Expand Up @@ -1205,101 +1205,6 @@ int fossil_io_file_ai_analyze(fossil_io_file_t *f)
return 0;
}

int fossil_io_file_ai_generate_tags(fossil_io_file_t *f)
{
if (!f || !f->file || !f->readable)
return -1;

// Clear previous tags
for (int i = 0; i < 16; ++i) {
if (f->tags[i]) {
fossil_io_cstring_free(f->tags[i]);
f->tags[i] = NULL;
}
}
f->tag_count = 0;

// Only analyze text files
if (f->is_binary) {
f->tags[0] = fossil_io_cstring_create("binary");
f->tag_count = 1;
return 0;
}

// Read up to 4096 bytes for tag analysis
long orig_pos = ftell(f->file);
fseek(f->file, 0, SEEK_SET);
char buffer[4096 + 1] = {0};
size_t bytes = fread(buffer, 1, sizeof(buffer) - 1, f->file);
buffer[bytes] = '\0';
fseek(f->file, orig_pos, SEEK_SET);

// Sanitize input before analysis
char *sanitized = fossil_io_soap_sanitize(buffer);

// Tag generation using fossil_io_soap_* detection functions
int max_tags = 16;
int tag_idx = 0;

if (fossil_io_soap_detect_ragebait(sanitized) && tag_idx < max_tags)
f->tags[tag_idx++] = fossil_io_cstring_create("ragebait");
if (fossil_io_soap_detect_clickbait(sanitized) && tag_idx < max_tags)
f->tags[tag_idx++] = fossil_io_cstring_create("clickbait");
if (fossil_io_soap_detect_spam(sanitized) && tag_idx < max_tags)
f->tags[tag_idx++] = fossil_io_cstring_create("spam");
if (fossil_io_soap_detect_woke(sanitized) && tag_idx < max_tags)
f->tags[tag_idx++] = fossil_io_cstring_create("woke");
if (fossil_io_soap_detect_bot(sanitized) && tag_idx < max_tags)
f->tags[tag_idx++] = fossil_io_cstring_create("bot");
if (fossil_io_soap_detect_sarcasm(sanitized) && tag_idx < max_tags)
f->tags[tag_idx++] = fossil_io_cstring_create("sarcasm");
if (fossil_io_soap_detect_formal(sanitized) && tag_idx < max_tags)
f->tags[tag_idx++] = fossil_io_cstring_create("formal");
if (fossil_io_soap_detect_snowflake(sanitized) && tag_idx < max_tags)
f->tags[tag_idx++] = fossil_io_cstring_create("snowflake");
if (fossil_io_soap_detect_offensive(sanitized) && tag_idx < max_tags)
f->tags[tag_idx++] = fossil_io_cstring_create("offensive");
if (fossil_io_soap_detect_neutral(sanitized) && tag_idx < max_tags)
f->tags[tag_idx++] = fossil_io_cstring_create("neutral");
if (fossil_io_soap_detect_hype(sanitized) && tag_idx < max_tags)
f->tags[tag_idx++] = fossil_io_cstring_create("hype");
if (fossil_io_soap_detect_quality(sanitized) && tag_idx < max_tags)
f->tags[tag_idx++] = fossil_io_cstring_create("quality");
if (fossil_io_soap_detect_political(sanitized) && tag_idx < max_tags)
f->tags[tag_idx++] = fossil_io_cstring_create("political");
if (fossil_io_soap_detect_conspiracy(sanitized) && tag_idx < max_tags)
f->tags[tag_idx++] = fossil_io_cstring_create("conspiracy");
if (fossil_io_soap_detect_marketing(sanitized) && tag_idx < max_tags)
f->tags[tag_idx++] = fossil_io_cstring_create("marketing");
if (fossil_io_soap_detect_technobabble(sanitized) && tag_idx < max_tags)
f->tags[tag_idx++] = fossil_io_cstring_create("technobabble");

// Add readability and style tags
if (tag_idx < max_tags) {
const char *readability = fossil_io_soap_readability_label(sanitized);
if (readability && readability[0])
f->tags[tag_idx++] = fossil_io_cstring_create(readability);
}
if (tag_idx < max_tags) {
const char *style = fossil_io_soap_analyze_style(sanitized);
if (style && style[0])
f->tags[tag_idx++] = fossil_io_cstring_create(style);
}

// If no tags found, add "untagged"
if (tag_idx == 0) {
f->tags[0] = fossil_io_cstring_create("untagged");
tag_idx = 1;
}

f->tag_count = tag_idx;

if (sanitized)
free(sanitized);

return 0;
}

int fossil_io_file_ai_compute_embedding(fossil_io_file_t *f, const void *model, size_t model_size)
{
if (!f || !f->file || !f->readable) {
Expand Down
24 changes: 0 additions & 24 deletions code/logic/fossil/io/file.h
Original file line number Diff line number Diff line change
Expand Up @@ -467,17 +467,6 @@ void fossil_io_file_rewind(fossil_io_file_t *stream);
*/
int fossil_io_file_ai_analyze(fossil_io_file_t *f);

/**
* @brief Generate or update AI tags for the file.
*
* This function generates or updates AI-generated tags or categories for the file content,
* storing them in the fossil_io_file_t structure.
*
* @param f Pointer to the fossil_io_file_t structure representing the file.
* @return 0 on success, non-zero on failure.
*/
int fossil_io_file_ai_generate_tags(fossil_io_file_t *f);

/**
* @brief Compute and store embeddings for semantic search.
*
Expand Down Expand Up @@ -1179,19 +1168,6 @@ namespace fossil {
return fossil_io_file_ai_analyze(f);
}

/**
* Generate or update AI tags for the file.
*
* This function generates or updates AI-generated tags or categories for the file content,
* storing them in the fossil_io_file_t structure.
*
* @param f Pointer to the fossil_io_file_t structure representing the file.
* @return 0 on success, non-zero on failure.
*/
static int ai_generate_tags(fossil_io_file_t *f) {
return fossil_io_file_ai_generate_tags(f);
}

/**
* Compute and store embeddings for semantic search.
*
Expand Down
Loading
Loading